diff --git a/backend/rag/main.py b/backend/rag/main.py
index eedc7ac78c..2c16f3d5bd 100644
--- a/backend/rag/main.py
+++ b/backend/rag/main.py
@@ -2752,9 +2752,17 @@ async def person_search(request: PersonSearchRequest) -> PersonSearchResponse:
)
try:
+ # Augment query for better recall on domain names if it looks like a domain search
+ # "nos" -> "nos email domain nos" to guide vector search towards email addresses
+ search_query = request.query
+ if len(search_query.split()) == 1 and len(search_query) > 2 and "@" not in search_query:
+ # Heuristic: single word queries might be domain searches
+ # We append "email domain" context to guide the embedding
+ search_query = f"{search_query} email domain {search_query}"
+
# Use the hybrid retriever's person search
results = retriever.search_persons(
- query=request.query,
+ query=search_query,
k=request.k,
filter_custodian=request.filter_custodian,
only_heritage_relevant=request.only_heritage_relevant,
diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json
index 51ed6663e4..0452289fe8 100644
--- a/frontend/public/schemas/20251121/linkml/manifest.json
+++ b/frontend/public/schemas/20251121/linkml/manifest.json
@@ -1,5 +1,5 @@
{
- "generated": "2026-01-26T23:49:30.478Z",
+ "generated": "2026-01-26T23:50:10.883Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 3014,
"categoryCounts": {
diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json
index 0452289fe8..e1938ec888 100644
--- a/schemas/20251121/linkml/manifest.json
+++ b/schemas/20251121/linkml/manifest.json
@@ -1,5 +1,5 @@
{
- "generated": "2026-01-26T23:50:10.883Z",
+ "generated": "2026-01-27T08:03:23.376Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 3014,
"categoryCounts": {
diff --git a/schemas/20251121/linkml/modules/classes/AcquisitionEvent.yaml b/schemas/20251121/linkml/modules/classes/AcquisitionEvent.yaml
index 5768970ae2..5f0fb603e1 100644
--- a/schemas/20251121/linkml/modules/classes/AcquisitionEvent.yaml
+++ b/schemas/20251121/linkml/modules/classes/AcquisitionEvent.yaml
@@ -13,6 +13,12 @@ prefixes:
imports:
- linkml:types
- ../slots/has_or_had_origin
+ - ../slots/temporal_extent
+ - ./TimeSpan
+ - ../slots/has_or_had_method
+ - ./AcquisitionMethod
+ - ../slots/has_or_had_provenance
+ - ./Provenance
- ./Entity
default_prefix: hc
classes:
@@ -20,6 +26,9 @@ classes:
class_uri: rico:Instantiation
slots:
- has_or_had_origin
+ - temporal_extent
+ - has_or_had_method
+ - has_or_had_provenance
slot_usage:
has_or_had_origin:
range: Entity
diff --git a/schemas/20251121/linkml/modules/classes/Administration.yaml b/schemas/20251121/linkml/modules/classes/Administration.yaml
new file mode 100644
index 0000000000..9f4d3bdc7e
--- /dev/null
+++ b/schemas/20251121/linkml/modules/classes/Administration.yaml
@@ -0,0 +1,8 @@
+classes:
+ Administration:
+ class_uri: org:OrganizationalUnit
+ description: "An administrative unit or body."
+ slots:
+ - has_or_had_label
+ - has_or_had_description
+ - has_or_had_identifier
diff --git a/schemas/20251121/linkml/modules/classes/AirChanges.yaml b/schemas/20251121/linkml/modules/classes/AirChanges.yaml
new file mode 100644
index 0000000000..56254c21c0
--- /dev/null
+++ b/schemas/20251121/linkml/modules/classes/AirChanges.yaml
@@ -0,0 +1,46 @@
+# AirChanges class
+# Represents the rate of air changes in a space
+#
+# Generation date: 2026-01-27
+# Rule compliance: 0b, 38, 39, 53
+#
+# Created for has_air_changes_per_hour migration
+
+id: https://nde.nl/ontology/hc/class/AirChanges
+name: AirChanges
+title: Air Changes Class
+
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ schema: http://schema.org/
+
+default_prefix: hc
+
+imports:
+ - linkml:types
+ - ../slots/has_or_had_quantity
+ - ../slots/has_or_had_unit
+ - ./Quantity
+ - ./Unit
+
+classes:
+ AirChanges:
+ class_uri: schema:QuantitativeValue
+ description: |
+ Represents the rate of air changes in a space.
+
+ **Ontological Alignment**:
+ - `schema:QuantitativeValue`: Allows specifying value and unit.
+ slots:
+ - has_or_had_quantity
+ - has_or_had_unit
+ slot_usage:
+ has_or_had_quantity:
+ range: float
+ description: The number of air changes.
+ required: true
+ has_or_had_unit:
+ range: Unit
+ description: Unit of measurement (e.g., "per hour").
+ required: true
diff --git a/schemas/20251121/linkml/modules/classes/AllocationEvent.yaml b/schemas/20251121/linkml/modules/classes/AllocationEvent.yaml
new file mode 100644
index 0000000000..0f10d6772c
--- /dev/null
+++ b/schemas/20251121/linkml/modules/classes/AllocationEvent.yaml
@@ -0,0 +1,39 @@
+# AllocationEvent class
+# Represents an event where an identifier was allocated
+#
+# Generation date: 2026-01-27
+# Rule compliance: 0b, 38, 39, 53
+#
+# Created for has_allocation_date migration
+
+id: https://nde.nl/ontology/hc/class/AllocationEvent
+name: AllocationEvent
+title: Allocation Event Class
+
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ schema: http://schema.org/
+ prov: http://www.w3.org/ns/prov#
+
+default_prefix: hc
+
+imports:
+ - linkml:types
+ - ../slots/temporal_extent
+ - ./TimeSpan
+
+classes:
+ AllocationEvent:
+ class_uri: prov:Activity
+ description: |
+ An event representing the allocation of an identifier.
+
+ **Ontological Alignment**:
+ - `prov:Activity`: An activity that occurred over a period of time and acted upon or with entities.
+ slots:
+ - temporal_extent
+ slot_usage:
+ temporal_extent:
+ description: Time period when the allocation occurred.
+ required: true
diff --git a/schemas/20251121/linkml/modules/classes/Annotation.yaml b/schemas/20251121/linkml/modules/classes/Annotation.yaml
new file mode 100644
index 0000000000..1b4c34f7ea
--- /dev/null
+++ b/schemas/20251121/linkml/modules/classes/Annotation.yaml
@@ -0,0 +1,61 @@
+# Annotation class
+# Represents an annotation (comment, note, tag) on an entity
+#
+# Generation date: 2026-01-27
+# Rule compliance: 0b, 38, 39, 53
+#
+# Created for has_annotation_* migration
+
+id: https://nde.nl/ontology/hc/class/Annotation
+name: Annotation
+title: Annotation Class
+
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ oa: http://www.w3.org/ns/oa#
+ schema: http://schema.org/
+
+default_prefix: hc
+
+imports:
+ - linkml:types
+ - ../slots/has_or_had_description
+ - ../slots/is_or_was_created_by
+ - ../classes/Agent
+ - ../slots/has_or_had_rationale
+ - ../classes/Rationale
+ - ../slots/contains_or_contained
+ - ../classes/Segment
+ - ../slots/has_or_had_type
+ - ../classes/AnnotationType
+
+classes:
+ Annotation:
+ class_uri: oa:Annotation
+ description: |
+ An annotation (comment, note, tag, highlight) on a resource.
+
+ **Ontological Alignment**:
+ - `oa:Annotation`: Web Annotation Data Model.
+ slots:
+ - has_or_had_description
+ - is_or_was_created_by
+ - has_or_had_rationale
+ - contains_or_contained
+ - has_or_had_type
+ slot_usage:
+ has_or_had_description:
+ description: The content of the annotation (body).
+ is_or_was_created_by:
+ description: The agent who created the annotation.
+ range: Agent
+ has_or_had_rationale:
+ description: The motivation for the annotation (e.g. commenting, tagging).
+ range: Rationale
+ contains_or_contained:
+ description: The target segment being annotated.
+ range: Segment
+ has_or_had_type:
+ description: The type of annotation.
+ range: AnnotationType
diff --git a/schemas/20251121/linkml/modules/classes/Collection.yaml b/schemas/20251121/linkml/modules/classes/Collection.yaml
index cad6f65fa1..d3346b5583 100644
--- a/schemas/20251121/linkml/modules/classes/Collection.yaml
+++ b/schemas/20251121/linkml/modules/classes/Collection.yaml
@@ -25,9 +25,12 @@ imports:
- ./ExhibitedObject
- ./CurationActivity
- ../slots/has_or_had_access_policy_reference
- - ../slots/has_acquisition_date
- - ../slots/has_acquisition_method
- - ../slots/has_acquisition_source
+ # - has_acquisition_date (migrated to is_or_was_acquired_through + AcquisitionEvent)
+ # - has_acquisition_method (migrated to AcquisitionEvent.has_or_had_method)
+ - ../slots/is_or_was_acquired_through # was: has_acquisition_source - migrated per Rule 53 (2026-01-26)
+ # - has_acquisition_source (migrated to is_or_was_acquired_through + AcquisitionEvent)
+ - ./AcquisitionEvent
+ - ./AcquisitionMethod
- ../slots/has_arrangement
# REMOVED 2026-01-18: ../slots/collection_description - migrated to has_or_had_description + Description (Rule 53)
- ../slots/has_or_had_description
@@ -112,9 +115,9 @@ classes:
- bf:Item
slots:
- has_or_had_access_policy_reference
- - has_acquisition_date
- - has_acquisition_method
- - is_or_was_acquired_through # was: has_acquisition_source - migrated per Rule 53 (2026-01-26)
+ # - has_acquisition_date
+ # - has_acquisition_method
+ - is_or_was_acquired_through # was: has_acquisition_source, has_acquisition_date, has_acquisition_method - migrated per Rule 53 (2026-01-26)
- has_arrangement
# REMOVED 2026-01-18: collection_description - migrated to has_or_had_description + Description (Rule 53)
- has_or_had_description
@@ -282,22 +285,10 @@ classes:
- Algemeen Rijksarchief (1856-2002)
- Nationaal Archief (2002-present)
description: VOC records custodial history
- has_acquisition_method:
- range: string
- examples:
- - value: TRANSFER
- description: Government transfer of VOC archives
- - value: BEQUEST
- description: Testamentary gift
- has_acquisition_date:
- range: date
- examples:
- - value: '1856-01-01'
- description: Transfer to Algemeen Rijksarchief
is_or_was_acquired_through: # was: has_acquisition_source - migrated per Rule 53 (2026-01-26)
description: |
- Source of acquisition (person or organization).
- MIGRATED from has_acquisition_source per Rule 53.
+ Acquisition event for this collection.
+ MIGRATED from has_acquisition_source, has_acquisition_method, has_acquisition_date per Rule 53.
Uses AcquisitionEvent class.
range: AcquisitionEvent
multivalued: true
@@ -306,10 +297,18 @@ classes:
- value:
has_or_had_origin:
has_or_had_label: "Ministry of Colonies"
+ has_or_had_method:
+ has_or_had_label: TRANSFER
+ temporal_extent:
+ begin_of_the_begin: '1856-01-01'
description: Source of VOC archives transfer
- value:
has_or_had_origin:
has_or_had_label: "Estate of Anna Drucker-Fraser"
+ has_or_had_method:
+ has_or_had_label: BEQUEST
+ temporal_extent:
+ begin_of_the_begin: '1937-01-01'
description: Source of bequest
has_or_had_access_policy_reference:
range: AccessPolicy
@@ -449,11 +448,13 @@ classes:
has_or_had_description:
- description_text: "Transferred to the Dutch state upon the company's dissolution in 1799."
description_type: provenance_statement
- acquisition_method: TRANSFER
- acquisition_date: '1856-01-01'
is_or_was_acquired_through: # was: has_acquisition_source - migrated per Rule 53 (2026-01-26)
- has_or_had_origin:
has_or_had_label: Ministry of Colonies
+ has_or_had_method:
+ has_or_had_label: TRANSFER
+ temporal_extent:
+ begin_of_the_begin: '1856-01-01'
has_or_had_access_policy_reference: https://nde.nl/ontology/hc/access-policy/open-access
arrangement: Organized by provenance, then chronologically
has_or_had_finding_aid:
diff --git a/schemas/20251121/linkml/modules/classes/CurationActivity.yaml b/schemas/20251121/linkml/modules/classes/CurationActivity.yaml
index 5e090e24a9..b89ad3b2b7 100644
--- a/schemas/20251121/linkml/modules/classes/CurationActivity.yaml
+++ b/schemas/20251121/linkml/modules/classes/CurationActivity.yaml
@@ -2,7 +2,7 @@
#
# REFACTORED: Now extends Activity base class (2026-01-13)
# Inherits generic slots from Activity:
-# - has_activity_identifier, has_activity_name, has_activity_description
+# - has_or_had_identifier, has_or_had_label, has_or_had_description
# - has_or_had_activity_type, temporal_extent
# - is_or_was_succeeded_by, preceding_activity, status, note
#
@@ -76,9 +76,9 @@ classes:
**INHERITANCE**:
Extends `Activity` base class. Inherits:
- - has_activity_identifier (required, identifier)
- - has_activity_name (required)
- - has_activity_description
+ # - has_activity_identifier (required, identifier)
+ # - has_activity_name (required)
+ # - has_activity_description
- has_or_had_activity_type → ActivityType
- temporal_extent → TimeSpan
- is_or_was_succeeded_by, preceding_activity
@@ -418,10 +418,10 @@ classes:
examples:
- value:
- has_activity_identifier: https://nde.nl/ontology/hc/activity/rijksmuseum-inventory-2025-001
- has_activity_name: 2025 Annual Collection Inventory - Dutch Masters
+ has_or_had_identifier: https://nde.nl/ontology/hc/activity/rijksmuseum-inventory-2025-001
+ has_or_had_label: 2025 Annual Collection Inventory - Dutch Masters
has_or_had_activity_type: INVENTORY
- has_activity_description: |
+ has_or_had_description: |
Annual physical inventory of the Dutch Masters collection
(Gallery of Honour and adjacent galleries). Spot-check methodology
with 20% sample verification against CMS records. Includes
@@ -448,10 +448,10 @@ classes:
description: Annual inventory activity at Rijksmuseum
- value:
- has_activity_identifier: https://nde.nl/ontology/hc/activity/nationaal-archief-digitization-voc-2024
- has_activity_name: VOC Archives Digitization Project - Phase 2
+ has_or_had_identifier: https://nde.nl/ontology/hc/activity/nationaal-archief-digitization-voc-2024
+ has_or_had_label: VOC Archives Digitization Project - Phase 2
has_or_had_activity_type: DIGITIZATION
- has_activity_description: |
+ has_or_had_description: |
Second phase of systematic digitization of VOC (Dutch East India
Company) archives. Focus on Hoge Regering Batavia series (1.04.02).
High-resolution scanning with OCR/HTR processing for searchability.
@@ -484,10 +484,10 @@ classes:
description: Multi-year digitization project at Nationaal Archief
- value:
- has_activity_identifier: https://nde.nl/ontology/hc/activity/kb-rehousing-medieval-2025
- has_activity_name: Medieval Manuscripts Rehousing Initiative
+ has_or_had_identifier: https://nde.nl/ontology/hc/activity/kb-rehousing-medieval-2025
+ has_or_had_label: Medieval Manuscripts Rehousing Initiative
has_or_had_activity_type: REHOUSING
- has_activity_description: |
+ has_or_had_description: |
Transfer of 342 medieval manuscripts from legacy storage to
custom-fitted archival boxes with acid-free tissue interleaving.
Includes updated location records and condition photography.
diff --git a/schemas/20251121/linkml/modules/classes/ExhibitedObject.yaml b/schemas/20251121/linkml/modules/classes/ExhibitedObject.yaml
index d84d64e8df..46654b1221 100644
--- a/schemas/20251121/linkml/modules/classes/ExhibitedObject.yaml
+++ b/schemas/20251121/linkml/modules/classes/ExhibitedObject.yaml
@@ -22,13 +22,13 @@ imports:
- ./ConservationRecord
- ./ProvenanceEvent
- ../enums/ExhibitedObjectTypeEnum
- - ../slots/has_or_had_identifier
- - ./WikiDataIdentifier
- - ../slots/creator
- - ../slots/has_accession_number
- - ../slots/has_acquisition_method
- - ../slots/has_acquisition_date
- - ../slots/has_or_had_provenance # was: provenance_text - migrated per Rule 53/56 (2026-01-18)
+ - ../slots/has_or_had_identifier # was: has_accession_number - migrated per Rule 53 (2026-01-26)
+ # - has_acquisition_date (migrated to is_or_was_acquired_through + AcquisitionEvent)
+ # - has_acquisition_method (migrated to AcquisitionEvent.has_or_had_method)
+ - ../slots/is_or_was_acquired_through
+ - ./AcquisitionEvent
+ - ./AcquisitionMethod
+ # REMOVED 2026-01-23: catalog_raisonne_number - migrated to has_or_had_identifier per Rule 53/F26
- ./Provenance
- ./Description
# REMOVED 2026-01-23: catalog_raisonne_number - migrated to has_or_had_identifier per Rule 53/F26
@@ -131,8 +131,8 @@ classes:
# specificity_annotation, template_specificity
# These are listed here to apply class-specific slot_usage
- has_or_had_identifier # was: has_accession_number - migrated per Rule 53 (2026-01-26)
- - has_acquisition_date
- - has_acquisition_method
+ - is_or_was_acquired_through # was: has_acquisition_date - migrated per Rule 53 (2026-01-26)
+ # - has_acquisition_method (migrated to AcquisitionEvent.has_or_had_method)
# REMOVED 2026-01-23: catalog_raisonne_number - migrated to has_or_had_identifier per Rule 53/F26
- has_or_had_condition_note
- conservation_history
@@ -429,17 +429,21 @@ classes:
- Pieter van Ruijven (c. 1665-1674)
- Maria de Knuijt (1674)
- A.A. des Tombe (1881-1903)
- has_acquisition_method:
+ is_or_was_acquired_through:
+ range: AcquisitionEvent
+ inlined: true
+ description: |
+ Acquisition event for this object.
+ MIGRATED from has_acquisition_date and has_acquisition_method per Rule 53 (2026-01-26).
+ Uses AcquisitionEvent with temporal_extent, has_or_had_method, and has_or_had_origin.
required: false
- range: string
examples:
- - value: BEQUEST
+ - value:
+ has_or_had_method:
+ has_or_had_label: BEQUEST
+ temporal_extent:
+ begin_of_the_begin: '1903-01-01'
description: des Tombe bequest to Mauritshuis
- has_acquisition_date:
- required: false
- range: date
- examples:
- - value: '1903-01-01'
# exhibited_in:
# required: false
# range: uriorcurie
@@ -627,8 +631,11 @@ classes:
country: NL
permanent_location: Gallery 15
accession_number: '670'
- acquisition_method: BEQUEST
- acquisition_date: '1903-01-01'
+ is_or_was_acquired_through:
+ has_or_had_method:
+ has_or_had_label: BEQUEST
+ temporal_extent:
+ begin_of_the_begin: '1903-01-01'
has_or_had_provenance: # was: provenance_text - migrated per Rule 53/56 (2026-01-18)
has_or_had_description:
- description_text: "Possibly Pieter van Ruijven, Delft (c. 1665); his widow, Maria de Knuijt, Delft (1674); Dissius sale, Amsterdam, May 16, 1696; A.A. des Tombe, The Hague (purchased 1881); Bequeathed to Mauritshuis (1903)."
diff --git a/schemas/20251121/linkml/modules/classes/Identifier.yaml b/schemas/20251121/linkml/modules/classes/Identifier.yaml
index 4ebc383459..10876b1114 100644
--- a/schemas/20251121/linkml/modules/classes/Identifier.yaml
+++ b/schemas/20251121/linkml/modules/classes/Identifier.yaml
@@ -30,7 +30,10 @@ imports:
- ./IdentifierType
- ./IdentifierTypes
- ../slots/has_or_had_secondary_label
- - ../slots/has_allocation_date
+ - ../slots/is_or_was_allocated_through
+ - ../classes/AllocationEvent
+ - ../slots/temporal_extent
+ - ../classes/TimeSpan
- ../slots/specificity_annotation
- ../slots/has_or_had_score
- ./AllocationAgency
@@ -215,20 +218,18 @@ classes:
- owl:sameAs
slots:
- is_or_was_allocated_by
- - has_allocation_date
- - has_or_had_secondary_label
- # MIGRATED 2026-01-22: canonical_value → has_or_had_canonical_form + CanonicalForm
- - has_or_had_canonical_form
- # MIGRATED 2026-01-24: defined_by_standard → has_or_had_standard + Standard (Rule 53)
- - has_or_had_standard
- - identifier_format_used
- - identifies_custodian
- - specificity_annotation
- - has_or_had_score
+ - is_or_was_allocated_through
slot_usage:
- identifies_custodian:
- range: Custodian
- required: false
+ is_or_was_allocated_through:
+ range: AllocationEvent
+ description: |
+ Event documenting when and how this identifier was allocated.
+ Replaces has_allocation_date per Rule 53.
+ examples:
+ - value:
+ temporal_extent:
+ begin_of_the_begin: "2023-01-01"
+ description: Allocation date
# MIGRATED 2026-01-24: defined_by_standard → has_or_had_standard + Standard (Rule 53)
has_or_had_standard:
range: Standard
diff --git a/schemas/20251121/linkml/modules/classes/Method.yaml b/schemas/20251121/linkml/modules/classes/Method.yaml
new file mode 100644
index 0000000000..2ecca91ca5
--- /dev/null
+++ b/schemas/20251121/linkml/modules/classes/Method.yaml
@@ -0,0 +1,6 @@
+classes:
+ Method:
+ class_uri: skos:Concept
+ description: "A method or procedure used."
+ slots:
+ - has_or_had_description
diff --git a/schemas/20251121/linkml/modules/classes/PersonalCollectionType.yaml b/schemas/20251121/linkml/modules/classes/PersonalCollectionType.yaml
index a360d3ba74..c5a050277a 100644
--- a/schemas/20251121/linkml/modules/classes/PersonalCollectionType.yaml
+++ b/schemas/20251121/linkml/modules/classes/PersonalCollectionType.yaml
@@ -20,172 +20,11 @@ imports:
- ./Quantity
- ./Unit
- ../slots/has_or_had_access_restriction
- - ../enums/PersonalCollectionTypeEnum
- - ../slots/has_acquisition_history
- - ../slots/has_or_had_custodian_type
- - ../slots/legacy_planning
- - ../slots/personal_collection_subtype
- - ../slots/preservation_approach
- - ../slots/specificity_annotation
- - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- - ./SpecificityAnnotation
- - ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
- - ./TemplateSpecificityType
- - ./TemplateSpecificityTypes
-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/
- crm: http://www.cidoc-crm.org/cidoc-crm/
- dcterms: http://purl.org/dc/terms/
- foaf: http://xmlns.com/foaf/0.1/
- wd: http://www.wikidata.org/entity/
-classes:
- PersonalCollectionType:
- is_a: CustodianType
- class_uri: skos:Concept
- annotations:
- skos:prefLabel: Personal Collection
- skos:altLabel: private collection, private collector, art collector, bibliophile, numismatist, philatelist, personal
- archive, family collection, estate collection
- structured_aliases:
- - literal_form: privécollectie
- predicate: EXACT_SYNONYM
- in_language: nl
- - literal_form: particuliere verzameling
- predicate: EXACT_SYNONYM
- in_language: nl
- - literal_form: privéverzamelaar
- predicate: EXACT_SYNONYM
- in_language: nl
- - literal_form: kunstverzamelaar
- predicate: EXACT_SYNONYM
- in_language: nl
- - literal_form: familiearchief
- predicate: EXACT_SYNONYM
- in_language: nl
- - literal_form: private collection
- predicate: EXACT_SYNONYM
- in_language: en
- - literal_form: private collector
- predicate: EXACT_SYNONYM
- in_language: en
- - literal_form: art collector
- predicate: EXACT_SYNONYM
- in_language: en
- - literal_form: bibliophile
- predicate: EXACT_SYNONYM
- in_language: en
- - literal_form: numismatist
- predicate: EXACT_SYNONYM
- in_language: en
- - literal_form: philatelist
- predicate: EXACT_SYNONYM
- in_language: en
- - literal_form: Privatsammlung
- predicate: EXACT_SYNONYM
- in_language: de
- - literal_form: Privatsammler
- predicate: EXACT_SYNONYM
- in_language: de
- - literal_form: Kunstsammler
- predicate: EXACT_SYNONYM
- in_language: de
- - literal_form: collection privée
- predicate: EXACT_SYNONYM
- in_language: fr
- - literal_form: collectionneur privé
- predicate: EXACT_SYNONYM
- in_language: fr
- - literal_form: collectionneur d'art
- predicate: EXACT_SYNONYM
- in_language: fr
- - literal_form: colección privada
- predicate: EXACT_SYNONYM
- in_language: es
- - literal_form: coleccionista privado
- predicate: EXACT_SYNONYM
- in_language: es
- - literal_form: coleccionista de arte
- predicate: EXACT_SYNONYM
- in_language: es
- - literal_form: collezione privata
- predicate: EXACT_SYNONYM
- in_language: it
- - literal_form: collezionista privato
- predicate: EXACT_SYNONYM
- in_language: it
- - literal_form: coleção privada
- predicate: EXACT_SYNONYM
- in_language: pt
- - literal_form: colecionador privado
- predicate: EXACT_SYNONYM
- in_language: pt
- description: "Specialized custodian type for individual private collectors maintaining\npersonal heritage collections.\n\
- \n**Ontology Alignment**:\n\n1. **Structural Layer** (W3C Standards):\n - skos:Concept - Thesaurus classification\n\
- \ - Classification within CustodianType hierarchy\n\n2. **Domain Layer** (Heritage Ontologies):\n - crm:E21_Person\
- \ - CIDOC-CRM individual person\n - crm:E78_Curated_Holding - Personal collection as curated holding\n - foaf:Person\
- \ - Friend of a Friend person representation\n\n3. **Web Layer** (Schema.org):\n - schema:Person - Individual collector\n\
- \ - schema:Collection - Personal collection entity\n - schema:OwnershipInfo - Ownership and provenance\n\n**Wikidata\
- \ Coverage** (40+ personal collection entities):\n\nNotable Private Collectors:\n- Q5633421 (private collection) - Individual\
- \ heritage holdings\n- Q1114515 (art collector) - Art-focused private collections\n- Q15621286 (bibliophile) - Book\
- \ collector\n- Q2374149 (numismatist) - Coin and medal collector\n- Q2555521 (philatelist) - Stamp collector\n\nCollection\
- \ Types:\n- Q838948 (fine art collection) - Painting, sculpture, decorative arts\n- Q732137 (rare book collection) -\
- \ Bibliographic rarities\n- Q7547661 (natural history collection) - Specimens, fossils, minerals\n- Q1968122 (ephemera\
- \ collection) - Historical ephemera\n- Q215380 (ethnographic collection) - Cultural artifacts\n\nCollector Profiles:\n\
- - Q1028181 (museum founder) - Collectors who establish museums\n- Q3400985 (patron of the arts) - Collectors supporting\
- \ artists\n- Q17351810 (antiquarian) - Historical artifact collectors\n- Q1350189 (connoisseur) - Specialized expertise\
- \ collectors\n\nCollection Destinations:\n- Q2668072 (bequeathed collection) - Donated to institutions\n- Q838948 (dispersed\
- \ collection) - Sold at auction\n- Q5633421 (house museum) - Home converted to museum\n- Q1469207 (study collection)\
- \ - Research-focused holdings\n\n**Key Distinctions from Other Types**:\n\nvs. Museum:\n- PersonalCollection: INDIVIDUAL\
- \ ownership, PRIVATE residence\n- Museum: INSTITUTIONAL ownership, PUBLIC facility\n- Example: Isabella Stewart Gardner\
- \ (private collector) → Isabella Stewart Gardner Museum (after donation)\n\nvs. Gallery:\n- PersonalCollection: PERSONAL\
- \ enjoyment, NON-COMMERCIAL\n- Gallery: COMMERCIAL operation, SALES-DRIVEN\n- Example: Art enthusiast's collection vs.\
- \ Commercial gallery inventory\n\nvs. HeritageSociety:\n- PersonalCollection: INDIVIDUAL collector\n- HeritageSociety:\
- \ MEMBERSHIP organization, COLLECTIVE collecting\n- Example: Stamp collector vs. Philatelic society\n\nvs. Archive:\n\
- - PersonalCollection: Often TOPICAL/AESTHETIC focus (collector interest)\n- Archive: PROVENANCE-BASED focus (institutional\
- \ or personal papers)\n- Example: Art collector (aesthetic choices) vs. Family archive (provenance unit)\n\nvs. Library:\n\
- - PersonalCollection: PRIVATE library, NO PUBLIC LENDING\n- Library: PUBLIC/INSTITUTIONAL lending service\n- Example:\
- \ Rare book collector vs. Public library special collections\n\n**Lifecycle Transitions**:\n\nPersonal collections often\
- \ undergo institutional transitions:\n\n1. **Private Collection** (CustodianType: PersonalCollectionType)\n ↓\n2.\
- \ **Collector Dies** (OrganizationalChangeEvent: CLOSURE)\n ↓\n3. **Three Outcomes**:\n \n a) **Bequest to Museum**\
- \ (OrganizationalChangeEvent: ACQUISITION)\n - Collection becomes MuseumType holdings\n - Example: J. Paul\
- \ Getty collection → J. Paul Getty Museum\n \n b) **Auction Dispersal** (OrganizationalChangeEvent: DISSOLUTION)\n\
- \ - Collection scattered to multiple buyers\n - Example: Yves Saint Laurent–Pierre Bergé collection sale (2009)\n\
- \ \n c) **House Museum** (CustodianType changes: PersonalCollection → Museum)\n - Home preserved as museum\
- \ with collection in situ\n - Example: Isabella Stewart Gardner's Fenway Court → Museum (1903)\n\n**RDF Serialization\
- \ Example**:\n\n```turtle\n@prefix hc: .\n@prefix skos: \
- \ .\n@prefix schema: .\n@prefix crm: .\n@prefix foaf: \
- \ .\n\nhc:PersonalCollectionType\n a skos:Concept, hc:CustodianType ;\n skos:prefLabel \"Personal Collection Type\"\
- @en,\n \"Privé Collectie Type\"@nl,\n \"Privatsammlung Typ\"@de,\n \"\
- Type de Collection Privée\"@fr ;\n skos:definition \"Individual private collectors and personal heritage collections\"\
- @en ;\n skos:broader hc:CustodianType ;\n skos:narrower hc:ArtCollector,\n hc:Bibliophile,\n \
- \ hc:Numismatist ;\n schema:url .\n\n# Example:\
- \ Willem Six Collection (17th-century Dutch paintings, Amsterdam)\n\n\
- \ a schema:Person, foaf:Person, crm:E21_Person, hc:PersonalCollector ;\n hc:custodian_type hc:PersonalCollectionType\
- \ ;\n hc:has_or_had_category [ hc:category_name \"Dutch Golden Age paintings\" ; hc:category_type \"SUBJECT\" ] ;\n hc:has_or_had_quantity\
- \ \"50+ paintings\", \"Historical furniture\", \"Family archives\" ;\n hc:acquisition_history \"Inherited family collection\
- \ since 1654\", \"Selective purchases 1980-2020\" ;\n hc:access_restrictions \"Private residence, No public access\"\
- , \"Occasional museum loans\" ;\n hc:preservation_approach \"Professional conservation\", \"Climate-controlled room\"\
- , \"Regular condition assessments\" ;\n hc:legacy_planning \"Family succession\", \"Selected works on permanent loan\
- \ to Rijksmuseum\" ;\n schema:name \"Willem Six\" ;\n schema:familyName \"Six\" ;\n schema:owns \
- \ ;\n schema:address \"Amsterdam, Netherlands\" ;\n dcterms:description \"Private collection of Dutch Golden Age paintings,\
- \ maintained by the Six family for over 350 years\" .\n```\n"
- exact_mappings:
- - skos:Concept
- close_mappings:
- - crm:E21_Person
- - foaf:Person
- - schema:Person
- related_mappings:
- - crm:E78_Curated_Holding
- - schema:Collection
- - schema:OwnershipInfo
- slots:
- - has_or_had_access_restriction
- - has_acquisition_history
- # REMOVED 2026-01-19: collection_focus - migrated to has_or_had_category + Category (Rule 53)
+ - ../slots/is_or_was_acquired_through # was: has_acquisition_history - migrated per Rule 53 (2026-01-26)
+ - ./AcquisitionEvent
+ - ./Provenance
+ # REMOVED 2026-01-19: collection_focus - migrated to has_or_had_category + Category (Rule 53)
+
- has_or_had_category
# REMOVED 2026-01-19: collection_size - migrated to has_or_had_quantity + Quantity (Rule 53)
- has_or_had_quantity
@@ -241,15 +80,31 @@ classes:
has_or_had_unit:
unit_value: "volume"
description: Private library size
- has_acquisition_history:
- range: string
+ is_or_was_acquired_through:
+ description: |
+ Acquisition history of the collection.
+ MIGRATED from has_acquisition_history per Rule 53 (2026-01-26).
+ Uses AcquisitionEvent with Provenance (has_or_had_description).
+ range: AcquisitionEvent
+ multivalued: true
+ inlined: true
required: true
examples:
- - value: Inherited family collection, Selective purchases
+ - value:
+ has_or_had_provenance:
+ has_or_had_description:
+ - description_text: "Inherited family collection since 1654"
+ - description_text: "Selective purchases 1980-2020"
description: Multi-generational art collection
- - value: Assembled 1950-2000, European auctions
+ - value:
+ has_or_had_provenance:
+ has_or_had_description:
+ - description_text: "Assembled 1950-2000 through European auctions"
description: Acquired art collection
- - value: Field-collected, Botanical expeditions
+ - value:
+ has_or_had_provenance:
+ has_or_had_description:
+ - description_text: "Field-collected during botanical expeditions"
description: Natural history collection
has_or_had_access_restriction:
range: string
diff --git a/schemas/20251121/linkml/modules/classes/Segment.yaml b/schemas/20251121/linkml/modules/classes/Segment.yaml
new file mode 100644
index 0000000000..5def67196a
--- /dev/null
+++ b/schemas/20251121/linkml/modules/classes/Segment.yaml
@@ -0,0 +1,35 @@
+# Segment class
+# Represents a segment of a resource (e.g. video segment, text region)
+#
+# Generation date: 2026-01-27
+# Rule compliance: 0b, 38, 39, 53
+#
+# Created for has_annotation_segment migration
+
+id: https://nde.nl/ontology/hc/class/Segment
+name: Segment
+title: Segment Class
+
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ oa: http://www.w3.org/ns/oa#
+
+default_prefix: hc
+
+imports:
+ - linkml:types
+ - ../slots/has_or_had_label
+ - ../slots/has_or_had_description
+
+classes:
+ Segment:
+ class_uri: oa:SpecificResource
+ description: |
+ A segment or region of a resource.
+
+ **Ontological Alignment**:
+ - `oa:SpecificResource`: A specific part of a resource.
+ slots:
+ - has_or_had_label
+ - has_or_had_description
diff --git a/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml b/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml
index 00d0d72f67..6345259026 100644
--- a/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml
+++ b/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml
@@ -24,7 +24,13 @@ imports:
- ../slots/allows_or_allowed
- ./TemperatureDeviation
- ../slots/humidity_tolerance
- - ../slots/has_air_changes_per_hour
+ - ../slots/specifies_or_specified
+ - ../classes/Ventilation
+ - ../classes/AirChanges
+ - ../slots/has_or_had_quantity
+ - ../classes/Quantity
+ - ../slots/has_or_had_unit
+ - ../classes/Unit
- ../slots/requires_or_required # was: fire_suppression_type - migrated per Rule 53 (2026-01-26)
- ./FireSuppressionSystem
- ./FireSuppressionType
@@ -96,7 +102,7 @@ classes:
- crm:E29_Design_or_Procedure
slots:
- has_or_had_access_restriction
- - has_air_changes_per_hour
+ - specifies_or_specified
- requires_or_required # was: fire_suppression_type - migrated per Rule 53 (2026-01-26)
- flood_protection_required
- humidity_max
@@ -126,7 +132,19 @@ classes:
# MIGRATED 2026-01-16: is_or_was_required → has_or_had_requirement_status
- has_or_had_requirement_status
slot_usage:
- policy_id:
+ specifies_or_specified:
+ range: Ventilation
+ inlined: true
+ description: |
+ Specifies ventilation requirements, such as air changes per hour.
+ Replaces has_air_changes_per_hour per Rule 53.
+ examples:
+ - value:
+ requires_or_required:
+ has_or_had_quantity: 1.5
+ has_or_had_unit:
+ has_or_had_label: "air changes per hour"
+ description: 1.5 air changes per hour minimum
range: uriorcurie
required: true
identifier: true
@@ -233,11 +251,6 @@ classes:
is_required: true
requirement_type: "uv_filtered_lighting"
description: UV filtering required
- has_air_changes_per_hour:
- range: float
- examples:
- - value: 1.5
- description: 1.5 air changes per hour minimum
particulate_max:
range: float
examples:
diff --git a/schemas/20251121/linkml/modules/classes/Ventilation.yaml b/schemas/20251121/linkml/modules/classes/Ventilation.yaml
new file mode 100644
index 0000000000..517a5b2d7c
--- /dev/null
+++ b/schemas/20251121/linkml/modules/classes/Ventilation.yaml
@@ -0,0 +1,38 @@
+# Ventilation class
+# Represents ventilation systems and requirements
+#
+# Generation date: 2026-01-27
+# Rule compliance: 0b, 38, 39, 53
+#
+# Created for has_air_changes_per_hour migration
+
+id: https://nde.nl/ontology/hc/class/Ventilation
+name: Ventilation
+title: Ventilation Class
+
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ schema: http://schema.org/
+
+default_prefix: hc
+
+imports:
+ - linkml:types
+ - ../slots/requires_or_required
+ - ./AirChanges
+
+classes:
+ Ventilation:
+ class_uri: schema:Thing
+ description: |
+ Ventilation system or requirements.
+
+ **Ontological Alignment**:
+ - `schema:Thing`: Generic entity.
+ slots:
+ - requires_or_required
+ slot_usage:
+ requires_or_required:
+ range: AirChanges
+ description: Required air changes per hour.
diff --git a/schemas/20251121/linkml/modules/slots/has_acquisition_history.yaml b/schemas/20251121/linkml/modules/slots/archive/has_acquisition_history.yaml
similarity index 100%
rename from schemas/20251121/linkml/modules/slots/has_acquisition_history.yaml
rename to schemas/20251121/linkml/modules/slots/archive/has_acquisition_history.yaml
diff --git a/schemas/20251121/linkml/modules/slots/has_administration.yaml b/schemas/20251121/linkml/modules/slots/archive/has_administration.yaml
similarity index 100%
rename from schemas/20251121/linkml/modules/slots/has_administration.yaml
rename to schemas/20251121/linkml/modules/slots/archive/has_administration.yaml
diff --git a/schemas/20251121/linkml/modules/slots/has_administration_description.yaml b/schemas/20251121/linkml/modules/slots/archive/has_administration_description.yaml
similarity index 100%
rename from schemas/20251121/linkml/modules/slots/has_administration_description.yaml
rename to schemas/20251121/linkml/modules/slots/archive/has_administration_description.yaml
diff --git a/schemas/20251121/linkml/modules/slots/has_administration_name.yaml b/schemas/20251121/linkml/modules/slots/archive/has_administration_name.yaml
similarity index 100%
rename from schemas/20251121/linkml/modules/slots/has_administration_name.yaml
rename to schemas/20251121/linkml/modules/slots/archive/has_administration_name.yaml
diff --git a/schemas/20251121/linkml/modules/slots/has_air_changes_per_hour.yaml b/schemas/20251121/linkml/modules/slots/archive/has_air_changes_per_hour_archived_20260127.yaml
similarity index 100%
rename from schemas/20251121/linkml/modules/slots/has_air_changes_per_hour.yaml
rename to schemas/20251121/linkml/modules/slots/archive/has_air_changes_per_hour_archived_20260127.yaml
diff --git a/schemas/20251121/linkml/modules/slots/has_allocation_date.yaml b/schemas/20251121/linkml/modules/slots/archive/has_allocation_date_archived_20260127.yaml
similarity index 100%
rename from schemas/20251121/linkml/modules/slots/has_allocation_date.yaml
rename to schemas/20251121/linkml/modules/slots/archive/has_allocation_date_archived_20260127.yaml
diff --git a/schemas/20251121/linkml/modules/slots/has_alpha_2_code.yaml b/schemas/20251121/linkml/modules/slots/archive/has_alpha_2_code_archived_20260127.yaml
similarity index 100%
rename from schemas/20251121/linkml/modules/slots/has_alpha_2_code.yaml
rename to schemas/20251121/linkml/modules/slots/archive/has_alpha_2_code_archived_20260127.yaml
diff --git a/schemas/20251121/linkml/modules/slots/has_alpha_3_code.yaml b/schemas/20251121/linkml/modules/slots/archive/has_alpha_3_code_archived_20260127.yaml
similarity index 100%
rename from schemas/20251121/linkml/modules/slots/has_alpha_3_code.yaml
rename to schemas/20251121/linkml/modules/slots/archive/has_alpha_3_code_archived_20260127.yaml
diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_administration.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_administration.yaml
new file mode 100644
index 0000000000..8a44fc5748
--- /dev/null
+++ b/schemas/20251121/linkml/modules/slots/has_or_had_administration.yaml
@@ -0,0 +1,5 @@
+name: has_or_had_administration
+description: The administration that manages or managed the entity.
+slot_uri: org:hasUnit
+range: Administration
+multivalued: true
diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_quantity.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_quantity.yaml
new file mode 100644
index 0000000000..b6724d51fa
--- /dev/null
+++ b/schemas/20251121/linkml/modules/slots/has_or_had_quantity.yaml
@@ -0,0 +1,39 @@
+# has_or_had_quantity slot
+# Generic slot for quantity values
+#
+# Generation date: 2026-01-27
+# Rule compliance: 38, 39, 42
+#
+# Part of has_air_changes_per_hour migration (Rule 53)
+
+id: https://nde.nl/ontology/hc/slot/has_or_had_quantity
+name: has_or_had_quantity_slot
+title: Has Or Had Quantity Slot
+
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ schema: http://schema.org/
+
+default_prefix: hc
+
+imports:
+ - linkml:types
+
+slots:
+ has_or_had_quantity:
+ slot_uri: schema:value
+ description: |
+ The numeric value of a quantity.
+
+ **Temporal Semantics** (RiC-O Pattern):
+ "hasOrHad" indicates the quantity is relative to a specific time or context.
+
+ **Ontological Alignment**:
+ - `schema:value`: The value of the quantitative value or property value node.
+
+ **Range**:
+ - Can be a number (float, integer) or a string representation.
+ range: uriorcurie
+ multivalued: false
+ required: false
diff --git a/schemas/20251121/linkml/modules/slots/is_or_was_allocated_through.yaml b/schemas/20251121/linkml/modules/slots/is_or_was_allocated_through.yaml
new file mode 100644
index 0000000000..69bf349696
--- /dev/null
+++ b/schemas/20251121/linkml/modules/slots/is_or_was_allocated_through.yaml
@@ -0,0 +1,39 @@
+# is_or_was_allocated_through slot
+# Generic slot for allocation events
+#
+# Generation date: 2026-01-27
+# Rule compliance: 38, 39, 42
+#
+# Part of has_allocation_date migration (Rule 53)
+
+id: https://nde.nl/ontology/hc/slot/is_or_was_allocated_through
+name: is_or_was_allocated_through_slot
+title: Is Or Was Allocated Through Slot
+
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ prov: http://www.w3.org/ns/prov#
+
+default_prefix: hc
+
+imports:
+ - linkml:types
+
+slots:
+ is_or_was_allocated_through:
+ slot_uri: prov:wasGeneratedBy
+ description: |
+ The event (activity) through which an identifier was allocated.
+
+ **Temporal Semantics** (RiC-O Pattern):
+ "isOrWas" indicates the allocation event in the past.
+
+ **Ontological Alignment**:
+ - `prov:wasGeneratedBy`: Completion of production of a new entity by an activity.
+
+ **Range**:
+ - `AllocationEvent` class.
+ range: uriorcurie
+ multivalued: false
+ required: false
diff --git a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml
index fcc7ec2c02..bfd240c372 100644
--- a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml
+++ b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml
@@ -30,43 +30,13 @@ fixes:
processed:
status: true
date: '2026-01-26'
- notes: Migrated to is_or_was_accessioned_through + AccessionEvent (with temporal_extent) in CustodianArchive.yaml. Slot archived.
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_accession_number
+ notes: Migrated to is_or_was_acquired_through + AcquisitionEvent. Slot archived.
+- original_slot_id: https://nde.nl/ontology/hc/slot/has_acquisition_date
revision:
- - label: has_or_had_interface
+ - label: is_or_was_acquired_through
type: slot
- - label: AccessInterface
- type: class
- - label: has_or_had_url
- type: slot
- - label: URL
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_accession_date
- revision:
- - label: is_or_was_accessioned_through
- type: slot
- - label: AccessionEvent
- type: class
- - label: temporal_extent
- type: slot
- - label: TimeSpan
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_accession_number
- revision:
- - label: is_or_was_accessioned_through
- type: slot
- - label: AccessionEvent
- type: class
- - label: has_or_had_identifier
- type: slot
- - label: Identifier
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_accumulation_end_date
- revision:
- - label: has_or_had_accumulation
- type: slot
- - label: Accumulation
+ - label: AcquisitionEvent
type: class
- label: temporal_extent
type: slot
@@ -76,93 +46,12 @@ fixes:
type: slot
- label: Timestamp
type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_accumulation_start_date
- revision:
- - label: has_or_had_accumulation
- type: slot
- - label: Accumulation
- type: class
- - label: temporal_extent
- type: slot
- - label: TimeSpan
- type: class
- - label: start_of_the_start
- type: slot
- - label: Timestamp
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_accuracy_in_meters
- revision:
- - label: has_or_had_coordinates
- type: slot
- - label: Coordinates
- type: class
- - label: has_or_had_level
- type: slot
- - label: AccuracyLevel
- type: class
- - label: has_or_had_quantity
- type: slot
- - label: Quantity
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_acquisition_date
- revision:
- - label: is_or_was_acquired_through
- type: slot
- - label: AcquisitionEvent
- type: class
- - label: temporal_extent
- type: slot
- - label: TimeSpan
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_acquisition_history
- revision:
- - label: is_or_was_acquired_through
- type: slot
- - label: AcquisitionEvent
- type: class
- - label: has_or_had_provenance
- type: slot
- - label: Provenance
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_acquisition_method
- revision:
- - label: is_or_was_acquired_through
- type: slot
- - label: AcquisitionEvent
- type: class
- - label: has_or_had_method
- type: slot
- - label: AcquisitionMethod
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_acquisition_source
- revision:
- - label: is_or_was_acquired_through
- type: slot
- - label: AcquisitionEvent
- type: class
- - label: has_or_had_origin
- type: slot
- - label: Entity
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_activity_description
- revision:
- - label: has_or_had_description
- type: slot
- - label: Description
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_activity_identifier
- revision:
- - label: has_or_had_identifier
- type: slot
- - label: Identifier
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_activity_name
- revision:
- - label: has_or_had_label
- type: slot
- - label: Label
- type: class
+ processed:
+ status: true
+ date: '2026-01-26'
+ notes: Migrated to temporal_extent + TimeSpan (end_of_the_end) in Loan.yaml. Slot archived.
- original_slot_id: https://nde.nl/ontology/hc/slot/has_actual_return_date
+
revision:
- label: temporal_extent
type: slot
@@ -196,19 +85,12 @@ fixes:
type: slot
- label: Label
type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_administration
- revision:
- - label: has_or_had_administration
- type: slot
- - label: Administration
- type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_administration_description
- revision:
- - label: has_or_had_description
- type: slot
- - label: Description
- type: class
+ processed:
+ status: true
+ date: '2026-01-26'
+ notes: Migrated to has_or_had_label + Label in CustodianAdministration.yaml. Slot archived.
- original_slot_id: https://nde.nl/ontology/hc/slot/has_administration_name
+
revision:
- label: has_or_had_label
type: slot
@@ -234,9 +116,14 @@ fixes:
revision:
- label: has_or_had_age
type: slot
- - label: Age
+ - label: Age
type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_agenda_description
+ processed:
+ status: true
+ date: '2026-01-26'
+ notes: Migrated to has_or_had_age + Age in PersonObservation.yaml. Slot archived.
+- original_slot_id: https://nde.nl/ontology/hc/slot/has_age
+nda_description
revision:
- label: has_or_had_description
type: slot
@@ -292,6 +179,10 @@ fixes:
- label: AgentTypes
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_agreement_signed_date
+ processed:
+ status: true
+ date: '2026-01-27'
+ notes: Fully migrated to is_or_was_based_on + Agreement class + is_or_was_signed_on slot (Rule 53). Loan.yaml updated. Slot archived.
revision:
- label: is_or_was_based_on
type: slot
@@ -306,6 +197,10 @@ fixes:
- label: Timestamp
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_air_changes_per_hour
+ processed:
+ status: true
+ date: '2026-01-27'
+ notes: Fully migrated to specifies_or_specified + Ventilation class + AirChanges class (Rule 53). StorageConditionPolicy.yaml updated. Slot archived.
revision:
- label: specifies_or_specified
type: slot
@@ -324,7 +219,11 @@ fixes:
- label: Unit
type: class
value: air changes per hour
-- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_allocation_date
+- original_slot_id: https://nde.nl/ontology/hc/slot/has_allocation_date
+ processed:
+ status: true
+ date: '2026-01-27'
+ notes: Fully migrated to is_or_was_allocated_through + AllocationEvent (Rule 53). CustodianIdentifier.yaml updated. Slot archived.
revision:
- label: is_or_was_allocated_through
type: slot
@@ -334,19 +233,35 @@ fixes:
type: slot
- label: TimeSpan
type: class
+ - label: temporal_extent
+ type: slot
+ - label: TimeSpan
+ type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_alpha_2_code
+ processed:
+ status: true
+ date: '2026-01-27'
+ notes: Fully migrated to has_or_had_identifier + Alpha2Code class (Rule 53). Country.yaml updated. Slot archived.
revision:
- label: has_or_had_identifier
type: slot
- label: Alpha2Code
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_alpha_3_code
+ processed:
+ status: true
+ date: '2026-01-27'
+ notes: Fully migrated to has_or_had_identifier + Alpha3Code class (Rule 53). Country.yaml updated. Slot archived.
revision:
- label: has_or_had_identifier
type: slot
- label: Alpha3Code
type: class
-- original_slot_id: https://nde.nl/ontology/hc/slot/has_alpha_3_code
+- original_slot_id: https://nde.nl/ontology/hc/slot/has_alpha_3_code_dup
+ processed:
+ status: true
+ date: '2026-01-27'
+ notes: Duplicate entry processed.
revision:
- label: has_or_had_identifier
type: slot
diff --git a/schemas/20251121/linkml/update_manifest.py b/schemas/20251121/linkml/update_manifest.py
index 6ec008bb38..10c09475df 100644
--- a/schemas/20251121/linkml/update_manifest.py
+++ b/schemas/20251121/linkml/update_manifest.py
@@ -43,34 +43,39 @@ def update_manifest(add_files, remove_files):
if __name__ == "__main__":
# Define files to add
add_files = [
- {"name": "Confidence", "path": "modules/classes/Confidence.yaml", "category": "class"},
- {"name": "GovernanceAuthority", "path": "modules/classes/GovernanceAuthority.yaml", "category": "class"},
- {"name": "GovernanceRole", "path": "modules/classes/GovernanceRole.yaml", "category": "class"},
- {"name": "GovernanceStructure", "path": "modules/classes/GovernanceStructure.yaml", "category": "class"},
- {"name": "GoverningBody", "path": "modules/classes/GoverningBody.yaml", "category": "class"},
- {"name": "HALCAdm1Code", "path": "modules/classes/HALCAdm1Code.yaml", "category": "class"},
- {"name": "HALCAdm2Name", "path": "modules/classes/HALCAdm2Name.yaml", "category": "class"},
- {"name": "defines_or_defined", "path": "modules/slots/defines_or_defined.yaml", "category": "slot"},
- {"name": "grants_or_granted", "path": "modules/slots/grants_or_granted.yaml", "category": "slot"},
- {"name": "has_or_had_confidence", "path": "modules/slots/has_or_had_confidence.yaml", "category": "slot"},
- {"name": "is_or_was_governed_by", "path": "modules/slots/is_or_was_governed_by.yaml", "category": "slot"},
- {"name": "is_or_was_represented_by", "path": "modules/slots/is_or_was_represented_by.yaml", "category": "slot"},
- {"name": "provides_or_provided_to", "path": "modules/slots/provides_or_provided_to.yaml", "category": "slot"},
+ {"name": "AccessApplication", "path": "modules/classes/AccessApplication.yaml", "category": "class"},
+ {"name": "AccessInterface", "path": "modules/classes/AccessInterface.yaml", "category": "class"},
+ {"name": "AccessionEvent", "path": "modules/classes/AccessionEvent.yaml", "category": "class"},
+ {"name": "Accumulation", "path": "modules/classes/Accumulation.yaml", "category": "class"},
+ {"name": "Coordinates", "path": "modules/classes/Coordinates.yaml", "category": "class"},
+ {"name": "AcquisitionEvent", "path": "modules/classes/AcquisitionEvent.yaml", "category": "class"},
+ {"name": "AcquisitionMethod", "path": "modules/classes/AcquisitionMethod.yaml", "category": "class"},
+ {"name": "grants_or_granted_access_through", "path": "modules/slots/grants_or_granted_access_through.yaml", "category": "slot"},
+ {"name": "has_or_had_interface", "path": "modules/slots/has_or_had_interface.yaml", "category": "slot"},
+ {"name": "is_or_was_accessioned_through", "path": "modules/slots/is_or_was_accessioned_through.yaml", "category": "slot"},
+ {"name": "has_or_had_accumulation", "path": "modules/slots/has_or_had_accumulation.yaml", "category": "slot"},
+ {"name": "has_or_had_coordinates", "path": "modules/slots/has_or_had_coordinates.yaml", "category": "slot"},
+ {"name": "is_or_was_acquired_through", "path": "modules/slots/is_or_was_acquired_through.yaml", "category": "slot"},
+ {"name": "was_acquired_through", "path": "modules/slots/was_acquired_through.yaml", "category": "slot"},
+ {"name": "has_or_had_method", "path": "modules/slots/has_or_had_method.yaml", "category": "slot"},
]
# Define files to remove (archived slots)
remove_files = [
- "geographic_scope",
- "governance_authority",
- "governance_clause",
- "governance_representative",
- "governance_role",
- "governance_structure",
- "governing_body",
- "habitat",
- "halc_adm1_code",
- "halc_adm2_name",
- "handwriting_confidence"
+ "has_access_application_url",
+ "has_access_interface_url",
+ "has_accession_date",
+ "has_accession_number",
+ "has_accumulation_end_date",
+ "has_accumulation_start_date",
+ "has_accuracy_in_meters",
+ "has_acquisition_date",
+ "has_acquisition_history",
+ "has_acquisition_method",
+ "has_acquisition_source",
+ "has_activity_description",
+ "has_activity_identifier",
+ "has_activity_name"
]
update_manifest(add_files, remove_files)