Unclaimable.Extended
0.8.5
dotnet add package Unclaimable.Extended --version 0.8.5
NuGet\Install-Package Unclaimable.Extended -Version 0.8.5
<PackageReference Include="Unclaimable.Extended" Version="0.8.5" />
<PackageVersion Include="Unclaimable.Extended" Version="0.8.5" />
<PackageReference Include="Unclaimable.Extended" />
paket add Unclaimable.Extended --version 0.8.5
#r "nuget: Unclaimable.Extended, 0.8.5"
#:package Unclaimable.Extended@0.8.5
#addin nuget:?package=Unclaimable.Extended&version=0.8.5
#tool nuget:?package=Unclaimable.Extended&version=0.8.5
Unclaimable.Extended
Large optional reserved-identity datasets for Unclaimable.
Package version: 0.8.5 LTS
Install
Install the v0.8.5 LTS package once it is available on NuGet.org.
dotnet add package Unclaimable.Extended --version 0.8.5
Installing the package alone does not change validation behavior. Enable the data explicitly.
What's new in 0.8.5 (LTS)
- Expanded reserved identities, institutions, companies, media, professions, public figures, cryptocurrency and other curated categories.
- Added language-specific profanity/slang datasets covering Czech, German, English, Spanish, French, Hungarian, Indonesian, Italian, Dutch, Polish, Portuguese, Romanian, Swedish, Turkish and Vietnamese, plus other hate-speech and offensive-language coverage.
- Extended supplies data, not a separate detection engine. Explicitly activate it using
options.UseExtendedData(); Core's matching and false-positive settings apply. - Core + Extended CI benchmark: warm checker construction 66.95 → 72.04 ms (+7.6%), construction allocations 35.76 → 28.61 MB (−20.0%), ordinary lookup 9.81 → 5.34 µs, and embedded lookup 11.79 → 2.76 µs. Warm-process results; increased vocabulary and application-specific settings may affect timings.
- Larger reserved lists intentionally block additional names. Applications should evaluate categories and
FalsePositiveSensitivitybefore upgrading.
Cross-platform app compatibility
Unclaimable.Extended targets netstandard2.0 and is compile-checked in .NET MAUI, Blazor WebAssembly, WPF, Windows Forms, Console, Worker Service, Avalonia, and Uno Platform consumers.
The datasets remain embedded and deterministic on those application models; enabling Extended data does not require a platform-specific integration package.
Quick start
using Unclaimable;
using Unclaimable.Extended;
var options = new Options();
options.UseExtendedData();
var checker = new Checker(options);
All Extended dataset groups, including the new 0.8.4 categories, are enabled when UseExtendedData() is called. Developers can disable individual categories explicitly.
The checker still uses the normal 0.8.3 Core defaults at the same time, including the lower-collision default treatment for generic Core identity vocabulary. Extended data remains explicitly opt-in and additive: enabling it does not disable or replace Core structural, matching, pattern, or identity rules already active in Options.
Select categories
Disable only the groups your application does not need:
options.UseExtendedData(extended =>
{
extended.DisableCategory(ExtendedCategory.Celebrities);
extended.DisableCategory(ExtendedCategory.Sports);
});
A disabled group can be enabled again with EnableCategory(...).
New 0.8.4 modules
All new modules are included automatically. Disable any categories your application does not want:
options.UseExtendedData(extended =>
{
extended.DisableCategory(ExtendedCategory.RegionalRolesNetherlands);
extended.DisableCategory(ExtendedCategory.CryptoWallets);
extended.DisableCategory(ExtendedCategory.CryptoExchanges);
});
Also available: RegionalRolesUnitedStates, CryptoProtocols, and CryptoTokens. Each starts enabled when UseExtendedData() is called. Entries use whole-identifier matching; these are deliberately small curated sets rather than a broad or continuously updated market list. Review the terms for your application and use AllowedIdentifiers for exact exceptions.
Exact Extended exceptions
options.UseExtendedData(extended =>
{
extended.AllowedIdentifiers.Add("Aalborg University");
});
The exception applies to that complete Extended identifier without disabling the entire category.
Configure this exception inside UseExtendedData(...) because Extended entries are registered into Core as explicit whole-identifier reservations. Core rule or pattern exceptions do not erase an Extended reservation after it has been registered.
Use Core's scoped APIs separately for Core rules and patterns:
var options = new Options()
.AllowRepeatedCharacters("T")
.AllowCharacters("_");
options.UseExtendedData(extended =>
{
extended.AllowedIdentifiers.Add("Aalborg University");
});
This keeps Extended identity exceptions distinct from username-shape exceptions.
Dataset snapshot
The original Extended snapshot contains 36,313 identifiers. 0.8.4 adds 30 entries across six new regional/crypto modules and a separate curated hate-speech dataset; all are included with UseExtendedData() by default. The counts below describe the original snapshot and exclude the 0.8.4 additions:
| Extended group | Entries |
|---|---|
| Companies | 12,500 |
| Education | 10,155 |
| Geography / administrative subdivisions | 3,722 |
| Transport, airports and operators | 3,446 |
| Sports clubs, teams and leagues | 2,740 |
| Financial institutions | 1,105 |
| Regional brands | 616 |
| Healthcare / pharma | 608 |
| Media organizations | 260 |
| Professions / titles | 159 |
| Celebrities | 120 |
| Crypto projects | 120 |
| Fictional characters / franchises | 114 |
| Platforms / services | 99 |
| Historical figures | 96 |
| Entertainment properties | 91 |
| Government / public bodies | 86 |
| Public figures | 74 |
| Multilingual reserved vocabulary | 72 |
| Regional slang / profanity | 69 |
| International organizations | 61 |
Hate-speech dataset (0.8.4)
ExtendedCategory.HateSpeech contributes an additional curated set of identity-targeting abusive identifiers and hateful slogans. It is included when UseExtendedData() is enabled, and may be disabled independently:
options.UseExtendedData(extended =>
extended.DisableCategory(ExtendedCategory.HateSpeech));
As with all Extended groups, installation alone does not enable it. Entries are passed into Core using ReservedMatchMode.WholeIdentifier; no independent detection engine or blanket substring matching is introduced. Coverage is curated rather than exhaustive and should not be treated as a complete multilingual content-moderation system.
Matching behavior
Extended entries use ReservedMatchMode.WholeIdentifier.
That means exact, compact, selected Unicode-confusable, and sensitivity-controlled obfuscation checks still apply, while these large identity datasets do not become arbitrary substring roots. In 0.8.3 they use the same Core ObfuscationSensitivity setting as other whole-identifier reservations; Medium remains the default. The 0.8.3 runtime matching and allocation optimizations also apply to these whole-identifier reservations.
Core entries are indexed first. If an Extended identity is already protected by Core, the existing Core match and category remain authoritative.
Embedded snapshot and provenance
The datasets are embedded in the package as deterministic snapshots. No runtime data download is performed.
Source and provenance information is included in:
data/SOURCES.mddata/THIRD_PARTY_NOTICES.md
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Unclaimable (>= 0.8.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.