fix(schema): Normalize custodian_types annotation YAML quoting

YAML arrays in LinkML annotations must be quoted strings to ensure
proper parsing. This change quotes all custodian_types annotations
from the raw array format to quoted string format.

Before: custodian_types: ["A", "G"]
After:  custodian_types: '["A", "G"]'

Affected: 50+ class files in modules/classes/
Also updates: manifest.json, 01_custodian_name_modular.yaml
This commit is contained in:
kempersc 2025-12-16 20:19:45 +01:00
parent 8a4727eb34
commit 0cf93587fb
51 changed files with 451 additions and 134 deletions

View file

@ -22,7 +22,7 @@ description: |
Inspired by PiCo (Persons in Context) ontology pattern for distinguishing observations from entities.
version: 0.9.9
version: 0.9.10
license: https://creativecommons.org/licenses/by-sa/4.0/
prefixes:
@ -304,6 +304,15 @@ imports:
- modules/classes/PrimaryDigitalPresenceAssertion
- modules/classes/InternetOfThings
# Video content modeling (NEW v0.9.10 - social media video + transcripts + annotations)
- modules/classes/VideoPost
- modules/classes/VideoTimeSegment
- modules/classes/VideoTextContent
- modules/classes/VideoTranscript
- modules/classes/VideoSubtitle
- modules/classes/VideoAnnotation
- modules/classes/VideoAnnotationTypes
# Web portal and social media type hierarchies (NEW v0.9.9 - promoted from enums)
- modules/classes/WebPortalType
- modules/classes/WebPortalTypes
@ -511,6 +520,13 @@ comments:
- "RDF alignment (v0.9.8): All inverse properties generate owl:inverseOf axioms in RDF/OWL output"
- "Grand total: 180 files (178 definitions + 2 supporting) - added has_derived_observation inverse slot"
- "Provenance inverse (v0.9.9): derived_from_entity↔has_derived_observation (PROV-O wasDerivedFrom/hadDerivation pattern)"
- "Video content (v0.9.10): VideoPost class for social media video posts with engagement metrics and platform-specific metadata"
- "Video text hierarchy (v0.9.10): VideoTextContent (abstract) → VideoTranscript → VideoSubtitle with PROV-O provenance tracking"
- "Video annotations (v0.9.10): VideoAnnotation (abstract) → VideoSceneAnnotation, VideoObjectAnnotation, VideoOCRAnnotation"
- "Video temporal (v0.9.10): VideoTimeSegment reusable class for time-coded content with dual ISO 8601 + seconds representation"
- "CV/Multimodal (v0.9.10): Detection classes (DetectedObject, DetectedFace, DetectedLogo, DetectedLandmark, TextRegion) for heritage-relevant visual analysis"
- "Ontology alignment (v0.9.10): CIDOC-CRM (E73, E33, E52), W3C Web Annotation (oa:Annotation), Schema.org (transcript, caption), PROV-O (Entity, Activity)"
- "Grand total: 187 files (185 definitions + 2 supporting) - added 7 video content classes"
see_also:
- "https://github.com/FICLIT/PiCo"

View file

