glam/schemas/20251121/linkml/modules/classes/CustodianCollection.yaml
kempersc b34992b1d3 Migrate all 293 class files to ontology-aligned slots
Extends migration to all class types (museums, libraries, galleries, etc.)

New slots added to class_metadata_slots.yaml:
- RiC-O: rico_record_set_type, rico_organizational_principle,
  rico_has_or_had_holder, rico_note
- Multilingual: label_de, label_es, label_fr, label_nl, label_it, label_pt
- Scope: scope_includes, scope_excludes, custodian_only,
  organizational_level, geographic_restriction
- Notes: privacy_note, preservation_note, legal_note

Migration script now handles 30+ annotation types.
All migrated schemas pass linkml-validate.

Total: 387 class files now use proper slots instead of annotations.
2026-01-06 12:24:54 +01:00

422 lines
16 KiB
YAML

id: https://nde.nl/ontology/hc/class/CustodianCollection
name: custodian_collection_class
title: CustodianCollection Class
imports:
- linkml:types
- ./Custodian
- ./CustodianObservation
- ./ReconstructionActivity
- ./TimeSpan
- ./OrganizationalStructure
- ./CollectionManagementSystem
- ./ReconstructedEntity
- ../slots/preservation_level
- ../slots/digitization_status
- ../slots/collection_name
- ../slots/collection_description
- ../slots/collection_type
- ../slots/collection_scope
- ../slots/temporal_coverage
- ../slots/extent
- ../slots/managing_unit
- ../slots/valid_from
- ../slots/valid_to
- ../slots/refers_to_custodian
- ../slots/was_derived_from
- ../slots/arrangement_system
- ../slots/was_generated_by
- ../slots/class_metadata_slots
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
dcterms: http://purl.org/dc/terms/
rico: https://www.ica.org/standards/RiC/ontology#
prov: http://www.w3.org/ns/prov#
time: http://www.w3.org/2006/time#
org: http://www.w3.org/ns/org#
premis: http://www.loc.gov/premis/rdf/v3/
bf: http://id.loc.gov/ontologies/bibframe/
slots:
access_rights:
range: string
provenance_note:
slot_uri: crm:P24_transferred_title_of
range: string
description: |
Notes on collection provenance, acquisition history, custody transfers.
Documents metonymic relationship: how collection identifies custodian.
digital_surrogates:
slot_uri: premis:hasRepresentation
range: string
multivalued: true
description: |
Digital representations/surrogates of collection materials.
PREMIS: hasRepresentation links intellectual entities to digital representations.
A Representation is a digital object that instantiates or renders an
IntellectualEntity.
Examples:
- Digitized manuscript images
- 3D scans of museum objects
- OCR text files from archival documents
- High-resolution photographs of artworks
custody_history:
range: string
multivalued: true
managed_by_cms:
slot_uri: crm:P70i_is_documented_in
range: CollectionManagementSystem
multivalued: true
description: |
Collection Management System(s) used to manage this collection.
CIDOC-CRM: P70i_is_documented_in (inverse of P70_documents).
The CMS documents/manages the collection records.
**Bidirectional Relationship**:
- Forward: CustodianCollection → CollectionManagementSystem (managed_by_cms)
- Reverse: CollectionManagementSystem → CustodianCollection (manages_collection)
**Use Cases**:
1. "What CMS manages this collection?" → Follow managed_by_cms
2. "What collections are in this CMS?" → Follow manages_collection
3. Migration planning: Identify all collections requiring CMS migration
**Notes**:
- Multivalued: A collection may be managed by multiple CMS
(e.g., legacy system + new system during migration)
- If null, collection may be managed manually or CMS is unknown
classes:
CustodianCollection:
is_a: ReconstructedEntity
class_uri: crm:E78_Curated_Holding
description: |
Represents a heritage collection as a multi-aspect entity with independent temporal lifecycle.
Collections are curatedHoldings (CIDOC-CRM E78) with provenance tracking, custody history,
and organizational management relationships.
Phase 4 (2025-11-22): Added managing_unit bidirectional relationship with OrganizationalStructure.
Phase 8 (2025-11-22): Added validation constraints via slot_usage.
Phase 9 (2025-11-26): Added PREMIS mappings for digital preservation (digital_surrogates,
digitization_status, preservation_level).
close_mappings:
- premis:IntellectualEntity
- rico:RecordSet
- bf:Collection
related_mappings:
- premis:hasRepresentation
- dcterms:hasPart
slots:
- access_rights
- arrangement_system
- collection_description
- collection_name
- collection_scope
- collection_type
- custodian_types
- custodian_types_rationale
- custody_history
- digital_surrogates
- digitization_status
- extent
- id
- managed_by_cms
- managing_unit
- preservation_level
- provenance_note
- refers_to_custodian
- specificity_annotation
- template_specificity
- temporal_coverage
- valid_from
- valid_to
- was_derived_from
- was_generated_by
slot_usage:
collection_name:
slot_uri: dcterms:title
range: string
required: true
pattern: ^.{1,500}$
description: |
Name of the collection (may differ from custodian name).
Required field, 1-500 characters.
Examples:
- "Rijksmuseum Collection"
- "Notarial Archives of Amsterdam"
- "Wallace Collection"
- "Vatican Apostolic Library Holdings"
managing_unit:
slot_uri: org:unitOf
range: OrganizationalStructure
required: false
description: |
Organizational unit (department, division, section) responsible for managing this collection.
**Bidirectional Relationship**:
- **Forward**: CustodianCollection → OrganizationalStructure (managing_unit)
- **Reverse**: OrganizationalStructure → CustodianCollection (managed_collections)
**Validation**: If provided, temporal consistency is validated:
- Collection.valid_from >= OrganizationalStructure.valid_from
- Collection.valid_to <= OrganizationalStructure.valid_to (if unit dissolved)
**Use Cases**:
1. **Collection Management**: "Which department manages the Medieval Manuscripts collection?"
2. **Staffing Cross-Reference**: "Who are the curators managing this collection?"
- Follow: managing_unit → OrganizationalStructure → staff_members → PersonObservation
3. **Organizational Change Impact**: Track collection custody through mergers, splits, reorganizations
**Notes**:
- If managing_unit is null, collection may be managed at institutional level
- Collections may split across multiple units → create separate CustodianCollection instances
- Custody transfers tracked via managing_unit changes + temporal validity
valid_from:
slot_uri: time:hasBeginning
range: date
required: false
description: |
Date when collection custody began under current managing unit.
Start date of collection's existence or custodian's stewardship
(e.g., founding collection date, acquisition date).
Validation Rule 1 (Collection-Unit Temporal Consistency):
- Must be >= managing_unit.valid_from (if managing_unit is set)
- Validated by SHACL shapes and custom Python validators
valid_to:
slot_uri: time:hasEnd
range: date
required: false
description: |
Date when collection custody ended (if applicable).
End date of collection's existence or custodian's stewardship
(e.g., deaccessioned, transferred to another custodian, destroyed).
Validation Rule 1 (Collection-Unit Temporal Consistency):
- Must be <= managing_unit.valid_to (if managing_unit is dissolved)
- Validated by SHACL shapes and custom Python validators
id:
identifier: true
required: true
description: |
Unique identifier for this collection aspect (URI).
Format: https://nde.nl/ontology/hc/collection/{custodian-id}
refers_to_custodian:
slot_uri: crm:P46i_forms_part_of
range: Custodian
required: true
description: |
Links this collection aspect back to the Custodian hub it represents.
CIDOC-CRM: P46i_forms_part_of (inverse of P46_is_composed_of).
This property enables navigation from aspect → hub:
- From collection aspect: refers_to_custodian → Custodian hub
- From hub: has_collection → CustodianCollection
collection_description:
slot_uri: dcterms:description
range: string
required: false
description: |
Narrative description of the collection's contents, scope, and significance.
collection_type:
slot_uri: dcterms:type
range: string
multivalued: true
description: |
Type(s) of heritage materials in collection.
Multiple types may apply (e.g., archives + library).
Examples:
- "archival_records" (rico:RecordSet)
- "museum_objects" (crm:E78_Curated_Holding)
- "library_holdings" (bf:Collection)
- "monuments" (crm:E27_Site)
- "archaeological_materials"
- "natural_history_specimens"
- "digital_born" (born-digital collections)
- "photographs"
- "manuscripts"
collection_scope:
slot_uri: dcterms:coverage
range: string
required: false
description: |
Subject scope or thematic focus of collection.
Examples:
- "17th-century Dutch painting"
- "Municipal government records, 1578-present"
- "Medieval manuscripts"
- "East Asian art"
temporal_coverage:
slot_uri: dcterms:temporal
range: TimeSpan
required: false
description: |
Time period covered by collection materials (NOT when collected).
Examples:
- Collection of 18th-century documents: temporal_coverage = 1700-1799
- Medieval manuscript collection: temporal_coverage = 800-1500
extent:
slot_uri: dcterms:extent
range: string
required: false
description: |
Size/quantity of collection.
Examples:
- "1,200 linear meters"
- "45,000 objects"
- "2.3 million books"
- "150 manuscript volumes"
access_rights:
slot_uri: dcterms:accessRights
range: string
required: false
description: |
Access conditions and restrictions for the collection.
Examples:
- "Open access"
- "By appointment only"
- "Restricted - researchers with credentials"
- "Closed until 2050"
digital_surrogates:
slot_uri: premis:hasRepresentation
range: string
multivalued: true
required: false
description: |
Digital representations/surrogates of collection materials.
PREMIS: hasRepresentation links intellectual entities to digital representations.
A premis:Representation is a digital object that instantiates or renders an
IntellectualEntity (the conceptual work).
Values can be:
- URIs to digital object repositories
- IIIF manifest URLs
- Persistent identifiers (DOIs, handles)
Examples:
- "https://iiif.rijksmuseum.nl/manifest/SK-A-1505"
- "https://doi.org/10.5281/zenodo.1234567"
- "https://archive.org/details/manuscript-collection-x"
digitization_status:
slot_uri: premis:hasRelatedStatementInformation
range: string
required: false
description: |
Current status of collection digitization efforts.
PREMIS: hasRelatedStatementInformation for preservation metadata statements.
Values:
- NOT_DIGITIZED: No digital surrogates exist
- PARTIAL: Some materials digitized (use extent to indicate percentage)
- COMPLETE: Entire collection digitized
- ONGOING: Active digitization project
Use with digital_surrogates slot to indicate availability of surrogates.
examples:
- value: PARTIAL
description: 30% of collection digitized as of 2024
- value: COMPLETE
description: Full collection digitized 2019-2021
preservation_level:
slot_uri: premis:policy
range: string
required: false
description: |
Level of digital preservation commitment for this collection.
PREMIS: policy for preservation commitment levels.
Aligns with premis:PreservationPolicy vocabulary.
Values:
- FULL: Long-term preservation with format migration commitment
- BIT_LEVEL: Bit preservation only (no format migration)
- ACCESS_ONLY: Access copies maintained, no preservation guarantee
- NONE: No formal digital preservation policy
Applies to digital_surrogates and born-digital materials in collection.
For specific file-level preservation actions, see DigitalPlatform
preservation slots (fixity_check_date, storage_location).
examples:
- value: FULL
description: Long-term preservation with format migration
- value: BIT_LEVEL
description: Bit-level preservation in institutional repository
managed_by_cms:
slot_uri: crm:P70i_is_documented_in
range: CollectionManagementSystem
multivalued: true
required: false
description: |
Collection Management System(s) used to manage this collection.
CIDOC-CRM: P70i_is_documented_in (inverse of P70_documents).
The CMS documents/manages the collection records.
**Bidirectional Relationship**:
- Forward: CustodianCollection → CollectionManagementSystem (managed_by_cms)
- Reverse: CollectionManagementSystem → CustodianCollection (manages_collection)
**Use Cases**:
1. "What CMS manages this collection?" → Follow managed_by_cms
2. "What collections are in this CMS?" → Follow manages_collection
3. Migration planning: Identify all collections requiring CMS migration
**Notes**:
- Multivalued: A collection may be managed by multiple CMS
(e.g., legacy system + new system during migration)
- If null, collection may be managed manually or CMS is unknown
examples:
- value: https://nde.nl/ontology/hc/cms/rijksmuseum-adlib
description: Collection managed by Rijksmuseum Adlib CMS
arrangement_system:
slot_uri: rico:hasRecordSetType
range: string
required: false
description: |
Intellectual arrangement or classification system.
Examples:
- "Archival fonds organized by provenance" (RiC-O)
- "Dewey Decimal Classification" (libraries)
- "Thematic galleries" (museums)
- "Chronological arrangement"
provenance_note:
slot_uri: crm:P24_transferred_title_of
range: string
required: false
description: |
Notes on collection provenance, acquisition history, custody transfers.
Documents metonymic relationship: how collection identifies custodian.
was_generated_by:
slot_uri: prov:wasGeneratedBy
range: ReconstructionActivity
required: false
description: |
Links to the ReconstructionActivity that generated this collection aspect.
If present, indicates formal entity resolution process was used.
If absent, indicates direct extraction without reconstruction.
was_derived_from:
slot_uri: prov:wasDerivedFrom
range: CustodianObservation
multivalued: true
required: true
description: |
Links to the observation(s) from which this collection aspect was derived.
Multiple observations may contribute evidence for a single collection aspect.
custodian_types:
equals_expression: '["*"]'
custodian_types_rationale:
equals_string: Custodian collection applies to all custodian types.
specificity_annotation:
range: SpecificityAnnotation
inlined: true
template_specificity:
range: TemplateSpecificityScores
inlined: true