glam/schemas/20251121/linkml/modules/classes/CustodianName.yaml
kempersc 0d5d48568d refactor(schema): centralize slot definitions per Rule 38
- Remove slot_uri, description, mappings from slot_usage sections
- Move these properties to centralized slot files in modules/slots/
- Keep only class-specific overrides in slot_usage (required, inlined, examples)
- Update 1,499 centralized slot files with enriched definitions
- Clean 188 class files

Violations fixed:
- slot_uri in slot_usage: 1,676 → 0
- description in slot_usage: 2,287 → 0 (moved to centralized)

Schema still validates: 816 classes, 2028 slots, 127 enums
2026-01-11 23:27:17 +01:00

179 lines
9.7 KiB
YAML

id: https://nde.nl/ontology/hc/class/CustodianName
name: CustodianName
title: Custodian Name Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
foaf: http://xmlns.com/foaf/0.1/
rdfs: http://www.w3.org/2000/01/rdf-schema#
dcterms: http://purl.org/dc/terms/
org: http://www.w3.org/ns/org#
tooi: https://identifier.overheid.nl/tooi/def/ont/
rico: https://www.ica.org/standards/RiC/ontology#
gleif: https://www.gleif.org/ontology/Base/
crm: http://www.cidoc-crm.org/cidoc-crm/
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
- ./Custodian
- ./CustodianObservation
- ./ReconstructionActivity
- ./TimeSpan
- ./ReconstructedEntity
- ../slots/emic_name
- ../slots/name_language
- ../slots/standardized_name
- ../slots/has_or_had_alternative_name
- ../slots/endorsement_source
- ../slots/name_authority
- ../slots/valid_from
- ../slots/valid_to
- ../slots/name_validity_period
- ../slots/supersede
- ../slots/superseded_by
- ../slots/was_derived_from
- ../slots/was_generated_by
- ../slots/refers_to_custodian
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
CustodianName:
is_a: ReconstructedEntity
class_uri: skos:Concept
description: "Standardized emic (insider) name DERIVED FROM CustodianObservation(s).\n\nCRITICAL: CustodianName is NOT\
\ a subclass of CustodianObservation!\n- CustodianObservation = Evidence seen in sources (input)\n- CustodianName =\
\ Standardized interpretation (output)\n- Relationship: CustodianName prov:wasDerivedFrom CustodianObservation\n\nCustodianName\
\ represents the CANONICAL LABEL - the standardized form\naccepted by the custodian itself for public identification.\n\
\nIMPORTANT: CustodianName ≠ Legal Name\n- CustodianName = How custodian presents itself (emic, operational)\n- Legal\
\ Name = Formal registered name (in CustodianLegalStatus)\n- Example: \"Rijksmuseum\" (emic) vs \"Stichting Rijksmuseum\"\
\ (legal)\n\n===========================================================================\nMANDATORY RULE: Legal Form\
\ Terms MUST Be Filtered\n===========================================================================\n\nLegal form\
\ designations (Stichting, Foundation, Inc., Ltd., GmbH, etc.)\nMUST ALWAYS be removed from CustodianName, even when\
\ the custodian\nself-identifies with them. This is the ONE EXCEPTION to the emic principle.\n\nRATIONALE:\n1. Legal\
\ form is METADATA about the entity, not part of its identity\n2. Legal forms change (foundation→corporation) but identity\
\ persists\n3. Enables consistent cross-jurisdictional comparison\n4. Prevents duplicate entries (\"X Foundation\" vs\
\ \"X\")\n5. Aligns with ISO 20275 (Legal Entity Identifier) principles\n\nEXAMPLES:\n- \"Stichting Rijksmuseum\" →\
\ CustodianName: \"Rijksmuseum\"\n- \"Hidde Nijland Stichting\" → CustodianName: \"Hidde Nijland\"\n- \"The Getty Foundation\"\
\ → CustodianName: \"The Getty\"\n- \"British Museum Trust Ltd\" → CustodianName: \"British Museum\"\n- \"Fundação Biblioteca\
\ Nacional\" → CustodianName: \"Biblioteca Nacional\"\n\nLEGAL FORM TERMS TO FILTER (partial list by jurisdiction):\n\
- Dutch: Stichting, Vereniging, Coöperatie, B.V., N.V., V.O.F.\n- English: Foundation, Trust, Inc., Ltd., LLC, Corp.,\
\ Association\n- German: Stiftung, Verein, e.V., GmbH, AG\n- French: Fondation, Association, S.A., S.A.R.L.\n- Spanish:\
\ Fundación, Asociación, S.A., S.L.\n- Portuguese: Fundação, Associação, Ltda., S.A.\n- Italian: Fondazione, Associazione,\
\ S.p.A., S.r.l.\n\nSee: rules/LEGAL_FORM_FILTERING_RULE.md for comprehensive global list\n\n===========================================================================\n\
MANDATORY RULE: Special Characters MUST Be Excluded from Abbreviations\n===========================================================================\n\
\nWhen generating abbreviations for GHCID, special characters and symbols\nMUST be completely removed. Only alphabetic\
\ characters (A-Z) are permitted\nin the has_or_had_abbreviation component of the GHCID.\n\nRATIONALE:\n1. URL/URI safety\
\ - Special characters require encoding in URIs\n2. Filename safety - Characters like &, /, \\, : are invalid in filenames\n\
3. Parsing consistency - Avoids delimiter conflicts in data pipelines\n4. Cross-system compatibility - Ensures interoperability\
\ with all systems\n5. Human readability - Clean identifiers are easier to communicate\n\nCHARACTERS TO REMOVE (exhaustive\
\ list):\n- Ampersand: & (e.g., \"Records & Archives\" → \"RA\", not \"R&A\")\n- Slash: / (e.g., \"Art/Design Museum\"\
\ → \"ADM\", not \"A/DM\")\n- Backslash: \\\n- Plus: + (e.g., \"Culture+\" → \"C\")\n- At sign: @\n- Hash/Pound: #\n\
- Percent: %\n- Dollar: $\n- Asterisk: *\n- Parentheses: ( )\n- Brackets: [ ] { }\n- Pipe: |\n- Colon: :\n- Semicolon:\
\ ;\n- Quotation marks: \" ' ` \n- Comma: ,\n- Period: . (unless part of has_or_had_abbreviation like \"U.S.\" → \"\
US\")\n- Hyphen: - (skip, do not replace with letter)\n- Underscore: _\n- Equals: =\n- Question mark: ?\n- Exclamation:\
\ !\n- Tilde: ~\n- Caret: ^\n- Less/Greater than: < >\n\nEXAMPLES:\n- \"Department of Records & Information Management\"\
\ → \"DRIM\" (not \"DR&IM\")\n- \"Art + Culture Center\" → \"ACC\" (not \"A+CC\")\n- \"Museum/Gallery Amsterdam\" →\
\ \"MGA\" (not \"M/GA\")\n- \"Heritage@Digital\" → \"HD\" (not \"H@D\")\n- \"Archives (Historical)\" → \"AH\" (not \"\
A(H)\")\n\nSee: rules/ABBREVIATION_SPECIAL_CHAR_RULE.md for complete documentation\n\n===========================================================================\n\
MANDATORY RULE: Diacritics MUST Be Normalized to ASCII in Abbreviations\n===========================================================================\n\
\nWhen generating abbreviations for GHCID, diacritics (accented characters)\nMUST be normalized to their ASCII base\
\ letter equivalents. Only ASCII\nuppercase letters (A-Z) are permitted in the has_or_had_abbreviation component.\n\n\
RATIONALE:\n1. URI/URL safety - Non-ASCII requires percent-encoding\n2. Cross-system compatibility - ASCII is universally\
\ supported\n3. Parsing consistency - No special character handling needed\n4. Human readability - Easier to type and\
\ communicate\n\nDIACRITICS TO NORMALIZE (examples by language):\n- Czech: Č→C, Ř→R, Š→S, Ž→Z, Ě→E, Ů→U\n- Polish: Ł→L,\
\ Ń→N, Ó→O, Ś→S, Ź→Z, Ż→Z, Ą→A, Ę→E\n- German: Ä→A, Ö→O, Ü→U, ß→SS\n- French: É→E, È→E, Ê→E, Ç→C, Ô→O\n- Spanish: Ñ→N,\
\ Á→A, É→E, Í→I, Ó→O, Ú→U\n- Nordic: Å→A, Ä→A, Ö→O, Ø→O, Æ→AE\n\nEXAMPLES:\n- \"Vlastivědné muzeum\" (Czech) → \"VM\"\
\ (not \"VM\" with háček)\n- \"Österreichische Nationalbibliothek\" (German) → \"ON\"\n- \"Bibliothèque nationale\"\
\ (French) → \"BN\"\n\nREAL-WORLD EXAMPLE:\n- ❌ WRONG: CZ-VY-TEL-L-VHSPAOČRZS (contains Č)\n- ✅ CORRECT: CZ-VY-TEL-L-VHSPAOCRZS\
\ (ASCII only)\n\nIMPLEMENTATION:\n```python\nimport unicodedata\nnormalized = unicodedata.normalize('NFD', text)\n\
ascii_text = ''.join(c for c in normalized if unicodedata.category(c) != 'Mn')\n```\n\nSee: rules/ABBREVIATION_SPECIAL_CHAR_RULE.md\
\ for complete documentation\n\nCan be generated by:\n1. ReconstructionActivity (formal entity resolution) - was_generated_by\
\ link\n2. Direct extraction (simple standardization) - no was_generated_by link\n"
exact_mappings:
- skos:prefLabel
- schema:name
- foaf:name
close_mappings:
- rdfs:label
- dcterms:title
- org:legalName
- tooi:officieleNaamInclSoort
- rico:name
related_mappings:
- skos:altLabel
- schema:alternateName
- foaf:nick
- gleif:hasOtherName
slots:
- has_or_had_alternative_name
- emic_name
- endorsement_source
- name_authority
- name_language
- name_validity_period
- refers_to_custodian
- specificity_annotation
- standardized_name
- superseded_by
- supersede
- template_specificity
- valid_from
- valid_to
- was_derived_from
- was_generated_by
slot_usage:
emic_name:
range: string
required: true
name_language:
range: string
pattern: ^[a-z]{2}(-[A-Z]{2})?$
standardized_name:
range: string
required: true
has_or_had_alternative_name:
range: CustodianAppellation
multivalued: true
inlined_as_list: true
endorsement_source:
range: uriorcurie
required: true
name_authority:
range: string
valid_from:
range: date
valid_to:
range: date
name_validity_period:
range: TimeSpan
examples:
- value:
begin_of_the_begin: '1920-01-01'
end_of_the_begin: '1929-12-31'
begin_of_the_end: '1945-01-01'
end_of_the_end: '1955-12-31'
description: Name adopted sometime in the 1920s, changed around 1950
supersede:
range: CustodianName
superseded_by:
range: CustodianName
was_derived_from:
range: CustodianObservation
multivalued: true
required: true
was_generated_by:
range: ReconstructionActivity
required: false
refers_to_custodian:
range: Custodian
required: true
specificity_annotation:
range: SpecificityAnnotation
inlined: true
template_specificity:
range: TemplateSpecificityScores
inlined: true