@ -247,6 +247,11 @@
"path": "modules/classes/ConfidenceMeasure.yaml",
"category": "classes"
},
{
"name": "ConnectionNetwork",
"path": "modules/classes/ConnectionNetwork.yaml",
"category": "classes"
},
{
"name": "ConservationLab",
"path": "modules/classes/ConservationLab.yaml",
@ -427,6 +432,11 @@
"path": "modules/classes/EducationCenter.yaml",
"category": "classes"
},
{
"name": "EducationCredential",
"path": "modules/classes/EducationCredential.yaml",
"category": "classes"
},
{
"name": "EducationProviderType",
"path": "modules/classes/EducationProviderType.yaml",
@ -442,6 +452,11 @@
"path": "modules/classes/ExhibitionSpace.yaml",
"category": "classes"
},
{
"name": "ExtractionMetadata",
"path": "modules/classes/ExtractionMetadata.yaml",
"category": "classes"
},
{
"name": "FeatureCustodianType",
"path": "modules/classes/FeatureCustodianType.yaml",
@ -527,6 +542,11 @@
"path": "modules/classes/HeritageSocietyType.yaml",
"category": "classes"
},
{
"name": "HeritageRelevance",
"path": "modules/classes/HeritageRelevance.yaml",
"category": "classes"
},
{
"name": "HistoricBuilding",
"path": "modules/classes/HistoricBuilding.yaml",
@ -632,6 +652,11 @@
"path": "modules/classes/LanguageCode.yaml",
"category": "classes"
},
{
"name": "LanguageProficiency",
"path": "modules/classes/LanguageProficiency.yaml",
"category": "classes"
},
{
"name": "LegalEntityType",
"path": "modules/classes/LegalEntityType.yaml",
@ -662,6 +687,11 @@
"path": "modules/classes/LightArchives.yaml",
"category": "classes"
},
{
"name": "LinkedInProfile",
"path": "modules/classes/LinkedInProfile.yaml",
"category": "classes"
},
{
"name": "LiteraryArchive",
"path": "modules/classes/LiteraryArchive.yaml",
@ -852,6 +882,11 @@
"path": "modules/classes/PersonObservation.yaml",
"category": "classes"
},
{
"name": "PersonConnection",
"path": "modules/classes/PersonConnection.yaml",
"category": "classes"
},
{
"name": "PersonOrOrganization",
"path": "modules/classes/PersonOrOrganization.yaml",
@ -1276,6 +1311,11 @@
"name": "WorldHeritageSite",
"path": "modules/classes/WorldHeritageSite.yaml",
"category": "classes"
},
{
"name": "WorkExperience",
"path": "modules/classes/WorkExperience.yaml",
"category": "classes"
}
]
},
@ -1398,6 +1438,11 @@
"path": "modules/enums/HeritageSocietyTypeEnum.yaml",
"category": "enums"
},
{
"name": "HeritageTypeEnum",
"path": "modules/enums/HeritageTypeEnum.yaml",
"category": "enums"
},
{
"name": "HolySiteTypeEnum",
"path": "modules/enums/HolySiteTypeEnum.yaml",

View file

@ -79,7 +79,7 @@ classes:
- rico:CorporateBody
annotations:
custodian_types: ["A"]
custodian_types: '["A"]'
custodian_types_rationale: "ArchitecturalArchive is a specialized archive type for architectural documentation - maps to ARCHIVE type (A)"
comments:

View file

@ -163,7 +163,7 @@ classes:
- rico:RecordSet
annotations:
custodian_types: ["A"]
custodian_types: '["A"]'
custodian_types_rationale: "ArchiveOrganizationType is specific to archives - institutions preserving original records and historical documents"
comments:

View file

@ -88,7 +88,7 @@ classes:
- rico:CorporateBody
annotations:
custodian_types: ["A", "G"]
custodian_types: '["A", "G"]'
custodian_types_rationale: "ArtArchive is a specialized archive for art documentation - primarily ARCHIVE (A) but often associated with GALLERY (G) institutions"
comments:

View file

@ -201,7 +201,7 @@ classes:
- TDWG Standards: https://www.tdwg.org/standards/
annotations:
custodian_types: ["B"]
custodian_types: '["B"]'
custodian_types_rationale: "BioCustodianType is specific to botanical gardens, zoos, aquariums - institutions with living collections"
slots:

View file

@ -89,7 +89,7 @@ classes:
- rico:CorporateBody
annotations:
custodian_types: ["A", "H"]
custodian_types: '["A", "H"]'
custodian_types_rationale: "CathedralArchive serves dual roles - as an ARCHIVE (A) for ecclesiastical records and as part of a HOLY_SITE (H) religious institution"
comments:

View file

@ -132,7 +132,7 @@ classes:
- rico:CorporateBody
annotations:
custodian_types: ["A", "H"]
custodian_types: '["A", "H"]'
custodian_types_rationale: "ChurchArchiveSweden is both an ARCHIVE (A) for Swedish parish records and associated with HOLY_SITE (H) Church of Sweden parishes"
comments:

View file

@ -52,7 +52,7 @@ classes:
Collection:
class_uri: rico:RecordSet
annotations:
custodian_types: ["G", "L", "A", "M", "B", "H"]
custodian_types: '["G", "L", "A", "M", "B", "H"]'
custodian_types_rationale: "Collection is relevant to institutions that hold catalogued collections: Galleries, Libraries, Archives, Museums, Botanical gardens/zoos, Holy sites"
description: |
Specific, inventoried heritage holdings with fine-grained cataloguing detail.

View file

@ -31,7 +31,7 @@ classes:
is_a: CustodianType
class_uri: skos:Concept
annotations:
custodian_types: ["C"]
custodian_types: '["C"]'
custodian_types_rationale: "CommercialOrganizationType represents for-profit commercial heritage custodians (corporate archives, company museums) - maps to CORPORATION type (C)"
description: |
Specialized custodian type for for-profit commercial organizations that

View file

@ -9,7 +9,7 @@ classes:
CustodianObservation:
class_uri: hc:CustodianObservation
annotations:
custodian_types: ["G", "L", "A", "M", "O", "R", "C", "U", "B", "E", "S", "F", "I", "X", "P", "H", "D", "N", "T"]
custodian_types: '["G", "L", "A", "M", "O", "R", "C", "U", "B", "E", "S", "F", "I", "X", "P", "H", "D", "N", "T"]'
custodian_types_rationale: "CustodianObservation is universal - source-based evidence can apply to any heritage custodian type"
description: |
Source-based evidence of a heritage custodian's existence.

View file

@ -35,7 +35,7 @@ classes:
is_a: ArchiveOrganizationType
class_uri: skos:Concept
annotations:
custodian_types: ["A"]
custodian_types: '["A"]'
custodian_types_rationale: "DarkArchive is a type of archive with restricted access - maps to ARCHIVE type (A)"
description: |
Archive preserving materials for future use but with NO CURRENT ACCESS.

View file

@ -32,7 +32,7 @@ classes:
is_a: ArchiveOrganizationType
class_uri: skos:Concept
annotations:
custodian_types: ["A", "D"]
custodian_types: '["A", "D"]'
custodian_types_rationale: "DigitalArchive bridges archive and digital platform types - maps to ARCHIVE (A) and DIGITAL_PLATFORM (D)"
description: |
Information system collecting and providing access to digital resources.

View file

@ -33,7 +33,7 @@ classes:
is_a: CustodianType
class_uri: skos:Concept
annotations:
custodian_types: ["D"]
custodian_types: '["D"]'
custodian_types_rationale: "DigitalPlatformType represents digital heritage platforms - maps exclusively to DIGITAL_PLATFORM type (D)"
description: |
Specialized custodian type for digital heritage platforms operating primarily

View file

@ -150,7 +150,7 @@ classes:
- rico:CorporateBody
annotations:
custodian_types: ["A", "H"]
custodian_types: '["A", "H"]'
custodian_types_rationale: "DiocesanArchive serves dual roles - as an ARCHIVE (A) for bishop/diocese records and associated with HOLY_SITE (H) religious administration"
related_mappings:

View file

@ -56,7 +56,7 @@ classes:
is_a: CustodianType
class_uri: skos:Concept
annotations:
custodian_types: ["E"]
custodian_types: '["E"]'
custodian_types_rationale: "EducationProviderType is specific to education providers - universities, colleges, schools with heritage collections"
description: |
Education providers (universities, colleges, schools) that maintain heritage collections

View file

@ -183,7 +183,7 @@ classes:
```
annotations:
custodian_types: ["F"]
custodian_types: '["F"]'
custodian_types_rationale: "FeatureCustodianType is specific to organizations managing physical heritage features (monuments, landmarks, historic sites)"
exact_mappings:

View file

@ -42,7 +42,7 @@ classes:
is_a: ReconstructedEntity
class_uri: crm:E27_Site
annotations:
custodian_types: ["F"]
custodian_types: '["F"]'
custodian_types_rationale: "FeaturePlace represents physical heritage features (monuments, statues) - maps to FEATURES type"
description: |
Physical feature type classification for nominal place references.

View file

@ -205,7 +205,7 @@ classes:
- aat:300240058 # nonprofit galleries
annotations:
custodian_types: ["G"]
custodian_types: '["G"]'
custodian_types_rationale: "GalleryType is specific to galleries - art exhibition spaces (commercial and non-commercial)"
comments:

View file

@ -57,7 +57,7 @@ classes:
is_a: CustodianType
class_uri: skos:Concept
annotations:
custodian_types: ["S"]
custodian_types: '["S"]'
custodian_types_rationale: "HeritageSocietyType represents collecting societies and heritage associations - maps to COLLECTING_SOCIETY type (S)"
description: |
Heritage societies, historical associations, and collecting societies that preserve

View file

@ -222,7 +222,7 @@ classes:
```
annotations:
custodian_types: ["H"]
custodian_types: '["H"]'
custodian_types_rationale: "HolySacredSiteType is specific to religious sites managing heritage collections (churches, temples, mosques, synagogues)"
exact_mappings:

View file

@ -20,15 +20,14 @@ classes:
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Institution is a broad category encompassing all heritage custodian types."
skos:prefLabel: "Institution"
skos:altLabel: "Institution, institución, institution sociale"
organizational_level: "broad category"
slots:
- wikidata_entity
slot_usage:
wikidata_entity:
equals_string: "Q178706"
annotations:
skos:prefLabel: "Institution"
skos:altLabel: "Institution, institución, institution sociale"
organizational_level: "broad category"
see_also:
- Organization
- MemoryInstitution

View file

@ -32,7 +32,7 @@ classes:
IntangibleHeritageForm:
class_uri: crm:E28_Conceptual_Object
annotations:
custodian_types: ["I"]
custodian_types: '["I"]'
custodian_types_rationale: "IntangibleHeritageForm represents intangible cultural heritage practices - maps exclusively to INTANGIBLE_HERITAGE_GROUP type (I)"
description: |
A recognized intangible cultural heritage practice, tradition, or expression.

View file

@ -182,7 +182,7 @@ classes:
```
annotations:
custodian_types: ["I"]
custodian_types: '["I"]'
custodian_types_rationale: "IntangibleHeritageGroupType is specific to organizations preserving intangible cultural heritage (performing arts, traditional crafts, oral traditions)"
exact_mappings:

View file

@ -180,7 +180,7 @@ classes:
- dcterms:BibliographicResource
annotations:
custodian_types: ["L"]
custodian_types: '["L"]'
custodian_types_rationale: "LibraryType is specific to libraries - institutions collecting and providing access to published materials"
comments:

View file

@ -26,7 +26,7 @@ classes:
wikidata_entity:
equals_string: "Q28607652"
annotations:
custodian_types: ["A"]
custodian_types: '["A"]'
custodian_types_rationale: "LiteraryArchive is a specialized archive type for literary works and author papers - maps to ARCHIVE type (A)"
skos:prefLabel: "Literary Archive"
skos:altLabel: "Literaturarchiv, archivo literario, archives littéraires, Author Archive"

View file

@ -20,16 +20,15 @@ classes:
annotations:
custodian_types: '["X"]'
custodian_types_rationale: "Swedish local heritage institution is often mixed type (X)."
skos:prefLabel: "Local Heritage Institution (Sweden)"
skos:altLabel: "Hembygdsgård, Heimatmuseen in Schweden, Swedish Local Heritage Museum"
geographic_restriction: "Sweden only"
institutional_context: "local heritage association"
slots:
- wikidata_entity
slot_usage:
wikidata_entity:
equals_string: "Q10520688"
annotations:
skos:prefLabel: "Local Heritage Institution (Sweden)"
skos:altLabel: "Hembygdsgård, Heimatmuseen in Schweden, Swedish Local Heritage Museum"
geographic_restriction: "Sweden only"
institutional_context: "local heritage association"
see_also:
- LocalHistoryArchive
- HeritageSocietyType

View file

@ -20,15 +20,14 @@ classes:
annotations:
custodian_types: '["L"]'
custodian_types_rationale: "Location library is a library type (L)."
skos:prefLabel: "Location Library"
skos:altLabel: "biblioteca de localizaciones, Film Location Library, Location Database, Scouting Library"
subject_domain: "film/photography production"
slots:
- wikidata_entity
slot_usage:
wikidata_entity:
equals_string: "Q6664811"
annotations:
skos:prefLabel: "Location Library"
skos:altLabel: "biblioteca de localizaciones, Film Location Library, Location Database, Scouting Library"
subject_domain: "film/photography production"
see_also:
- FilmArchive
- PhotoArchive

View file

@ -20,15 +20,14 @@ classes:
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Memory institution is an umbrella term for all GLAM types (G, L, A, M, etc.)."
skos:prefLabel: "Memory Institution"
skos:altLabel: "Gedächtnisinstitution, institución del patrimonio, institution patrimoniale, Heritage Institution, Cultural Memory Institution"
sector_term: "yes"
slots:
- wikidata_entity
slot_usage:
wikidata_entity:
equals_string: "Q1497649"
annotations:
skos:prefLabel: "Memory Institution"
skos:altLabel: "Gedächtnisinstitution, institución del patrimonio, institution patrimoniale, Heritage Institution, Cultural Memory Institution"
sector_term: "yes"
see_also:
- GLAM
- CulturalInstitution

View file

@ -173,7 +173,7 @@ classes:
```
annotations:
custodian_types: ["X"]
custodian_types: '["X"]'
custodian_types_rationale: "MixedCustodianType is for institutions operating as multiple types simultaneously (e.g., combined museum/archive/library)"
exact_mappings:

View file

@ -26,7 +26,7 @@ classes:
wikidata_entity:
equals_string: "Q27030561"
annotations:
custodian_types: ["A", "H"]
custodian_types: '["A", "H"]'
custodian_types_rationale: "MonasteryArchive serves dual roles - as an ARCHIVE (A) for monastic records and as part of a HOLY_SITE (H) religious community"
skos:prefLabel: "Monastery Archive"
skos:altLabel: "Klosterarchiv, archivo monástico, Monastic Archive, Abbey Archive"

View file

@ -173,7 +173,7 @@ classes:
- crm:E7_Activity
annotations:
custodian_types: ["M"]
custodian_types: '["M"]'
custodian_types_rationale: "MuseumType represents museum organizations - maps exclusively to MUSEUM type (M)"
comments:

View file

@ -25,7 +25,7 @@ classes:
wikidata_entity:
equals_string: "Q53759838"
annotations:
custodian_types: ["A"]
custodian_types: '["A"]'
custodian_types_rationale: "MusicArchive is a specialized archive type for music recordings and documents - maps to ARCHIVE type (A)"
skos:prefLabel: "Music Archive"
skos:altLabel: "Musikarchiv, archivo musical, archives musicales"

View file

@ -32,7 +32,7 @@ classes:
is_a: CustodianType
class_uri: skos:Concept
annotations:
custodian_types: ["N"]
custodian_types: '["N"]'
custodian_types_rationale: "NonProfitType represents heritage-focused NGOs and non-profit organizations - maps to NGO type (N)"
description: |
Specialized custodian type for non-profit heritage organizations that don't

View file

@ -25,7 +25,7 @@ classes:
wikidata_entity:
equals_string: "Q27030945"
annotations:
custodian_types: ["A"]
custodian_types: '["A"]'
custodian_types_rationale: "PerformingArtsArchive is a specialized archive for performing arts materials - maps to ARCHIVE type (A)"
skos:prefLabel: "Performing Arts Archive"
skos:altLabel: "Archiv für darstellende Kunst, archives des arts de la scène, Theater Archive, Dance Archive"

View file

@ -2,10 +2,36 @@ id: https://nde.nl/ontology/hc/class/PersonObservation
name: PersonObservation
title: Person Observation (Staff Role Context)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
pico: https://personsincontext.org/model#
pnv: https://w3id.org/pnv#
crm: http://www.cidoc-crm.org/cidoc-crm/
foaf: http://xmlns.com/foaf/0.1/
prov: http://www.w3.org/ns/prov#
dcterms: http://purl.org/dc/terms/
sdo: https://schema.org/
imports:
- linkml:types
- ../slots/contact_email
- ../slots/has_person_name
- ../slots/birth_date
- ../slots/birth_place
- ../slots/death_place
- ../slots/date_of_death
- ../slots/deceased
- ../slots/age
- ../slots/occupation
- ../slots/religion
- ../slots/gender_identity
- ../slots/pronouns
- ../slots/extraction_metadata
- ./PersonWebClaim
- ./PersonName
- ./ExtractionMetadata
classes:
PersonObservation:
@ -99,8 +125,22 @@ classes:
- foaf:Person
- prov:Agent
slots:
# Identity slots
- id
- person_name
- has_person_name
# Biographical slots (PiCo-aligned)
- birth_date
- birth_place
- death_place
- date_of_death
- deceased
- age
- occupation
- religion
- gender_identity
- pronouns
# Staff role slots (institutional context)
- staff_role
- role_title
- unit_affiliation
@ -110,9 +150,11 @@ classes:
- affected_by_event
- contact_email
- expertise_areas
# Provenance slots
- web_claims
- linkedin_profile_path
- linkedin_profile_url
- extraction_metadata
- created
- modified
slot_usage:
@ -148,6 +190,177 @@ classes:
range: string
required: true
has_person_name:
slot_uri: pnv:hasName
description: |
Structured name following Person Name Vocabulary (PNV).
**Use alongside person_name** for both quick access (string) and
structured parsing (PNV components).
**Essential for Dutch names** with tussenvoegsels (van, de, van der, etc.)
to enable proper alphabetical sorting by base_surname.
**See**: modules/classes/PersonName.yaml for full PNV structure
**See**: modules/slots/has_person_name.yaml for detailed documentation
range: PersonName
required: false
inlined: true
# =========================================================================
# BIOGRAPHICAL SLOTS (PiCo-aligned)
# =========================================================================
# These slots capture biographical information about the person.
# They follow the PiCo (Persons in Context) pattern where:
# - PersonObservation = data as found in source (evidence-based)
# - PersonReconstruction = aggregated identity from multiple observations
#
# In staff context, biographical data may come from:
# - Institutional biographical notes
# - Staff directory pages
# - LinkedIn profiles
# - Obituaries or memorial pages
# =========================================================================
birth_date:
slot_uri: sdo:birthDate
description: |
Date of birth as recorded in source.
**Format**: ISO 8601 date (YYYY-MM-DD) OR string for approximate dates.
**PiCo Pattern**: Records date as mentioned in source, may be imprecise.
**Examples**:
- "1970-08-15" (precise)
- "1970" (year only)
- "ca. 1750" (approximate, string format)
**See**: modules/slots/birth_date.yaml for detailed documentation
range: string
required: false
birth_place:
slot_uri: sdo:birthPlace
description: |
Place of birth as recorded in source.
**Format**: String (place name) OR URI (GeoNames, Wikidata).
**Examples**:
- "Amsterdam, Noord-Holland, Netherlands"
- "http://sws.geonames.org/2759794/"
**See**: modules/slots/birth_place.yaml for detailed documentation
range: string
required: false
death_place:
slot_uri: sdo:deathPlace
description: |
Place of death as recorded in source.
**Format**: String (place name) OR URI (GeoNames, Wikidata).
**Holocaust/Conflict**: May include concentration camps, conflict zones.
**See**: modules/slots/death_place.yaml for detailed documentation
range: string
required: false
date_of_death:
slot_uri: sdo:deathDate
description: |
Date of death (uses TimeSpan for fuzzy dates).
**Pre-existing slot**: See modules/slots/date_of_death.yaml
range: TimeSpan
required: false
deceased:
slot_uri: schema:deathDate
description: |
Boolean flag indicating person is known to be deceased.
**Use Case**: Mark deceased without knowing exact date.
**Pre-existing slot**: See modules/slots/deceased.yaml
range: boolean
required: false
age:
slot_uri: pico:hasAge
description: |
Age as recorded in source (when birth_date unknown).
**Format**: String (allows "4" or "4 months" or "approximately 40").
**Derivation**: Combined with source date to infer birth_date range.
**See**: modules/slots/age.yaml for detailed documentation
range: string
required: false
occupation:
slot_uri: sdo:hasOccupation
description: |
Occupation/profession as mentioned in source (outside institutional role).
**Distinction from staff_role**:
- occupation: General profession (e.g., "art historian")
- staff_role: Institutional role class (e.g., Curator)
**Format**: String (vernacular term) OR URI (Wikidata, HISCO).
**Multivalued**: Person may have multiple occupations.
**See**: modules/slots/occupation.yaml for detailed documentation
range: string
multivalued: true
required: false
religion:
slot_uri: pico:hasReligion
description: |
Religion/worldview as mentioned in source.
**SENSITIVE DATA**: Handle with appropriate privacy considerations.
**Format**: String (vernacular term) OR URI (Wikidata).
**PiCo Pattern**: Records religion as found in historical source.
**See**: modules/slots/religion.yaml for detailed documentation
range: string
required: false
gender_identity:
slot_uri: schema:gender
description: |
Gender identity as expressed or recorded.
**Free-text**: Allows inclusive representation beyond binary.
**Pre-existing slot**: See modules/slots/gender_identity.yaml
range: string
required: false
pronouns:
slot_uri: schema:knows
description: |
Pronouns used by or for this person.
**Multilingual support**: May include Dutch (hij/hem, zij/haar),
English (he/him, she/her, they/them), etc.
**Pre-existing slot**: See modules/slots/pronouns.yaml
range: string
required: false
# =========================================================================
# STAFF ROLE SLOTS (Institutional Context)
# =========================================================================
staff_role:
slot_uri: schema:roleName
description: |
@ -435,6 +648,34 @@ classes:
range: uri
required: false
extraction_metadata:
description: |
Provenance metadata for how this person observation was extracted.
**PROV-O Alignment**: This slot links the observation (prov:Entity)
to the extraction activity (prov:Activity).
**Use Case**: Track automated extraction from LinkedIn, web scraping,
or manual data entry.
**Relationship to Other Provenance**:
- `observation_source`: High-level source document reference
- `web_claims`: Individual verifiable claims with XPath
- `extraction_metadata`: Automated extraction activity provenance
**Example**:
```yaml
extraction_metadata:
source_file: data/custodian/person/affiliated/parsed/rijksmuseum_staff.json
extraction_date: "2025-12-12T22:00:00Z"
extraction_method: exa_crawling_exa
extraction_agent: claude-opus-4.5
cost_usd: 0.001
```
range: ExtractionMetadata
inlined: true
required: false
created:
slot_uri: schema:dateCreated
description: |

View file

@ -169,7 +169,7 @@ classes:
```
annotations:
custodian_types: ["P"]
custodian_types: '["P"]'
custodian_types_rationale: "PersonalCollectionType is specific to individual private collectors maintaining personal heritage collections"
exact_mappings:

View file

@ -20,15 +20,14 @@ classes:
annotations:
custodian_types: '["L", "P"]'
custodian_types_rationale: "Personal library combines library (L) and personal collection (P)."
skos:prefLabel: "Personal Library"
skos:altLabel: "Autorenbibliothek, biblioteca de autor, bibliothèque personnelle, Private Library"
collection_type: "personal collection"
slots:
- wikidata_entity
slot_usage:
wikidata_entity:
equals_string: "Q106402388"
annotations:
skos:prefLabel: "Personal Library"
skos:altLabel: "Autorenbibliothek, biblioteca de autor, bibliothèque personnelle, Private Library"
collection_type: "personal collection"
see_also:
- Nachlass
- LiteraryArchive

View file

@ -26,7 +26,7 @@ classes:
wikidata_entity:
equals_string: "Q27032363"
annotations:
custodian_types: ["A"]
custodian_types: '["A"]'
custodian_types_rationale: "PhotoArchive is a specialized archive type for photographic materials - maps to ARCHIVE type (A)"
skos:prefLabel: "Photo Archive"
skos:altLabel: "Fotoarchiv, archivo fotográfico, archive photographique, Photograph Archive, Photographic Archive"

View file

@ -19,16 +19,15 @@ classes:
annotations:
custodian_types: '["A", "M"]'
custodian_types_rationale: "Photograph collections are typically in archives (A) or museums (M)."
skos:prefLabel: "Photograph Collection"
skos:altLabel: "Fotosammlung, colección de fotografías, collection de photographies, Photo Collection"
media_type: "photographic"
collection_type: "photographs"
slots:
- wikidata_entity
slot_usage:
wikidata_entity:
equals_string: "Q130486108"
annotations:
skos:prefLabel: "Photograph Collection"
skos:altLabel: "Fotosammlung, colección de fotografías, collection de photographies, Photo Collection"
media_type: "photographic"
collection_type: "photographs"
see_also:
- PhotoArchive
- IconographicArchives

View file

@ -29,7 +29,7 @@ classes:
is_a: ReconstructedEntity
class_uri: schema:ResearchOrganization
annotations:
custodian_types: ["R"]
custodian_types: '["R"]'
custodian_types_rationale: "ResearchCenter represents research institutes and academic facilities - maps exclusively to RESEARCH_CENTER type (R)"
description: |
Research center or research facility operated by or affiliated with a heritage custodian.

View file

@ -12,7 +12,7 @@ classes:
is_a: CustodianType
class_uri: skos:Concept
annotations:
custodian_types: ["R"]
custodian_types: '["R"]'
custodian_types_rationale: "ResearchOrganizationType represents research organizations and institutes - maps to RESEARCH_CENTER type (R)"
description: |
Specialized custodian type for research organizations - institutions whose

View file

@ -23,17 +23,16 @@ classes:
annotations:
custodian_types: '["A", "O"]'
custodian_types_rationale: "Swedish archives sector is an official archive institution (A, O)."
slots:
- wikidata_entity
slot_usage:
wikidata_entity:
equals_string: "Q84171278"
annotations:
skos:prefLabel: "Sector of Archives in Sweden"
skos:altLabel: "Archivwesen in Schweden, Swedish Archival Sector"
geographic_restriction: "Sweden only"
custodian_only: "true"
sector_term: "yes"
slots:
- wikidata_entity
slot_usage:
wikidata_entity:
equals_string: "Q84171278"
see_also:
- RegionalStateArchives
- Landsarkiv

View file

@ -21,7 +21,7 @@ classes:
is_a: ArchiveOrganizationType
class_uri: skos:Concept
annotations:
custodian_types: ["A"]
custodian_types: '["A"]'
custodian_types_rationale: "SoundArchive is a specialized archive type for audio materials - maps to ARCHIVE type (A)"
wikidata: Q2230431
label_de: "Schallarchiv"

View file

@ -23,6 +23,12 @@ classes:
annotations:
custodian_types: '["L", "A"]'
custodian_types_rationale: "Special collections are typically in libraries (L) or archives (A)."
wikidata: Q4431094
label_de: "Spezialsammlung"
label_es: "colección especial"
label_fr: "fonds spéciaux"
rico_record_set_type: true
custodian_type: true
mixins:
- LibraryType
slots:
@ -46,13 +52,6 @@ classes:
- ManuscriptCollection
- MapLibrary
- PhotographCollection
annotations:
wikidata: Q4431094
label_de: "Spezialsammlung"
label_es: "colección especial"
label_fr: "fonds spéciaux"
rico_record_set_type: true
custodian_type: true
# rico:RecordSetType for collection classification
SpecialCollectionRecordSetType:

View file

@ -180,7 +180,7 @@ classes:
```
annotations:
custodian_types: ["T"]
custodian_types: '["T"]'
custodian_types_rationale: "TasteScentHeritageType is specific to culinary and olfactory heritage institutions (historic breweries, perfume houses, artisanal food producers)"
exact_mappings:

View file

@ -25,6 +25,12 @@ classes:
annotations:
custodian_types: '["F"]'
custodian_types_rationale: "Tentative World Heritage Site is a feature/monument type (F)."
wikidata: Q1459900
label_de: "Tentativliste"
label_es: "lista indicativa del Patrimonio de la Humanidad"
label_fr: "liste indicative du patrimoine mondial"
custodian_only: true
rico_record_set_type: false
slots:
- wikidata_entity
slot_usage:
@ -47,10 +53,3 @@ classes:
- WorldHeritageSite
- NationalTreasure
- NationalTreasureOfFrance
annotations:
wikidata: Q1459900
label_de: "Tentativliste"
label_es: "lista indicativa del Patrimonio de la Humanidad"
label_fr: "liste indicative du patrimoine mondial"
custodian_only: true
rico_record_set_type: false

View file

@ -5,9 +5,59 @@ id: https://nde.nl/ontology/hc/class/TimeSpan
name: timespan_class
title: TimeSpan Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
crm: http://www.cidoc-crm.org/cidoc-crm/
time: http://www.w3.org/2006/time#
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
- ../metadata
default_range: string
slots:
begin_of_the_begin:
slot_uri: crm:P82a_begin_of_the_begin
description: |
Earliest possible start time of the time-span.
CIDOC-CRM: Outer bound of the time-span's beginning.
range: datetime
examples:
- value: "1800-01-01T00:00:00Z"
description: "Earliest possible founding date"
end_of_the_begin:
slot_uri: crm:P81a_end_of_the_begin
description: |
Latest possible start time of the time-span.
CIDOC-CRM: Inner bound of the time-span's beginning.
range: datetime
examples:
- value: "1805-12-31T23:59:59Z"
description: "Latest possible founding date"
begin_of_the_end:
slot_uri: crm:P81b_begin_of_the_end
description: |
Earliest possible end time of the time-span.
CIDOC-CRM: Inner bound of the time-span's ending.
range: datetime
examples:
- value: "1950-01-01T00:00:00Z"
description: "Earliest possible closure date"
end_of_the_end:
slot_uri: crm:P82b_end_of_the_end
description: |
Latest possible end time of the time-span.
CIDOC-CRM: Outer bound of the time-span's ending.
range: datetime
examples:
- value: "1955-12-31T23:59:59Z"
description: "Latest possible closure date"
classes:
@ -47,44 +97,6 @@ classes:
- begin_of_the_end
- end_of_the_end
slot_usage:
begin_of_the_begin:
slot_uri: crm:P82a_begin_of_the_begin
description: |
Earliest possible start time of the time-span.
CIDOC-CRM: Outer bound of the time-span's beginning.
range: datetime
examples:
- value: "1800-01-01T00:00:00Z"
description: "Earliest possible founding date"
end_of_the_begin:
slot_uri: crm:P81a_end_of_the_begin
description: |
Latest possible start time of the time-span.
CIDOC-CRM: Inner bound of the time-span's beginning.
range: datetime
examples:
- value: "1805-12-31T23:59:59Z"
description: "Latest possible founding date"
begin_of_the_end:
slot_uri: crm:P81b_begin_of_the_end
description: |
Earliest possible end time of the time-span.
CIDOC-CRM: Inner bound of the time-span's ending.
range: datetime
examples:
- value: "1950-01-01T00:00:00Z"
description: "Earliest possible closure date"
end_of_the_end:
slot_uri: crm:P82b_end_of_the_end
description: |
Latest possible end time of the time-span.
CIDOC-CRM: Outer bound of the time-span's ending.
range: datetime
examples:
- value: "1955-12-31T23:59:59Z"
description: "Latest possible closure date"
comments:
- "Handles temporal uncertainty common in heritage contexts"
- "Precise dates: Set begin_of_the_begin == end_of_the_begin (and same for end)"

View file

@ -24,6 +24,11 @@ classes:
annotations:
custodian_types: '["L", "D"]'
custodian_types_rationale: "Virtual map library combines library (L) and digital platform (D)."
wikidata: Q5995078
label_de: "Virtuelle Kartenbibliothek"
label_es: "Mapoteca virtual"
rico_record_set_type: true
custodian_type: true
mixins:
- DigitalPlatformType
- LibraryType
@ -49,12 +54,6 @@ classes:
- DigitalArchive
- DigitalLibrary
- GeographicInformationSystem
annotations:
wikidata: Q5995078
label_de: "Virtuelle Kartenbibliothek"
label_es: "Mapoteca virtual"
rico_record_set_type: true
custodian_type: true
# rico:RecordSetType for collection classification
VirtualMapLibraryRecordSetType:

View file

@ -25,6 +25,12 @@ classes:
annotations:
custodian_types: '["F"]'
custodian_types_rationale: "World Heritage Site is a feature/monument type (F)."
wikidata: Q9259
label_de: "UNESCO-Welterbe"
label_es: "Patrimonio de la Humanidad"
label_fr: "patrimoine mondial"
custodian_only: true
rico_record_set_type: false
slots:
- wikidata_entity
slot_usage:
@ -52,10 +58,3 @@ classes:
- NationalTreasure
- NationalTreasureOfFrance
- MemoryInstitution
annotations:
wikidata: Q9259
label_de: "UNESCO-Welterbe"
label_es: "Patrimonio de la Humanidad"
label_fr: "patrimoine mondial"
custodian_only: true
rico_record_set_type: false

View file

@ -7,6 +7,7 @@
"affected_units.yaml",
"affects_organization.yaml",
"affiliation.yaml",
"age.yaml",
"agent_name.yaml",
"agent_type.yaml",
"allocated_by.yaml",
@ -17,6 +18,9 @@
"alternative_observed_names.yaml",
"altitude.yaml",
"api_endpoint.yaml",
"base_surname.yaml",
"birth_date.yaml",
"birth_place.yaml",
"appellation_language.yaml",
"appellation_type.yaml",
"appellation_value.yaml",
@ -52,6 +56,7 @@
"custodian_type.yaml",
"custodians.yaml",
"data_license_policy.yaml",
"death_place.yaml",
"defined_by_standard.yaml",
"derived_from_entity.yaml",
"description.yaml",
@ -80,6 +85,7 @@
"generates.yaml",
"geographic_scope.yaml",
"geonames_id.yaml",
"given_name.yaml",
"governance_structure.yaml",
"has_collection.yaml",
"has_derived_observation.yaml",
@ -87,6 +93,7 @@
"has_geospatial_location.yaml",
"has_member.yaml",
"has_observation.yaml",
"has_person_name.yaml",
"has_suborganization.yaml",
"has_unit.yaml",
"hc_id.yaml",
@ -98,6 +105,7 @@
"identifiers.yaml",
"identifies_custodian.yaml",
"identifies.yaml",
"initials.yaml",
"is_legal_status_of.yaml",
"is_member_of.yaml",
"jurisdiction.yaml",
@ -114,6 +122,7 @@
"legal_responsibility_end_date.yaml",
"legal_responsibility_start_date.yaml",
"legal_status.yaml",
"literal_name.yaml",
"located_at.yaml",
"longitude.yaml",
"managed_by.yaml",
@ -124,12 +133,14 @@
"modified.yaml",
"name_authority.yaml",
"name_language.yaml",
"name_specification.yaml",
"name_validity_period.yaml",
"oai_pmh_endpoint.yaml",
"observation_context.yaml",
"observation_date.yaml",
"observation_source.yaml",
"observed_name.yaml",
"occupation.yaml",
"operated_by.yaml",
"operates.yaml",
"organizational_change_events.yaml",
@ -137,6 +148,7 @@
"organizational_structures.yaml",
"parent_custodian.yaml",
"parent_unit.yaml",
"patronym.yaml",
"person_name.yaml",
"place_designation.yaml",
"place_language.yaml",
@ -158,6 +170,7 @@
"registration_authority.yaml",
"registration_date.yaml",
"registration_numbers.yaml",
"religion.yaml",
"responsible_agent.yaml",
"responsible_legal_entity.yaml",
"resulting_units.yaml",
@ -185,6 +198,7 @@
"subregion.yaml",
"superseded_by.yaml",
"supersedes.yaml",
"surname_prefix.yaml",
"technology_stack.yaml",
"temporal_coverage.yaml",
"temporal_extent.yaml",