Refactor StorageCondition schema: Migrate compliance_status to has_or_had_status with ComplianceStatus class

- Removed compliance_status slot and replaced it with has_or_had_status.
- Updated has_or_had_status to use ComplianceStatus for structured representation.
- Adjusted examples to reflect new structure for compliance status.
- Updated documentation to indicate migration and provide details on the ComplianceStatus class.
This commit is contained in:
kempersc 2026-01-22 16:22:16 +01:00
parent 1cd3704762
commit 2d09776856
441 changed files with 31564 additions and 4495 deletions

View file

@ -43,12 +43,15 @@ imports:
- modules/slots/has_appellation_type
- modules/slots/has_appellation_value
- modules/slots/has_or_had_arrangement_system
- modules/slots/collection_description
- modules/slots/collection_name
- modules/slots/has_or_had_description
- modules/slots/has_or_had_label
# collection_description ARCHIVED (2026-01-18) - migrated to has_or_had_description (Rule 53)
# collection_name ARCHIVED (2026-01-18) - migrated to has_or_had_label (Rule 53)
# collection_scope ARCHIVED (2026-01-18) - migrated to has_or_had_scope + CollectionScope (Rule 53)
- modules/slots/has_or_had_scope
- modules/slots/collection_type
- modules/slots/collections_under_responsibility
# collections_under_responsibility ARCHIVED (2026-01-19) - migrated to is_or_was_responsible_for (Rule 53)
- modules/slots/is_or_was_responsible_for
- modules/slots/confidence_method
- modules/slots/confidence_score
- modules/slots/confidence_value
@ -599,7 +602,7 @@ imports:
- modules/slots/has_or_had_area_served
- modules/slots/has_or_had_member_custodian
- modules/slots/membership_criteria
- modules/slots/community_engagement
# community_engagement ARCHIVED 2026-01-19 - migrated to has_or_had_activity (imported above)
- modules/slots/service_offering
- modules/slots/record_type
- modules/slots/society_focus

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,254 @@
# Access class
# Structured access information for heritage collections and services
#
# Created per slot_fixes.yaml revision for collection_access migration
# Generation date: 2026-01-19
# Rule compliance: 53 (slot_fixes.yaml), 39 (RiC-O naming)
id: https://nde.nl/ontology/hc/class/Access
name: Access
title: Access Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ./TimeSpan
classes:
Access:
class_uri: dcterms:RightsStatement
description: |
Structured access information for heritage collections, services, or facilities.
**Purpose**:
Replaces simple string descriptions of access conditions with structured
data capturing access types, eligible users, conditions, and restrictions.
**Key Properties**:
- `access_type`: Type of access (PUBLIC, BY_APPOINTMENT, RESTRICTED, etc.)
- `eligible_users`: Who can access (public, students, faculty, researchers)
- `access_conditions`: Conditions or requirements for access
- `access_restrictions`: Specific restrictions that apply
- `temporal_extent`: When this access policy applies
**Access Types**:
- PUBLIC: Open to general public
- BY_APPOINTMENT: Requires advance appointment
- ACADEMIC: Restricted to academic community
- RESEARCHER: Restricted to credentialed researchers
- MEMBER: Requires membership
- RESTRICTED: Limited access with specific conditions
- CLOSED: Not currently accessible
- DIGITAL_ONLY: Available only in digital form
**Ontological Alignment**:
- **Primary**: `dcterms:RightsStatement` - Dublin Core rights statement
- **Close**: `schema:publicAccess` - Schema.org access indicator
- **Related**: `crm:E30_Right` - CIDOC-CRM rights
exact_mappings:
- dcterms:RightsStatement
close_mappings:
- schema:publicAccess
related_mappings:
- crm:E30_Right
slots:
- access_type
- eligible_users
- access_conditions
- access_restrictions
- access_description
- temporal_extent
- is_digital_access
slot_usage:
access_type:
required: true
range: AccessTypeEnum
description: Type of access offered
examples:
- value: PUBLIC
- value: BY_APPOINTMENT
- value: ACADEMIC
eligible_users:
required: false
range: string
multivalued: true
description: |
Categories of users eligible for this access.
Examples: "enrolled students", "faculty", "visiting scholars",
"credentialed researchers", "general public"
examples:
- value: "enrolled students"
- value: "faculty and staff"
- value: "visiting researchers with credentials"
access_conditions:
required: false
range: string
multivalued: true
description: |
Conditions that must be met for access.
Examples: "valid university ID", "advance booking required",
"handling training completed"
examples:
- value: "valid university ID required"
- value: "24-hour advance booking required"
access_restrictions:
required: false
range: string
multivalued: true
description: |
Specific restrictions on access.
Examples: "conservation concerns limit handling",
"donor restrictions apply", "high-value items in secure storage"
examples:
- value: "fragile materials limited to supervised viewing"
- value: "donor bequest restricts reproduction"
access_description:
required: false
range: string
description: |
Free-text description of access policy.
For backward compatibility with string-based collection_access.
examples:
- value: "Open to enrolled students and faculty; public by appointment"
temporal_extent:
required: false
range: TimeSpan
inlined: true
description: |
Time period during which this access policy applies.
Useful for temporary restrictions or seasonal access.
is_digital_access:
required: false
range: boolean
description: Whether this access is for digital materials
annotations:
specificity_score: 0.50
specificity_rationale: "Moderately specific - applies to collection and service access contexts"
custodian_types: '["*"]'
custodian_types_rationale: "All institution types offer some form of access"
comments:
- "Created per slot_fixes.yaml revision for collection_access migration"
- "Replaces string-based collection_access with structured access data"
- "RULE 53: Part of collection_access → offers_or_offered_access + Access migration"
examples:
- value:
access_type: PUBLIC
access_description: "Open to general public during gallery hours"
eligible_users:
- "general public"
access_conditions:
- "during posted gallery hours"
description: "Public access during gallery hours"
- value:
access_type: BY_APPOINTMENT
eligible_users:
- "credentialed researchers"
- "graduate students with faculty sponsor"
access_conditions:
- "48-hour advance booking required"
- "handling training required for original materials"
access_restrictions:
- "fragile materials limited to supervised viewing only"
description: "Research access by appointment with conditions"
- value:
access_type: ACADEMIC
access_description: "Open to enrolled students and faculty; public by appointment"
eligible_users:
- "enrolled students"
- "faculty"
- "research staff"
access_conditions:
- "valid university ID"
is_digital_access: false
description: "Academic community access with public by appointment"
- value:
access_type: DIGITAL_ONLY
access_description: "Collection accessible only through online database"
eligible_users:
- "anyone with internet access"
is_digital_access: true
description: "Digital-only access"
slots:
access_type:
slot_uri: dcterms:accessRights
description: Type of access offered
range: string
required: true
eligible_users:
slot_uri: schema:eligibleRegion
description: Categories of users eligible for access
range: string
multivalued: true
access_conditions:
slot_uri: schema:termsOfService
description: Conditions for access
range: string
multivalued: true
access_restrictions:
slot_uri: schema:usageInfo
description: Restrictions on access
range: string
multivalued: true
access_description:
slot_uri: schema:description
description: Free-text description of access policy
range: string
is_digital_access:
slot_uri: schema:isAccessibleForFree
description: Whether this is digital access
range: boolean
enums:
AccessTypeEnum:
description: Types of access to collections or services
permissible_values:
PUBLIC:
description: Open to general public
BY_APPOINTMENT:
description: Requires advance appointment
ACADEMIC:
description: Restricted to academic community
RESEARCHER:
description: Restricted to credentialed researchers
MEMBER:
description: Requires membership
RESTRICTED:
description: Limited access with specific conditions
CLOSED:
description: Not currently accessible
DIGITAL_ONLY:
description: Available only in digital form
MIXED:
description: Multiple access types apply

View file

@ -27,7 +27,9 @@ imports:
# The is_or_was_required slot was incorrectly using schema:isRequired which is for form field validation
# KEPT for backward compatibility - simple boolean for basic use cases
- ../slots/requires_appointment
- ../slots/condition
# MIGRATED 2026-01-22: condition → poses_or_posed_condition + Condition (Rule 53)
- ../slots/poses_or_posed_condition
- ./Condition
- ../slots/credentials_required
- ../slots/cultural_protocol_url
- ../slots/embargo_reason
@ -101,7 +103,8 @@ classes:
# RESTORED 2026-01-15: requires_appointment - correct semantics (schema:reservationRequired)
# KEPT for backward compatibility as simple boolean flag
- requires_appointment
- condition
# MIGRATED 2026-01-22: condition → poses_or_posed_condition + Condition (Rule 53)
- poses_or_posed_condition
# ADDED 2026-01-17: Rich access condition modeling per slot_fixes.yaml revision
- condition_of_access
- requires_or_required
@ -154,15 +157,24 @@ classes:
description: Archive public access
- value: Access restricted to academic researchers with institutional has_or_had_affiliation
description: University special collections
condition:
range: string
# MIGRATED 2026-01-22: condition → poses_or_posed_condition + Condition (Rule 53)
poses_or_posed_condition:
range: Condition
multivalued: true
inlined: true
inlined_as_list: true
description: |
Access conditions or requirements using structured Condition class.
MIGRATED from condition string slot per slot_fixes.yaml (Rule 53, 2026-01-22).
examples:
- value:
- Valid government-issued ID required
- Registration form must be completed
- Bags and coats must be stored in lockers
description: Archive access conditions
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Valid government-issued ID required"
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Registration form must be completed"
description: Archive access conditions using Condition class
rights_statement:
range: string
examples:
@ -306,15 +318,22 @@ classes:
- https://localcontexts.org/
- https://www.ica.org/standards/RiC/ontology#Rule
examples:
# MIGRATED 2026-01-22: condition → poses_or_posed_condition + Condition (Rule 53)
- value:
policy_id: https://nde.nl/ontology/hc/access-policy/nationaal-archief-open
policy_name: Nationaal Archief Public Access
access_level: PUBLIC_OPEN
access_description: Open to all visitors during reading room hours
condition:
- Valid government-issued ID required
- Registration form must be completed
- Original materials handled with gloves
poses_or_posed_condition:
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Valid government-issued ID required"
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Registration form must be completed"
- has_or_had_type: HandlingCondition
has_or_had_description:
description_text: "Original materials handled with gloves"
registration_required: true
requires_appointment: false # Walk-in access allowed
fee_required: false
@ -335,9 +354,13 @@ classes:
policy_name: DIM Archive - Preservation Only
access_level: TEMPORARILY_CLOSED
access_description: Materials in preservation storage, not currently accessible
condition:
- Awaiting processing and cataloging
- Access may be arranged for urgent research needs
poses_or_posed_condition:
- has_or_had_type: ProcessingCondition
has_or_had_description:
description_text: "Awaiting processing and cataloging"
- has_or_had_type: AccessCondition
has_or_had_description:
description_text: "Access may be arranged for urgent research needs"
requires_appointment: true # Appointment required for DIM archive access
credentials_required: PROFESSIONAL
contact_email: preservation@archive.org

View file

@ -0,0 +1,168 @@
id: https://nde.nl/ontology/hc/class/Acquisition
name: acquisition_class
title: Acquisition Class
# Created per slot_fixes.yaml revision for collection_date migration
# RULE 53: Structured acquisition event with temporal extent
# CIDOC-CRM E8 Acquisition pattern
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
dwc: http://rs.tdwg.org/dwc/terms/
rico: https://www.ica.org/standards/RiC/ontology#
imports:
- linkml:types
- ../slots/temporal_extent
- ./TimeSpan
- ../slots/specificity_annotation
- ../slots/has_or_had_score
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
default_range: string
enums:
AcquisitionMethodEnum:
description: Methods by which items are acquired for collections.
permissible_values:
FIELD_COLLECTION:
description: Collected in the field (biological, geological specimens)
meaning: dwc:Occurrence
PURCHASE:
description: Acquired through purchase
meaning: schema:BuyAction
DONATION:
description: Given as a gift or donation
meaning: schema:DonateAction
BEQUEST:
description: Received through will or estate
TRANSFER:
description: Transferred from another institution
meaning: crm:E10_Transfer_of_Custody
EXCHANGE:
description: Exchanged with another institution (specimen exchange)
EXCAVATION:
description: Recovered through archaeological excavation
LOAN:
description: On long-term loan (not owned)
CONFISCATION:
description: Seized or confiscated (legal action)
FOUND:
description: Found object (no prior owner)
COMMISSION:
description: Commissioned work (created for the collection)
UNKNOWN:
description: Acquisition method unknown
classes:
Acquisition:
class_uri: crm:E8_Acquisition
description: >-
Represents an acquisition event - how and when an object or specimen was obtained for a collection.
CIDOC-CRM E8 Acquisition models the transfer of legal ownership rights.
**Key properties**:
- `temporal_extent`: When the acquisition occurred (TimeSpan with fuzzy boundaries for historical items)
- `acquisition_method`: How the item was acquired (field collection, purchase, donation, etc.)
- `acquisition_source`: From whom/where acquired (collector, dealer, previous owner, field location)
- `acquisition_agent`: Who performed the acquisition (collector, curator, institution)
**Darwin Core alignment**: For biological specimens:
- `temporal_extent` replaces `dwc:eventDate` (collection date)
- `acquisition_source` can capture `dwc:locality` and `dwc:recordedBy`
**Use cases**:
- Museum object provenance (purchase from dealer, 1923)
- Biological specimen collection (field collection, Amazon basin, 1750s)
- Archival transfer (transferred from ministry archives, 2001)
- Art donation (donated by artist's estate, 2015)
exact_mappings:
- crm:E8_Acquisition
close_mappings:
- prov:Activity
- schema:AcquireAction
related_mappings:
- rico:Event
- dwc:Event
slots:
- temporal_extent
- specificity_annotation
- has_or_had_score
attributes:
acquisition_method:
range: AcquisitionMethodEnum
description: >-
Method by which the item was acquired (field collection, purchase, donation, etc.).
acquisition_source:
range: string
description: >-
Source from which item was acquired. Can be:
- Person name (collector, donor, seller)
- Institution name (transferring institution)
- Location (field collection locality)
- Dealer or auction house
acquisition_agent:
range: string
description: >-
Agent who performed the acquisition (collector name, curator, institution).
For biological specimens, maps to dwc:recordedBy.
acquisition_location:
range: string
description: >-
Location where acquisition occurred (field collection site, auction house location).
For biological specimens, can capture field locality.
acquisition_reference:
range: string
description: >-
Reference number or identifier for the acquisition (accession number, lot number).
acquisition_notes:
range: string
description: >-
Additional notes about the acquisition event.
acquisition_date_text:
range: string
description: >-
Original date text as recorded (e.g., "1750s", "pre-1662", "circa 1900").
For backward compatibility with string-based collection_date.
The structured date should be in temporal_extent.
comments:
- "Created per slot_fixes.yaml revision for collection_date migration"
- "Replaces simple collection_date string with structured acquisition event"
- "RULE 53: Part of collection_date → was_acquired_through + Acquisition migration"
annotations:
specificity_score: 0.70
specificity_rationale: "Fairly specific - applies to items with acquisition provenance"
examples:
- value: |
# Biological specimen collected in the field
acquisition_method: FIELD_COLLECTION
temporal_extent:
begin_of_the_begin: "1750-01-01"
end_of_the_end: "1759-12-31"
notes: "Collected sometime in the 1750s"
acquisition_source: "Amazon basin, Brazil"
acquisition_agent: "Unknown Dutch collector"
acquisition_date_text: "1750s"
- value: |
# Museum object purchased from dealer
acquisition_method: PURCHASE
temporal_extent:
begin_of_the_begin: "1923-03-15"
end_of_the_end: "1923-03-15"
acquisition_source: "Sotheby's London"
acquisition_reference: "Lot 245, Sale of March 1923"
- value: |
# Historical specimen with uncertain date
acquisition_method: FIELD_COLLECTION
temporal_extent:
begin_of_the_begin: "1600-01-01"
end_of_the_end: "1662-12-31"
notes: "Pre-1662 (before Great Fire of London)"
acquisition_date_text: "pre-1662"

View file

@ -373,3 +373,50 @@ classes:
annotations:
activity_category: LOAN
spectrum_procedures: "loans-out, loans-in"
# ===========================================================================
# COMMUNITY ENGAGEMENT ACTIVITY TYPES
# ===========================================================================
CommunityEngagementActivityType:
is_a: ActivityType
class_uri: schema:InteractAction
description: |
Activity type for community outreach, public programming, and engagement activities.
**Definition**:
Activities that connect heritage custodians with broader communities through
advocacy, public programs, and participatory engagement.
**Subtypes**:
- Membership Meetings: Monthly, quarterly, annual gatherings
- Lecture Series: Guest speakers on heritage topics
- Field Trips: Site visits, museum tours, heritage walks
- Workshops: Skill-building sessions (genealogy, conservation, identification)
- Public Events: Open houses, exhibitions, school programs
- Community Events: Heritage days, festivals, memorial events
- Digital Engagement: Websites, social media, online forums, virtual meetings
- Advocacy: Historic preservation, heritage education, policy engagement
- Partnerships: Collaborations with local government, museums, libraries, universities
**Typical Use Cases**:
- Heritage societies (heemkundekringen) connecting with local communities
- Archive associations conducting public outreach
- Museums hosting community events
**Schema.org**: Maps to InteractAction for community interaction activities
**Migration Note**: Created 2026-01-19 per slot_fixes.yaml revision.
Replaces community_engagement slot (string) with structured Activity class.
exact_mappings:
- schema:InteractAction
- wd:Q1069284 # Wikidata: community engagement
close_mappings:
- schema:CommunicateAction
- aat:300054552 # education (activity) - overlaps with educational engagement
related_mappings:
- schema:Event
annotations:
activity_category: COMMUNITY_ENGAGEMENT
migration_date: "2026-01-19"
replaces_slot: "community_engagement"

View file

@ -20,7 +20,7 @@ prefixes:
imports:
- linkml:types
- ../slots/address_formatted
# REMOVED 2026-01-22: ../slots/address_formatted - migrated to has_or_had_label + Label (Rule 53, Feedback F1)
# REMOVED: ../slots/address_type - migrated to has_or_had_type (2026-01-17, Rule 53/56)
# Address component slots
- ../slots/house_number
@ -29,7 +29,8 @@ imports:
# street_address was a redundant string slot; full Address class captures street data via components
- ../slots/postal_code
- ../slots/locality
- ../slots/city
# REMOVED: ../slots/city - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
- ../slots/is_or_was_located_in
- ../slots/region
- ../slots/country_name
# Shared slots (replacing address_formatted, address_type)
@ -46,6 +47,7 @@ imports:
- ./Country
- ./Subregion
- ./Settlement
- ./City # Added for is_or_was_located_in range (2026-01-18, Rule 53)
- ./CustodianObservation
- ./ReconstructionActivity
- ./AddressType
@ -154,7 +156,8 @@ classes:
- postal_code
# Locality/geographic hierarchy
- locality
- city
# REMOVED: city - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
- is_or_was_located_in
- region
- country_name
# Formatted representation (MIGRATED: address_formatted → has_or_had_label)
@ -196,10 +199,25 @@ classes:
examples:
- value: "Amsterdam"
description: City name
city:
range: string
# REMOVED: city slot_usage - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
# city:
# range: string
# required: false
# description: Alternative slot for locality (schema:addressLocality)
is_or_was_located_in:
range: City
required: false
description: Alternative slot for locality (schema:addressLocality)
inlined: true
description: |
The city where this address is located, as a structured City entity.
MIGRATED from city (string) slot (2026-01-18, Rule 53).
Provides GeoNames ID, coordinates, and subregion linkage.
examples:
- value:
settlement_name: "Amsterdam"
geonames_id: 2759794
country: "NL"
description: Address located in Amsterdam
region:
range: string
required: false
@ -218,29 +236,32 @@ classes:
description: Full name
- value: "NL"
description: ISO 3166-1 alpha-2 code
address_formatted:
range: string
# REMOVED 2026-01-22: address_formatted - migrated to has_or_had_label + Label (Rule 53, Feedback F1)
# Formatted address strings now use has_or_had_label slot_usage below
# REMOVED: address_type slot_usage - migrated to has_or_had_type (2026-01-17, Rule 53/56)
has_or_had_label: # was: address_formatted + street_name - migrated per Rule 53 (2026-01-17, 2026-01-22)
range: Label
multivalued: true
inlined: true
inlined_as_list: true
required: false
description: |
Full formatted address string.
DEPRECATED: Use has_or_had_label instead.
MIGRATION: 2026-01-13 - Replaced by has_or_had_label slot.
deprecated: "Use has_or_had_label instead"
Labels for this address, including:
1. **Street name** as Label with language tag
2. **Formatted address** as Label with language tag
MIGRATED from:
- address_formatted (2026-01-22, Feedback F1) - formatted address strings
- street_name (2026-01-17, Rule 53/56) - street name component
Use Label class with language_code for multilingual support.
examples:
- value: "Museumstraat 1, 1071 XX Amsterdam, Netherlands"
description: Complete formatted address
# REMOVED: address_type slot_usage - migrated to has_or_had_type (2026-01-17, Rule 53/56)
# address_type:
# range: string
# required: false
# description: |
# Classification of address purpose.
# DEPRECATED: Use has_or_had_type with AddressType class instead.
# MIGRATION: 2026-01-13 - Replaced by has_or_had_type slot.
# deprecated: "Use has_or_had_type with AddressType class instead"
# examples:
# - value: "HEADQUARTERS"
# description: Main organizational address
- value:
- has_or_had_label: "Museumstraat"
language: "nl"
- has_or_had_label: "Museumstraat 1, 1071 XX Amsterdam, Netherlands"
language: "nl"
description: Street name and formatted address as labels
has_or_had_type: # was: address_type - migrated per Rule 53/56 (2026-01-17)
range: AddressType
required: false

View file

@ -19,7 +19,10 @@ imports:
# Centralized slots (Rule 38 compliant)
- ../slots/long_name
- ../slots/short_name
- ../slots/component_type
# REMOVED 2026-01-22: ../slots/component_type - migrated to has_or_had_type + ComponentType (Rule 53)
- ../slots/has_or_had_type
- ./ComponentType
- ./ComponentTypes
default_range: string
@ -42,7 +45,7 @@ classes:
Each AddressComponent has:
- `long_name`: Full form of the value (e.g., "Netherlands", "Noord-Holland")
- `short_name`: Abbreviated form (e.g., "NL", "NH") - may equal long_name
- `component_type`: Semantic type(s) of this component (e.g., "country", "locality")
- `has_or_had_type`: Semantic type(s) via ComponentType (e.g., Country, Locality)
**STANDARD COMPONENT TYPES**:
@ -79,20 +82,20 @@ classes:
**USAGE EXAMPLES**:
```yaml
# Street number component
# Street number component (MIGRATED 2026-01-22: Rule 53)
- long_name: "1"
short_name: "1"
component_type: ["street_number"]
has_or_had_type: [StreetNumber]
# Province with abbreviation
- long_name: "Noord-Holland"
short_name: "NH"
component_type: ["region"]
has_or_had_type: [Region]
# Country with ISO code
- long_name: "Netherlands"
short_name: "NL"
component_type: ["country"]
has_or_had_type: [Country]
```
**SOURCE-AGNOSTIC DESIGN**:
@ -115,7 +118,8 @@ classes:
slots:
- long_name
- short_name
- component_type
# REMOVED 2026-01-22: component_type - migrated to has_or_had_type + ComponentType (Rule 53)
- has_or_had_type
attributes:
types:
@ -147,20 +151,25 @@ classes:
description: Province abbreviation
- value: "Museumstraat"
description: Same as long_name when no abbreviation exists
component_type:
range: string
# MIGRATED 2026-01-22: component_type → has_or_had_type + ComponentType (Rule 53)
has_or_had_type:
description: |
Semantic type(s) of this address component.
MIGRATED from component_type per slot_fixes.yaml (Rule 53, 2026-01-22).
Uses ComponentType class hierarchy for structured classification.
range: ComponentType
multivalued: true
inlined_as_list: true
required: false
description: Semantic type(s) of this address component
examples:
- value: ["street_number"]
- value: StreetNumber
description: House/building number
- value: ["locality"]
- value: Locality
description: City or town
- value: ["region"]
- value: Region
description: State or province
- value: ["country"]
- value: Country
description: Country
comments:
@ -174,40 +183,41 @@ classes:
- https://www.w3.org/ns/locn#Address
examples:
# MIGRATED 2026-01-22: component_type → has_or_had_type + ComponentType (Rule 53)
- value:
long_name: "1"
short_name: "1"
component_type: ["street_number"]
has_or_had_type: [StreetNumber]
description: Street number component
- value:
long_name: "Museumstraat"
short_name: "Museumstraat"
component_type: ["route"]
has_or_had_type: [Route]
description: Street name component
- value:
long_name: "Amsterdam"
short_name: "Amsterdam"
component_type: ["locality"]
has_or_had_type: [Locality]
description: City component
- value:
long_name: "Noord-Holland"
short_name: "NH"
component_type: ["region"]
has_or_had_type: [Region]
description: Province component with abbreviation
- value:
long_name: "Netherlands"
short_name: "NL"
component_type: ["country"]
has_or_had_type: [Country]
description: Country component with ISO code
- value:
long_name: "1071 XX"
short_name: "1071 XX"
component_type: ["postal_code"]
has_or_had_type: [PostalCode]
description: Dutch postal code component
annotations:

View file

@ -0,0 +1,149 @@
# Agent class
# Represents a person or organization that performs actions
#
# Created per slot_fixes.yaml migration for: collector
# Creation date: 2026-01-22
#
# Rule 53 (No Bespoke Slots): collector → is_or_was_acquired_by + Agent
id: https://nde.nl/ontology/hc/class/Agent
name: Agent
title: Agent
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
foaf: http://xmlns.com/foaf/0.1/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_name
- ../slots/has_or_had_type
- ../slots/has_or_had_identifier
classes:
Agent:
class_uri: prov:Agent
description: |
An agent (person, organization, or software) that performs actions.
**RULE 53 MIGRATION**:
Replaces simple string slots with a structured agent model:
- `is_or_was_acquired_by` → Agent (this class)
- Supports typed agents (person, organization, software)
**USAGE**:
```yaml
is_or_was_acquired_by:
- agent_name: "Dr. Jane Smith"
agent_type: person
has_or_had_identifier:
- identifier_scheme: ORCID
identifier_value: "0000-0001-2345-6789"
```
**Ontological Alignment**:
- **Primary** (`class_uri`): `prov:Agent` - PROV-O agent
- **Close**: `foaf:Agent` - FOAF agent
- **Close**: `schema:Person` / `schema:Organization` - Schema.org agents
- **Close**: `dcterms:Agent` - Dublin Core agent
**Use Cases**:
- Specimen collectors (field biologists)
- Artwork donors/sellers
- Archive depositors
- Record creators
exact_mappings:
- prov:Agent
close_mappings:
- foaf:Agent
- dcterms:Agent
related_mappings:
- schema:Person
- schema:Organization
slots:
- has_or_had_name
- has_or_had_type
- has_or_had_identifier
attributes:
agent_name:
range: string
description: Name of the agent (person or organization name)
required: true
agent_type:
range: string
description: |
Type of agent: person, organization, software, group
required: false
examples:
- value: person
- value: organization
- value: software
- value: group
agent_role:
range: string
description: |
Role of the agent in the action (collector, donor, creator, etc.)
required: false
slot_usage:
has_or_had_name:
description: |
Structured name for the agent.
range: uriorcurie
required: false
has_or_had_type:
description: |
Classification of the agent type.
range: uriorcurie
required: false
has_or_had_identifier:
description: |
Identifiers for the agent (ORCID, ISNI, etc.).
range: uriorcurie
multivalued: true
required: false
annotations:
specificity_score: "0.25"
specificity_rationale: "Broadly applicable - agents appear across all heritage contexts."
template_specificity: '{"archive_search": 0.30, "museum_search": 0.30, "library_search": 0.30, "collection_discovery": 0.40, "person_research": 0.60, "location_browse": 0.15, "identifier_lookup": 0.35, "organizational_change": 0.25, "digital_platform": 0.20, "general_heritage": 0.25}'
examples:
- value:
agent_name: "Dr. Jane Smith"
agent_type: person
agent_role: collector
description: Field biologist who collected specimens
- value:
agent_name: "Rijksmuseum Foundation"
agent_type: organization
agent_role: donor
description: Organization that donated artwork
- value:
agent_name: "National Archives of the Netherlands"
agent_type: organization
agent_role: transferring_agency
has_or_had_identifier:
- identifier_scheme: ISIL
identifier_value: "NL-HaNA"
description: Archive transferring records
comments:
- "Created per slot_fixes.yaml migration (2026-01-22)"
- "RULE 53: Replaces collector string slot with structured model"
- "Generic agent class for persons, organizations, and software"

View file

@ -0,0 +1,195 @@
# AppreciationEvent class
# Created per slot_fixes.yaml revision for: comment_like_count
#
# Represents appreciation/engagement events on digital content
# MIGRATION NOTE (2026-01-22): Created as part of comment_like_count migration per Rule 53.
id: https://nde.nl/ontology/hc/class/AppreciationEvent
name: appreciation_event_class
title: Appreciation Event Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
as: https://www.w3.org/ns/activitystreams#
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_quantity
- ../slots/has_or_had_unit
- ../slots/temporal_extent
- ./Quantity
- ./Unit
- ./TimeSpan
default_prefix: hc
classes:
AppreciationEvent:
class_uri: as:Like
description: |
Appreciation or engagement event for digital content.
**PURPOSE**:
Structured representation of appreciation metrics (likes, favorites,
upvotes, reactions) for digital content such as videos, comments, and posts.
Replaces simple integer counts with rich event data.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `comment_like_count` integer
to structured `is_or_was_appreciated` + `AppreciationEvent` with
`has_or_had_quantity` + `Quantity` for metric representation.
**APPRECIATION TYPES**:
| Type | Description | Platforms |
|------|-------------|-----------|
| like | Standard like/thumbs up | YouTube, Facebook, Instagram |
| favorite | Favorite/bookmark | Twitter, YouTube |
| upvote | Upvote/positive rating | Reddit, StackOverflow |
| reaction | Emoji reaction | Facebook, Slack |
| share | Share/repost | All platforms |
**ONTOLOGY ALIGNMENT**:
| Ontology | Class/Property | Usage |
|----------|----------------|-------|
| **Activity Streams** | `as:Like` | Social appreciation activity |
| **Schema.org** | `schema:InteractionCounter` | Engagement metrics |
| **PROV-O** | `prov:Activity` | Event modeling |
**EXAMPLE**:
```yaml
is_or_was_appreciated:
- appreciation_type: like
has_or_had_quantity:
numeric_value: 42
has_or_had_unit:
unit_label: "likes"
temporal_extent:
begin_of_the_begin: "2025-01-14T10:00:00Z"
```
exact_mappings:
- as:Like
close_mappings:
- schema:InteractionCounter
- prov:Activity
slots:
- has_or_had_quantity
- has_or_had_unit
- temporal_extent
attributes:
appreciation_type:
description: |
Type of appreciation (like, favorite, upvote, reaction, share).
range: string
required: true
examples:
- value: "like"
description: Standard like/thumbs up
- value: "favorite"
description: Favorite/bookmark
- value: "upvote"
description: Upvote rating
- value: "reaction"
description: Emoji reaction
- value: "share"
description: Share/repost
appreciation_count:
description: |
Simple count of appreciations (shorthand for has_or_had_quantity.numeric_value).
Use has_or_had_quantity for structured representation with unit.
range: integer
required: false
minimum_value: 0
examples:
- value: 42
description: 42 likes
slot_usage:
has_or_had_quantity:
description: |
Structured quantity for the appreciation count.
Use Quantity class with numeric_value and has_or_had_unit.
range: Quantity
inlined: true
required: false
examples:
- value:
numeric_value: 42
has_or_had_unit:
unit_label: "likes"
description: 42 likes using Quantity class
has_or_had_unit:
description: |
Unit for the appreciation type (likes, favorites, etc.).
Can be specified directly or via has_or_had_quantity.has_or_had_unit.
range: Unit
inlined: true
required: false
examples:
- value:
unit_label: "likes"
description: Likes unit
temporal_extent:
description: |
Time when the appreciation count was observed/recorded.
range: TimeSpan
inlined: true
required: false
examples:
- value:
begin_of_the_begin: "2025-01-14T10:00:00Z"
description: Observation timestamp
examples:
- value:
appreciation_type: "like"
appreciation_count: 42
description: Simple like count (minimal)
- value:
appreciation_type: "like"
has_or_had_quantity:
numeric_value: 42
has_or_had_unit:
unit_label: "likes"
temporal_extent:
begin_of_the_begin: "2025-01-14T10:00:00Z"
description: Full structured like count with timestamp
- value:
appreciation_type: "favorite"
appreciation_count: 15
description: Favorite count
comments:
- Created 2026-01-22 from comment_like_count migration (Rule 53)
- Models appreciation metrics as structured events
- Supports multiple appreciation types (likes, favorites, etc.)
- Includes temporal observation tracking
see_also:
- https://www.w3.org/ns/activitystreams#Like
- https://schema.org/InteractionCounter
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian with digital content may track appreciation.
specificity_score: "0.60"
specificity_rationale: >-
Moderately specific - primarily for digital content engagement contexts.

View file

@ -33,7 +33,7 @@ classes:
- Publication of newsletters and journals\n- Support for acquisitions and preservation\n\n**Organizational Role**:\n\
These are typically:\n- \"Friends of the Archives\" organizations\n- Historical societies supporting local archives\n\
- Professional associations for archivists\n- Advocacy groups for archival funding\n\n**Heritage Society Focus**:\n\
Use `society_focus` slot to describe the archive(s) supported.\nUse `community_engagement` to document advocacy and\
Use `society_focus` slot to describe the archive(s) supported.\nUse `has_or_had_activity` to document advocacy and\
\ outreach activities.\n\n**Related Types**:\n- HeritageSocietyType - Parent class for heritage support organizations\n\
- Archive (Q166118) - The institutions they support (NOT the same thing)\n\n**Primary Type**: \nMaps to 'S' (COLLECTING_SOCIETY)\
\ in GLAMORCUBESFIXPHDNT taxonomy,\nNOT 'A' (ARCHIVE) - these are support organizations, not archives themselves.\n\n\

View file

@ -31,7 +31,8 @@ imports:
- ./MeasureUnit
- ../slots/has_or_had_unit
- ../slots/has_or_had_label
- ../slots/area_value
# MIGRATED 2026-01-22: area_value → quantity_value per slot_fixes.yaml feedback F4
- ../slots/quantity_value
- ../slots/is_estimate
- ../slots/measurement_date
- ../slots/measurement_method
@ -59,17 +60,19 @@ classes:
- schema:QuantitativeValue
- geosparql:hasArea
slots:
- area_value
- quantity_value # was: area_value (migrated 2026-01-22)
- has_or_had_unit
- measurement_date
- is_estimate
- measurement_method
- has_or_had_label
slot_usage:
area_value:
quantity_value:
description: >-
The numeric value of the area measurement.
MIGRATED from area_hectares, building_floor_area_sqm (Rule 53).
MIGRATED from area_value (2026-01-22) which was migrated from
area_hectares, building_floor_area_sqm (Rule 53).
Using generic quantity_value aligns Area semantics with Quantity class.
range: float
required: true
examples:
@ -136,14 +139,14 @@ classes:
description: Label for building
examples:
- value:
area_value: 25.0
quantity_value: 25.0
has_or_had_unit:
has_or_had_type: HECTARE
has_or_had_symbol: "ha"
has_or_had_label: "Sculpture garden area"
description: Outdoor site area in hectares (replaces area_hectares)
- value:
area_value: 5000.0
quantity_value: 5000.0
has_or_had_unit:
has_or_had_type: SQUARE_METER
has_or_had_symbol: "m²"
@ -153,7 +156,7 @@ classes:
has_or_had_label: "Total floor area"
description: Building floor area in square meters (replaces building_floor_area_sqm)
- value:
area_value: 650.0
quantity_value: 650.0
has_or_had_unit:
has_or_had_type: HECTARE
has_or_had_symbol: "ha"

View file

@ -0,0 +1,148 @@
# ArtSaleService class
# Created per slot_fixes.yaml revision for: commission_rate
#
# Represents art sales service with commission structure
# MIGRATION NOTE (2026-01-22): Created as part of commission_rate migration per Rule 53.
id: https://nde.nl/ontology/hc/class/ArtSaleService
name: art_sale_service_class
title: Art Sale Service Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
- ../metadata
- ./Service
- ../slots/takes_or_took_comission
- ./CommissionRate
default_prefix: hc
classes:
ArtSaleService:
is_a: Service
class_uri: hc:ArtSaleService
description: |
Service for selling artworks, typically offered by commercial galleries.
**PURPOSE**:
Models art sales activities including commission structures,
market type (primary/secondary), and artist representation.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `commission_rate` string
to structured `has_or_had_service` + `ArtSaleService` with nested
commission details.
**USE CASES**:
- Commercial gallery primary market sales (representing artists)
- Secondary market resales (consignment)
- Auction house sales (different commission model)
**MARKET TYPES**:
- **Primary market**: First sale of artwork by artist (40-50% commission)
- **Secondary market**: Resale of previously sold works (10-20% commission)
close_mappings:
- schema:SellAction
- schema:Service
slots:
- takes_or_took_comission
attributes:
market_type:
description: |
Type of art market (primary or secondary).
range: string
required: false
examples:
- value: "primary"
description: First sale by artist
- value: "secondary"
description: Resale of previously sold work
artist_representation:
description: |
Whether this service involves exclusive artist representation.
range: boolean
required: false
examples:
- value: true
description: Gallery exclusively represents the artist
- value: false
description: Consignment or non-exclusive arrangement
sales_activity:
description: |
Whether active sales are conducted (vs exhibition-only).
range: boolean
required: true
examples:
- value: true
description: Active artwork sales
- value: false
description: Exhibition only, no sales
slot_usage:
takes_or_took_comission:
description: |
Commission structure for this art sales service.
range: CommissionRate
inlined: true
required: false
examples:
- value:
rate_type: "primary_market"
has_or_had_percentage:
percentage_value: 50
description: Standard 50% primary market commission
examples:
- value:
service_name: "Primary Market Sales"
market_type: "primary"
artist_representation: true
sales_activity: true
takes_or_took_comission:
rate_type: "primary_market"
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
description: Commercial gallery with 50% primary market commission
- value:
service_name: "Consignment Sales"
market_type: "secondary"
artist_representation: false
sales_activity: true
takes_or_took_comission:
rate_type: "secondary_market"
has_or_had_percentage:
percentage_value: 15
percentage_display: "10-20%"
description: Secondary market consignment with variable commission
comments:
- Created 2026-01-22 from commission_rate migration (Rule 53)
- Extends Service class for art sales context
- Supports primary and secondary market distinctions
see_also:
- https://schema.org/SellAction
annotations:
custodian_types: '["G", "C"]'
custodian_types_rationale: >-
Primarily for galleries (G) and commercial organizations (C).
specificity_score: "0.75"
specificity_rationale: >-
Specific to commercial art sales context.

View file

@ -21,7 +21,7 @@ imports:
- ../slots/has_articles_archival_stage
- ../slots/has_articles_document_format
- ../slots/has_articles_document_url
- ../slots/collected_in
- ../slots/is_or_was_included_in # was: collected_in - migrated per Rule 53 (2026-01-19)
- ../slots/document_description
- ../slots/document_title
- ../slots/document_type
@ -129,7 +129,7 @@ classes:
- has_articles_archival_stage
- has_articles_document_format
- has_articles_document_url
- collected_in
- is_or_was_included_in # was: collected_in - migrated per Rule 53 (2026-01-19)
- document_description
- document_title
- document_type
@ -271,9 +271,16 @@ classes:
is_or_was_archived_in:
range: CustodianArchive
required: false
collected_in:
is_or_was_included_in: # was: collected_in - migrated per Rule 53 (2026-01-19)
description: |
CustodianCollection where heritage articles are preserved.
Only applicable when has_articles_archival_stage = HERITAGE.
MIGRATED from collected_in per slot_fixes.yaml (Rule 53).
range: CustodianCollection
required: false
examples:
- value: https://nde.nl/ontology/hc/collection/rm/institutional-archive
description: Rijksmuseum institutional archive collection
requires_articles_at_registration:
range: boolean
required: false
@ -346,7 +353,7 @@ classes:
registered_office_clause: De stichting heeft haar zetel in de gemeente Amsterdam.
language: nl
articles_archival_stage: HERITAGE
collected_in: https://nde.nl/ontology/hc/collection/rm/institutional-archive
is_or_was_included_in: https://nde.nl/ontology/hc/collection/rm/institutional-archive # was: collected_in
requires_articles_at_registration: true
refers_to_legal_status: https://nde.nl/ontology/hc/legal-status/rm
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804

View file

@ -14,7 +14,10 @@ imports:
- ../slots/end_time
- ../slots/segment_index
- ../slots/segment_text
- ../slots/confidence
# MIGRATED 2026-01-19: confidence → is_or_was_generated_by + GenerationEvent + ConfidenceScore
- ../slots/is_or_was_generated_by
- ./GenerationEvent
- ./ConfidenceScore
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ./SpecificityAnnotation
@ -96,7 +99,8 @@ classes:
- end_time
- segment_index
- segment_text
- confidence
# MIGRATED 2026-01-19: confidence → is_or_was_generated_by (structured ConfidenceScore)
- is_or_was_generated_by
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
attributes:
@ -155,17 +159,19 @@ classes:
description: Speech transcript text
- value: "Classical background music"
description: Music segment description
confidence:
range: float
is_or_was_generated_by:
range: GenerationEvent
required: false
minimum_value: 0.0
maximum_value: 1.0
description: Confidence score (0.0-1.0) for the audio event detection.
inlined: true
description: >-
Generation event containing confidence score for audio event detection.
MIGRATED 2026-01-19: Replaces confidence slot with structured pattern.
examples:
- value: 0.95
description: High confidence detection
- value: 0.72
description: Medium confidence detection
- value:
has_or_had_score:
has_or_had_score: 0.95
has_or_had_method: "audio_classification"
description: High confidence audio event detection
comments:
- Audio event segment for speech, music, silence, sound event detection
- Temporal boundaries with start/end seconds (primary) and ISO 8601 (secondary)

View file

@ -30,7 +30,10 @@ imports:
- ../slots/has_or_had_archival_status
- ../slots/has_or_had_identifier
- ../slots/has_auxiliary_platform_type
- ../slots/cms_detected
# REMOVED 2026-01-19: ../slots/cms_detected - migrated to is_or_was_based_on + CMS (Rule 53)
- ../slots/is_or_was_based_on # was: cms_detected - migrated per Rule 53 (2026-01-19)
- ./CMS
- ./CMSType
- ../slots/fixity_info
- ../slots/iiif_support
- ../slots/is_auxiliary_of_platform
@ -122,7 +125,7 @@ classes:
- is_or_was_archived_at # MIGRATED: was archived_at (2026-01-15)
- has_or_had_identifier
- has_auxiliary_platform_type
- cms_detected
- is_or_was_based_on # was: cms_detected - migrated per Rule 53 (2026-01-19)
- has_or_had_data_service_endpoint
- fixity_info
- funding_source
@ -299,14 +302,36 @@ classes:
examples:
- value: sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
description: SHA-256 checksum of archived content
cms_detected:
range: boolean
# DEPRECATED 2026-01-19: cms_detected - migrated to is_or_was_based_on + CMS
# Old: cms_detected: true/false (boolean flag)
# New: is_or_was_based_on: CMS instance with name, version, detection method
is_or_was_based_on: # was: cms_detected - migrated per Rule 53 (2026-01-19)
description: |
CMS detected on this platform (replaces boolean cms_detected).
MIGRATED from boolean flag to structured CMS reference.
If present, a CMS was detected; if absent, no CMS detected.
**Migration**:
- Old: cms_detected: true
- New: is_or_was_based_on: {cms_name: WordPress, cms_version: "6.4"}
range: CMS
multivalued: true
inlined_as_list: true
required: false
examples:
- value: true
description: CMS backend detected
- value: false
description: No CMS detected (static site)
- value:
cms_name: WordPress
cms_version: "6.4.2"
has_or_had_type: CustomCMS
detected_at: "2026-01-19T12:00:00Z"
detection_method: HTTP_HEADER
description: CMS detected via HTTP header
- value:
cms_name: Omeka S
cms_version: "4.0.1"
has_or_had_type: MuseumCMS
detection_method: URL_PATTERN
description: Omeka S detected via URL pattern
has_or_had_powered_by_cm:
range: CollectionManagementSystem
multivalued: true

View file

@ -11,6 +11,7 @@ imports:
- ./GeoSpatialPlace
- ./Country
- ./Subregion
- ./City # Added for is_or_was_located_in range (2026-01-18, Rule 53)
- ./Settlement
- ./TimeSpan
- ./Address # Added for has_or_had_address range (2026-01-17, Rule 53/56 migration)
@ -39,7 +40,8 @@ imports:
- ../slots/longitude
- ../slots/has_or_had_address # was: street_address - migrated to Address class per Rule 53/56 (2026-01-17)
- ../slots/postal_code
- ../slots/city
# REMOVED: ../slots/city - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
- ../slots/is_or_was_located_in
- ../slots/has_or_had_identifier
- ../slots/has_auxiliary_place_type
- ../slots/country
@ -124,7 +126,8 @@ classes:
slots:
- has_or_had_identifier
- has_auxiliary_place_type
- city
# REMOVED: city - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
- is_or_was_located_in
- country
- geonames_id
- has_feature_type
@ -227,11 +230,26 @@ classes:
examples:
- value: 3824 BK
description: Dutch postal code
city:
range: string
# REMOVED: city slot_usage - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
# city:
# range: string
# examples:
# - value: Amersfoort
# description: City name
is_or_was_located_in:
range: City
required: false
inlined: true
description: |
The city where this auxiliary place is located, as a structured City entity.
MIGRATED from city (string) slot (2026-01-18, Rule 53).
Provides GeoNames ID, coordinates, and subregion linkage.
examples:
- value: Amersfoort
description: City name
- value:
settlement_name: "Amersfoort"
geonames_id: 2759633
country: "NL"
description: Auxiliary place located in Amersfoort
country:
range: Country
examples:
@ -383,7 +401,10 @@ classes:
language: "en"
locality: "Schiphol"
country_name: "NL"
city: Schiphol
is_or_was_located_in: # was: city - migrated per Rule 53/56 (2026-01-18)
settlement_name: Hoofddorp # Schiphol Airport is located in Hoofddorp municipality
geonames_id: 2753801
country: NL
country: https://nde.nl/ontology/hc/country/NL
valid_from: '2002-10-01'
hosts_branch:
@ -410,7 +431,10 @@ classes:
postal_code: "2012 CH"
locality: "Haarlem"
country_name: "NL"
city: Haarlem
is_or_was_located_in: # was: city - migrated per Rule 53/56 (2026-01-18)
settlement_name: Haarlem
geonames_id: 2755003
country: NL
valid_from: '2010-01-15'
valid_to: '2018-06-30'
is_auxiliary_of_place: https://nde.nl/ontology/hc/place/noord-hollands-archief-main

View file

@ -0,0 +1,48 @@
id: https://nde.nl/ontology/hc/class/BaseName
name: BaseName
title: Base Name Class
description: >-
Represents the base/root form of a name component used for sorting.
**PNV ALIGNMENT**: Supports Dutch naming convention where surnames with
prefixes are sorted by their base form.
**EXAMPLE**:
- Full surname: "van der Berg"
- Base name: "Berg" (used for alphabetical sorting under "B")
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
pnv: https://w3id.org/pnv#
default_prefix: hc
imports:
- linkml:types
classes:
BaseName:
class_uri: hc:BaseName
description: >-
Base/root form of a name component, primarily used for sorting.
close_mappings:
- pnv:baseSurname
attributes:
base_value:
range: string
required: true
description: >-
The base name value (e.g., "Berg" from "van der Berg").
examples:
- value:
base_value: "Berg"
description: Base surname for Dutch "van der Berg"
- value:
base_value: "Vries"
description: Base surname for Dutch "de Vries"
annotations:
custodian_types: '["*"]'
specificity_score: 0.6
specificity_rationale: >-
Moderately specific - name sorting component.

View file

@ -4,7 +4,10 @@ title: Biological and Zoological Custodian Type Classification
imports:
- linkml:types
- ./CustodianType
- ../slots/collection_size
# REMOVED 2026-01-19: ../slots/collection_size - migrated to has_or_had_quantity + Quantity (Rule 53)
- ../slots/has_or_had_quantity
- ./Quantity
- ./Unit
- ./BioCustodianSubtype # Type/Types class hierarchy (was BioCustodianTypeEnum)
- ./BioCustodianSubtypes # 20 concrete subclasses
- ../slots/has_or_had_hyponym # was: bio_custodian_subtype - migrated per Rule 53/56 (2026-01-17)
@ -245,7 +248,8 @@ classes:
- Schema.org Garden: `schema:Garden`\n- Darwin Core: `dwc:PreservedSpecimen`\n- TDWG Standards: https://www.tdwg.org/standards/\n"
slots:
- has_or_had_hyponym # was: bio_custodian_subtype - migrated per Rule 53/56 (2026-01-17)
- collection_size
# REMOVED 2026-01-19: collection_size - migrated to has_or_had_quantity + Quantity (Rule 53)
- has_or_had_quantity
- conservation_breeding
- has_or_had_custodian_type
- living_collection
@ -259,9 +263,30 @@ classes:
range: string
multivalued: true
required: false
collection_size:
range: string
has_or_had_quantity: # was: collection_size - migrated per Rule 53 (2026-01-19)
description: |
MIGRATED from collection_size per slot_fixes.yaml (Rule 53, 2026-01-19).
Quantitative description of the living collection size using Quantity class.
Can express species count, individual organisms, or both.
Default unit is "item" (species count) or "specimen" (individual count).
range: Quantity
inlined: true
multivalued: true
required: false
examples:
- value:
quantity_value: 900
quantity_type: COLLECTION_SIZE
has_or_had_unit:
unit_value: "species"
description: Zoo species count
- value:
quantity_value: 50000
quantity_type: COLLECTION_SIZE
has_or_had_unit:
unit_value: "specimen"
is_estimate: true
description: Botanical garden specimen count
living_collection:
range: boolean
required: true

View file

@ -25,13 +25,27 @@ imports:
# bold_id REMOVED - migrated to has_or_had_identifier with BOLDIdentifier class (Rule 53)
- ../slots/has_or_had_identifier
- ./BOLDIdentifier
- ../slots/cites_appendix
- ../slots/collection_date
- ../slots/collection_locality_text
- ../slots/collection_location
- ../slots/collector
- ../slots/common_name
- ../slots/common_name_language
# cites_appendix REMOVED - migrated to is_or_was_listed_in with CITESAppendix class (Rule 53, 2026-01-19)
- ../slots/is_or_was_listed_in
- ./CITESAppendix
# REMOVED 2026-01-19: collection_date - migrated to was_acquired_through + Acquisition (Rule 53)
- ../slots/was_acquired_through
- ./Acquisition
# REMOVED 2026-01-19: collection_locality_text - migrated to describes_or_described + Locality (Rule 53)
- ../slots/describes_or_described
- ./Locality
# REMOVED 2026-01-19: collection_location - migrated to has_or_had_place + CollectionEvent (Rule 53)
- ../slots/has_or_had_place
- ./CollectionEvent
# REMOVED 2026-01-22: ../slots/collector - migrated to is_or_was_acquired_by + Agent (Rule 53)
- ../slots/is_or_was_acquired_by
- ./Agent
# REMOVED 2026-01-22: ../slots/common_name - migrated to has_or_had_name + Name + has_or_had_type + NameType (Rule 53)
# REMOVED 2026-01-22: ../slots/common_name_language - migrated to Name.has_or_had_language (Rule 53)
- ../slots/has_or_had_name
- ./Name
- ./NameType
- ./NameTypes
- ../slots/has_or_had_custodian_type
- ../slots/date_identified
- ../slots/field_number
@ -86,10 +100,10 @@ classes:
- Taxidermy mounts (mammals, birds, fish)\n- Study skins and skeletal material\n- Herbarium specimens (pressed plants)\n\
- Wet specimens (fluid-preserved animals)\n- Fossils of organisms\n- Entomological collections (pinned insects)\n- Paleontological\
\ specimens\n- Living collection records (botanical gardens, zoos)\n\n**Darwin Core Integration**:\n\nBiologicalObject\
\ aligns with Darwin Core (TDWG) occurrence/specimen standards:\n- `taxon_name` → dwc:scientificName\n- `collection_date`\
\ → dwc:eventDate\n- `collector` → dwc:recordedBy\n- `preservation_method` → dwc:preparations\n- `gbif_id` → dwc:occurrenceID\
\ (GBIF)\n\n**Taxonomic Data Model**:\n\n```\nBiologicalObject\n │\n ├── taxon_name (scientific name: \"Raphus\
\ cucullatus\")\n │ │\n │ ├── common_name (\"Dodo\")\n │ ├── has_or_had_rank (SPECIES)\n \
\ aligns with Darwin Core (TDWG) occurrence/specimen standards:\n- `has_or_had_label` (TaxonName) → dwc:scientificName\n- `was_acquired_through` (Acquisition) → dwc:eventDate\
\n- `is_or_was_acquired_by` (Agent) → dwc:recordedBy\n- `preservation_method` → dwc:preparations\n- `gbif_id` → dwc:occurrenceID\
\ (GBIF)\n\n**Taxonomic Data Model**:\n\n```\nBiologicalObject\n │\n ├── has_or_had_label (TaxonName: \"Raphus\
\ cucullatus\")\n │ │\n │ ├── has_or_had_name (Name with type=CommonName: \"Dodo\")\n │ ├── has_or_had_rank (SPECIES)\n \
\ │ ├── has_or_had_authority (\"Linnaeus, 1758\")\n │ └── higher_classification (Aves → Columbiformes\
\ → Columbidae)\n │\n ├── specimen_data\n │ │\n │ ├── specimen_type (HOLOTYPE, PARATYPE, etc.)\n\
\ │ ├── is_type_specimen (boolean)\n │ ├── sex (MALE, FEMALE, UNKNOWN)\n │ ├── life_stage\
@ -118,13 +132,18 @@ classes:
- is_or_was_associated_with
# bold_id REMOVED - migrated to has_or_had_identifier with BOLDIdentifier (Rule 53)
- has_or_had_identifier
- cites_appendix
- collection_date
- collection_locality_text
- collection_location
- collector
- common_name
- common_name_language
# cites_appendix REMOVED - migrated to is_or_was_listed_in with CITESAppendix (Rule 53, 2026-01-19)
- is_or_was_listed_in
# collection_date REMOVED - migrated to was_acquired_through + Acquisition (Rule 53, 2026-01-19)
- was_acquired_through
# collection_locality_text REMOVED - migrated to describes_or_described + Locality (Rule 53, 2026-01-19)
- describes_or_described
# collection_location REMOVED - migrated to has_or_had_place + CollectionEvent (Rule 53, 2026-01-19)
- has_or_had_place
# REMOVED 2026-01-22: collector - migrated to is_or_was_acquired_by + Agent (Rule 53)
- is_or_was_acquired_by
# REMOVED 2026-01-22: common_name, common_name_language - migrated to has_or_had_name + Name (Rule 53)
- has_or_had_name
- has_or_had_custodian_type
- date_identified
- field_number
@ -208,21 +227,40 @@ classes:
scientific_name: "Panthera leo"
taxonomic_rank: SPECIES
description: Lion (authority omitted)
common_name:
# MIGRATED 2026-01-22: common_name, common_name_language → has_or_had_name + Name (Rule 53)
has_or_had_name:
description: |
Common/vernacular names for this biological object.
MIGRATED from common_name and common_name_language per slot_fixes.yaml (Rule 53, 2026-01-22).
Uses Name class for structured representation including:
- Name value (has_or_had_label)
- Name type (has_or_had_type → NameType, e.g., CommonName)
- Language (has_or_had_language)
required: false
range: string
range: Name
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value: Dodo
- value: Lion
- value: Coast Redwood
common_name_language:
required: false
range: string
multivalued: true
examples:
- value: en
- value: nl
- value:
has_or_had_label: "Dodo"
has_or_had_type: CommonName
has_or_had_language: "en"
description: English common name
- value:
has_or_had_label: "Dronte"
has_or_had_type: CommonName
has_or_had_language: "nl"
description: Dutch common name
- value:
has_or_had_label: "Lion"
has_or_had_type: CommonName
has_or_had_language: "en"
- value:
has_or_had_label: "Coast Redwood"
has_or_had_type: CommonName
has_or_had_language: "en"
has_or_had_rank: # was: taxonomic_rank - migrated per Rule 53/56 (2026-01-17)
required: false
range: string
@ -371,38 +409,95 @@ classes:
examples:
- value: Natural History Museum Preparation Lab
- value: J. van der Berg
collection_date:
# MIGRATED 2026-01-19: collection_date → was_acquired_through + Acquisition (Rule 53)
was_acquired_through:
required: false
range: string
range: Acquisition
inlined: true
inlined_as_list: true
description: >-
Acquisition event capturing when and how specimen was collected.
Replaces simple collection_date with structured acquisition data.
examples:
- value: '2020-06-15'
- value: 2020-06/2020-07
description: Collected sometime in June-July 2020
- value: 1870s
description: Historical specimen with approximate date
collection_location:
- value: |
acquisition_method: FIELD_COLLECTION
temporal_extent:
begin_of_the_begin: "2020-06-15"
end_of_the_end: "2020-06-15"
acquisition_date_text: "2020-06-15"
- value: |
acquisition_method: FIELD_COLLECTION
temporal_extent:
begin_of_the_begin: "2020-06-01"
end_of_the_end: "2020-07-31"
acquisition_date_text: "2020-06/2020-07"
acquisition_notes: "Collected sometime in June-July 2020"
- value: |
acquisition_method: FIELD_COLLECTION
temporal_extent:
begin_of_the_begin: "1870-01-01"
end_of_the_end: "1879-12-31"
acquisition_date_text: "1870s"
acquisition_notes: "Historical specimen with approximate date"
# MIGRATED 2026-01-19: collection_location → has_or_had_place + CollectionEvent (Rule 53)
has_or_had_place:
required: false
range: CustodianPlace
inlined: true
description: >-
Structured location where specimen was collected.
MIGRATED from collection_location per slot_fixes.yaml (Rule 53, 2026-01-19).
Uses CustodianPlace for detailed location including coordinates.
examples:
- value:
place_name: Mauritius
country: MU
latitude: -20.2
longitude: 57.5
collection_locality_text:
# MIGRATED 2026-01-19: collection_locality_text → describes_or_described + Locality (Rule 53)
describes_or_described:
required: false
range: string
range: Locality
inlined: true
inlined_as_list: true
description: >-
Verbatim locality description as recorded on specimen label.
MIGRATED from collection_locality_text per slot_fixes.yaml (Rule 53, 2026-01-19).
Uses Locality class for structured representation including
original text, language, and provenance.
examples:
- value: Mauritius, near Port Louis, in forest
- value: 'Indonesia: Java: Mt. Gede, 1500m'
collector:
- value:
verbatim_text: "Mauritius, near Port Louis, in forest"
original_language: "en"
description: Locality for Dodo specimen
- value:
verbatim_text: "Indonesia: Java: Mt. Gede, 1500m"
original_language: "en"
interpretation_notes: "Mt. Gede is Gunung Gede volcano"
description: Indonesian specimen with elevation
# MIGRATED 2026-01-22: collector → is_or_was_acquired_by + Agent (Rule 53)
is_or_was_acquired_by:
description: |
The person(s) or organization(s) who collected this specimen.
Migrated from collector per slot_fixes.yaml revision.
required: false
range: string
range: Agent
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value: Alfred Russel Wallace
- value: Charles Darwin
- value:
agent_name: "Alfred Russel Wallace"
agent_type: person
agent_role: collector
description: Victorian naturalist collector
- value:
agent_name: "Charles Darwin"
agent_type: person
agent_role: collector
description: HMS Beagle expedition collector
field_number:
required: false
range: string
@ -431,12 +526,32 @@ classes:
description: Extinct (e.g., Dodo)
- value: CR
description: Critically Endangered
cites_appendix:
# cites_appendix REMOVED - migrated to is_or_was_listed_in with CITESAppendix (Rule 53, 2026-01-19)
is_or_was_listed_in:
description: >-
CITES (Convention on International Trade in Endangered Species) listing.
MIGRATED from cites_appendix per slot_fixes.yaml (Rule 53, 2026-01-19).
Uses CITESAppendix class for structured representation including
appendix level, listing date, and exemption notes.
Important for legal compliance in specimen transfers between institutions.
range: CITESAppendix
inlined: true
required: false
range: string
examples:
- value: APPENDIX_I
description: Most endangered, trade prohibited
- value:
has_or_had_type: APPENDIX_I
has_or_had_label: "CITES Appendix I - Most Endangered"
listing_effective_date: "1975-07-01"
species_covered: "Loxodonta africana"
description: African elephant - highest CITES protection
- value:
has_or_had_type: NOT_LISTED
has_or_had_label: "Not regulated under CITES"
species_covered: "Raphus cucullatus"
exemption_note: "Extinct species - historical specimens pre-date CITES"
description: Dodo - extinct, not subject to CITES restrictions
legal_provenance_note:
required: false
range: string
@ -482,17 +597,30 @@ classes:
scientific_name: "Raphus cucullatus (Linnaeus, 1758)"
authorship: "Linnaeus, 1758"
taxonomic_rank: SPECIES
common_name:
- Dodo
- Dronte
# MIGRATED 2026-01-22: common_name → has_or_had_name + Name (Rule 53)
has_or_had_name:
- has_or_had_label: "Dodo"
has_or_had_type: CommonName
has_or_had_language: "en"
- has_or_had_label: "Dronte"
has_or_had_type: CommonName
has_or_had_language: "nl"
has_or_had_rank: SPECIES # was: taxonomic_rank - migrated per Rule 53/56 (2026-01-17)
higher_classification: Animalia|Chordata|Aves|Columbiformes|Columbidae|Raphus
part_type:
- HEAD
- FOOT
preservation_method: DRIED_WHOLE
collection_date: pre-1662
collection_location:
# MIGRATED 2026-01-19: collection_date → was_acquired_through (Rule 53)
was_acquired_through:
- acquisition_method: FIELD_COLLECTION
acquisition_date_text: "pre-1662"
temporal_extent:
begin_of_the_begin: "1600-01-01"
end_of_the_end: "1662-12-31"
notes: "Pre-1662 (before Great Fire of London destroyed records)"
# MIGRATED 2026-01-19: collection_location → has_or_had_place (Rule 53)
has_or_had_place:
place_name: Mauritius
country: MU
iucn_status: EX
@ -516,13 +644,19 @@ classes:
scientific_name: "Megatherium americanum Cuvier, 1796"
authorship: "Cuvier, 1796"
taxonomic_rank: SPECIES
common_name:
- Giant Ground Sloth
# MIGRATED 2026-01-22: common_name → has_or_had_name + Name (Rule 53)
has_or_had_name:
- has_or_had_label: "Giant Ground Sloth"
has_or_had_type: CommonName
has_or_had_language: "en"
has_or_had_rank: SPECIES # was: taxonomic_rank - migrated per Rule 53/56 (2026-01-17)
part_type:
- SKELETON
preservation_method: FOSSIL_PREPARED
collection_locality_text: Argentina, Buenos Aires Province
# MIGRATED 2026-01-19: collection_locality_text → describes_or_described (Rule 53)
describes_or_described:
- verbatim_text: "Argentina, Buenos Aires Province"
original_language: "en"
iucn_status: EX
current_keeper: https://nde.nl/ontology/hc/custodian/nl/naturalis
description: Megatherium skeleton at Naturalis Biodiversity Center
@ -537,9 +671,14 @@ classes:
scientific_name: "Quercus robur L."
authorship: "L."
taxonomic_rank: SPECIES
common_name:
- English Oak
- Pedunculate Oak
# MIGRATED 2026-01-22: common_name → has_or_had_name + Name (Rule 53)
has_or_had_name:
- has_or_had_label: "English Oak"
has_or_had_type: CommonName
has_or_had_language: "en"
- has_or_had_label: "Pedunculate Oak"
has_or_had_type: CommonName
has_or_had_language: "en"
has_or_had_rank: SPECIES # was: taxonomic_rank - migrated per Rule 53/56 (2026-01-17)
has_or_had_authority: # was: taxonomic_authority - migrated per Rule 53/56 (2026-01-16)
has_or_had_label: "Linnaeus, 1753"
@ -555,8 +694,18 @@ classes:
- LEAF
- FLOWER
preservation_method: DRIED_PRESSED
collection_date: 1750s
collector:
- Carl Linnaeus
# MIGRATED 2026-01-19: collection_date → was_acquired_through (Rule 53)
was_acquired_through:
- acquisition_method: FIELD_COLLECTION
acquisition_date_text: "1750s"
temporal_extent:
begin_of_the_begin: "1750-01-01"
end_of_the_end: "1759-12-31"
notes: "Collected by Linnaeus in the 1750s"
# MIGRATED 2026-01-22: collector → is_or_was_acquired_by + Agent (Rule 53)
is_or_was_acquired_by:
- agent_name: "Carl Linnaeus"
agent_type: person
agent_role: collector
current_keeper: https://nde.nl/ontology/hc/custodian/uk/royal-botanic-gardens-kew
description: Oak type specimen at Royal Botanic Gardens, Kew

View file

@ -21,12 +21,20 @@ imports:
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ../slots/confidence
# MIGRATED 2026-01-19: confidence → is_or_was_generated_by + GenerationEvent + ConfidenceScore
- ../slots/is_or_was_generated_by
- ./GenerationEvent
- ./ConfidenceScore
- ../slots/birth_edtf
- ../slots/birth_iso_date
- ../slots/birth_source_text
# MIGRATED 2026-01-22: birth_source_text → has_or_had_reference + Reference per slot_fixes.yaml feedback
- ../slots/has_or_had_reference
- ./Reference
- ../slots/inference_provenance
- ../slots/is_inferred
# MIGRATED 2026-01-22: Added temporal_extent for semantic interoperability per slot_fixes.yaml feedback
- ../slots/temporal_extent
- ./TimeSpan
default_prefix: hc
classes:
BirthDate:
@ -91,12 +99,16 @@ classes:
slots:
- birth_edtf
- birth_iso_date
- birth_source_text
# MIGRATED 2026-01-22: birth_source_text → has_or_had_reference + Reference
- has_or_had_reference
- is_inferred
- inference_provenance
- confidence
# MIGRATED 2026-01-19: confidence → is_or_was_generated_by (structured ConfidenceScore)
- is_or_was_generated_by
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
# MIGRATED 2026-01-22: Added for semantic interoperability (keeps birth_edtf for EDTF fidelity)
- temporal_extent
slot_usage:
birth_edtf:
range: string
@ -125,16 +137,25 @@ classes:
Optional - use birth_edtf for partial/uncertain dates.
examples:
- value: "1970-08-15"
birth_source_text:
range: string
has_or_had_reference:
range: Reference
required: false
inlined: true
multivalued: true
description: >-
Original date text from source document, preserved verbatim.
Useful for archival/historical sources with non-standard notation.
Source reference for the birth date information.
MIGRATED 2026-01-22: Replaces birth_source_text with structured Reference.
Reference.citation_text preserves original verbatim source text.
examples:
- value: "born in the year of our Lord 1823"
- value: "ca. 1750"
- value: "late 18th century"
- value:
citation_text: "born in the year of our Lord 1823"
source_type: "parish_register"
source_location: "Amsterdam Stadsarchief, DTB 456"
description: Parish register reference
- value:
citation_text: "ca. 1750"
source_type: "biography"
description: Biographical reference with approximate date
is_inferred:
range: boolean
required: false
@ -150,11 +171,51 @@ classes:
Required when is_inferred is true.
examples:
- value: '{"method": "earliest_education_heuristic", "inference_chain": [...]}'
confidence:
range: BirthDateConfidenceEnum
is_or_was_generated_by:
range: GenerationEvent
required: false
inlined: true
description: >-
Confidence level in the birth date value.
Generation event containing confidence score for birth date determination.
MIGRATED 2026-01-19: Replaces confidence slot with structured pattern.
examples:
- value:
has_or_had_score:
has_or_had_score: 0.95
has_or_had_method: "document_extraction"
description: High confidence date extraction
- value:
has_or_had_score:
has_or_had_score: 0.50
has_or_had_method: "education_inference"
has_or_had_description: "Inferred from education start year"
description: Low confidence inferred date
temporal_extent:
range: TimeSpan
required: false
inlined: true
description: >-
CIDOC-CRM TimeSpan representation for semantic interoperability.
MIGRATED 2026-01-22: Added per slot_fixes.yaml feedback.
For a full date (e.g., birth_edtf: "1970-08-15"):
- begin_of_the_begin: "1970-08-15T00:00:00Z"
- end_of_the_end: "1970-08-15T23:59:59Z"
For a decade (e.g., birth_edtf: "197X"):
- begin_of_the_begin: "1970-01-01T00:00:00Z"
- end_of_the_end: "1979-12-31T23:59:59Z"
The birth_edtf slot retains the original EDTF notation for fidelity.
examples:
- value:
begin_of_the_begin: "1970-08-15T00:00:00Z"
end_of_the_end: "1970-08-15T23:59:59Z"
description: Full date known - point in time
- value:
begin_of_the_begin: "1970-01-01T00:00:00Z"
end_of_the_end: "1979-12-31T23:59:59Z"
description: Decade known (1970s) - 10-year range
comments:
- "Replaces simple birth_date string slot (Rule 53)"
- "EDTF notation enables uncertain/incomplete date representation"
@ -167,21 +228,42 @@ classes:
- value:
birth_edtf: "1970-08-15"
birth_iso_date: "1970-08-15"
temporal_extent:
begin_of_the_begin: "1970-08-15T00:00:00Z"
end_of_the_end: "1970-08-15T23:59:59Z"
is_inferred: false
confidence: HIGH
description: Full date known with high confidence
is_or_was_generated_by:
has_or_had_score:
has_or_had_score: 0.95
has_or_had_method: "birth_certificate_extraction"
description: Full date known with high confidence (EDTF + TimeSpan)
- value:
birth_edtf: "197X"
temporal_extent:
begin_of_the_begin: "1970-01-01T00:00:00Z"
end_of_the_end: "1979-12-31T23:59:59Z"
is_inferred: true
inference_provenance: '{"method": "earliest_education_heuristic", "source_field": "education[0].start_year"}'
confidence: LOW
description: Decade inferred from education start year
is_or_was_generated_by:
has_or_had_score:
has_or_had_score: 0.40
has_or_had_method: "education_inference"
description: Decade inferred from education start year (EDTF + TimeSpan range)
- value:
birth_edtf: "1823"
birth_source_text: "born in the year of our Lord 1823"
temporal_extent:
begin_of_the_begin: "1823-01-01T00:00:00Z"
end_of_the_end: "1823-12-31T23:59:59Z"
has_or_had_reference:
- citation_text: "born in the year of our Lord 1823"
source_type: "parish_register"
source_location: "Amsterdam Stadsarchief, DTB 456, folio 23r"
is_inferred: false
confidence: MEDIUM
description: Year extracted from historical document
is_or_was_generated_by:
has_or_had_score:
has_or_had_score: 0.75
has_or_had_method: "document_extraction"
description: Year extracted from historical document with structured reference
annotations:
specificity_score: 0.45
specificity_rationale: >-

View file

@ -0,0 +1,159 @@
id: https://nde.nl/ontology/hc/class/CITESAppendix
name: CITESAppendix
title: CITES Appendix Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
dcterms: http://purl.org/dc/terms/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_type
- ../slots/has_or_had_label
default_prefix: hc
classes:
CITESAppendix:
class_uri: hc:CITESAppendix
description: >-
CITES (Convention on International Trade in Endangered Species) appendix listing
for biological specimens.
CITES regulates international trade in specimens of wild animals and plants to
ensure their survival. Species are listed in one of three appendices based on
the degree of protection needed.
**Appendix Levels**:
| Appendix | Protection Level | Trade Status |
|----------|------------------|--------------|
| APPENDIX_I | Highest | Trade prohibited (except non-commercial) |
| APPENDIX_II | Moderate | Trade regulated with permits |
| APPENDIX_III | Lowest | Trade monitored by request of a Party |
| NOT_LISTED | None | Not regulated under CITES |
**Temporal Considerations**:
Species may move between appendices as their conservation status changes.
The listing date is important for determining legal status at time of
specimen acquisition.
**Legal Significance**:
For heritage collections, CITES status affects:
- Loan agreements between institutions
- Specimen transfers and acquisitions
- Import/export permit requirements
- Documentation and provenance requirements
**Example**:
```yaml
is_or_was_listed_in:
has_or_had_type: APPENDIX_I
has_or_had_label: "CITES Appendix I - Most Endangered"
listing_effective_date: "1975-07-01"
listing_authority: "CITES Secretariat"
species_covered: "Raphus cucullatus"
```
slots:
- has_or_had_type
- has_or_had_label
slot_usage:
has_or_had_type:
description: >-
The CITES appendix level (APPENDIX_I, APPENDIX_II, APPENDIX_III, or NOT_LISTED).
range: string
required: true
pattern: "^(APPENDIX_I|APPENDIX_II|APPENDIX_III|NOT_LISTED)$"
examples:
- value: APPENDIX_I
description: Highest protection - species threatened with extinction
- value: APPENDIX_II
description: Moderate protection - trade must be controlled
- value: APPENDIX_III
description: Protected in at least one country requesting cooperation
- value: NOT_LISTED
description: Species not regulated under CITES
has_or_had_label:
description: >-
Human-readable description of the CITES listing status.
range: string
required: false
examples:
- value: "CITES Appendix I - Trade Prohibited"
- value: "CITES Appendix II - Trade Regulated"
attributes:
listing_effective_date:
description: >-
Date when the species was added to this CITES appendix.
Important for determining legal status at time of specimen acquisition.
range: date
required: false
examples:
- value: "1975-07-01"
description: Original CITES listing (Convention entered into force)
- value: "2019-08-28"
description: Added at CoP18 (Geneva)
listing_authority:
description: >-
Authority responsible for the listing (typically CITES Secretariat or
a specific Conference of the Parties decision).
range: string
required: false
examples:
- value: "CITES Secretariat"
- value: "CoP18 Decision 18.219"
species_covered:
description: >-
Scientific name of the species covered by this listing.
May be at species, genus, or family level.
range: string
required: false
examples:
- value: "Raphus cucullatus"
description: Extinct dodo (historical listing)
- value: "Elephantidae"
description: All elephant species (family-level listing)
population_specific:
description: >-
Indicates if the listing applies to a specific population rather than
the entire species. Some CITES listings are population-specific.
range: boolean
required: false
examples:
- value: true
description: Population-specific listing (e.g., African elephant populations)
- value: false
description: Applies to all populations of the species
exemption_note:
description: >-
Notes on any exemptions or special provisions that apply.
range: string
required: false
examples:
- value: "Pre-Convention specimens exempt with documentation"
- value: "Captive-bred specimens listed as Appendix II"
exact_mappings:
- hc:CITESAppendix
close_mappings:
- schema:PropertyValue
see_also:
- https://cites.org/eng/app/appendices.php
- https://speciesplus.net/
examples:
- value:
has_or_had_type: APPENDIX_I
has_or_had_label: "CITES Appendix I - Most Endangered"
listing_effective_date: "1975-07-01"
listing_authority: "CITES Secretariat"
species_covered: "Loxodonta africana"
population_specific: true
exemption_note: "Some populations listed in Appendix II"
description: African elephant CITES listing
- value:
has_or_had_type: NOT_LISTED
has_or_had_label: "Not regulated under CITES"
species_covered: "Raphus cucullatus"
exemption_note: "Extinct species - historical specimens pre-date CITES"
description: Dodo - extinct, not subject to CITES trade restrictions

View file

@ -0,0 +1,142 @@
id: https://nde.nl/ontology/hc/class/CMS
name: cms_class
title: CMS Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
doap: http://usefulinc.com/ns/doap#
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_version
- ../slots/has_or_had_type
- ./CMSType
default_prefix: hc
classes:
CMS:
class_uri: schema:SoftwareApplication
description: |
A detected Content Management System (CMS) on a digital platform.
**Purpose**: Represents a CMS instance detected through automated discovery
or manual identification. Used when a platform is_or_was_based_on a CMS.
**Distinction from CollectionManagementSystem**:
- **CMS**: Lightweight detection record (what CMS was found)
- **CollectionManagementSystem**: Full institutional CMS deployment profile
(configuration, collections managed, custodian relationships)
**Detection Methods** (from original cms_detected documentation):
- HTTP response headers (X-Powered-By, Server)
- HTML meta tags (generator)
- URL patterns (e.g., /providence/, /omeka/)
- JavaScript libraries or framework signatures
- Admin panel detection
**Use Cases**:
1. "What CMS powers this auxiliary platform?" → Check is_or_was_based_on
2. Technical survey: Identify platforms by CMS type
3. Migration planning: Prioritize platforms by CMS technology
**Example**:
```yaml
AuxiliaryDigitalPlatform:
platform_name: Heritage Blog
is_or_was_based_on:
- cms_name: WordPress
cms_version: "6.4.2"
cms_type: CustomCMS
detected_at: "2026-01-19T12:00:00Z"
detection_method: HTTP_HEADER
```
**Migration Note**: Created 2026-01-19 per slot_fixes.yaml (Rule 53).
Supports migration from boolean cms_detected to structured CMS reference.
exact_mappings:
- schema:SoftwareApplication
close_mappings:
- doap:Project
slots:
- cms_name
- has_or_had_version
- has_or_had_type
- detected_at
- detection_method
slot_usage:
cms_name:
description: Name of the detected CMS (e.g., WordPress, Drupal, Omeka)
range: string
required: true
examples:
- value: WordPress
description: WordPress CMS
- value: Omeka S
description: Omeka S digital collections platform
- value: CollectiveAccess
description: CollectiveAccess museum CMS
has_or_had_version:
description: Detected version of the CMS
range: string
required: false
examples:
- value: "6.4.2"
description: WordPress version
- value: "4.0.1"
description: Omeka S version
has_or_had_type:
description: CMS type classification (maps to CMSType hierarchy)
range: CMSType
required: false
examples:
- value: MuseumCMS
description: Museum-focused CMS
- value: ArchiveCMS
description: Archive-focused CMS
detected_at:
description: ISO 8601 timestamp when CMS was detected
range: datetime
required: false
examples:
- value: "2026-01-19T12:00:00Z"
description: Detection timestamp
detection_method:
description: Method used to detect the CMS
range: string
required: false
examples:
- value: HTTP_HEADER
description: Detected via X-Powered-By header
- value: META_TAG
description: Detected via HTML generator meta tag
- value: URL_PATTERN
description: Detected via URL structure
- value: MANUAL
description: Manually identified
annotations:
custodian_types: '["D"]'
custodian_types_rationale: Digital platforms (D) are the primary users of CMS detection
specificity_score: 0.70
specificity_rationale: Specific to digital platform CMS detection context
slots:
cms_name:
slot_uri: schema:name
description: Name of the Content Management System
range: string
exact_mappings:
- schema:name
- doap:name
detected_at:
slot_uri: prov:generatedAtTime
description: Timestamp when the CMS was detected
range: datetime
exact_mappings:
- prov:generatedAtTime
detection_method:
slot_uri: prov:wasGeneratedBy
description: Method used to detect the CMS (HTTP_HEADER, META_TAG, URL_PATTERN, MANUAL)
range: string

View file

@ -0,0 +1,120 @@
# CMSType class
# Abstract base class for CMS type taxonomy
#
# Generation date: 2026-01-19
# Rule compliance: 0b (Type/Types pattern), 53 (slot_fixes.yaml), 39 (RiC-O naming)
#
# This is the SINGULAR "Type" class - abstract base for the type hierarchy
# Concrete types are in CMSTypes.yaml (plural)
id: https://nde.nl/ontology/hc/class/cms_type
name: cms_type_class
title: CMS Type Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/includes_or_included
classes:
CMSType:
class_uri: skos:Concept
abstract: true
description: |
Abstract base class for Collection Management System type taxonomy.
**DESIGN PATTERN** (Rule 0b - Type/Types Naming):
This file (`CMSType.yaml`) defines the **singular abstract base class**.
Concrete subclasses are defined in `CMSTypes.yaml` (plural).
**TYPE HIERARCHY**:
```
CMSType (abstract base)
├── MUSEUM_CMS - Museum collection management (MuseumPlus, TMS, CollectiveAccess)
├── ARCHIVE_CMS - Archival description (ArchivesSpace, MAIS, Calm)
├── LIBRARY_CMS - Library management (Koha, Alma, WorldShare)
├── DAM - Digital asset management (ResourceSpace, DAMsimple)
├── REPOSITORY - Digital repository (DSpace, Fedora, EPrints)
├── MIXED - Multi-domain (Omeka S, CollectiveAccess)
└── CUSTOM - Institution-specific/custom-built
```
**ONTOLOGICAL ALIGNMENT**:
- **Primary** (`class_uri`): `skos:Concept` - SKOS concept scheme
- **Related**: `schema:applicationCategory` - Schema.org software categorization
**USE CASES**:
The CMSType is used as the range for the `has_or_had_type`
slot in the CollectionManagementSystem class:
```yaml
CollectionManagementSystem:
has_or_had_identifier:
identifier_scheme: CMS_URI
identifier_value: "https://nde.nl/ontology/hc/cms/rijksmuseum-adlib"
has_or_had_type: MUSEUM_CMS # ← CMSType
```
exact_mappings:
- skos:Concept
related_mappings:
- schema:applicationCategory
slots:
- has_or_had_label
- has_or_had_description
- includes_or_included
slot_usage:
has_or_had_label:
description: |
Display label for this CMS type.
range: string
required: true
examples:
- value: "MUSEUM_CMS"
description: Museum collection management system
has_or_had_description:
description: |
Description of what this CMS type covers.
examples:
- value:
description_text: "Collection management systems designed for museum collections, including object cataloging, provenance tracking, and exhibition management."
description_type: definition
description: Museum CMS type definition
includes_or_included:
description: |
Subtypes included in this CMS type (for hierarchical types).
range: CMSType
multivalued: true
annotations:
type_types_pattern: |
This is the SINGULAR "Type" class per Rule 0b.
Concrete subclasses in CMSTypes.yaml (plural).
custodian_types: '["*"]'
custodian_types_rationale: CMS types apply to all heritage custodian contexts.
specificity_score: 0.55
specificity_rationale: Type taxonomy - moderately specific to software categorization.
replaces_slots: "cms_category (the old string-valued slot)"
migration_date: "2026-01-19"
comments:
- "Abstract base class for CMS type hierarchy"
- "Follows Rule 0b Type/Types naming pattern"
- "Concrete types: MUSEUM_CMS, ARCHIVE_CMS, LIBRARY_CMS, DAM, REPOSITORY, MIXED, CUSTOM"
- "See CMSTypes.yaml for subclass definitions"

View file

@ -0,0 +1,258 @@
# CMSTypes class
# Concrete subclasses for CMS type taxonomy
#
# Generation date: 2026-01-19
# Rule compliance: 0b (Type/Types pattern), 53 (slot_fixes.yaml), 39 (RiC-O naming)
#
# This is the PLURAL "Types" file - contains all concrete subclasses
# Abstract base is in CMSType.yaml (singular)
id: https://nde.nl/ontology/hc/class/cms_types
name: cms_types_class
title: CMS Types Classes
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/
default_prefix: hc
imports:
- linkml:types
- ./CMSType
classes:
# ========================================================================
# MUSEUM_CMS - Museum collection management
# ========================================================================
MuseumCMS:
is_a: CMSType
class_uri: hc:MuseumCMS
description: |
Collection management systems designed for museum collections.
**TYPICAL FEATURES**:
- Object cataloging and registration
- Provenance tracking
- Exhibition management
- Loan management
- Conservation records
- SPECTRUM workflow support
**EXAMPLES**:
- MuseumPlus (Zetcom)
- TMS - The Museum System (Gallery Systems)
- CollectiveAccess
- Adlib (Axiell)
- EMu (Axiell)
- PastPerfect
annotations:
cms_type_code: "MUSEUM_CMS"
primary_domain: "museums"
examples:
- value:
has_or_had_label: "MUSEUM_CMS"
has_or_had_description:
description_text: "Collection management systems designed for museum collections, including object cataloging, provenance tracking, and exhibition management."
description: Museum CMS type
# ========================================================================
# ARCHIVE_CMS - Archival description systems
# ========================================================================
ArchiveCMS:
is_a: CMSType
class_uri: hc:ArchiveCMS
description: |
Systems for archival description and records management.
**TYPICAL FEATURES**:
- Hierarchical description (fonds, series, files, items)
- ISAD(G) compliance
- EAD export
- Access restrictions management
- Finding aid generation
**EXAMPLES**:
- ArchivesSpace
- MAIS-Flexis (De Ree)
- Calm (Axiell)
- AtoM (Access to Memory)
- Archivist's Toolkit (legacy)
annotations:
cms_type_code: "ARCHIVE_CMS"
primary_domain: "archives"
examples:
- value:
has_or_had_label: "ARCHIVE_CMS"
has_or_had_description:
description_text: "Archival description systems supporting hierarchical arrangement, ISAD(G) compliance, and EAD export."
description: Archive CMS type
# ========================================================================
# LIBRARY_CMS - Library management systems
# ========================================================================
LibraryCMS:
is_a: CMSType
class_uri: hc:LibraryCMS
description: |
Integrated library systems (ILS) and library service platforms.
**TYPICAL FEATURES**:
- Cataloging (MARC21, RDA)
- Circulation management
- Acquisitions
- Serials management
- OPAC (public catalog)
- Interlibrary loan
**EXAMPLES**:
- Alma (Ex Libris)
- Koha (open-source)
- WorldShare (OCLC)
- Folio (open-source)
- Sierra (III)
- Symphony (SirsiDynix)
annotations:
cms_type_code: "LIBRARY_CMS"
primary_domain: "libraries"
examples:
- value:
has_or_had_label: "LIBRARY_CMS"
has_or_had_description:
description_text: "Integrated library systems supporting MARC21 cataloging, circulation, acquisitions, and OPAC functionality."
description: Library CMS type
# ========================================================================
# DAM - Digital Asset Management
# ========================================================================
DigitalAssetManagement:
is_a: CMSType
class_uri: hc:DigitalAssetManagement
description: |
Digital asset management systems for media files.
**TYPICAL FEATURES**:
- Image, video, audio management
- Metadata extraction
- Format conversion
- Rights management
- Distribution workflows
**EXAMPLES**:
- ResourceSpace
- DAMsimple
- Razuna
- Pimcore
- Bynder
- Canto
annotations:
cms_type_code: "DAM"
primary_domain: "digital_assets"
examples:
- value:
has_or_had_label: "DAM"
has_or_had_description:
description_text: "Digital asset management systems for organizing, storing, and distributing media files including images, video, and audio."
description: DAM type
# ========================================================================
# REPOSITORY - Digital repository systems
# ========================================================================
DigitalRepository:
is_a: CMSType
class_uri: hc:DigitalRepository
description: |
Digital repository systems for long-term preservation and access.
**TYPICAL FEATURES**:
- Long-term preservation
- OAI-PMH harvesting
- DOI/Handle assignment
- Bitstream management
- OAIS compliance
**EXAMPLES**:
- DSpace
- Fedora (Flexible Extensible Digital Object Repository Architecture)
- EPrints
- Islandora (Drupal + Fedora)
- Samvera (formerly Hydra)
- Preservica
annotations:
cms_type_code: "REPOSITORY"
primary_domain: "digital_preservation"
examples:
- value:
has_or_had_label: "REPOSITORY"
has_or_had_description:
description_text: "Digital repository systems for long-term preservation, OAI-PMH harvesting, and OAIS-compliant storage."
description: Digital repository type
# ========================================================================
# MIXED - Multi-domain systems
# ========================================================================
MixedCMS:
is_a: CMSType
class_uri: hc:MixedCMS
description: |
Multi-domain systems that serve museums, archives, and/or libraries.
**TYPICAL FEATURES**:
- Flexible data models
- Multiple metadata standards
- Cross-domain searching
- Configurable workflows
**EXAMPLES**:
- Omeka S (museums, archives, libraries)
- CollectiveAccess (museums, archives)
- ArchivesSpace + plugins
- ResourceSpace with customization
annotations:
cms_type_code: "MIXED"
primary_domain: "multi-domain"
examples:
- value:
has_or_had_label: "MIXED"
has_or_had_description:
description_text: "Multi-domain collection management systems that can serve museums, archives, and/or libraries with flexible data models."
description: Mixed CMS type
# ========================================================================
# CUSTOM - Institution-specific/custom-built
# ========================================================================
CustomCMS:
is_a: CMSType
class_uri: hc:CustomCMS
description: |
Institution-specific or custom-built collection management systems.
**TYPICAL FEATURES**:
- Tailored to institutional needs
- May be legacy systems
- Often lack standard API/export
- Proprietary data models
**EXAMPLES**:
- In-house developed systems
- Heavily customized commercial systems
- Legacy database applications
- Spreadsheet-based systems (transitional)
annotations:
cms_type_code: "CUSTOM"
primary_domain: "custom"
examples:
- value:
has_or_had_label: "CUSTOM"
has_or_had_description:
description_text: "Institution-specific or custom-built collection management systems, often legacy or heavily customized."
description: Custom CMS type

View file

@ -0,0 +1,94 @@
id: https://nde.nl/ontology/hc/class/CalendarSystem
name: CalendarSystem
title: Calendar System Class
description: >-
Represents a temporal reference system (calendar) for dating events.
**OWL TIME ALIGNMENT**: Maps to time:TRS (Temporal Reference System).
**SUPPORTED SYSTEMS**:
- gregorian: Gregorian calendar (ISO 8601 default)
- julian: Julian calendar (pre-1582 dates)
- hebrew: Hebrew calendar
- islamic: Islamic (Hijri) calendar
- chinese: Chinese traditional calendar
- japanese: Japanese imperial calendar
**USE CASES**:
- Historical dates using Julian calendar
- Religious dates in Hebrew or Islamic calendars
- East Asian historical dates
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
time: http://www.w3.org/2006/time#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ./Label
classes:
CalendarSystem:
class_uri: time:TRS
description: >-
A temporal reference system (calendar) used for dating.
exact_mappings:
- time:TRS
close_mappings:
- schema:Thing
attributes:
system_code:
range: string
required: true
description: >-
Code for the calendar system (e.g., gregorian, julian, hebrew, islamic).
examples:
- value: "gregorian"
- value: "julian"
- value: "hebrew"
- value: "islamic"
system_name:
range: string
description: >-
Full name of the calendar system.
examples:
- value: "Gregorian Calendar"
- value: "Julian Calendar"
- value: "Hebrew Calendar"
system_uri:
range: uriorcurie
description: >-
URI identifying the calendar system standard.
examples:
- value: "http://www.opengis.net/def/trs/BIPM/0/Gregorian"
slots:
- has_or_had_label
slot_usage:
has_or_had_label:
range: Label
inlined: true
description: Human-readable label for the calendar system.
examples:
- value:
system_code: "gregorian"
system_name: "Gregorian Calendar"
system_uri: "http://www.opengis.net/def/trs/BIPM/0/Gregorian"
description: Standard Gregorian calendar (ISO 8601)
- value:
system_code: "julian"
system_name: "Julian Calendar"
description: Julian calendar for pre-1582 dates
- value:
system_code: "hebrew"
system_name: "Hebrew Calendar"
description: Hebrew calendar for Jewish dates
annotations:
custodian_types: '["*"]'
specificity_score: 0.5
specificity_rationale: >-
Moderately specific - calendar systems used in temporal context across heritage.

View file

@ -32,7 +32,9 @@ imports:
- ./URL # for has_or_had_url range
- ./Identifier # for has_or_had_identifier range
# NOTE: has_or_had_status uses CallForApplicationStatusEnum (imported above), not a CallStatus class
- ../slots/co_funding_required
# REMOVED 2026-01-19: co_funding_required - migrated to requires_or_required + CoFunding (Rule 53)
- ../slots/requires_or_required # was: co_funding_required - migrated per Rule 53 (2026-01-19)
- ./CoFunding # for requires_or_required range (co-funding requirements)
- ../slots/eligible_applicant
- ../slots/eligible_country
- ../slots/funded_project
@ -115,7 +117,8 @@ classes:
- has_or_had_label # was: call_short_name, call_title - migrated per Rule 53 (2026-01-17)
- has_or_had_status # was: call_status - migrated per Rule 53 (2026-01-17)
- has_or_had_url # was: call_url - migrated per Rule 53 (2026-01-17)
- co_funding_required
# REMOVED 2026-01-19: co_funding_required - migrated to requires_or_required + CoFunding (Rule 53)
- requires_or_required # was: co_funding_required - migrated per Rule 53 (2026-01-19)
- contact_email
- eligible_applicant
- eligible_country
@ -317,6 +320,27 @@ classes:
description: Project funded by this call
- value: https://nde.nl/ontology/hc/project/europeana/common-culture-2024
description: Europeana project funded through Horizon Europe
requires_or_required: # was: co_funding_required - migrated per Rule 53 (2026-01-19)
range: CoFunding
multivalued: false
inlined: true
description: |
Co-funding/match funding requirement for this call.
MIGRATED from co_funding_required (boolean) to structured CoFunding class per Rule 53 (2026-01-19).
Now captures whether co-funding is required, percentage/amount requirements, and human-readable descriptions.
examples:
- value:
is_or_was_required: true
has_or_had_description: "Partnership funding 5-50% depending on grant size"
description: NLHF co-funding requirement with percentage range
- value:
is_or_was_required: true
has_or_had_quantity:
- quantity_value: 20
has_or_had_measurement_unit:
unit_label: "%"
has_or_had_description: "Minimum 20% co-funding from applicant organization"
description: Co-funding with specific percentage requirement
comments:
- CallForApplication links FundingOrganisation to heritage custodian funding opportunities
- Lifecycle tracked via CallForApplicationStatusEnum (ANNOUNCED through RESULTS_PUBLISHED)
@ -466,7 +490,9 @@ classes:
- Natural heritage
- Intangible heritage
- Industrial heritage
co_funding_required: true
requires_or_required: # was: co_funding_required - migrated per Rule 53 (2026-01-19)
is_or_was_required: true
has_or_had_description: "Partnership funding 5-50% depending on grant size"
partnership_required: false
issuing_organisation: https://nde.nl/ontology/hc/encompassing-body/funding/nlhf
parent_programme: National Lottery Heritage Fund

View file

@ -0,0 +1,135 @@
id: https://nde.nl/ontology/hc/class/Category
name: category_class
title: Category Class
# Created per slot_fixes.yaml revision for collection_focus migration
# RULE 53: Structured category class based on SKOS Concept
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
imports:
- linkml:types
- ../slots/specificity_annotation
- ../slots/has_or_had_score
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
default_range: string
enums:
CategoryTypeEnum:
description: Types of categories for classification.
permissible_values:
SUBJECT:
description: Subject or topic category (art, science, history)
meaning: skos:Concept
THEME:
description: Thematic category (Dutch Golden Age, WWII, Islamic art)
MATERIAL:
description: Material or medium category (paintings, manuscripts, specimens)
GEOGRAPHIC:
description: Geographic category (European, Asian, African)
TEMPORAL:
description: Temporal/period category (Medieval, Renaissance, Contemporary)
CREATOR:
description: Creator-focused category (single artist, school, movement)
TYPOLOGY:
description: Typological category (portraits, landscapes, genre scenes)
FORMAT:
description: Format category (books, photographs, digital)
GENRE:
description: Genre category (fiction, documentary, liturgical)
classes:
Category:
class_uri: skos:Concept
description: >-
A category or classification term, based on SKOS Concept model.
Categories represent hierarchical or faceted classifications used to
describe the focus, subject, or scope of collections and items.
**Use cases**:
- Collection focus (thematic specialization)
- Subject classification (AAT, LCSH, custom vocabularies)
- Material classification (medium, format)
- Geographic scope (regions, countries)
- Temporal scope (periods, eras)
**Examples**:
- "Dutch Golden Age paintings" (THEME + TEMPORAL + MATERIAL)
- "Lepidoptera" (SUBJECT, scientific classification)
- "First edition literature" (FORMAT + TYPOLOGY)
exact_mappings:
- skos:Concept
close_mappings:
- schema:DefinedTerm
- dcterms:subject
slots:
- specificity_annotation
- has_or_had_score
attributes:
category_name:
range: string
required: true
description: Name of the category.
slot_uri: skos:prefLabel
category_type:
range: CategoryTypeEnum
description: Type of category (subject, theme, material, geographic, etc.).
category_description:
range: string
description: Description of what this category encompasses.
slot_uri: skos:definition
broader_category:
range: string
description: >-
Broader (parent) category in hierarchy.
E.g., "Paintings" is broader than "Oil paintings"
slot_uri: skos:broader
narrower_category:
range: string
multivalued: true
description: >-
Narrower (child) categories.
E.g., "Oil paintings", "Watercolors" are narrower than "Paintings"
slot_uri: skos:narrower
vocabulary_source:
range: string
description: >-
Source vocabulary or thesaurus (AAT, LCSH, custom).
vocabulary_id:
range: string
description: >-
Identifier in the source vocabulary (e.g., AAT term ID).
comments:
- "Created per slot_fixes.yaml revision for collection_focus migration"
- "SKOS-based category model for collection classification"
- "RULE 53: Part of collection_focus → has_or_had_category + Category migration"
annotations:
specificity_score: 0.45
specificity_rationale: "Broadly useful - applies to many collection contexts"
examples:
- value: |
category_name: "Dutch Golden Age paintings"
category_type: THEME
category_description: "Paintings from the Dutch Golden Age (17th century)"
broader_category: "European paintings"
vocabulary_source: "AAT"
- value: |
category_name: "Lepidoptera"
category_type: SUBJECT
category_description: "Butterflies and moths"
broader_category: "Insects"
vocabulary_source: "ITIS"
- value: |
category_name: "First edition literature"
category_type: FORMAT
category_description: "First printings of literary works"
broader_category: "Rare books"

View file

@ -30,7 +30,9 @@ imports:
- ../slots/catering_price_range
- ../slots/has_or_had_accessibility_feature
- ../slots/operator
- ../slots/founded_year
# MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent (Rule 53)
- ../slots/is_or_was_founded_through
- ./FoundingEvent
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ../slots/is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
@ -92,7 +94,7 @@ classes:
- catering_price_range
- catering_type
- cuisine_type
- founded_year
- is_or_was_founded_through # was: founded_year - migrated per Rule 53 (2026-01-22)
- has_michelin_star
- has_outdoor_seating
- heritage_type_classification
@ -238,11 +240,20 @@ classes:
description: Dutch catering company
- value: In-house
description: Museum-operated
founded_year:
range: integer
# MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
description: |
The founding event for this catering place.
Migrated from founded_year per slot_fixes.yaml revision.
range: FoundingEvent
inlined: true
examples:
- value: 1902
description: Historic café founding year
- value:
temporal_extent:
begin_of_the_begin: "1902-01-01"
end_of_the_begin: "1902-12-31"
founding_description: "Established as historic café"
description: Historic café founding event (1902)
is_or_was_derived_from: # was: was_derived_from - migrated per Rule 53
range: CustodianObservation
multivalued: true
@ -308,6 +319,11 @@ classes:
seating_capacity: 150
has_outdoor_seating: true
opening_hour: Daily 07:00-23:00
founded_year: 1902
# MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "1902-01-01"
end_of_the_begin: "1902-12-31"
founding_description: "Historic art deco café established in 1902"
catering_price_range: €€€
description: Historic heritage café

View file

@ -0,0 +1,110 @@
# CauseOfDeath class
# Structured representation of the cause and circumstances of death
#
# Migration: Created per slot_fixes.yaml revision for circumstances_of_death (line 9369)
#
# Generation date: 2026-01-19
# Rule compliance: 38 (slot centralization), 39 (RiC-O naming), 53 (slot_fixes.yaml)
id: https://nde.nl/ontology/hc/class/CauseOfDeath
name: cause_of_death_class
title: Cause Of Death Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_type
- ../slots/has_or_had_description
- ../slots/has_or_had_location
- ./Location
- ../enums/CauseOfDeathTypeEnum
classes:
CauseOfDeath:
class_uri: hc:CauseOfDeath
description: |
Structured representation of the cause and circumstances of a person's death.
**Purpose**:
Captures structured information about how and why a person died:
- **Type**: Category of death (natural, conflict, accident, etc.)
- **Location**: Where the death occurred
- **Description**: Narrative details and context
**Ontological Alignment**:
- **Primary** (`class_uri`): `hc:CauseOfDeath` - Heritage Custodian class
- **Related**: Wikidata P1196 (manner of death) - semantic equivalent
- **Related**: `schema:causeOfDeath` - Schema.org (MedicalCause context)
**Heritage Sector Context**:
Particularly important for documenting deaths of heritage workers due to:
- **CONFLICT**: Armed conflict, airstrikes, military operations
- **TARGETED_ATTACK**: Violence specifically targeting cultural workers
- **OCCUPATIONAL**: Hazards from heritage work (conservation chemicals, etc.)
- **NATURAL**: Age, illness, medical conditions
- **ACCIDENT**: Non-occupational accidents
- **PERSECUTION**: Targeting due to identity or beliefs
**Example - Conflict Death**:
```yaml
is_or_was_caused_by:
cause_type: CONFLICT
has_or_had_description: |
Killed in Israeli airstrike on residential building in Gaza City.
The attack occurred during the 2023-2024 Israeli military operations.
has_or_had_location:
city: Gaza City
country: PS
```
**Sensitivity Guidelines**:
- Handle with respect and dignity
- Verify facts from authoritative sources before documenting
- Consult with family or institution when possible
- Follow journalistic standards for reporting deaths
- Link to source documentation (news reports, institutional records)
exact_mappings:
- wd:P1196 # Wikidata: manner of death
slots:
- has_or_had_type
- has_or_had_description
- has_or_had_location
slot_usage:
has_or_had_type:
range: CauseOfDeathTypeEnum
description: |
The category/type of death cause. Uses CauseOfDeathTypeEnum values:
NATURAL, CONFLICT, TARGETED_ATTACK, OCCUPATIONAL, ACCIDENT, PERSECUTION, UNKNOWN.
has_or_had_description:
range: string
description: |
Detailed narrative description of the death circumstances.
Include source documentation and context.
Handle with respect and verify facts before documenting.
has_or_had_location:
range: Location
inlined: true
description: |
The location where the death occurred.
Important for conflict deaths to document the specific location.
comments:
- "Structured cause of death for heritage workers"
- "Wikidata P1196 (manner of death) is semantically equivalent"
- "Important for documenting conflict-related deaths"
- "Handle with respect and verify facts before documenting"
- "Include source documentation for verification"
see_also:
- https://www.wikidata.org/wiki/Property:P1196

View file

@ -0,0 +1,150 @@
# CertaintyLevel class
# Structured class for expressing certainty/confidence levels with notes
#
# Generation date: 2026-01-18
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization), 53 (slot_fixes.yaml)
# Migration: Replaces certainty_level + certainty_note bespoke slots
#
# Created per slot_fixes.yaml revisions:
# - certainty_level → has_or_had_level + CertaintyLevel
# - certainty_note → has_or_had_note + Note (within CertaintyLevel)
id: https://nde.nl/ontology/hc/class/CertaintyLevel
name: certainty_level_class
title: Certainty Level Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
rico: https://www.ica.org/standards/RiC/ontology#
skos: http://www.w3.org/2004/02/skos/core#
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/level_value
- ../slots/has_or_had_note
- ./Note
- ../slots/specificity_annotation
- ../slots/has_or_had_score
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
classes:
CertaintyLevel:
class_uri: rico:ConfidenceLevel
description: |
A structured representation of certainty/confidence level with explanatory notes.
**Purpose**:
CertaintyLevel encapsulates both the level of certainty (CERTAIN, PROBABLE,
POSSIBLE, UNCERTAIN) and any notes explaining the certainty assessment.
Used primarily in provenance research to document confidence in ownership
transfer claims.
**Ontological Alignment**:
- **Primary**: `rico:ConfidenceLevel` - RiC-O confidence level
- **Close**: `crm:P141_assigned` - CIDOC-CRM attribute assignment
**Standard Values for level_value**:
- CERTAIN: Documentary evidence confirms the claim
- PROBABLE: Strong circumstantial evidence supports the claim
- POSSIBLE: Reasonable inference from available context
- UNCERTAIN: Speculative or unverified claim
**Use Cases**:
- Provenance event certainty (ProvenanceEvent)
- Attribution confidence (artwork authorship)
- Dating confidence (temporal assertions)
- Identification confidence (person/place identification)
**Replaces** (per slot_fixes.yaml):
- `certainty_level` (string) → has_or_had_level with CertaintyLevel class
- `certainty_note` (string) → has_or_had_note with Note class (within CertaintyLevel)
exact_mappings:
- rico:ConfidenceLevel
close_mappings:
- crm:P141_assigned
- prov:qualifiedAssociation
slots:
- level_value
- has_or_had_note
- specificity_annotation
- has_or_had_score
slot_usage:
level_value:
description: |
The certainty/confidence level value.
Standard values: CERTAIN, PROBABLE, POSSIBLE, UNCERTAIN.
range: string
required: true
examples:
- value: CERTAIN
description: Documentary evidence confirms claim
- value: PROBABLE
description: Strong circumstantial evidence
- value: POSSIBLE
description: Reasonable inference
- value: UNCERTAIN
description: Speculative/unverified
has_or_had_note:
description: |
Notes explaining the certainty assessment.
Use Note class with note_type: "certainty" for certainty-specific notes.
range: Note
multivalued: true
inlined: true
required: false
examples:
- value:
note_type: certainty
note_content: "Confirmed by sale catalogue and receipt"
description: Documentary evidence note
- value:
note_type: certainty
note_content: "Inferred from stylistic analysis and collection history"
description: Circumstantial evidence note
- value:
note_type: certainty
note_content: "Provenance gap 1933-1945 requires further research"
description: Research gap note
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Certainty documentation applicable to all custodian types.
custodian_types_primary: null
specificity_score: 0.4
specificity_rationale: Moderately specific class for provenance and attribution certainty.
examples:
- value: |
level_value: CERTAIN
has_or_had_note:
- note_type: certainty
note_content: "Confirmed by sale catalogue and receipt"
note_date: "2025-06-15"
description: "Certain provenance event with documentary evidence"
- value: |
level_value: PROBABLE
has_or_had_note:
- note_type: certainty
note_content: "Van Ruijven was Vermeer's patron; likely acquired directly from artist"
description: "Probable ownership based on historical relationship"
- value: |
level_value: UNCERTAIN
has_or_had_note:
- note_type: certainty
note_content: "Provenance gap 1933-1945 requires further research"
- note_type: certainty
note_content: "Documentation incomplete; collector fled Vienna 1938"
description: "Uncertain Nazi-era provenance requiring research"

View file

@ -1,6 +1,7 @@
# ChAnnotatorAnnotationMetadata - Metadata about the annotation
# Extracted from custodian_source.yaml per Rule 38 (modular schema files)
# Extraction date: 2026-01-08
# MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore
id: https://nde.nl/ontology/hc/classes/ChAnnotatorAnnotationMetadata
name: ChAnnotatorAnnotationMetadata
@ -17,7 +18,10 @@ prefixes:
imports:
- linkml:types
- ../slots/confidence_score
# MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore
- ../slots/is_or_was_generated_by
- ./GenerationEvent
- ./ConfidenceScore
default_range: string
@ -42,7 +46,22 @@ classes:
- prov:Entity
- schema:Rating
slots:
- confidence_score
# MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by
- is_or_was_generated_by
slot_usage:
is_or_was_generated_by:
range: GenerationEvent
required: false
inlined: true
description: >-
Generation event containing confidence score for annotation.
MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern.
examples:
- value:
has_or_had_score:
has_or_had_score: 0.92
has_or_had_method: "annotation_validation"
description: High confidence annotation
attributes:
verified:
range: boolean
@ -53,3 +72,6 @@ classes:
verified_by:
range: string
description: Who verified the annotation
comments:
- "MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + ConfidenceScore"

View file

@ -1,6 +1,7 @@
# ChAnnotatorEntityClaim - Individual claim about an entity
# Extracted from custodian_source.yaml per Rule 38 (modular schema files)
# Extraction date: 2026-01-08
# MIGRATION 2026-01-19: claim_type → has_or_had_type + ClaimType (Rule 53/56)
id: https://nde.nl/ontology/hc/classes/ChAnnotatorEntityClaim
name: ChAnnotatorEntityClaim
@ -17,10 +18,12 @@ prefixes:
imports:
- linkml:types
- ./ChAnnotatorProvenance
- ./ExtractionSourceInfo
# ADDED 2026-01-19: claim_type migration (Rule 53/56)
- ../slots/has_or_had_type
- ./ClaimType
- ./ClaimTypes
default_range: string
classes:
@ -43,11 +46,19 @@ classes:
related_mappings:
- prov:Entity
- schema:PropertyValue
attributes:
claim_type:
range: string
slots:
- has_or_had_type
slot_usage:
has_or_had_type:
range: ClaimType
inlined: true
required: true
description: Type of claim (full_name, institution_type, etc.)
description: |
MIGRATED from claim_type per slot_fixes.yaml (Rule 53/56, 2026-01-19).
Type of claim (full_name, institution_type, etc.).
Uses ClaimType class hierarchy with 507 concrete subtypes.
attributes:
# REMOVED 2026-01-19: claim_type - migrated to has_or_had_type slot (Rule 53/56)
claim_value:
range: string
required: true

View file

@ -0,0 +1,122 @@
# City - A city/town settlement entity
# Created: 2026-01-18
# Migration from city (string) slot per slot_fixes.yaml revision
# City is_a Settlement per established pattern
id: https://nde.nl/ontology/hc/class/City
name: city_class
title: City Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
gn: http://www.geonames.org/ontology#
wikidata: http://www.wikidata.org/entity/
crm: http://www.cidoc-crm.org/cidoc-crm/
imports:
- linkml:types
- ./Settlement
default_prefix: hc
classes:
City:
is_a: Settlement
class_uri: schema:City
description: |
A city or large town settlement.
**RELATIONSHIP TO SETTLEMENT**:
City is a subclass of Settlement representing urban areas that are
typically larger and more administratively significant than villages
or small towns.
**GeoNames Feature Codes**:
Cities typically correspond to GeoNames feature codes:
- PPL: Populated place (general)
- PPLA: Seat of first-order administrative division
- PPLA2: Seat of second-order administrative division
- PPLC: Capital of a political entity
- PPLS: Populated places (urban agglomerations)
**USAGE**:
Use City class when:
- The settlement is known to be a city (not village/hamlet)
- You need to express city-specific semantics
- Schema.org City alignment is important
Use Settlement class when:
- The settlement type is unknown or mixed
- You want the most general geographic entity
**EXAMPLES**:
```yaml
is_or_was_located_in:
- settlement_name: "Amsterdam"
geonames_id: 2759794
country: "NL"
```
exact_mappings:
- schema:City
close_mappings:
- gn:P.PPLA
- gn:P.PPLC
- wikidata:Q515
related_mappings:
- crm:E53_Place
# Inherits all slots from Settlement:
# - settlement_name
# - geonames_id
# - latitude
# - longitude
# - country
# - has_or_had_geographic_subdivision (subregion)
# - specificity_annotation
# - has_or_had_score
annotations:
specificity_score: 0.35
specificity_rationale: |
Slightly more specific than Settlement (0.30) as it indicates
urban status, but still broadly applicable across heritage contexts.
custodian_types: '["*"]'
custodian_types_rationale: |
All heritage custodians are located in cities or settlements.
custodian_types_primary: "*"
examples:
- value:
settlement_name: "Amsterdam"
geonames_id: 2759794
country: "NL"
has_or_had_geographic_subdivision:
subregion_code: "NL-NH"
description: Amsterdam - capital and largest city of the Netherlands
- value:
settlement_name: "Haarlem"
geonames_id: 2755420
country: "NL"
latitude: 52.3873
longitude: 4.6462
description: Haarlem - city in Noord-Holland province
- value:
settlement_name: "Tokyo"
geonames_id: 1850147
country: "JP"
description: Tokyo - capital of Japan
comments:
- City is_a Settlement following semantic hierarchy
- Inherits all Settlement slots including GeoNames ID
- Use for explicit urban classification
- Created per slot_fixes.yaml migration for city slot (2026-01-18)

View file

@ -0,0 +1,51 @@
id: https://nde.nl/ontology/hc/class/Claim
name: Claim
title: Claim Class - Base Class for Assertions
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
arg: http://www.w3.org/ns/argument#
imports:
- linkml:types
default_prefix: hc
classes:
Claim:
class_uri: prov:Entity
description: |
Base class for assertions or claims made about heritage entities.
A claim represents a statement that warrants (supports or justifies)
other statements or conclusions. Claims can come from various sources:
- Web pages (WebClaim subclass)
- Wikidata (WikidataClaim)
- Research sources
- Human annotations
**Argumentation Semantics**:
The term "warrants" comes from argumentation theory (Toulmin model):
- Claims provide evidence that WARRANTS (justifies) conclusions
- A claim can be warranted BY other supporting claims
This bidirectional relationship is captured by the `warrants_or_warranted` slot.
**Subclasses**:
- WebClaim: Claims extracted from web pages with XPath provenance
- WikidataClaim: Claims from Wikidata with property/value structure
- PersonWebClaim: Claims about persons from web sources
- CustodianLegalNameClaim: Claims about custodian legal names
**MIGRATION NOTE (2026-01-19)**:
Created as base class for claim type hierarchy per slot_fixes.yaml (Rule 53/56).
Replaces generic `claim` slot with `warrants_or_warranted` slot.
exact_mappings:
- prov:Entity
close_mappings:
- schema:Claim
- schema:PropertyValue
slots: [] # Base class - slots defined in subclasses
comments:
- Base class for claim type hierarchy
- Subclasses add specific provenance mechanisms
- 'CREATED 2026-01-19: Per slot_fixes.yaml revision (Rule 53/56)'

View file

@ -0,0 +1,80 @@
id: https://nde.nl/ontology/hc/class/ClaimType
name: ClaimType
title: ClaimType Class - Base class for web claim types
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_description
default_prefix: hc
classes:
ClaimType:
class_uri: skos:Concept
description: |
Abstract base class for types of claims that can be extracted from web pages.
Each claim type has expected source locations in HTML:
- full_name: <title>, <h1>, logo text, meta og:title
- description: <meta name='description'>, about section
- email: <a href='mailto:...'>, contact page, footer
- phone: <a href='tel:...'>, contact page
- address: footer, contact page, JSON-LD structured data
**Type Hierarchy**:
- ClaimType (abstract base)
- IdentityClaim (names, descriptions)
- ContactClaim (email, phone, address)
- SocialMediaClaim (facebook, twitter, linkedin, etc.)
- MediaClaim (logo, favicon, images)
- OperationalClaim (hours, admission, accessibility)
- CollectionClaim (counts, statistics)
- OrganizationalClaim (founding, legal form, parent org)
- DocumentClaim (annual reports, policies)
- GeographicClaim (address components)
- ArchivalClaim (archive-specific claims)
**MIGRATION NOTE (2026-01-19)**:
Promoted from ClaimTypeEnum per slot_fixes.yaml (Rule 0b, 53, 56).
Enum archived to: modules/enums/archive/ClaimTypeEnum_archived_20260119.yaml
exact_mappings:
- skos:Concept
- dcterms:type
close_mappings:
- schema:PropertyValueSpecification
slots:
- has_or_had_label
- has_or_had_description
slot_usage:
has_or_had_label:
description: The claim type identifier (e.g., "full_name", "email", "facebook")
required: true
has_or_had_description:
description: Description of what this claim type represents and where to find it
annotations:
specificity_score: "0.65"
specificity_rationale: >-
Claim types are moderately specific - useful for web extraction
workflows but not universally applicable to all heritage queries.
template_specificity: '{"archive_search": 0.40, "museum_search": 0.40, "library_search": 0.40, "collection_discovery": 0.50, "person_research": 0.30, "location_browse": 0.35, "identifier_lookup": 0.45, "organizational_change": 0.25, "digital_platform": 0.85, "general_heritage": 0.50}'
comments:
- "Abstract base class - concrete types are in ClaimTypes.yaml"
- "Follows Type/Types naming pattern per Rule 0b"
- "Migrated from ClaimTypeEnum per Rule 53 (no bespoke slots)"
see_also:
- ClaimTypes.yaml
- WebClaim.yaml
examples:
- value:
has_or_had_label: full_name
has_or_had_description: "Official full name of the organization. Expected in: <title>, <h1>, logo text, og:title"
description: Identity claim for organization name
- value:
has_or_had_label: email
has_or_had_description: "Contact email address. Expected in: <a href='mailto:...'>, contact page, footer"
description: Contact claim for email

View file

@ -0,0 +1,506 @@
id: https://nde.nl/ontology/hc/class/ClaimTypes
name: ClaimTypes
title: ClaimTypes - Concrete claim type subclasses
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
- ./ClaimType
default_prefix: hc
# =============================================================================
# ClaimTypes.yaml - Concrete subclasses of ClaimType
# =============================================================================
#
# MIGRATION NOTE (2026-01-19):
# Converted from ClaimTypeEnum per slot_fixes.yaml revision (Rules 0b, 53, 56).
# Original enum archived to: modules/enums/archive/ClaimTypeEnum_archived_20260119.yaml
#
# PATTERN: Type/Types (Rule 0b)
# - ClaimType.yaml: Abstract base class (skos:Concept)
# - ClaimTypes.yaml: Concrete subclasses organized by category
#
# CATEGORIES:
# 1. IdentityClaimType - names, descriptions
# 2. ContactClaimType - email, phone, address
# 3. SocialMediaClaimType - platform links
# 4. MediaClaimType - logos, images
# 5. OperationalClaimType - hours, admission
# 6. CollectionClaimType - counts, statistics
# 7. OrganizationalClaimType - founding, legal form
# 8. DocumentClaimType - reports, policies
# 9. GeographicClaimType - address components
# 10. ArchivalClaimType - archive-specific
# =============================================================================
classes:
# ===========================================================================
# CATEGORY 1: Identity Claims
# ===========================================================================
IdentityClaimType:
is_a: ClaimType
class_uri: hc:IdentityClaimType
description: |
Claim types for organization identity information.
Includes names, descriptions, and identity verification claims.
comments:
- "Expected locations: <title>, <h1>, logo, meta tags, about sections"
FullNameClaim:
is_a: IdentityClaimType
class_uri: hc:FullNameClaim
description: |
Official full name of the organization.
Expected in: <title>, <h1>, logo text, meta og:title
ShortNameClaim:
is_a: IdentityClaimType
class_uri: hc:ShortNameClaim
description: |
Abbreviated or short name of the organization.
Expected in: <h1>, logo, header
DescriptionClaim:
is_a: IdentityClaimType
class_uri: hc:DescriptionClaim
description: |
Description or about text for the organization.
Expected in: <meta name='description'>, about section
LegalNameClaim:
is_a: IdentityClaimType
class_uri: hc:LegalNameClaim
description: |
Full legal/registered name of the organization.
May differ from display name.
CustodianNameClaim:
is_a: IdentityClaimType
class_uri: hc:CustodianNameClaim
description: |
Official custodian name.
May differ from display name in heritage context.
NameVerifiedClaim:
is_a: IdentityClaimType
class_uri: hc:NameVerifiedClaim
description: |
Flag indicating name has been verified against authoritative source.
# ===========================================================================
# CATEGORY 2: Contact Claims
# ===========================================================================
ContactClaimType:
is_a: ClaimType
class_uri: hc:ContactClaimType
description: |
Claim types for contact information.
Includes email, phone, and general contact methods.
comments:
- "Expected locations: contact page, footer, structured data"
EmailClaim:
is_a: ContactClaimType
class_uri: hc:EmailClaim
description: |
Contact email address.
Expected in: <a href='mailto:...'>, contact page, footer
PhoneClaim:
is_a: ContactClaimType
class_uri: hc:PhoneClaim
description: |
Contact phone number.
Expected in: <a href='tel:...'>, contact page, footer
AddressClaim:
is_a: ContactClaimType
class_uri: hc:AddressClaim
description: |
Physical address (complete).
Expected in: contact page, footer, structured data
WebsiteClaim:
is_a: ContactClaimType
class_uri: hc:WebsiteClaim
description: |
Website URL (may differ from source_url).
Expected in: contact page, links
# ===========================================================================
# CATEGORY 3: Social Media Claims
# ===========================================================================
SocialMediaClaimType:
is_a: ClaimType
class_uri: hc:SocialMediaClaimType
description: |
Claim types for social media presence.
Includes platform-specific and general social links.
comments:
- "Expected locations: footer, header, contact page"
SocialMediaClaim:
is_a: SocialMediaClaimType
class_uri: hc:SocialMediaClaim
description: |
General social media profile links.
Used when platform is not specified or for aggregate.
FacebookClaim:
is_a: SocialMediaClaimType
class_uri: hc:FacebookClaim
description: Facebook page URL.
TwitterClaim:
is_a: SocialMediaClaimType
class_uri: hc:TwitterClaim
description: Twitter/X profile URL.
InstagramClaim:
is_a: SocialMediaClaimType
class_uri: hc:InstagramClaim
description: Instagram profile URL.
LinkedInClaim:
is_a: SocialMediaClaimType
class_uri: hc:LinkedInClaim
description: LinkedIn page URL.
YouTubeClaim:
is_a: SocialMediaClaimType
class_uri: hc:YouTubeClaim
description: YouTube channel URL.
# ===========================================================================
# CATEGORY 4: Media Claims
# ===========================================================================
MediaClaimType:
is_a: ClaimType
class_uri: hc:MediaClaimType
description: |
Claim types for media assets.
Includes logos, favicons, and social sharing images.
comments:
- "Expected locations: header, <link> tags, meta og: tags"
LogoUrlClaim:
is_a: MediaClaimType
class_uri: hc:LogoUrlClaim
description: |
Organization logo image URL.
Expected in: <img> in header/nav, og:image meta tag.
Look for: logo, brand, emblem, icon in class/id/alt attributes.
Priority: SVG > PNG > JPG for quality.
FaviconUrlClaim:
is_a: MediaClaimType
class_uri: hc:FaviconUrlClaim
description: |
Website favicon URL.
Expected in: <link rel='icon'>, <link rel='shortcut icon'>.
Usually: /favicon.ico, /favicon.png
OgImageUrlClaim:
is_a: MediaClaimType
class_uri: hc:OgImageUrlClaim
description: |
Open Graph image URL (social sharing image).
Expected in: <meta property='og:image'>.
Often the logo or a representative image.
# ===========================================================================
# CATEGORY 5: Operational Claims
# ===========================================================================
OperationalClaimType:
is_a: ClaimType
class_uri: hc:OperationalClaimType
description: |
Claim types for operational information.
Includes hours, admission, and accessibility.
comments:
- "Expected locations: visit page, contact page, structured data"
OpeningHoursClaim:
is_a: OperationalClaimType
class_uri: hc:OpeningHoursClaim
description: |
Opening hours / visiting times.
Expected in: visit page, contact page, structured data
AdmissionInfoClaim:
is_a: OperationalClaimType
class_uri: hc:AdmissionInfoClaim
description: Admission prices or policies.
AccessibilityInfoClaim:
is_a: OperationalClaimType
class_uri: hc:AccessibilityInfoClaim
description: Accessibility information for visitors.
# ===========================================================================
# CATEGORY 6: Collection Claims
# ===========================================================================
CollectionClaimType:
is_a: ClaimType
class_uri: hc:CollectionClaimType
description: |
Claim types for collection statistics and information.
Includes counts and descriptions of holdings.
comments:
- "Expected locations: collection pages, about sections"
CollectionCountClaim:
is_a: CollectionClaimType
class_uri: hc:CollectionCountClaim
description: Number of items in collection.
BeeldbankTotalPhotosClaim:
is_a: CollectionClaimType
class_uri: hc:BeeldbankTotalPhotosClaim
description: Total photos in image bank (beeldbank).
BeeldbankDescribedPhotosClaim:
is_a: CollectionClaimType
class_uri: hc:BeeldbankDescribedPhotosClaim
description: Number of described photos in image bank.
OldestMapClaim:
is_a: CollectionClaimType
class_uri: hc:OldestMapClaim
description: Reference to oldest map in collection.
# ===========================================================================
# CATEGORY 7: Organizational Claims
# ===========================================================================
OrganizationalClaimType:
is_a: ClaimType
class_uri: hc:OrganizationalClaimType
description: |
Claim types for organizational structure and legal information.
Includes founding, identifiers, and legal form.
comments:
- "Expected locations: about page, footer, structured data"
FoundingDateClaim:
is_a: OrganizationalClaimType
class_uri: hc:FoundingDateClaim
description: When organization was founded.
FoundedClaim:
is_a: OrganizationalClaimType
class_uri: hc:FoundedClaim
description: |
Founding year or date.
Alternative format to founding_date.
KvkNumberClaim:
is_a: OrganizationalClaimType
class_uri: hc:KvkNumberClaim
description: Dutch Chamber of Commerce number.
IsilCodeClaim:
is_a: OrganizationalClaimType
class_uri: hc:IsilCodeClaim
description: ISIL identifier.
WikidataIdClaim:
is_a: OrganizationalClaimType
class_uri: hc:WikidataIdClaim
description: Wikidata Q-number.
ParentOrganizationClaim:
is_a: OrganizationalClaimType
class_uri: hc:ParentOrganizationClaim
description: Parent organization reference.
LegalFormClaim:
is_a: OrganizationalClaimType
class_uri: hc:LegalFormClaim
description: |
Legal form/structure of the organization.
Dutch: stichting, vereniging, vof, bv, nv.
English: foundation, association, LLC, corporation.
GeographicScopeClaim:
is_a: OrganizationalClaimType
class_uri: hc:GeographicScopeClaim
description: |
Geographic area served by the organization.
Examples: local, regional, national, international.
Specific areas: gemeente, provincie, regio.
CommitteeClaim:
is_a: OrganizationalClaimType
class_uri: hc:CommitteeClaim
description: Committee or board member information.
# ===========================================================================
# CATEGORY 8: Document Claims
# ===========================================================================
DocumentClaimType:
is_a: ClaimType
class_uri: hc:DocumentClaimType
description: |
Claim types for organizational documents.
Includes reports, policies, and financial statements.
comments:
- "Expected locations: /over-ons/, /organisatie/, /documenten/"
AnnualReportUrlClaim:
is_a: DocumentClaimType
class_uri: hc:AnnualReportUrlClaim
description: |
Link to annual report PDF (jaarverslag).
Expected in: /over-ons/jaarverslagen/, /organisatie/jaarverslagen/.
Dutch: jaarverslag, publieksjaarverslag.
English: annual report.
FinancialStatementUrlClaim:
is_a: DocumentClaimType
class_uri: hc:FinancialStatementUrlClaim
description: |
Link to annual financial statement document (jaarstukken, jaarrekening).
Expected in: /organisatie/jaarverslagen/, /over-ons/documenten/.
Dutch: jaarstukken, jaarrekening.
English: financial statements, annual accounts.
AnbiPublicationUrlClaim:
is_a: DocumentClaimType
class_uri: hc:AnbiPublicationUrlClaim
description: |
ANBI publication link (Dutch charity tax status requirement).
ANBI = Algemeen Nut Beogende Instelling (public benefit institution).
Required for Dutch non-profits to maintain tax-exempt status.
Expected in: footer, /anbi/, /over-ons/.
PolicyDocumentUrlClaim:
is_a: DocumentClaimType
class_uri: hc:PolicyDocumentUrlClaim
description: |
Multi-year policy document link (meerjarenbeleid, beleidsplan).
Dutch: meerjarenbeleid, beleidsplan, strategisch plan.
English: multi-year policy, strategic plan.
FinancialDocumentYearClaim:
is_a: DocumentClaimType
class_uri: hc:FinancialDocumentYearClaim
description: |
Fiscal year for a financial document (extracted from filename/context).
Extracted from PDF filename or link text.
Format: YYYY (e.g., 2024).
PublicationsUrlClaim:
is_a: DocumentClaimType
class_uri: hc:PublicationsUrlClaim
description: URL to publications page.
JournalNameClaim:
is_a: DocumentClaimType
class_uri: hc:JournalNameClaim
description: Name of journal or periodical published.
DonationUrlClaim:
is_a: DocumentClaimType
class_uri: hc:DonationUrlClaim
description: URL for donation/support page.
# ===========================================================================
# CATEGORY 9: Geographic Claims
# ===========================================================================
GeographicClaimType:
is_a: ClaimType
class_uri: hc:GeographicClaimType
description: |
Claim types for geographic/address components.
More granular than AddressClaim.
comments:
- "Expected locations: contact page, footer, structured data"
StreetAddressClaim:
is_a: GeographicClaimType
class_uri: hc:StreetAddressClaim
description: Street address (straatnaam + huisnummer).
PostalCodeClaim:
is_a: GeographicClaimType
class_uri: hc:PostalCodeClaim
description: |
Postal/ZIP code.
Dutch: postcode (e.g., 1234 AB).
CityClaim:
is_a: GeographicClaimType
class_uri: hc:CityClaim
description: City or municipality name.
MunicipalityClaim:
is_a: GeographicClaimType
class_uri: hc:MunicipalityClaim
description: Municipality/gemeente name.
ProvinceClaim:
is_a: GeographicClaimType
class_uri: hc:ProvinceClaim
description: Province or state.
# ===========================================================================
# CATEGORY 10: Archival Claims
# ===========================================================================
ArchivalClaimType:
is_a: ClaimType
class_uri: hc:ArchivalClaimType
description: |
Claim types specific to archival holdings.
Includes archive and image bank (beeldbank) claims.
comments:
- "Dutch-specific archival terminology"
ArchiefDescriptionClaim:
is_a: ArchivalClaimType
class_uri: hc:ArchiefDescriptionClaim
description: Description of archive/archief holdings.
ArchiefUrlClaim:
is_a: ArchivalClaimType
class_uri: hc:ArchiefUrlClaim
description: URL to archive/archief section.
BeeldbankDescriptionClaim:
is_a: ArchivalClaimType
class_uri: hc:BeeldbankDescriptionClaim
description: Description of image bank/beeldbank.
BeeldbankUrlClaim:
is_a: ArchivalClaimType
class_uri: hc:BeeldbankUrlClaim
description: URL to image bank/beeldbank section.
# ===========================================================================
# CATEGORY 11: Event Claims
# ===========================================================================
EventClaimType:
is_a: ClaimType
class_uri: hc:EventClaimType
description: |
Claim types for event information.
Includes upcoming events and activities.
UpcomingEventClaim:
is_a: EventClaimType
class_uri: hc:UpcomingEventClaim
description: Information about upcoming event.

View file

@ -0,0 +1,130 @@
id: https://nde.nl/ontology/hc/class/ClassificationStatus
name: ClassificationStatus
title: Classification Status Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
- ../slots/has_or_had_type
- ../slots/has_or_had_description
- ../slots/temporal_extent
- ./ClassificationStatusType
- ./ClassificationStatusTypes
- ./TimeSpan
default_prefix: hc
classes:
ClassificationStatus:
class_uri: prov:Activity
description: >-
Structured status of a custodian type classification attempt.
Describes why classification is unspecified, including:
- The type of classification issue (indeterminate, ambiguous, etc.)
- Description of the specific situation
- Temporal context of when status was assessed
**CLASSIFICATION STATUS TYPES**:
| Type | Description |
|------|-------------|
| IndeterminateStatus | Cannot determine from available evidence |
| AmbiguousStatus | Conflicting evidence about institutional function |
| TransitionalStatus | Institution changing type, outcome unclear |
| NovelStatus | Doesn't fit existing taxonomy categories |
| UnderReviewStatus | Classification being researched |
| PendingVerificationStatus | Type suspected but needs confirmation |
**EXAMPLE**:
```yaml
ClassificationStatus:
has_or_had_type:
type: AmbiguousStatus
has_or_had_label: "Ambiguous"
has_or_had_description: "Sources conflict: museum (website) vs archive (ISIL registry)"
temporal_extent:
begin_of_the_begin: "2026-01-19T00:00:00Z"
```
**MIGRATION NOTE (2026-01-19)**:
Created per slot_fixes.yaml revision for classification_status migration.
Replaces simple string with structured class.
exact_mappings:
- prov:Activity
close_mappings:
- schema:StatusEnumeration
slots:
- has_or_had_type
- has_or_had_description
- temporal_extent
slot_usage:
has_or_had_type:
range: ClassificationStatusType
required: true
inlined: true
description: >-
The type of classification status.
One of: IndeterminateStatus, AmbiguousStatus, TransitionalStatus,
NovelStatus, UnderReviewStatus, PendingVerificationStatus.
examples:
- value:
type: IndeterminateStatus
has_or_had_label: "Indeterminate"
description: Cannot determine from available evidence
- value:
type: AmbiguousStatus
has_or_had_label: "Ambiguous"
description: Conflicting evidence about function
has_or_had_description:
range: string
required: true
description: >-
Human-readable description of the classification status.
Explains the specific reason for the status.
examples:
- value: "Type indeterminate - insufficient evidence"
description: Defunct organization, minimal records
- value: "Sources conflict: museum (website) vs archive (ISIL registry)"
description: Ambiguous status with conflicting sources
temporal_extent:
range: TimeSpan
required: false
inlined: true
description: >-
When this classification status was assessed.
annotations:
custodian_types: '["U"]'
custodian_types_rationale: >-
Classification status applies to Unspecified (U) custodian type.
custodian_types_primary: "U"
specificity_score: 0.85
specificity_rationale: >-
Highly specific - only applies to unclassified heritage custodians.
examples:
- value: |
ClassificationStatus:
has_or_had_type:
type: IndeterminateStatus
has_or_had_label: "Indeterminate"
has_or_had_description: "Type indeterminate - insufficient evidence. Defunct organization, minimal records."
description: Indeterminate status for defunct organization
- value: |
ClassificationStatus:
has_or_had_type:
type: AmbiguousStatus
has_or_had_label: "Ambiguous"
has_or_had_description: "Sources conflict: museum (website) vs archive (ISIL registry)"
temporal_extent:
begin_of_the_begin: "2026-01-19T00:00:00Z"
description: Ambiguous status with temporal context
- value: |
ClassificationStatus:
has_or_had_type:
type: TransitionalStatus
has_or_had_label: "Transitional"
has_or_had_description: "Merger in progress between museum and archive, final type TBD"
description: Transitional status during organizational change

View file

@ -0,0 +1,56 @@
id: https://nde.nl/ontology/hc/class/ClassificationStatusType
name: ClassificationStatusType
title: Classification Status Type - Abstract Base Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
crm: http://www.cidoc-crm.org/cidoc-crm/
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_description
default_prefix: hc
classes:
ClassificationStatusType:
abstract: true
class_uri: skos:Concept
description: >-
Abstract base class for classification status types.
**TYPE/TYPES PATTERN (Rule 0b)**:
- This file (ClassificationStatusType.yaml) defines the ABSTRACT base class
- ClassificationStatusTypes.yaml defines CONCRETE subclasses
Classification status types describe why a custodian type could not be
determined or is uncertain:
| Type | Description |
|------|-------------|
| INDETERMINATE | Cannot determine from available evidence |
| AMBIGUOUS | Conflicting evidence about institutional function |
| TRANSITIONAL | Institution changing type, outcome unclear |
| NOVEL | Doesn't fit existing taxonomy categories |
| UNDER_REVIEW | Classification being researched |
| PENDING_VERIFICATION | Type suspected but needs confirmation |
**ONTOLOGY MAPPING**:
Uses SKOS concept taxonomy for type classification.
**MIGRATION NOTE (2026-01-19)**:
Created per slot_fixes.yaml revision for classification_status migration.
exact_mappings:
- skos:Concept
close_mappings:
- crm:E55_Type
slots:
- has_or_had_label
- has_or_had_description
annotations:
custodian_types: '["U"]'
custodian_types_rationale: >-
Classification status types are specific to Unspecified (U) custodian type.
custodian_types_primary: "U"
specificity_score: 0.85
specificity_rationale: >-
Highly specific - only applies to unclassified heritage custodians.

View file

@ -0,0 +1,71 @@
id: https://nde.nl/ontology/hc/class/ClassificationStatusTypes
name: ClassificationStatusTypes
title: Classification Status Types - Concrete Subclasses
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
- ./ClassificationStatusType
default_prefix: hc
classes:
IndeterminateStatus:
is_a: ClassificationStatusType
class_uri: hc:IndeterminateStatus
description: >-
Classification cannot be determined from available evidence.
Used when research has been attempted but evidence is insufficient.
annotations:
skos:prefLabel: Indeterminate
skos:definition: Type cannot be determined from available evidence
AmbiguousStatus:
is_a: ClassificationStatusType
class_uri: hc:AmbiguousStatus
description: >-
Conflicting evidence about institutional function.
Multiple sources describe the institution differently (e.g., museum vs archive).
annotations:
skos:prefLabel: Ambiguous
skos:definition: Conflicting evidence about institutional function
TransitionalStatus:
is_a: ClassificationStatusType
class_uri: hc:TransitionalStatus
description: >-
Institution is changing type, outcome not yet clear.
Used during mergers, reorganizations, or transformations.
annotations:
skos:prefLabel: Transitional
skos:definition: Institution changing type, outcome unclear
NovelStatus:
is_a: ClassificationStatusType
class_uri: hc:NovelStatus
description: >-
Institution doesn't fit existing taxonomy categories.
May represent new forms of heritage custodianship not yet modeled.
annotations:
skos:prefLabel: Novel
skos:definition: Does not fit existing taxonomy categories
UnderReviewStatus:
is_a: ClassificationStatusType
class_uri: hc:UnderReviewStatus
description: >-
Classification is actively being researched.
Expert review or additional research in progress.
annotations:
skos:prefLabel: Under Review
skos:definition: Classification being researched
PendingVerificationStatus:
is_a: ClassificationStatusType
class_uri: hc:PendingVerificationStatus
description: >-
Type is suspected but needs confirmation.
Initial assessment made but awaiting verification.
annotations:
skos:prefLabel: Pending Verification
skos:definition: Type suspected but needs confirmation

View file

@ -0,0 +1,129 @@
# Classroom - Classroom facility class
#
# Created per slot_fixes.yaml migration for: classroom_count
# Creation date: 2026-01-19
#
# Rule 53 (No Bespoke Slots): classroom_count → has_or_had_facility + Classroom
# Rule 39 (RiC-O Naming): Uses has_or_had_* pattern
id: https://nde.nl/ontology/hc/class/Classroom
name: Classroom
title: Classroom Facility
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
default_prefix: hc
imports:
- linkml:types
- ./Facility
- ./Quantity
- ./RoomUnit
- ../slots/has_or_had_quantity
- ../slots/has_or_had_unit
classes:
Classroom:
is_a: Facility
class_uri: schema:Classroom
description: |
A classroom facility at an education center or heritage institution.
**RULE 53 MIGRATION**:
Replaces the simple `classroom_count` integer slot with a richer facility model:
- `has_or_had_quantity` → number of classroom spaces
- `has_or_had_unit` → RoomUnit (specifies what is being counted)
**USAGE**:
```yaml
has_or_had_facility:
- facility_name: "Classroom Wing"
has_or_had_quantity:
numeric_value: 4
has_or_had_unit:
unit_type: CLASSROOM
```
**CHARACTERISTICS**:
- Dedicated teaching/learning space
- Capacity for group instruction
- May include AV equipment
- Configurable seating arrangements
slots:
- has_or_had_quantity
- has_or_had_unit
slot_usage:
has_or_had_quantity:
range: Quantity
inlined: true
description: |
Number of classroom spaces in this facility.
examples:
- value: |
numeric_value: 4
description: 4 classroom spaces
has_or_had_unit:
range: RoomUnit
inlined: true
description: |
Unit specification for the count (classroom, seat, etc.).
examples:
- value: |
unit_type: CLASSROOM
description: Counting classrooms
attributes:
seating_capacity:
range: integer
description: Total seating capacity across all classrooms
av_equipped:
range: boolean
description: Whether classrooms have AV equipment
flexible_seating:
range: boolean
description: Whether seating can be reconfigured
exact_mappings:
- schema:Classroom
close_mappings:
- schema:Room
- schema:Place
annotations:
specificity_score: "0.55"
specificity_rationale: "Moderately specific - classrooms common in education centers."
template_specificity: '{"archive_search": 0.30, "museum_search": 0.50, "library_search": 0.45, "collection_discovery": 0.20, "person_research": 0.15, "location_browse": 0.60, "identifier_lookup": 0.10, "organizational_change": 0.25, "digital_platform": 0.15, "general_heritage": 0.55}'
examples:
- value:
facility_name: "Education Wing Classrooms"
facility_description: "Four fully-equipped classroom spaces for educational programs"
has_or_had_quantity:
numeric_value: 4
has_or_had_unit:
unit_type: CLASSROOM
seating_capacity: 120
av_equipped: true
flexible_seating: true
description: Museum education center classroom facility
- value:
facility_name: "Archive Learning Rooms"
facility_description: "Two seminar rooms for genealogy and research workshops"
has_or_had_quantity:
numeric_value: 2
has_or_had_unit:
unit_type: CLASSROOM
seating_capacity: 40
av_equipped: true
description: Archive education classroom facility

View file

@ -0,0 +1,161 @@
# ClimateControl class
# Climate control system or approach for heritage facilities
#
# Generation date: 2026-01-19
# Rule compliance: 53 (slot_fixes.yaml), 39 (RiC-O naming), 0b (Type/Types pattern)
#
# Created for climate_control_type migration
id: https://nde.nl/ontology/hc/class/climate_control
name: climate_control_class
title: Climate Control 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/
aat: http://vocab.getty.edu/aat/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/has_or_had_type
- ./ClimateControlType
classes:
ClimateControl:
class_uri: aat:300264752
description: |
Climate control system or approach for managing environmental conditions.
**DEFINITION**:
A ClimateControl represents the physical system, equipment, or approach
used to manage temperature, humidity, air quality, and other environmental
factors in heritage facilities.
**GETTY AAT ALIGNMENT**:
`aat:300264752` (climate control systems) - "Systems for controlling
environmental conditions such as temperature and humidity."
**USE CASES**:
1. **Full HVAC System**:
```yaml
ClimateControl:
has_or_had_label: "Main Gallery HVAC"
has_or_had_type: HVAC
has_or_had_description:
description_text: "Central HVAC with 24/7 monitoring, backup power"
```
2. **Basic Heating**:
```yaml
ClimateControl:
has_or_had_label: "Warehouse Heating"
has_or_had_type: HEATED
```
3. **Dehumidification Only**:
```yaml
ClimateControl:
has_or_had_label: "Photo Archive Dehumidifier"
has_or_had_type: DEHUMIDIFIED
```
**RELATIONSHIP TO ClimateControlType**:
```
ClimateControl
└── has_or_had_type ──► ClimateControlType
└── (HEATED, HVAC, DEHUMIDIFIED, NONE, etc.)
```
exact_mappings:
- aat:300264752
close_mappings:
- schema:Product
related_mappings:
- crm:E22_Human-Made_Object
slots:
- has_or_had_label
- has_or_had_description
- has_or_had_type
slot_usage:
has_or_had_label:
description: |
Name or identifier for this climate control system.
range: string
required: false
examples:
- value: "Main Stack HVAC System"
description: Named HVAC system
- value: "Depot B Climate Control"
description: Named by location
has_or_had_description:
description: |
Description of the climate control system capabilities.
examples:
- value:
description_text: "Precision HVAC with temperature control ±1°C, humidity control ±3% RH. Redundant systems with automatic failover."
description_type: technical
description: Detailed technical description
has_or_had_type:
range: ClimateControlType
required: true
description: |
Type of climate control (HEATED, HVAC, DEHUMIDIFIED, NONE, etc.).
examples:
- value: HVAC
description: Full heating/cooling system
- value: HEATED
description: Heating only
- value: DEHUMIDIFIED
description: Humidity control only
- value: NONE
description: No climate control
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Climate control applies to all heritage custodian types with physical facilities.
custodian_types_primary: A
specificity_score: 0.55
specificity_rationale: Moderately specific - common across facility management contexts.
replaces_slots: "climate_control_type (partial - represents the system, type is separate)"
comments:
- "Represents climate control systems/equipment"
- "Maps to Getty AAT 300264752"
- "Type classification via has_or_had_type → ClimateControlType"
examples:
- value:
has_or_had_label: "Rijksmuseum Collection Storage HVAC"
has_or_had_type: HVAC
has_or_had_description:
description_text: "Precision climate control with T=20±1°C, RH=50±3%. Redundant compressors, backup power, 24/7 monitoring."
description_type: technical
description: Museum collection storage climate system
- value:
has_or_had_label: "Logistics Warehouse Heating"
has_or_had_type: HEATED
has_or_had_description:
description_text: "Basic gas heating to prevent freezing. No humidity control."
description_type: technical
description: Basic warehouse heating
- value:
has_or_had_label: "Photo Archive Dehumidifier"
has_or_had_type: DEHUMIDIFIED
has_or_had_description:
description_text: "Portable dehumidifier maintaining RH below 50%."
description_type: technical
description: Dehumidification for photos

View file

@ -0,0 +1,154 @@
# ClimateControlPolicy class
# Policy governing climate control systems and conditions
#
# Generation date: 2026-01-19
# Rule compliance: 53 (slot_fixes.yaml), 39 (RiC-O naming), 0b (Type/Types pattern)
#
# Created for climate_control_type migration
id: https://nde.nl/ontology/hc/class/climate_control_policy
name: climate_control_policy_class
title: Climate Control Policy Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
odrl: http://www.w3.org/ns/odrl/2/
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/regulates_or_regulated
- ./ClimateControl
classes:
ClimateControlPolicy:
class_uri: odrl:Policy
description: |
Policy governing climate control systems and environmental conditions.
**DEFINITION**:
A ClimateControlPolicy defines the rules, standards, and requirements
for environmental control within heritage facilities. This includes
temperature ranges, humidity levels, air quality standards, and
monitoring requirements.
**ONTOLOGICAL ALIGNMENT**:
- **Primary** (`class_uri`): `odrl:Policy` - ODRL policy construct
- **Related**: `crm:E29_Design_or_Procedure` - CIDOC-CRM procedures
**USE CASES**:
1. **Preservation Environment Policy**:
```yaml
ClimateControlPolicy:
has_or_had_label: "Archives Preservation Environment Standard"
has_or_had_description:
description_text: "Temperature 18-22°C, RH 45-55%, 24/7 monitoring"
regulates_or_regulated:
- ClimateControl: HVAC system for stack areas
```
2. **Warehouse Climate Requirements**:
```yaml
ClimateControlPolicy:
has_or_had_label: "Logistics Warehouse Climate Requirements"
regulates_or_regulated:
- ClimateControl: Basic heating system
```
**RELATIONSHIP TO ClimateControl**:
```
ClimateControlPolicy
├── regulates_or_regulated ──► ClimateControl
│ │
│ └── has_or_had_type ──► ClimateControlType
└── (may regulate multiple systems)
```
exact_mappings:
- odrl:Policy
close_mappings:
- crm:E29_Design_or_Procedure
related_mappings:
- schema:Action
slots:
- has_or_had_label
- has_or_had_description
- regulates_or_regulated
slot_usage:
has_or_had_label:
description: |
Name of this climate control policy.
range: string
required: true
examples:
- value: "Archives Preservation Environment Standard"
description: Policy for archival storage
has_or_had_description:
description: |
Detailed description of policy requirements.
examples:
- value:
description_text: "Temperature must be maintained between 18-22°C with relative humidity 45-55%. Continuous monitoring required."
description_type: policy
description: Preservation environment requirements
regulates_or_regulated:
range: ClimateControl
description: |
Climate control system(s) governed by this policy.
inlined: true
inlined_as_list: true
examples:
- value:
has_or_had_label: "Main Stack HVAC"
has_or_had_type: HVAC
description: HVAC system regulated by policy
annotations:
custodian_types: '["A", "L", "M", "R"]'
custodian_types_rationale: Climate policies primarily for archives, libraries, museums, and research centers with preservation needs.
custodian_types_primary: A
specificity_score: 0.60
specificity_rationale: Moderately specific - applies to facilities with climate-controlled storage.
comments:
- "Policy governing climate control systems"
- "Maps to ODRL Policy construct"
- "Links to ClimateControl via regulates_or_regulated slot"
examples:
- value:
has_or_had_label: "Rijksmuseum Collection Storage Climate Policy"
has_or_had_description:
description_text: "All collection storage areas must maintain temperature 20±2°C, RH 50±5%. HVAC failure triggers immediate response protocol."
description_type: policy
regulates_or_regulated:
- has_or_had_label: "Depot A HVAC System"
has_or_had_type: HVAC
- has_or_had_label: "Depot B HVAC System"
has_or_had_type: HVAC
description: Museum collection storage climate policy
- value:
has_or_had_label: "Warehouse Basic Climate Requirements"
has_or_had_description:
description_text: "Non-collection warehouse areas must maintain temperature above freezing. Heating required October-April."
description_type: policy
regulates_or_regulated:
- has_or_had_label: "Logistics Warehouse Heating"
has_or_had_type: HEATED
description: Basic warehouse climate requirements

View file

@ -0,0 +1,117 @@
# ClimateControlType class
# Abstract base class for climate control type taxonomy
#
# Generation date: 2026-01-19
# Rule compliance: 0b (Type/Types pattern), 53 (slot_fixes.yaml), 39 (RiC-O naming)
#
# This is the SINGULAR "Type" class - abstract base for the type hierarchy
# Concrete types are in ClimateControlTypes.yaml (plural)
id: https://nde.nl/ontology/hc/class/climate_control_type
name: climate_control_type_class
title: Climate Control Type Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
aat: http://vocab.getty.edu/aat/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/includes_or_included
classes:
ClimateControlType:
class_uri: skos:Concept
abstract: true
description: |
Abstract base class for climate control type taxonomy.
**DESIGN PATTERN** (Rule 0b - Type/Types Naming):
This file (`ClimateControlType.yaml`) defines the **singular abstract base class**.
Concrete subclasses are defined in `ClimateControlTypes.yaml` (plural).
**TYPE HIERARCHY**:
```
ClimateControlType (abstract base)
├── HEATED - Heating only (prevent freezing)
├── HVAC - Full heating, ventilation, air conditioning
├── DEHUMIDIFIED - Humidity control only
├── COOLED - Cooling only (no heating)
├── PASSIVE - Passive environmental control (building design)
└── NONE - No climate control
```
**ONTOLOGICAL ALIGNMENT**:
- **Primary** (`class_uri`): `skos:Concept` - SKOS concept scheme
- **Related**: `aat:300264752` - Getty AAT climate control systems
**USE CASES**:
The ClimateControlType is used as the range for the `has_or_had_type`
slot in the ClimateControl class:
```yaml
ClimateControl:
has_or_had_label: "Main Stack HVAC"
has_or_had_type: HVAC # ← ClimateControlType
```
exact_mappings:
- skos:Concept
related_mappings:
- aat:300264752
slots:
- has_or_had_label
- has_or_had_description
- includes_or_included
slot_usage:
has_or_had_label:
description: |
Display label for this climate control type.
range: string
required: true
examples:
- value: "HVAC"
description: Heating, ventilation, air conditioning
has_or_had_description:
description: |
Description of what this climate control type provides.
examples:
- value:
description_text: "Full heating, ventilation, and air conditioning with temperature and humidity control."
description_type: definition
description: HVAC type definition
includes_or_included:
description: |
Subtypes included in this climate control type (for hierarchical types).
range: ClimateControlType
multivalued: true
annotations:
type_types_pattern: |
This is the SINGULAR "Type" class per Rule 0b.
Concrete subclasses in ClimateControlTypes.yaml (plural).
custodian_types: '["*"]'
custodian_types_rationale: Climate control types apply to all heritage facility contexts.
specificity_score: 0.50
specificity_rationale: Type taxonomy - moderately specific to facility management.
replaces_slots: "climate_control_type (the old string-valued slot)"
migration_date: "2026-01-19"
comments:
- "Abstract base class for climate control type hierarchy"
- "Follows Rule 0b Type/Types naming pattern"
- "Concrete types: HEATED, HVAC, DEHUMIDIFIED, COOLED, PASSIVE, NONE"
- "See ClimateControlTypes.yaml for subclass definitions"

View file

@ -0,0 +1,211 @@
# ClimateControlTypes class
# Concrete subclasses for climate control type taxonomy
#
# Generation date: 2026-01-19
# Rule compliance: 0b (Type/Types pattern), 53 (slot_fixes.yaml), 39 (RiC-O naming)
#
# This is the PLURAL "Types" file - contains all concrete subclasses
# Abstract base is in ClimateControlType.yaml (singular)
id: https://nde.nl/ontology/hc/class/climate_control_types
name: climate_control_types_class
title: Climate Control Types Classes
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
aat: http://vocab.getty.edu/aat/
default_prefix: hc
imports:
- linkml:types
- ./ClimateControlType
classes:
# ========================================================================
# HEATED - Heating only (prevent freezing)
# ========================================================================
HeatedClimateControl:
is_a: ClimateControlType
class_uri: hc:HeatedClimateControl
description: |
Heating-only climate control - prevents freezing, no cooling or humidity control.
**TYPICAL USE CASES**:
- Warehouses in cold climates
- Unheated outbuildings needing freeze protection
- Basic storage areas without preservation requirements
**CAPABILITIES**:
- Temperature: Above freezing (typically 10-15°C minimum)
- Humidity: Uncontrolled
- Air quality: Uncontrolled
annotations:
climate_control_code: "HEATED"
preservation_suitability: "Low - suitable for non-sensitive materials only"
examples:
- value:
has_or_had_label: "HEATED"
has_or_had_description:
description_text: "Heating only to prevent freezing. No humidity or cooling control."
description: Basic heating type
# ========================================================================
# HVAC - Full heating, ventilation, air conditioning
# ========================================================================
HVACClimateControl:
is_a: ClimateControlType
class_uri: hc:HVACClimateControl
description: |
Full HVAC - heating, ventilation, and air conditioning with temperature
and typically humidity control.
**TYPICAL USE CASES**:
- Museum collection storage
- Archive repositories
- Special collections libraries
- Conservation labs
**CAPABILITIES**:
- Temperature: Precise control (typically ±1-2°C)
- Humidity: Controlled (typically ±3-5% RH)
- Air quality: Filtered, controlled air changes
annotations:
climate_control_code: "HVAC"
preservation_suitability: "High - suitable for sensitive collections"
examples:
- value:
has_or_had_label: "HVAC"
has_or_had_description:
description_text: "Full heating, ventilation, and air conditioning with temperature and humidity control."
description: Full HVAC type
# ========================================================================
# DEHUMIDIFIED - Humidity control only
# ========================================================================
DehumidifiedClimateControl:
is_a: ClimateControlType
class_uri: hc:DehumidifiedClimateControl
description: |
Dehumidification-only climate control - humidity control without
temperature control.
**TYPICAL USE CASES**:
- Photo archives in temperate climates
- Basement storage areas
- Areas with mold/mildew concerns
**CAPABILITIES**:
- Temperature: Uncontrolled (ambient)
- Humidity: Controlled (typically below 50-60% RH)
- Air quality: May have basic filtration
annotations:
climate_control_code: "DEHUMIDIFIED"
preservation_suitability: "Medium - protects against humidity damage"
examples:
- value:
has_or_had_label: "DEHUMIDIFIED"
has_or_had_description:
description_text: "Humidity control only - maintains RH below target threshold."
description: Dehumidification type
# ========================================================================
# COOLED - Cooling only (no heating)
# ========================================================================
CooledClimateControl:
is_a: ClimateControlType
class_uri: hc:CooledClimateControl
description: |
Cooling-only climate control - air conditioning without heating.
**TYPICAL USE CASES**:
- Tropical/warm climate facilities
- Server rooms with collections databases
- Cold storage for photographic materials
**CAPABILITIES**:
- Temperature: Cooling only (may have precise control)
- Humidity: May be controlled as byproduct of cooling
- Air quality: Typically filtered
annotations:
climate_control_code: "COOLED"
preservation_suitability: "Medium-High - depends on precision"
examples:
- value:
has_or_had_label: "COOLED"
has_or_had_description:
description_text: "Cooling only - maintains temperature below ambient in warm climates."
description: Cooling-only type
# ========================================================================
# PASSIVE - Passive environmental control (building design)
# ========================================================================
PassiveClimateControl:
is_a: ClimateControlType
class_uri: hc:PassiveClimateControl
description: |
Passive climate control - environmental management through building
design rather than mechanical systems.
**TYPICAL USE CASES**:
- Historic buildings with thick walls
- Underground/cave storage
- Purpose-built passive storage facilities
**CAPABILITIES**:
- Temperature: Stable but not precisely controlled
- Humidity: May be naturally stable
- Air quality: Natural ventilation
**EXAMPLES**:
- Swiss National Library underground repository
- Cave archives
- Historic stone buildings with thermal mass
annotations:
climate_control_code: "PASSIVE"
preservation_suitability: "Variable - depends on building characteristics"
examples:
- value:
has_or_had_label: "PASSIVE"
has_or_had_description:
description_text: "Passive environmental control through building design, thermal mass, and natural ventilation."
description: Passive control type
# ========================================================================
# NONE - No climate control
# ========================================================================
NoClimateControl:
is_a: ClimateControlType
class_uri: hc:NoClimateControl
description: |
No climate control - ambient conditions only.
**TYPICAL USE CASES**:
- Outdoor monuments
- Unimproved storage spaces
- Temporary exhibition spaces
**CAPABILITIES**:
- Temperature: Ambient (uncontrolled)
- Humidity: Ambient (uncontrolled)
- Air quality: Ambient (uncontrolled)
**WARNING**:
Not suitable for sensitive heritage materials.
annotations:
climate_control_code: "NONE"
preservation_suitability: "None - unsuitable for sensitive materials"
examples:
- value:
has_or_had_label: "NONE"
has_or_had_description:
description_text: "No climate control - ambient environmental conditions only."
description: No climate control type

View file

@ -0,0 +1,137 @@
# CoFunding - Co-funding/match funding requirement
# Created 2026-01-19 per slot_fixes.yaml revision for co_funding_required
# Rule 53: Generic slot + structured class pattern
id: https://nde.nl/ontology/hc/class/CoFunding
name: CoFunding
title: CoFunding Class
version: 1.0.0
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/is_or_was_required
- ../slots/has_or_had_quantity
- ./Quantity
- ./MeasureUnit
- ../enums/MeasureUnitEnum
default_prefix: hc
classes:
CoFunding:
class_uri: schema:MonetaryAmount
description: |
Co-funding or match funding requirement for a funding call or grant.
Co-funding represents the financial contribution that an applicant must
provide alongside the grant funding. This may be expressed as:
- A percentage of total project cost (e.g., 30% co-funding required)
- A minimum absolute amount (e.g., €50,000 minimum co-funding)
- In-kind contributions (staff time, facilities, equipment)
**ONTOLOGY ALIGNMENT**:
- schema:MonetaryAmount - For monetary co-funding amounts
- schema:percentageValue - For percentage-based requirements
**MIGRATION NOTE**:
Replaces simple boolean `co_funding_required` slot with structured class
that captures co-funding amount, percentage, and type information.
**USAGE**:
- CallForApplication requires_or_required CoFunding
- Grant has_or_had_cofunding CoFunding
**EXAMPLES**:
- Horizon Europe: 0% co-funding for academic partners (100% funding rate)
- National Lottery Heritage Fund: 5-50% partnership funding required
- Creative Europe: 40% co-funding required (60% EU contribution)
exact_mappings:
- schema:MonetaryAmount
close_mappings:
- schema:percentageValue
related_mappings:
- schema:Grant
- schema:FundingScheme
slots:
- is_or_was_required
- has_or_had_description
- has_or_had_quantity
slot_usage:
is_or_was_required:
required: true
range: boolean
description: |
Whether co-funding is required for this funding opportunity.
True = applicants must provide matching funds.
False = full funding provided (no co-funding required).
examples:
- value: true
description: Co-funding required (e.g., 30% match)
- value: false
description: Full funding provided (100% grant rate)
has_or_had_description:
range: string
description: |
Human-readable description of co-funding requirements.
May include eligibility notes, in-kind contribution rules, etc.
examples:
- value: "30% co-funding required; in-kind contributions accepted up to 10%"
description: Mixed co-funding with in-kind allowance
- value: "Partnership funding required ranging from 5% to 50% depending on grant size"
description: Sliding scale co-funding
has_or_had_quantity:
range: Quantity
multivalued: true
inlined: true
inlined_as_list: true
description: |
Quantified co-funding requirements expressed as:
- Percentage (e.g., 30% of total project cost)
- Minimum amount (e.g., €50,000)
- Maximum amount (e.g., up to €1,000,000)
examples:
- value:
quantity_value: 30
has_or_had_measurement_unit:
unit_label: "%"
description: 30% co-funding percentage
- value:
quantity_value: 50000
has_or_had_measurement_unit:
unit_label: EUR
description: Minimum €50,000 co-funding
comments:
- Replaces simple co_funding_required boolean with structured class
- Captures both percentage and absolute co-funding amounts
- In-kind contributions tracked via description field
- Links to Quantity for precise numerical requirements
see_also:
- https://schema.org/MonetaryAmount
- https://ec.europa.eu/research/participants/docs/h2020-funding-guide/grants/applying-for-funding/find-a-call/what-you-need-to-know_en.htm
examples:
- value:
is_or_was_required: true
has_or_had_description: "30% co-funding required for all project costs"
has_or_had_quantity:
- quantity_value: 30
has_or_had_measurement_unit:
unit_label: "%"
description: EU Creative Europe style co-funding (30%)
- value:
is_or_was_required: true
has_or_had_description: "Partnership funding 5-50% depending on grant size; in-kind contributions permitted"
has_or_had_quantity:
- quantity_value: 5
has_or_had_measurement_unit:
unit_label: "%"
- quantity_value: 50
has_or_had_measurement_unit:
unit_label: "%"
description: NLHF sliding scale co-funding range
- value:
is_or_was_required: false
has_or_had_description: "100% funding rate for academic and non-profit partners"
description: Horizon Europe full funding (no co-funding)

View file

@ -31,11 +31,13 @@ imports:
- ../slots/has_arrangement
# REMOVED 2026-01-18: ../slots/collection_description - migrated to has_or_had_description + Description (Rule 53)
- ../slots/has_or_had_description
- ../slots/collection_id
# REMOVED 2026-01-18: ../slots/collection_id - migrated to has_or_had_identifier + Identifier (Rule 53)
- ../slots/has_or_had_identifier
- ./Identifier
# REMOVED 2026-01-18: ../slots/collection_name - migrated to has_or_had_label + Label (Rule 53)
- ../slots/has_or_had_label
- ./Label
- ../slots/collection_type_ref
# REMOVED 2026-01-18: ../slots/collection_type_ref - migrated to is_or_was_categorized_as + CollectionType (Rule 53)
- ../slots/has_or_had_curation_activity
- ../slots/custodial_history
- ../slots/digital_surrogate_url
@ -116,10 +118,12 @@ classes:
- has_arrangement
# REMOVED 2026-01-18: collection_description - migrated to has_or_had_description + Description (Rule 53)
- has_or_had_description
- collection_id
# REMOVED 2026-01-18: collection_id - migrated to has_or_had_identifier + Identifier (Rule 53)
- has_or_had_identifier
# REMOVED 2026-01-18: collection_name - migrated to has_or_had_label + Label (Rule 53)
- has_or_had_label
- collection_type_ref
# REMOVED 2026-01-18: collection_type_ref - migrated to is_or_was_categorized_as + CollectionType (Rule 53)
- is_or_was_categorized_as # was: collection_type_ref + subject_area - now unified categorization slot
- has_or_had_curation_activity
- custodial_history
- has_or_had_custodian_type
@ -140,12 +144,19 @@ classes:
- has_or_had_content # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16)
- temporal_extent # was: valid_from + valid_to - migrated per Rule 53
slot_usage:
collection_id:
range: uriorcurie
has_or_had_identifier: # was: collection_id - migrated per Rule 53 (2026-01-18)
description: |
MIGRATED from collection_id per slot_fixes.yaml (Rule 53, 2026-01-18).
Unique identifier for this collection using Identifier class.
Use identifier_scheme: COLLECTION_URI for collection URI identifiers.
range: Identifier
inlined: true
required: true
identifier: true
examples:
- value: https://nde.nl/ontology/hc/collection/nationaal-archief-voc-fonds
- value:
identifier_scheme: COLLECTION_URI
identifier_value: "https://nde.nl/ontology/hc/collection/nationaal-archief-voc-fonds"
description: VOC fonds at the National Archives
has_or_had_label: # was: collection_name - migrated per Rule 53/56 (2026-01-18)
description: |
@ -181,14 +192,8 @@ classes:
description_text: "The VOC archives comprise the administrative records of the Dutch East India Company from its founding in 1602 until its dissolution in 1799. The fonds includes correspondence, resolutions, journals, accounts, ship's logs, and maps documenting trade relations across Asia."
description_type: collection_description
description: VOC archival fonds description
collection_type_ref:
range: CollectionType
required: true
examples:
- value: https://nde.nl/ontology/hc/collection-type/fonds
description: Archival fonds
- value: https://nde.nl/ontology/hc/collection-type/special-collection
description: Library special collection
# REMOVED 2026-01-18: collection_type_ref - migrated to is_or_was_categorized_as + CollectionType (Rule 53)
# The collection type is now handled via is_or_was_categorized_as slot with CollectionType range
record_set_type:
range: uriorcurie
examples:
@ -230,16 +235,29 @@ classes:
begin_of_the_begin: '1602-01-01'
end_of_the_end: '1799-12-31'
description: VOC records content with temporal coverage
is_or_was_categorized_as: # was: subject_area - migrated per Rule 53/56 (2026-01-17)
range: string
is_or_was_categorized_as: # was: subject_area + collection_type_ref - migrated per Rule 53/56 (2026-01-17, 2026-01-18)
description: |
MIGRATED from subject_area (2026-01-17) and collection_type_ref (2026-01-18) per slot_fixes.yaml (Rule 53/56).
Unified categorization slot for:
1. Collection type classification (CollectionType instances) - REQUIRED
2. Subject area categorization (string values) - OPTIONAL
Uses polymorphic range (uriorcurie) allowing both CollectionType references and subject strings.
The first value SHOULD be a CollectionType for RiC-O RecordSetType alignment.
range: uriorcurie
multivalued: true
required: true
examples:
- value: https://nde.nl/ontology/hc/collection-type/fonds
description: Archival fonds (CollectionType)
- value: https://nde.nl/ontology/hc/collection-type/special-collection
description: Library special collection (CollectionType)
- value:
- https://nde.nl/ontology/hc/collection-type/fonds
- Colonial trade
- Maritime history
- Dutch East Indies
- Spice trade
description: VOC records subjects
description: VOC records - fonds type plus subject areas
has_or_had_provenance: # was: provenance_statement - migrated per Rule 53/56 (2026-01-18)
description: |
Narrative provenance description for this collection.
@ -397,13 +415,15 @@ classes:
- https://www.wikidata.org/wiki/Q2668072
examples:
- value:
collection_id: https://nde.nl/ontology/hc/collection/nationaal-archief-voc-fonds
has_or_had_identifier: # was: collection_id - migrated per Rule 53 (2026-01-18)
identifier_scheme: COLLECTION_URI
identifier_value: "https://nde.nl/ontology/hc/collection/nationaal-archief-voc-fonds"
has_or_had_label: # was: collection_name (2026-01-18)
has_or_had_label: Records of the Dutch East India Company (VOC)
has_or_had_description: # was: collection_description (2026-01-18)
- description_text: "The VOC archives comprise the administrative records of the Dutch East India Company from its founding in 1602 until its dissolution in 1799."
description_type: collection_description
collection_type_ref: https://nde.nl/ontology/hc/collection-type/fonds
# REMOVED 2026-01-18: collection_type_ref - now unified in is_or_was_categorized_as (first item is CollectionType)
record_set_type: rico:Fonds
extent: 1,250 linear meters
has_or_had_content: # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16)
@ -411,7 +431,8 @@ classes:
temporal_extent:
begin_of_the_begin: '1602-01-01'
end_of_the_end: '1799-12-31'
is_or_was_categorized_as: # was: subject_area - migrated per Rule 53/56 (2026-01-17)
is_or_was_categorized_as: # was: subject_area + collection_type_ref - migrated per Rule 53/56 (2026-01-17, 2026-01-18)
- https://nde.nl/ontology/hc/collection-type/fonds # Collection type (first item)
- Colonial trade
- Maritime history
- Dutch East Indies

View file

@ -0,0 +1,107 @@
# CollectionContent - Content held by a collection
#
# Created per slot_fixes.yaml migration for: collection_type
# Creation date: 2026-01-19
#
# Rule 53 (No Bespoke Slots): collection_type → has_or_had_content + CollectionContent + has_or_had_type + CollectionContentType
id: https://nde.nl/ontology/hc/class/CollectionContent
name: CollectionContent
title: Collection Content
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
rico: https://www.ica.org/standards/RiC/ontology#
default_prefix: hc
imports:
- linkml:types
- ./CollectionContentType
- ./CollectionContentTypes
- ../slots/has_or_had_type
classes:
CollectionContent:
class_uri: hc:CollectionContent
description: |
Represents content held within a collection, with typed categorization.
**RULE 53 MIGRATION**:
Replaces the simple `collection_type` string slot with a structured model:
- `has_or_had_content` → CollectionContent (this class)
- `has_or_had_type` → CollectionContentType (categorization)
**USAGE**:
```yaml
has_or_had_content:
- content_description: "Medieval manuscripts and parish registers"
has_or_had_type:
- type_label: Archival
- type_label: Library
```
**CHARACTERISTICS**:
- Supports multiple content types per collection
- Provides structured categorization
- Links to CollectionContentType taxonomy
slots:
- has_or_had_type
slot_usage:
has_or_had_type:
range: CollectionContentType
multivalued: true
inlined: true
description: |
Type(s) of content in this collection.
Uses CollectionContentType taxonomy (Archival, Library, Art, etc.).
attributes:
content_description:
range: string
description: Free-text description of the collection content
content_extent:
range: string
description: Extent/size of this content (e.g., "500 linear meters", "10,000 items")
content_date_range:
range: string
description: Date range covered by this content (e.g., "1500-1900")
exact_mappings:
- rico:RecordResource
close_mappings:
- dcterms:BibliographicResource
annotations:
specificity_score: "0.45"
specificity_rationale: "Moderately generic - applies broadly to collections."
template_specificity: '{"archive_search": 0.55, "museum_search": 0.50, "library_search": 0.55, "collection_discovery": 0.75, "person_research": 0.15, "location_browse": 0.25, "identifier_lookup": 0.20, "organizational_change": 0.10, "digital_platform": 0.30, "general_heritage": 0.45}'
examples:
- value:
content_description: "Medieval manuscripts and parish registers from 14th-18th century"
content_extent: "2,500 volumes"
content_date_range: "1350-1800"
has_or_had_type:
- type_label: Archival
- type_label: Library
description: Church archive with mixed archival and library content
- value:
content_description: "Religious art including icons, paintings, and stained glass"
content_extent: "450 objects"
has_or_had_type:
- type_label: Art
- type_label: Liturgical
description: Cathedral treasury art collection
comments:
- "Created per slot_fixes.yaml migration (2026-01-19)"
- "RULE 53: Replaces collection_type string slot with structured model"

View file

@ -0,0 +1,73 @@
# CollectionContentType - Base class for collection content type taxonomy
#
# Created per slot_fixes.yaml migration for: collection_type
# Creation date: 2026-01-19
#
# Rule 0b (Type/Types Naming): CollectionContentType (base) + CollectionContentTypes (subclasses)
# Rule 53 (No Bespoke Slots): collection_type → has_or_had_type + CollectionContentType
# Rule 39 (RiC-O Naming): Uses has_or_had_* pattern
id: https://nde.nl/ontology/hc/class/CollectionContentType
name: CollectionContentType
title: Collection Content Type (Base)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
classes:
CollectionContentType:
class_uri: hc:CollectionContentType
description: |
Abstract base class for types of heritage materials held by custodians.
**RULE 0b PATTERN**:
- This file (CollectionContentType.yaml): Abstract base class
- CollectionContentTypes.yaml: Concrete subclasses (Archival, Library, Art, etc.)
**CATEGORIES**:
- **Archival**: Parish registers, administrative records, correspondence
- **Library**: Sacred texts, theological works, manuscripts
- **Liturgical**: Vessels, vestments, ritual implements
- **Art**: Icons, paintings, sculpture, stained glass
- **Architectural**: Building fragments, archaeological remains
- **Relics**: Saints' relics, holy objects, pilgrimage souvenirs
- **Musical**: Organs, bells, choir books, instruments
- **Ephemera**: Bulletins, programs, pamphlets, photographs
**USAGE**:
Multiple types common (e.g., church with archive + library + art).
abstract: true
attributes:
type_label:
range: string
required: true
slot_uri: skos:prefLabel
description: Human-readable label for the collection content type
type_definition:
range: string
slot_uri: skos:definition
description: Definition of this collection content type
exact_mappings:
- dcterms:type
annotations:
specificity_score: "0.50"
specificity_rationale: "Moderately specific - applies to multiple custodian types with collections."
template_specificity: '{"archive_search": 0.60, "museum_search": 0.55, "library_search": 0.55, "collection_discovery": 0.70, "person_research": 0.20, "location_browse": 0.30, "identifier_lookup": 0.25, "organizational_change": 0.15, "digital_platform": 0.35, "general_heritage": 0.50}'
comments:
- "Created per slot_fixes.yaml migration (2026-01-19)"
- "RULE 0b: Base class for CollectionContentTypes taxonomy"
- "RULE 53: Replaces collection_type string slot"

View file

@ -0,0 +1,169 @@
# CollectionContentTypes - Concrete subclasses for collection content taxonomy
#
# Created per slot_fixes.yaml migration for: collection_type
# Creation date: 2026-01-19
#
# Rule 0b (Type/Types Naming): CollectionContentType (base) + CollectionContentTypes (subclasses)
# Rule 53 (No Bespoke Slots): collection_type → has_or_had_type + CollectionContentType
id: https://nde.nl/ontology/hc/class/CollectionContentTypes
name: CollectionContentTypes
title: Collection Content Types (Taxonomy)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ./CollectionContentType
classes:
ArchivalCollectionContent:
is_a: CollectionContentType
class_uri: hc:ArchivalCollectionContent
description: |
Archival materials: Parish registers, administrative records, correspondence,
historical documents, manuscript collections.
attributes:
type_label:
ifabsent: "string(Archival)"
LibraryCollectionContent:
is_a: CollectionContentType
class_uri: hc:LibraryCollectionContent
description: |
Library materials: Sacred texts, theological works, manuscripts,
printed books, periodicals, rare books.
attributes:
type_label:
ifabsent: "string(Library)"
LiturgicalCollectionContent:
is_a: CollectionContentType
class_uri: hc:LiturgicalCollectionContent
description: |
Liturgical objects: Vessels, vestments, ritual implements,
ceremonial items, religious artifacts.
attributes:
type_label:
ifabsent: "string(Liturgical)"
ArtCollectionContent:
is_a: CollectionContentType
class_uri: hc:ArtCollectionContent
description: |
Art collections: Icons, paintings, sculpture, stained glass,
religious imagery, decorative arts.
attributes:
type_label:
ifabsent: "string(Art)"
ArchitecturalCollectionContent:
is_a: CollectionContentType
class_uri: hc:ArchitecturalCollectionContent
description: |
Architectural materials: Building fragments, archaeological remains,
architectural drawings, building records.
attributes:
type_label:
ifabsent: "string(Architectural)"
RelicsCollectionContent:
is_a: CollectionContentType
class_uri: hc:RelicsCollectionContent
description: |
Relics and devotional objects: Saints' relics, holy objects,
pilgrimage souvenirs, votive offerings.
attributes:
type_label:
ifabsent: "string(Relics)"
MusicalCollectionContent:
is_a: CollectionContentType
class_uri: hc:MusicalCollectionContent
description: |
Musical heritage: Organs, bells, choir books, instruments,
sheet music, sound recordings.
attributes:
type_label:
ifabsent: "string(Musical)"
EphemeraCollectionContent:
is_a: CollectionContentType
class_uri: hc:EphemeraCollectionContent
description: |
Ephemeral materials: Bulletins, programs, pamphlets, photographs,
postcards, tickets, posters.
attributes:
type_label:
ifabsent: "string(Ephemera)"
PhotographicCollectionContent:
is_a: CollectionContentType
class_uri: hc:PhotographicCollectionContent
description: |
Photographic materials: Historical photographs, negatives,
slides, digital images, photo albums.
attributes:
type_label:
ifabsent: "string(Photographic)"
AudiovisualCollectionContent:
is_a: CollectionContentType
class_uri: hc:AudiovisualCollectionContent
description: |
Audiovisual materials: Film, video, sound recordings,
oral histories, multimedia.
attributes:
type_label:
ifabsent: "string(Audiovisual)"
TextileCollectionContent:
is_a: CollectionContentType
class_uri: hc:TextileCollectionContent
description: |
Textile materials: Historical garments, tapestries,
banners, ecclesiastical vestments, embroidery.
attributes:
type_label:
ifabsent: "string(Textile)"
NaturalHistoryCollectionContent:
is_a: CollectionContentType
class_uri: hc:NaturalHistoryCollectionContent
description: |
Natural history specimens: Botanical, zoological, geological,
paleontological collections.
attributes:
type_label:
ifabsent: "string(Natural History)"
ScientificCollectionContent:
is_a: CollectionContentType
class_uri: hc:ScientificCollectionContent
description: |
Scientific instruments and materials: Laboratory equipment,
measuring devices, scientific models, specimens.
attributes:
type_label:
ifabsent: "string(Scientific)"
DigitalCollectionContent:
is_a: CollectionContentType
class_uri: hc:DigitalCollectionContent
description: |
Born-digital and digitized materials: Digital archives,
electronic records, digital art, web archives.
attributes:
type_label:
ifabsent: "string(Digital)"
comments:
- "Created per slot_fixes.yaml migration (2026-01-19)"
- "RULE 0b: Concrete subclasses of CollectionContentType"
- "Extensible taxonomy - add new subclasses as needed"

View file

@ -0,0 +1,86 @@
id: https://nde.nl/ontology/hc/class/CollectionDiscoveryScore
name: collection_discovery_score_class
title: Collection Discovery Score Class
# Created per slot_fixes.yaml revision for collection_discovery_score migration
# RULE 53: Structured score class replacing primitive float
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
sosa: http://www.w3.org/ns/sosa/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
imports:
- linkml:types
- ../slots/has_or_had_score
- ../slots/specificity_annotation
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
default_range: string
classes:
CollectionDiscoveryScore:
class_uri: sosa:Observation
description: >-
Structured score for collection discovery/exploration relevance.
Captures the computed relevance score from search/retrieval algorithms
acting as observation systems, along with metadata about when and how
the score was computed.
**Use cases**:
- RAG retrieval relevance scores for collection metadata
- Search result ranking scores
- Collection exploration priority scores
- Template-specific relevance for different query contexts
**Score semantics**:
- 0.0 = Not relevant to query/context
- 0.5 = Moderately relevant
- 1.0 = Highly relevant
exact_mappings:
- sosa:Observation
close_mappings:
- prov:Entity
- schema:Rating
slots:
- has_or_had_score
- specificity_annotation
attributes:
score_context:
range: string
description: >-
Context or query type for which this score was computed.
E.g., "collection_discovery", "archive_search", "museum_search"
computed_at:
range: datetime
description: When the score was computed.
algorithm_version:
range: string
description: >-
Version of the scoring algorithm used.
Enables reproducibility and score comparison across versions.
score_notes:
range: string
description: Additional notes about the score computation.
comments:
- "Created per slot_fixes.yaml revision for collection_discovery_score migration"
- "Replaces primitive float with structured observation"
- "RULE 53: Part of collection_discovery_score → has_or_had_score + CollectionDiscoveryScore migration"
annotations:
specificity_score: 0.75
specificity_rationale: "Fairly specific - applies to collection search/discovery contexts"
examples:
- value: |
has_or_had_score: 0.85
score_context: "collection_discovery"
computed_at: "2026-01-19T12:00:00Z"
algorithm_version: "v1.2.0"
- value: |
has_or_had_score: 0.92
score_context: "archive_search"
computed_at: "2026-01-19T14:30:00Z"

View file

@ -0,0 +1,268 @@
# CollectionEvent class
# Structured representation of specimen collection events.
#
# MIGRATION NOTE (2026-01-19):
# Created as part of collection_location migration per slot_fixes.yaml (Rule 53).
#
# Darwin Core alignment: Captures dwc:Event for specimen collection activities.
id: https://nde.nl/ontology/hc/class/CollectionEvent
name: CollectionEvent
title: Collection Event 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/
dcterms: http://purl.org/dc/terms/
dwc: http://rs.tdwg.org/dwc/terms/
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_place
- ../slots/has_or_had_provenance
- ../slots/has_or_had_note
- ../slots/temporal_extent
- ../slots/is_or_was_acquired_by # Added 2026-01-22 for collector migration (Rule 53)
- ./Place
- ./CustodianPlace
- ./TimeSpan
- ./Agent # Added 2026-01-22 for collector migration (Rule 53)
default_prefix: hc
classes:
CollectionEvent:
class_uri: dwc:Event
description: >-
A specimen collection event capturing where, when, and by whom a specimen was collected.
**Purpose**:
Consolidates collection metadata into a structured event following Darwin Core
and CIDOC-CRM event modeling patterns.
**Darwin Core Alignment**:
- `has_or_had_place` → dwc:locality (structured location)
- `temporal_extent` → dwc:eventDate (collection date/period)
- `is_or_was_acquired_by` → dwc:recordedBy (was: collector, migrated 2026-01-22)
- `field_number` → dwc:fieldNumber
**CIDOC-CRM Alignment**:
- Maps to crm:E7_Activity (collection activity)
- `has_or_had_place` → crm:P7_took_place_at
- `temporal_extent` → crm:P4_has_time-span
**REPLACES**:
- Individual slots: collection_location, collection_date, field_number
- collector → is_or_was_acquired_by + Agent (migrated 2026-01-22)
- Consolidates into structured event with provenance
**Example**:
```yaml
CollectionEvent:
has_or_had_place:
place_name: "Mauritius"
country: "MU"
latitude: -20.2
longitude: 57.5
temporal_extent:
begin_of_the_begin: "1662-01-01"
end_of_the_end: "1662-12-31"
is_or_was_acquired_by: # was: collector - migrated 2026-01-22
- agent_name: "Unknown Dutch sailor"
agent_type: person
agent_role: collector
field_number: "VOC-1662-001"
```
exact_mappings:
- dwc:Event
close_mappings:
- crm:E7_Activity
- prov:Activity
related_mappings:
- schema:Action
mixins:
- HasProvenance
slots:
- has_or_had_place
- has_or_had_provenance
- has_or_had_note
- temporal_extent
- is_or_was_acquired_by # Added 2026-01-22: was collector (Rule 53)
attributes:
event_id:
description: >-
Unique identifier for this collection event.
range: uriorcurie
identifier: true
slot_uri: dcterms:identifier
# collector: REMOVED - migrated to is_or_was_acquired_by per Rule 53 (2026-01-22)
# Now uses imported slot is_or_was_acquired_by with Agent class
field_number:
description: >-
Collector's field number or identifier.
Maps to dwc:fieldNumber.
range: string
slot_uri: dwc:fieldNumber
examples:
- value: "ARW-1234"
- value: "CD-HMS Beagle-567"
sampling_protocol:
description: >-
Method used to collect the specimen.
Maps to dwc:samplingProtocol.
range: string
slot_uri: dwc:samplingProtocol
examples:
- value: "UV light trap"
- value: "Mist net"
- value: "Hand collection"
habitat_description:
description: >-
Description of habitat where specimen was collected.
Maps to dwc:habitat.
range: string
slot_uri: dwc:habitat
examples:
- value: "Tropical rainforest, understory"
- value: "Coral reef, depth 15m"
slot_usage:
has_or_had_place:
description: >-
Structured location where specimen was collected.
MIGRATED from collection_location per slot_fixes.yaml (Rule 53, 2026-01-19).
Uses CustodianPlace for detailed location including coordinates.
range: CustodianPlace
inlined: true
examples:
- value:
place_name: "Mauritius"
country: "MU"
latitude: -20.2
longitude: 57.5
temporal_extent:
description: >-
Time period when collection occurred.
Supports exact dates, ranges, and approximate periods.
range: TimeSpan
inlined: true
examples:
- value:
begin_of_the_begin: "2020-06-15"
end_of_the_end: "2020-06-15"
description: Exact date
- value:
begin_of_the_begin: "1870-01-01"
end_of_the_end: "1879-12-31"
notes: "1870s"
description: Approximate decade
has_or_had_provenance:
description: >-
Provenance of this collection event record.
range: ProvenanceBlock
inlined: true
is_or_was_acquired_by:
description: >-
Person(s) who collected the specimen.
MIGRATED from collector attribute per slot_fixes.yaml (Rule 53, 2026-01-22).
Uses Agent class for structured representation with name, type, and role.
Maps to dwc:recordedBy via Agent.
range: Agent
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value:
agent_name: "Alfred Russel Wallace"
agent_type: person
agent_role: collector
description: Victorian naturalist collector
- value:
agent_name: "Charles Darwin"
agent_type: person
agent_role: collector
description: HMS Beagle expedition collector
comments:
- Created 2026-01-19 from collection_location migration (Rule 53)
- "2026-01-22: collector attribute → is_or_was_acquired_by slot + Agent class (Rule 53)"
- Aligns with Darwin Core dwc:Event
- Consolidates collection metadata into structured event
- Supports provenance tracking for historical specimens
see_also:
- https://dwc.tdwg.org/terms/#dwc:Event
- https://cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E7
annotations:
custodian_types: '["B", "M", "R"]'
custodian_types_rationale: >-
Primarily used for Botanical/Zoo (B), Museum (M), and Research (R) custodians
with biological specimen collections.
custodian_types_primary: "B"
specificity_score: "0.70"
specificity_rationale: >-
Fairly specific - primarily for natural history specimen collecting events.
template_specificity:
museum_search: "0.75"
collection_discovery: "0.80"
general_heritage: "0.55"
examples:
- value:
event_id: "https://nde.nl/ontology/hc/event/dodo-collection-1662"
has_or_had_place:
place_name: "Mauritius"
country: "MU"
latitude: -20.2
longitude: 57.5
temporal_extent:
begin_of_the_begin: "1600-01-01"
end_of_the_end: "1662-12-31"
notes: "Pre-1662 (before extinction)"
# collector → is_or_was_acquired_by (migrated 2026-01-22)
is_or_was_acquired_by:
- agent_name: "Unknown Dutch sailor"
agent_type: person
agent_role: collector
description: Historical Dodo collection event
- value:
event_id: "https://nde.nl/ontology/hc/event/wallace-java-1234"
has_or_had_place:
place_name: "Mt. Gede"
region: "West Java"
country: "ID"
latitude: -6.78
longitude: 106.98
temporal_extent:
begin_of_the_begin: "1854-06-01"
end_of_the_end: "1854-06-30"
# collector → is_or_was_acquired_by (migrated 2026-01-22)
is_or_was_acquired_by:
- agent_name: "Alfred Russel Wallace"
agent_type: person
agent_role: collector
field_number: "ARW-1234"
sampling_protocol: "Hand collection"
habitat_description: "Montane forest, 1500m elevation"
description: Wallace collection in Java

View file

@ -12,10 +12,17 @@ imports:
- ../slots/documentation_url
- ./ReconstructedEntity
- ../slots/is_or_was_available # MIGRATED: was ../slots/api_available (2026-01-15)
- ../slots/cms_category
- ../slots/cms_id
# REMOVED 2026-01-19: ../slots/cms_category - migrated to has_or_had_type + CMSType (Rule 53)
- ../slots/has_or_had_type # was: cms_category - migrated per Rule 53 (2026-01-19)
- ./CMSType
- ./CMSTypes
# REMOVED 2026-01-18: ../slots/cms_id - migrated to has_or_had_identifier + Identifier (Rule 53)
- ../slots/has_or_had_identifier # was: cms_id - migrated per Rule 53 (2026-01-18)
- ./Identifier
# REMOVED 2026-01-18: ../slots/cms_product_name - migrated to has_or_had_label with Label (type: product_name)
- ../slots/cms_product_version
# REMOVED 2026-01-19: ../slots/cms_product_version - migrated to has_or_had_version + Version (Rule 53)
- ../slots/has_or_had_version # was: cms_product_version - migrated per Rule 53 (2026-01-19)
- ./Version
- ../slots/has_or_had_custodian_type
- ../slots/deployment_date
- ../slots/iiif_compatible
@ -112,10 +119,12 @@ classes:
- rico:Activity
slots:
- is_or_was_available # MIGRATED: was api_available (2026-01-15)
- cms_category
- cms_id
# REMOVED 2026-01-19: cms_category - migrated to has_or_had_type with CMSType
- has_or_had_type # was: cms_category - migrated per Rule 53 (2026-01-19)
- has_or_had_identifier # was: cms_id - migrated per Rule 53 (2026-01-18)
# REMOVED 2026-01-18: cms_product_name - migrated to has_or_had_label with Label (type: product_name)
- cms_product_version
# REMOVED 2026-01-19: cms_product_version - migrated to has_or_had_version + Version (Rule 53)
- has_or_had_version # was: cms_product_version - migrated per Rule 53 (2026-01-19)
- has_or_had_custodian_type
- deployment_date
- documentation_url
@ -140,15 +149,32 @@ classes:
- is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
- is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
slot_usage:
cms_id:
range: uriorcurie
has_or_had_identifier: # was: cms_id - migrated per Rule 53 (2026-01-18)
description: |
MIGRATED from cms_id per slot_fixes.yaml (Rule 53, 2026-01-18).
Unique identifier for the CMS deployment.
Uses Identifier class for structured representation with scheme and value.
The identifier scheme should be "CMS_URI" and value should be the full URI.
range: Identifier
inlined: true
required: true
identifier: true
examples:
- value: https://nde.nl/ontology/hc/cms/rijksmuseum-adlib
- value:
identifier_scheme: CMS_URI
identifier_value: "https://nde.nl/ontology/hc/cms/rijksmuseum-adlib"
description: Rijksmuseum's Adlib deployment
- value: https://nde.nl/ontology/hc/cms/nationaal-archief-mais
- value:
identifier_scheme: CMS_URI
identifier_value: "https://nde.nl/ontology/hc/cms/nationaal-archief-mais"
description: National Archives MAIS deployment
cms_id:
description: |
DEPRECATED 2026-01-18: Migrated to has_or_had_identifier slot with Identifier class.
This slot_usage entry retained for documentation only.
See has_or_had_identifier slot_usage for current pattern.
deprecated: "Use has_or_had_identifier with Identifier class"
cms_product_name:
description: |
DEPRECATED 2026-01-18: Migrated to has_or_had_label slot with Label class
@ -158,18 +184,65 @@ classes:
See has_or_had_label slot_usage for current pattern.
deprecated: "Use has_or_had_label with Label(has_or_had_type='product_name')"
cms_product_version:
range: string
description: |
DEPRECATED 2026-01-19: Migrated to has_or_had_version slot with Version class.
This slot_usage entry retained for documentation only.
See has_or_had_version slot_usage for current pattern.
deprecated: "Use has_or_had_version with Version class"
has_or_had_version: # was: cms_product_version - migrated per Rule 53 (2026-01-19)
description: |
MIGRATED from cms_product_version per slot_fixes.yaml (Rule 53, 2026-01-19).
Version of the CMS software deployed.
Uses Version class for structured version representation:
- version_string: Full version (e.g., "1.8.0", "7.4")
- major_version, minor_version, patch_version: Semantic versioning components
- release_date: When this version was released
- temporal_extent: When this version was deployed at the custodian
range: Version
multivalued: true
inlined_as_list: true
examples:
- value: 1.8.0
description: CollectiveAccess version
- value: '7.0'
- value:
version_string: "1.8.0"
major_version: 1
minor_version: 8
patch_version: 0
description: CollectiveAccess version with semantic components
- value:
version_string: "7.4"
major_version: 7
minor_version: 4
description: MuseumPlus version
cms_category:
range: string
description: |
DEPRECATED 2026-01-19: Migrated to has_or_had_type slot with CMSType class.
This slot_usage entry retained for documentation only.
See has_or_had_type slot_usage for current pattern.
deprecated: "Use has_or_had_type with CMSType class"
has_or_had_type: # was: cms_category - migrated per Rule 53 (2026-01-19)
description: |
MIGRATED from cms_category per slot_fixes.yaml (Rule 53, 2026-01-19).
The type of collection management system.
Uses CMSType class hierarchy for structured type representation:
- MuseumCMS: Museum-focused collection management (e.g., TMS, CollectiveAccess)
- ArchiveCMS: Archives-focused (e.g., ArchivesSpace, MAIS-Flexis)
- LibraryCMS: Library-focused (e.g., Koha, Alma)
- DigitalAssetManagement: DAM systems (e.g., ResourceSpace)
- DigitalRepository: Repository platforms (e.g., DSpace, Fedora)
- MixedCMS: Multi-domain systems
- CustomCMS: Institution-specific systems
range: CMSType
inlined: true
examples:
- value: MUSEUM_CMS
- value:
has_or_had_label: Museum CMS
has_or_had_type: museum_cms
description: Museum-focused CMS
- value: ARCHIVE_CMS
- value:
has_or_had_label: Archive CMS
has_or_had_type: archive_cms
description: Archives-focused CMS
open_source:
range: boolean
@ -363,12 +436,20 @@ classes:
- http://www.cidoc-crm.org/cidoc-crm/E29_Design_or_Procedure
- http://usefulinc.com/ns/doap#Project
examples:
# Examples updated for migrated slots (Rule 53) - 2026-01-14, 2026-01-16, 2026-01-18
# Examples updated for migrated slots (Rule 53) - 2026-01-14, 2026-01-16, 2026-01-18, 2026-01-19
- value:
cms_id: https://nde.nl/ontology/hc/cms/rijksmuseum-adlib
# cms_id migrated to has_or_had_identifier with Identifier class (2026-01-18)
has_or_had_identifier:
identifier_scheme: CMS_URI
identifier_value: "https://nde.nl/ontology/hc/cms/rijksmuseum-adlib"
# cms_product_name migrated to has_or_had_label with type: product_name (2026-01-18)
cms_product_version: '7.4'
cms_category: MUSEUM_CMS
# cms_product_version migrated to has_or_had_version with Version class (2026-01-19)
has_or_had_version:
version_string: "7.4"
major_version: 7
minor_version: 4
# cms_category migrated to has_or_had_type with CMSType (2026-01-19)
has_or_had_type: MuseumCMS # was: cms_category: MUSEUM_CMS
open_source: false
license: Proprietary
has_or_had_label: # was: vendor_name AND cms_product_name - now uses Label with type discrimination
@ -398,10 +479,19 @@ classes:
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
description: Rijksmuseum Adlib CMS deployment
- value:
cms_id: https://nde.nl/ontology/hc/cms/example-museum-collectiveaccess
# cms_id migrated to has_or_had_identifier with Identifier class (2026-01-18)
has_or_had_identifier:
identifier_scheme: CMS_URI
identifier_value: "https://nde.nl/ontology/hc/cms/example-museum-collectiveaccess"
# cms_product_name migrated to has_or_had_label with type: product_name (2026-01-18)
cms_product_version: 1.8.0
cms_category: MUSEUM_CMS
# cms_product_version migrated to has_or_had_version with Version class (2026-01-19)
has_or_had_version:
version_string: "1.8.0"
major_version: 1
minor_version: 8
patch_version: 0
# cms_category migrated to has_or_had_type with CMSType (2026-01-19)
has_or_had_type: MuseumCMS # was: cms_category: MUSEUM_CMS
open_source: true
license: GPL-3.0
has_or_had_label: # was: vendor_name AND cms_product_name - now uses Label with type discrimination
@ -432,10 +522,15 @@ classes:
refers_to_custodian: https://nde.nl/ontology/hc/example-museum
description: Open-source CollectiveAccess deployment
- value:
cms_id: https://nde.nl/ontology/hc/cms/nationaal-archief-mais
# cms_id migrated to has_or_had_identifier with Identifier class (2026-01-18)
has_or_had_identifier:
identifier_scheme: CMS_URI
identifier_value: "https://nde.nl/ontology/hc/cms/nationaal-archief-mais"
# cms_product_name migrated to has_or_had_label with type: product_name (2026-01-18)
cms_product_version: null
cms_category: ARCHIVE_CMS
# cms_product_version migrated to has_or_had_version with Version class (2026-01-19)
# Version unknown for this CMS deployment
# cms_category migrated to has_or_had_type with CMSType (2026-01-19)
has_or_had_type: ArchiveCMS # was: cms_category: ARCHIVE_CMS
open_source: false
license: Proprietary
has_or_had_label: # was: vendor_name AND cms_product_name - now uses Label with type discrimination

View file

@ -14,12 +14,16 @@ imports:
- linkml:types
- ../slots/record_equivalent
# REMOVED: ../slots/bibframe_equivalent - Use LinkML close_mappings instead (2026-01-15)
- ../slots/collection_broader_type
# REMOVED 2026-01-19: ../slots/collection_broader_type - migrated to has_or_had_hypernym + Hypernym (Rule 53)
- ../slots/has_or_had_hypernym
- ./Hypernym
- ../slots/has_or_had_collection_narrower_type
# REMOVED 2026-01-18: ../slots/collection_type_description - migrated to has_or_had_description + Description (Rule 53)
- ../slots/has_or_had_description
- ./Description
- ../slots/collection_type_id
# REMOVED 2026-01-18: ../slots/collection_type_id - migrated to has_or_had_identifier + Identifier (Rule 53)
- ../slots/has_or_had_identifier
- ./Identifier
# REMOVED 2026-01-18: ../slots/collection_type_name - migrated to has_or_had_label + Label (Rule 53)
- ../slots/has_or_had_label
- ./Label
@ -71,11 +75,13 @@ classes:
- dcterms:DCMIType
slots:
# REMOVED: bibframe_equivalent - Use LinkML close_mappings instead (2026-01-15)
- collection_broader_type
# REMOVED 2026-01-19: collection_broader_type - migrated to has_or_had_hypernym + Hypernym (Rule 53)
- has_or_had_hypernym
- has_or_had_collection_narrower_type
# REMOVED 2026-01-18: collection_type_description - migrated to has_or_had_description + Description (Rule 53)
- has_or_had_description
- collection_type_id
# REMOVED 2026-01-18: collection_type_id - migrated to has_or_had_identifier + Identifier (Rule 53)
- has_or_had_identifier
# REMOVED 2026-01-18: collection_type_name - migrated to has_or_had_label + Label (Rule 53)
- has_or_had_label
- has_or_had_custodian_type
@ -85,12 +91,19 @@ classes:
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- is_or_was_equivalent_to
slot_usage:
collection_type_id:
range: uriorcurie
has_or_had_identifier: # was: collection_type_id - migrated per Rule 53 (2026-01-18)
description: |
MIGRATED from collection_type_id per slot_fixes.yaml (Rule 53, 2026-01-18).
Unique identifier for this collection type using Identifier class.
Use identifier_scheme: COLLECTION_TYPE_URI for collection type URI identifiers.
range: Identifier
inlined: true
required: true
identifier: true
examples:
- value: https://nde.nl/ontology/hc/collection-type/fonds
- value:
identifier_scheme: COLLECTION_TYPE_URI
identifier_value: "https://nde.nl/ontology/hc/collection-type/fonds"
description: Archival fonds type
has_or_had_label: # was: collection_type_name - migrated per Rule 53/56 (2026-01-18)
description: |
@ -143,10 +156,18 @@ classes:
description: 'Wikidata equivalent: fonds'
- value: Q185583
description: 'Wikidata equivalent: archive collection'
collection_broader_type:
range: CollectionType
has_or_had_hypernym: # was: collection_broader_type - migrated per Rule 53 (2026-01-19)
description: |
MIGRATED from collection_broader_type per slot_fixes.yaml (Rule 53, 2026-01-19).
Parent type in hierarchy using Hypernym class.
Maps to skos:broader for hierarchical relationship.
range: Hypernym
inlined: true
examples:
- value: https://nde.nl/ontology/hc/collection-type/archival-record-set-type
- value:
hypernym_uri: "https://nde.nl/ontology/hc/collection-type/archival-record-set-type"
has_or_had_label:
- label_text: "Archival Record Set Type"
description: SERIES broader type is ArchivalRecordSetType
has_or_had_collection_narrower_type:
range: CollectionType
@ -178,7 +199,9 @@ classes:
- https://www.wikidata.org/wiki/Q1643722
examples:
- value:
collection_type_id: https://nde.nl/ontology/hc/collection-type/fonds
has_or_had_identifier: # was: collection_type_id - migrated per Rule 53 (2026-01-18)
identifier_scheme: COLLECTION_TYPE_URI
identifier_value: "https://nde.nl/ontology/hc/collection-type/fonds"
has_or_had_label: # was: collection_type_name (2026-01-18)
has_or_had_label: Fonds
has_or_had_description: # was: collection_type_description (2026-01-18)
@ -192,7 +215,9 @@ classes:
- https://nde.nl/ontology/hc/collection-type/sub-fonds
description: Archival fonds collection type
- value:
collection_type_id: https://nde.nl/ontology/hc/collection-type/special-collection
has_or_had_identifier: # was: collection_type_id - migrated per Rule 53 (2026-01-18)
identifier_scheme: COLLECTION_TYPE_URI
identifier_value: "https://nde.nl/ontology/hc/collection-type/special-collection"
has_or_had_label: # was: collection_type_name (2026-01-18)
has_or_had_label: Special Collection
has_or_had_description: # was: collection_type_description (2026-01-18)

View file

@ -0,0 +1,198 @@
# ColonialStatus class
#
# Created per slot_fixes.yaml revision for: colonial
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 56
id: https://nde.nl/ontology/hc/class/ColonialStatus
name: colonial_status_class
title: Colonial Status Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_identifier
- ../slots/temporal_extent
- ./TimeSpan
default_prefix: hc
classes:
ColonialStatus:
class_uri: hc:ColonialStatus
description: |
Structured representation of colonial/territorial status for geographic coverage.
**PURPOSE**:
Models colonial territories and their historical status in archival finding aids.
Captures both the geographic territory and its colonial relationship over time.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from simple `colonial` string slot to
structured class with temporal and geographic context.
The revision specifies:
- `includes_or_included` + `GeoSpatialPlace` for territory geometry
- `is_or_was_categorized_as` + `ColonialStatus` for categorization
**USE CASES**:
- Dutch East Indies archives (1602-1949)
- Belgian Congo documentation
- British Colonial Office records
- Portuguese overseas territories
**PROVENANCE CONSIDERATIONS**:
Colonial status is historically contingent and politically sensitive.
Always capture:
- Time period of colonial relationship
- Perspective (colonizer vs. colonized)
- Modern-day geographic equivalent
exact_mappings:
- dcterms:spatial
close_mappings:
- schema:containedInPlace
related_mappings:
- skos:Concept
slots:
- has_or_had_label
- has_or_had_identifier
- temporal_extent
attributes:
territory_name:
description: |
Name of the colonial territory.
Use the historical name as recorded in archival sources.
Modern equivalents should be recorded in notes or linked via GeoSpatialPlace.
range: string
required: true
examples:
- value: "Dutch East Indies"
description: Historical name for Indonesia under Dutch rule
- value: "Belgian Congo"
description: Historical name for DRC under Belgian rule
- value: "British Malaya"
description: Historical British colonial territories in Southeast Asia
colonizing_power:
description: |
The colonizing nation or entity.
range: string
examples:
- value: "Netherlands"
- value: "Belgium"
- value: "United Kingdom"
- value: "Portugal"
- value: "France"
modern_equivalent:
description: |
Modern-day country or region corresponding to this colonial territory.
Use ISO 3166-1 alpha-2 codes or full country names.
range: string
multivalued: true
examples:
- value: "ID"
description: Indonesia (former Dutch East Indies)
- value: "CD"
description: Democratic Republic of Congo (former Belgian Congo)
- value: "MY"
description: Malaysia (part of former British Malaya)
status_type:
description: |
Type of colonial relationship.
range: string
examples:
- value: "colony"
- value: "protectorate"
- value: "mandate"
- value: "overseas territory"
- value: "dependency"
slot_usage:
has_or_had_label:
description: |
Display label for the colonial status.
MIGRATION: Used for simple string representation of colonial territory name.
range: string
examples:
- value: "Dutch East Indies (1602-1949)"
temporal_extent:
description: |
Time period of colonial relationship.
Use CIDOC-CRM TimeSpan for precise temporal modeling.
range: TimeSpan
inlined: true
examples:
- value:
begin_of_the_begin: "1602-01-01"
end_of_the_end: "1949-12-27"
description: Dutch colonial period in Indonesia (VOC founding to sovereignty transfer)
examples:
- value:
territory_name: "Dutch East Indies"
colonizing_power: "Netherlands"
modern_equivalent:
- "ID"
status_type: "colony"
has_or_had_label: "Dutch East Indies (1602-1949)"
temporal_extent:
begin_of_the_begin: "1602-03-20"
end_of_the_end: "1949-12-27"
description: Dutch colonial Indonesia - VOC founding to sovereignty transfer
- value:
territory_name: "Suriname"
colonizing_power: "Netherlands"
modern_equivalent:
- "SR"
status_type: "colony"
has_or_had_label: "Dutch Suriname (1667-1975)"
temporal_extent:
begin_of_the_begin: "1667-01-01"
end_of_the_end: "1975-11-25"
description: Dutch colonial Suriname
- value:
territory_name: "Netherlands Antilles"
colonizing_power: "Netherlands"
modern_equivalent:
- "CW"
- "SX"
- "BQ"
status_type: "overseas territory"
has_or_had_label: "Netherlands Antilles (1954-2010)"
temporal_extent:
begin_of_the_begin: "1954-01-01"
end_of_the_end: "2010-10-10"
description: Former Netherlands Antilles (now Curaçao, Sint Maarten, Caribbean Netherlands)
comments:
- Created per slot_fixes.yaml migration from colonial slot (2026-01-22)
- Models colonial territories with temporal and geographic context
- Supports decolonization research and provenance tracking
- Politically sensitive - capture multiple perspectives where relevant
see_also:
- https://www.nationaalarchief.nl/onderzoeken/colonial-records
- https://www.kit.nl/project/decolonization-heritage/

View file

@ -19,6 +19,9 @@ imports:
- linkml:types
- ../slots/has_or_had_content
- ./Content
# ADDED 2026-01-18: has_or_had_author + Author for comment_author migration (Rule 53)
- ../slots/has_or_had_author
- ./Author
classes:
Comment:
@ -35,6 +38,8 @@ classes:
slots:
# MIGRATED 2026-01-18: comment_text → has_or_had_content + Content (Rule 53/56)
- has_or_had_content
# MIGRATED 2026-01-18: comment_author → has_or_had_author + Author (Rule 53)
- has_or_had_author
attributes:
# REMOVED 2026-01-18: comment_text - migrated to has_or_had_content + Content (Rule 53)
@ -43,9 +48,10 @@ classes:
# required: true
# description: Text content of the comment
comment_author:
range: string
description: Author of the comment
# REMOVED 2026-01-18: comment_author - migrated to has_or_had_author + Author (Rule 53)
# comment_author:
# range: string
# description: Author of the comment
comment_date:
range: datetime
@ -68,6 +74,22 @@ classes:
- value:
has_or_had_description: "Great video about the collection!"
description: Comment text using Content class
has_or_had_author: # was: comment_author - migrated per Rule 53 (2026-01-18)
description: |
MIGRATED from comment_author per slot_fixes.yaml (Rule 53, 2026-01-18).
Author of the comment.
Uses Author class for structured author representation.
range: Author
inlined: true
required: false
examples:
- value:
has_or_had_name: "Visitor123"
description: Comment author using Author class
- value:
has_or_had_name: "MuseumFan2024"
has_or_had_identifier: "https://youtube.com/channel/UC123"
description: Comment author with channel identifier
exact_mappings:
- schema:Comment
@ -80,6 +102,7 @@ classes:
- value:
has_or_had_content: # was: comment_text (2026-01-18)
has_or_had_description: "Great video about the collection!"
comment_author: "Visitor123"
has_or_had_author: # was: comment_author (2026-01-18)
has_or_had_name: "Visitor123"
comment_date: "2025-01-14T10:30:00Z"
description: User comment on video

View file

@ -0,0 +1,196 @@
# CommentReply class
# Created per slot_fixes.yaml revision for: comment_reply_count
#
# Represents reply metrics and relationships for comments
# MIGRATION NOTE (2026-01-22): Created as part of comment_reply_count migration per Rule 53.
id: https://nde.nl/ontology/hc/class/CommentReply
name: comment_reply_class
title: Comment Reply Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
sioc: http://rdfs.org/sioc/ns#
as: https://www.w3.org/ns/activitystreams#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_quantity
- ../slots/has_or_had_unit
- ../slots/temporal_extent
- ./Quantity
- ./Unit
- ./TimeSpan
default_prefix: hc
classes:
CommentReply:
class_uri: sioc:Post
description: |
Reply metrics and relationships for comments/posts.
**PURPOSE**:
Structured representation of reply counts and relationships for threaded
discussions. Replaces simple integer counts with rich reply data including
quantity, temporal tracking, and relationship information.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `comment_reply_count` integer
to structured `has_or_had_reply` + `CommentReply` with `has_or_had_quantity`
+ `Quantity` for metric representation.
**REPLY CONTEXTS**:
| Context | Description |
|---------|-------------|
| YouTube | Comment replies on video comments |
| Twitter | Reply threads |
| Facebook | Comment replies on posts |
| Forum | Threaded discussion replies |
**ONTOLOGY ALIGNMENT**:
| Ontology | Class/Property | Usage |
|----------|----------------|-------|
| **SIOC** | `sioc:Post`, `sioc:has_reply` | Online community content |
| **Activity Streams** | `as:Note`, `as:inReplyTo` | Social activity |
| **Schema.org** | `schema:Comment` | Generic comment modeling |
**EXAMPLE**:
```yaml
has_or_had_reply:
- reply_count: 5
has_or_had_quantity:
numeric_value: 5
has_or_had_unit:
unit_label: "replies"
temporal_extent:
begin_of_the_begin: "2025-01-14T10:00:00Z"
```
exact_mappings:
- sioc:Post
close_mappings:
- schema:Comment
- as:Note
related_mappings:
- sioc:has_reply
- as:inReplyTo
slots:
- has_or_had_quantity
- has_or_had_unit
- temporal_extent
attributes:
reply_count:
description: |
Simple count of replies (shorthand for has_or_had_quantity.numeric_value).
Use has_or_had_quantity for structured representation with unit.
range: integer
required: false
minimum_value: 0
examples:
- value: 5
description: 5 replies to a comment
- value: 42
description: 42 replies in thread
reply_type:
description: |
Type of reply context (comment_reply, thread_reply, direct_reply).
range: string
required: false
examples:
- value: "comment_reply"
description: Reply to a comment
- value: "thread_reply"
description: Reply in a discussion thread
- value: "direct_reply"
description: Direct reply to author
slot_usage:
has_or_had_quantity:
description: |
Structured quantity for the reply count.
Use Quantity class with numeric_value and has_or_had_unit.
range: Quantity
inlined: true
required: false
examples:
- value:
numeric_value: 5
has_or_had_unit:
unit_label: "replies"
description: 5 replies using Quantity class
has_or_had_unit:
description: |
Unit for the reply type (replies, responses, etc.).
Can be specified directly or via has_or_had_quantity.has_or_had_unit.
range: Unit
inlined: true
required: false
examples:
- value:
unit_label: "replies"
description: Replies unit
temporal_extent:
description: |
Time when the reply count was observed/recorded.
range: TimeSpan
inlined: true
required: false
examples:
- value:
begin_of_the_begin: "2025-01-14T10:00:00Z"
description: Observation timestamp
examples:
- value:
reply_count: 5
description: Simple reply count (minimal)
- value:
reply_count: 5
reply_type: "comment_reply"
has_or_had_quantity:
numeric_value: 5
has_or_had_unit:
unit_label: "replies"
temporal_extent:
begin_of_the_begin: "2025-01-14T10:00:00Z"
description: Full structured reply count with timestamp
- value:
reply_count: 0
reply_type: "comment_reply"
description: Comment with no replies
comments:
- Created 2026-01-22 from comment_reply_count migration (Rule 53)
- Models reply metrics as structured data
- Supports temporal tracking of reply counts
- Aligned with SIOC vocabulary for online communities
see_also:
- http://rdfs.org/sioc/ns#has_reply
- https://schema.org/Comment
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian with discussion content may track replies.
specificity_score: "0.55"
specificity_rationale: >-
Moderately general - applies to threaded discussion contexts.

View file

@ -0,0 +1,160 @@
# CommercialCustodianTypes class
# Type/Types naming pattern per Rule 0b
#
# Created per slot_fixes.yaml revision for: commercial_custodian_subtype
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 0b
id: https://nde.nl/ontology/hc/class/CommercialCustodianTypes
name: commercial_custodian_types_class
title: Commercial Custodian Types Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
wd: http://www.wikidata.org/entity/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_identifier
- ../enums/CommercialCustodianTypeEnum
default_prefix: hc
classes:
CommercialCustodianTypes:
class_uri: skos:Collection
description: |
Collection of commercial custodian subtypes from the 295-type Wikidata taxonomy.
**PURPOSE**:
Structured representation of commercial heritage custodian subtypes,
replacing the simple enum-valued slot with a class that can hold
multiple types with additional metadata.
**DESIGN RATIONALE** (Rule 0b):
Follows the Type/Types naming pattern:
- `CommercialCustodianType` (singular) - would be abstract base
- `CommercialCustodianTypes` (plural) - collection of concrete subtypes
Created per slot_fixes.yaml migration from `commercial_custodian_subtype`
enum slot to structured `includes_or_included` + `CommercialCustodianTypes`.
**COMMERCIAL CUSTODIAN CATEGORIES**:
| Category | Examples |
|----------|----------|
| Auction houses | Christie's, Sotheby's, Bonhams |
| Art dealers | Gagosian, David Zwirner |
| Corporate archives | Ford Motor Archives, IBM Archives |
| Brand museums | Heineken Experience, Guinness Storehouse |
| Company museums | Mercedes-Benz Museum, BMW Welt |
**WIKIDATA INTEGRATION**:
Each subtype links to a Wikidata Q-number describing the specific
commercial organization type, enabling Linked Open Data queries.
exact_mappings:
- skos:Collection
close_mappings:
- skos:ConceptScheme
slots:
- has_or_had_label
- has_or_had_identifier
attributes:
subtype_code:
description: |
Code for the commercial custodian subtype from CommercialCustodianTypeEnum.
range: CommercialCustodianTypeEnum
required: false
multivalued: true
examples:
- value: "AUCTION_HOUSE"
- value: "ART_DEALER"
- value: "CORPORATE_ARCHIVE"
wikidata_qid:
description: |
Wikidata Q-number for this commercial custodian type.
range: uriorcurie
required: false
examples:
- value: "wd:Q1078426"
description: Auction house (Q1078426)
- value: "wd:Q17537576"
description: Corporate archive (Q17537576)
subtype_label:
description: |
Human-readable label for this subtype.
range: string
required: false
examples:
- value: "Auction House"
- value: "Corporate Archive"
- value: "Brand Heritage Center"
slot_usage:
has_or_had_label:
description: |
Display label for the commercial custodian type collection.
examples:
- value: "Auction Houses and Art Dealers"
has_or_had_identifier:
description: |
Wikidata or other identifier for this type.
examples:
- value:
identifier_scheme: wikidata
identifier_value: "Q1078426"
examples:
- value:
subtype_code:
- "AUCTION_HOUSE"
subtype_label: "Auction House"
wikidata_qid: "wd:Q1078426"
description: Auction house type
- value:
subtype_code:
- "CORPORATE_ARCHIVE"
subtype_label: "Corporate Archive"
wikidata_qid: "wd:Q17537576"
description: Corporate archive type
- value:
subtype_code:
- "ART_DEALER"
- "GALLERY"
subtype_label: "Art Dealer/Gallery"
description: Combined art dealer and gallery type
comments:
- Created 2026-01-22 from commercial_custodian_subtype migration (Rule 53)
- Follows Type/Types naming pattern (Rule 0b)
- Links to Wikidata taxonomy of 295 commercial custodian types
- Replaces simple enum slot with structured class
see_also:
- https://www.wikidata.org/wiki/Q1078426
- https://www.wikidata.org/wiki/Q17537576
annotations:
custodian_types: '["C"]'
custodian_types_rationale: >-
Specific to Commercial (C) custodian type classification.
specificity_score: "0.75"
specificity_rationale: >-
Fairly specific - applies only to commercial heritage contexts.

View file

@ -17,9 +17,17 @@ imports:
- ../enums/CommercialCustodianTypeEnum
- ../slots/has_or_had_model # was: business_model - migrated per Rule 53/56/57 (2026-01-17)
- ./BusinessModel
- ../slots/collection_purpose
- ../slots/commercial_activity
- ../slots/commercial_custodian_subtype
# REMOVED 2026-01-19: collection_purpose - migrated to collects_or_collected + has_or_had_rationale (Rule 53)
- ../slots/collects_or_collected
- ../slots/has_or_had_rationale
- ./Rationale
- ../slots/has_or_had_service # was: commercial_activity - migrated per Rule 53/56/57 (2026-01-18)
- ./Service
- ./ServiceType
- ./ServiceTypes
# REMOVED 2026-01-22: ../slots/commercial_custodian_subtype - migrated to includes_or_included + CommercialCustodianTypes (Rule 53)
- ../slots/includes_or_included
- ./CommercialCustodianTypes
- ../slots/corporate_integration
- ../slots/has_or_had_custodian_type
- ../slots/heritage_holding
@ -187,12 +195,14 @@ classes:
\ .\n\n# Example: Heineken Experience (corporate brand heritage center in Amsterdam)\n<https://w3id.org/heritage/custodian/nl/heineken-experience>\n\
\ a schema:Corporation, schema:TouristAttraction, crm:E74_Group, hc:CommercialOrganization ;\n hc:custodian_type hc:CommercialOrganizationType\
\ ;\n hc:has_or_had_model \"For-profit brand heritage attraction\", \"Admission fees\", \"Merchandise sales\", \"Brand\
\ marketing\" ;\n hc:collection_purpose \"Brand heritage communication\", \"Consumer engagement\", \"Tourism revenue\"\
, \"Corporate identity\" ;\n hc:corporate_integration \"Fully owned by Heineken N.V.\", \"Marketing department\", \"\
\ marketing\" ;\n hc:has_or_had_rationale [ hc:rationale_text \"Brand heritage communication, Consumer engagement, Tourism revenue, Corporate identity\" ] ;\n hc:corporate_integration \"Fully owned by Heineken N.V.\", \"Marketing department\", \"\
Brand management division\" ;\n hc:public_access \"Daily visitor hours 10:30-19:30\", \"Paid admission\", \"Self-guided\
\ tours\", \"Group bookings available\" ;\n hc:heritage_holdings \"Brewing equipment (1867-present)\", \"Advertising\
\ materials archive\", \"Bottle/label collections\", \"Corporate photography\" ;\n hc:commercial_activities \"Admission\
\ tickets (€21)\", \"Beer tasting experiences\", \"Gift shop\", \"Event venue rental\" ;\n schema:name \"Heineken Experience\"\
\ materials archive\", \"Bottle/label collections\", \"Corporate photography\" ;\n hc:has_or_had_service [\n a hc:Service ;\n\
\ hc:service_name \"Admission tickets\" ;\n hc:price \"€21\" ;\n hc:has_or_had_type hc:CommercialService\n ], [\n\
\ a hc:Service ;\n hc:service_name \"Beer tasting experiences\" ;\n hc:has_or_had_type hc:CommercialService\n ], [\n\
\ a hc:Service ;\n hc:service_name \"Gift shop\" ;\n hc:has_or_had_type hc:CommercialService\n ], [\n\
\ a hc:Service ;\n hc:service_name \"Event venue rental\" ;\n hc:has_or_had_type hc:CommercialService\n ] ;\n schema:name \"Heineken Experience\"\
\ ;\n schema:foundingDate \"1991\" ;\n schema:location \"Stadhouderskade 78, Amsterdam\" ;\n schema:description \"\
Corporate brand heritage center in original Heineken brewery building (1867), showcasing brewing history and brand development\
\ through interactive exhibits and heritage collections\" ;\n schema:url <https://www.heinekenexperience.com/> ;\n\
@ -210,9 +220,12 @@ classes:
- schema:TouristAttraction
slots:
- has_or_had_model # was: business_model - migrated per Rule 53/56 (2026-01-17)
- collection_purpose
- commercial_activity
- commercial_custodian_subtype
# collection_purpose REMOVED - migrated to collects_or_collected + has_or_had_rationale (Rule 53, 2026-01-19)
- collects_or_collected
- has_or_had_rationale
- has_or_had_service # was: commercial_activity - migrated per Rule 53/56/57 (2026-01-18)
# MIGRATED 2026-01-22: commercial_custodian_subtype → includes_or_included + CommercialCustodianTypes (Rule 53)
- includes_or_included
- corporate_integration
- has_or_had_custodian_type
- heritage_holding
@ -240,16 +253,77 @@ classes:
has_or_had_label: "Brand heritage center"
has_or_had_description: "Event rental, Hospitality, Tourism revenue"
description: Coca-Cola World of Coke model
collection_purpose:
range: string
required: true
# MIGRATED 2026-01-19: collection_purpose → collects_or_collected + has_or_had_rationale (Rule 53)
collects_or_collected:
range: Collection
inlined: true
inlined_as_list: true
required: false
description: >-
What the commercial organization collects for heritage purposes.
MIGRATED from collection_purpose per slot_fixes.yaml (Rule 53, 2026-01-19).
Uses Collection class with has_or_had_rationale for purpose documentation.
examples:
- value: Brand communication, Consumer engagement, Tourism, Identity
- value:
collection_name: "Brand Heritage Collection"
has_or_had_rationale:
rationale_text: "Brand communication, Consumer engagement, Tourism, Identity"
rationale_category: "marketing"
description: Heineken Experience purpose
- value: Legal record-keeping, Product history, IP documentation
- value:
collection_name: "Corporate Archive"
has_or_had_rationale:
rationale_text: "Legal record-keeping, Product history, IP documentation"
rationale_category: "compliance"
description: Ford Motor archive purpose
- value: Corporate culture, Brand storytelling, Innovation
- value:
collection_name: "Innovation Archive"
has_or_had_rationale:
rationale_text: "Corporate culture, Brand storytelling, Innovation"
rationale_category: "corporate_culture"
description: IBM archive purpose
has_or_had_rationale:
range: Rationale
inlined: true
required: true
description: >-
Why the commercial organization maintains heritage collections.
Documents corporate motivations (marketing, compliance, culture, etc.).
examples:
- value:
rationale_text: "Brand heritage communication, Consumer engagement"
rationale_category: "marketing"
description: Marketing-driven heritage purpose
- value:
rationale_text: "Legal compliance, IP documentation"
rationale_category: "compliance"
description: Compliance-driven heritage purpose
# MIGRATED 2026-01-22: commercial_custodian_subtype → includes_or_included + CommercialCustodianTypes (Rule 53)
includes_or_included:
description: |
MIGRATED from commercial_custodian_subtype per slot_fixes.yaml (Rule 53, 2026-01-22).
Specific subtypes of commercial heritage custodian from the 295-type Wikidata taxonomy.
Uses CommercialCustodianTypes class for structured representation with Wikidata links.
range: CommercialCustodianTypes
inlined: true
inlined_as_list: true
required: false
examples:
- value:
subtype_code: ["AUCTION_HOUSE"]
subtype_label: "Auction House"
wikidata_qid: "wd:Q1078426"
description: Christie's, Sotheby's type
- value:
subtype_code: ["CORPORATE_ARCHIVE"]
subtype_label: "Corporate Archive"
wikidata_qid: "wd:Q17537576"
description: Ford Motor Archives type
- value:
subtype_code: ["ART_DEALER"]
subtype_label: "Art Dealer"
description: Gagosian type
corporate_integration:
range: string
required: true
@ -281,16 +355,41 @@ classes:
description: Ford Motor holdings
- value: Perfume formulas, Bottle designs, Fashion sketches
description: Chanel archive holdings
commercial_activity:
range: string
has_or_had_service: # was: commercial_activity - migrated per Rule 53/56/57 (2026-01-18)
range: Service
inlined: true
multivalued: true
required: false
description: >-
Revenue-generating commercial services offered by the organization.
Uses Service class with CommercialService type for structured representation.
examples:
- value: Admission (€21), Beer tasting, Gift shop, Event rental
description: Heineken Experience activities
- value: Reproductions catalog, Image licensing, Research fees
description: Corporate archive activities
- value: Corporate events, Weddings, Conference space
description: Company museum activities
- value:
service_name: "Admission tickets"
service_description: "Paid entry to heritage experience"
price: "€21"
has_or_had_type: CommercialService
description: Heineken Experience admission
- value:
service_name: "Beer tasting experience"
service_description: "Guided tasting of Heineken products"
price: "Included in admission"
has_or_had_type: CommercialService
description: Heineken tasting service
- value:
service_name: "Gift shop"
service_description: "Branded merchandise and reproductions"
has_or_had_type: CommercialService
description: Retail service
- value:
service_name: "Event venue rental"
service_description: "Corporate events, weddings, conferences"
has_or_had_type: CommercialService
description: Event rental service
- value:
service_name: "Image licensing"
service_description: "Rights for reproduction of archival materials"
has_or_had_type: CommercialService
description: Corporate archive licensing service
has_or_had_custodian_type:
equals_expression: '["hc:CommercialOrganizationType"]'

View file

@ -0,0 +1,160 @@
# CommissionRate class
# Created per slot_fixes.yaml revision for: commission_rate
#
# Represents commission rate structure
# MIGRATION NOTE (2026-01-22): Created as part of commission_rate migration per Rule 53.
id: https://nde.nl/ontology/hc/class/CommissionRate
name: commission_rate_class
title: Commission Rate Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_percentage
- ./Percentage
default_prefix: hc
classes:
CommissionRate:
class_uri: hc:CommissionRate
description: |
Structured representation of a commission rate.
**PURPOSE**:
Models commission percentages with context (market type,
rate type) replacing simple string representation.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `commission_rate` string
to structured representation with Percentage class.
**ART MARKET STANDARDS**:
- **Primary market**: 40-50% standard (gallery takes half)
- **Secondary market**: 10-20% (resale commission)
- **Auction**: 10-25% buyer's premium + seller's commission
**EXAMPLE**:
```yaml
takes_or_took_comission:
rate_type: "primary_market"
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
```
close_mappings:
- schema:PriceSpecification
slots:
- has_or_had_percentage
attributes:
rate_type:
description: |
Type of commission rate.
range: string
required: false
examples:
- value: "primary_market"
description: Commission on first sale
- value: "secondary_market"
description: Commission on resale
- value: "auction_buyers_premium"
description: Auction house buyer's premium
- value: "auction_sellers_commission"
description: Auction house seller's commission
rate_description:
description: |
Human-readable description of the commission structure.
range: string
required: false
examples:
- value: "Standard 50/50 split between gallery and artist"
description: Primary market explanation
- value: "Sliding scale based on sale price"
description: Variable commission description
effective_date:
description: |
When this commission rate became effective.
range: date
required: false
applies_to:
description: |
What this commission rate applies to.
range: string
required: false
examples:
- value: "All represented artists"
description: Gallery-wide rate
- value: "Works over €10,000"
description: Price-based rate
slot_usage:
has_or_had_percentage:
description: |
The percentage value of this commission rate.
range: Percentage
inlined: true
required: true
examples:
- value:
percentage_value: 50
percentage_display: "50%"
description: 50% commission
examples:
- value:
rate_type: "primary_market"
rate_description: "Standard 50/50 split between gallery and artist"
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
description: Standard primary market commission
- value:
rate_type: "secondary_market"
rate_description: "Consignment fee for resale works"
has_or_had_percentage:
percentage_value: 15
percentage_min: 10
percentage_max: 20
percentage_display: "10-20%"
description: Variable secondary market commission
- value:
rate_type: "auction_buyers_premium"
rate_description: "Buyer's premium at auction"
has_or_had_percentage:
percentage_value: 25
percentage_display: "25%"
description: Auction house buyer's premium
comments:
- Created 2026-01-22 from commission_rate migration (Rule 53)
- Provides structured commission representation
- Supports art market commission conventions
see_also:
- https://schema.org/PriceSpecification
annotations:
custodian_types: '["G", "C"]'
custodian_types_rationale: >-
Primarily for galleries (G) and commercial organizations (C).
specificity_score: "0.80"
specificity_rationale: >-
Specific to commercial sales commission context.

View file

@ -0,0 +1,175 @@
# ComplianceStatus class
# Created per slot_fixes.yaml revision for: compliance_status
#
# MIGRATION NOTE (2026-01-22): Created as part of compliance_status migration per Rule 53.
# Provides structured representation of compliance status with standards.
id: https://nde.nl/ontology/hc/class/ComplianceStatus
name: compliance_status_class
title: Compliance Status Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/has_or_had_type
default_prefix: hc
classes:
ComplianceStatus:
class_uri: hc:ComplianceStatus
description: |
Structured representation of compliance status with referenced standards.
**MIGRATION NOTE** (2026-01-22):
Created per slot_fixes.yaml migration from `compliance_status` string
to structured ComplianceStatus class per Rule 53.
**Purpose**:
Provides structured representation for compliance status including:
- Status value (COMPLIANT, NON_COMPLIANT, PARTIALLY_COMPLIANT, NOT_ASSESSED)
- Reference to the standard being assessed against
- Assessment date and assessor
- Notes on compliance gaps
**Ontological Alignment**:
- **Primary** (`class_uri`): `hc:ComplianceStatus` - Heritage Custodian status
- **Close**: `dcterms:conformsTo` - Dublin Core conformance
**Status Values**:
- **COMPLIANT**: Fully meets all requirements of the referenced standard
- **NON_COMPLIANT**: Does not meet requirements, remediation required
- **PARTIALLY_COMPLIANT**: Meets some but not all requirements
- **NOT_ASSESSED**: Compliance has not been formally evaluated
**Use Cases**:
- Storage condition compliance with preservation standards
- Building compliance with heritage regulations
- Data management compliance with archival standards
**Pattern**:
```yaml
has_or_had_status:
has_or_had_type: COMPLIANT
standard_reference: "ISO 11799:2015"
assessment_date: "2024-06-15"
```
slots:
- has_or_had_type
- has_or_had_label
- has_or_had_description
attributes:
standard_reference:
range: string
description: |
Reference to the standard being assessed against.
Examples: "ISO 11799:2015", "BS 5454:2000", "PAS 197:2009"
examples:
- value: "ISO 11799:2015"
description: International standard for archive storage
- value: "BS 5454:2000"
description: British standard for archival storage
assessment_date:
range: date
description: Date of the compliance assessment.
assessor:
range: string
description: Person or organization that performed the assessment.
compliance_gaps:
range: string
multivalued: true
description: |
Specific areas where compliance gaps exist (for PARTIALLY_COMPLIANT status).
examples:
- value: "Temperature fluctuation exceeds ±2°C threshold"
- value: "UV filtration not installed on windows"
remediation_required:
range: boolean
description: Whether remediation action is required.
remediation_deadline:
range: date
description: Deadline for completing remediation actions.
slot_usage:
has_or_had_type:
description: |
The compliance status value.
range: string
required: true
examples:
- value: "COMPLIANT"
- value: "NON_COMPLIANT"
- value: "PARTIALLY_COMPLIANT"
- value: "NOT_ASSESSED"
has_or_had_label:
description: Human-readable label for this compliance status.
range: string
required: false
examples:
- value: "ISO 11799 Compliant"
- value: "Requires Temperature Control Upgrade"
has_or_had_description:
description: Detailed description of the compliance assessment.
range: string
required: false
exact_mappings:
- hc:ComplianceStatus
close_mappings:
- dcterms:conformsTo
annotations:
custodian_types: '["A", "L", "M"]'
custodian_types_rationale: Compliance status particularly relevant for archives, libraries, and museums with preservation requirements.
custodian_types_primary: A
specificity_score: 0.55
specificity_rationale: >-
Moderately specific - compliance tracking important for preservation
but primarily relevant to custodians with regulatory requirements.
migration_info:
source_slot: compliance_status
migration_date: "2026-01-22"
rule: "Rule 53"
comments:
- "Structured compliance status representation"
- "Replaces simple string-valued compliance_status slot"
- "Includes standard reference and assessment metadata"
- "Created 2026-01-22 from compliance_status migration (Rule 53)"
examples:
- value:
has_or_had_type: "COMPLIANT"
has_or_had_label: "ISO 11799 Compliant"
standard_reference: "ISO 11799:2015"
assessment_date: "2024-06-15"
assessor: "Heritage Conservation Consultant"
description: Fully compliant storage condition
- value:
has_or_had_type: "PARTIALLY_COMPLIANT"
has_or_had_label: "Temperature Control Issues"
standard_reference: "BS 5454:2000"
assessment_date: "2024-03-01"
compliance_gaps:
- "Temperature fluctuation exceeds ±2°C threshold"
- "No backup HVAC system"
remediation_required: true
remediation_deadline: "2024-12-31"
description: Partial compliance with remediation plan
- value:
has_or_had_type: "NON_COMPLIANT"
has_or_had_label: "Requires Major Renovation"
standard_reference: "PAS 197:2009"
remediation_required: true
has_or_had_description: "Building requires significant upgrades to meet modern archival storage standards"
description: Non-compliant status requiring intervention

View file

@ -0,0 +1,120 @@
# Component class
# Created per slot_fixes.yaml revision for: component_type
#
# MIGRATION NOTE (2026-01-22): Created as part of component_type migration per Rule 53.
# Provides base class for component/part entities.
id: https://nde.nl/ontology/hc/class/Component
name: component_class
title: Component Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_type
- ../slots/has_or_had_label
- ../slots/has_or_had_description
default_prefix: hc
classes:
Component:
class_uri: schema:ItemList
description: |
A component or part of a larger entity.
**MIGRATION NOTE** (2026-01-22):
Created per slot_fixes.yaml migration from `component_type` string
to structured Component class per Rule 53.
**Purpose**:
Provides base class for components/parts including:
- Type classification via ComponentType hierarchy
- Value/label for the component
- Additional metadata
**Ontological Alignment**:
- **Primary** (`class_uri`): `schema:ItemList` - Schema.org (component as list item)
- **Close**: `dcterms:hasPart` - Dublin Core part relationship
**Use Cases**:
- Address components (street, city, country)
- System components
- Document components
**Pattern**:
```yaml
has_or_had_component:
- has_or_had_type: StreetNumber
has_or_had_label: "1"
long_name: "1"
short_name: "1"
```
slots:
- has_or_had_type
- has_or_had_label
- has_or_had_description
slot_usage:
has_or_had_type:
description: |
The type classification of this component.
Range narrowed to ComponentType class hierarchy.
range: ComponentType
multivalued: true
required: false
examples:
- value: StreetNumber
description: House/building number
- value: Route
description: Street name
- value: Locality
description: City/town
has_or_had_label:
description: The value/content of this component.
range: string
required: false
examples:
- value: "1"
description: Street number value
- value: "Museumstraat"
description: Street name value
exact_mappings:
- schema:ItemList
close_mappings:
- dcterms:hasPart
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Components applicable across all heritage domains.
custodian_types_primary: M
specificity_score: 0.30
specificity_rationale: >-
Broadly applicable - component modeling fundamental to many domains.
migration_info:
source_slot: component_type
migration_date: "2026-01-22"
rule: "Rule 53"
comments:
- "Base class for component/part entities"
- "Type classification via ComponentType hierarchy"
- "Created 2026-01-22 from component_type migration (Rule 53)"
examples:
- value:
has_or_had_type: StreetNumber
has_or_had_label: "1"
description: Street number component
- value:
has_or_had_type: Locality
has_or_had_label: "Amsterdam"
description: City component

View file

@ -0,0 +1,91 @@
# ComponentType class (abstract base)
# Created per slot_fixes.yaml revision for: component_type
#
# MIGRATION NOTE (2026-01-22): Created as part of component_type migration per Rule 53.
# Abstract base class for component type taxonomy following Rule 0b (Type/Types pattern).
id: https://nde.nl/ontology/hc/class/ComponentType
name: component_type_class
title: Component Type Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
crm: http://www.cidoc-crm.org/cidoc-crm/
locn: http://www.w3.org/ns/locn#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_description
default_prefix: hc
classes:
ComponentType:
class_uri: crm:E55_Type
abstract: true
description: |
Abstract base class for component type classifications.
**DESIGN PATTERN** (Rule 0b - Type/Types Convention):
| File | Purpose |
|------|---------|
| `ComponentType.yaml` (this file) | Abstract base class |
| `ComponentTypes.yaml` | Concrete subclasses (StreetNumber, Route, etc.) |
**Purpose**:
Provides type taxonomy for categorizing different kinds of components:
- Address components (street_number, route, locality, region, country)
- System components
- Document components
**Ontological Alignment**:
- **Primary** (`class_uri`): `crm:E55_Type` - CIDOC-CRM type
- **Close**: `skos:Concept` - SKOS concept vocabulary
- **Related**: `locn:*` - W3C Location Ontology types
slots:
- has_or_had_label
- has_or_had_description
slot_usage:
has_or_had_label:
description: Human-readable label for this component type.
range: string
required: true
examples:
- value: "Street Number"
- value: "Locality"
has_or_had_description:
description: Explanation of this component type.
range: string
required: false
exact_mappings:
- crm:E55_Type
close_mappings:
- skos:Concept
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Component types applicable across all heritage domains.
custodian_types_primary: M
specificity_score: 0.35
specificity_rationale: >-
Moderately specific - component type categorization is common but has
domain-specific variations.
design_pattern: "Type/Types (Rule 0b)"
migration_info:
source_slot: component_type
migration_date: "2026-01-22"
rule: "Rule 53"
comments:
- "Abstract base class - see ComponentTypes.yaml for concrete subclasses"
- "Follows Rule 0b Type/Types naming pattern"
- "Used with Component class to classify component types"
- "Created 2026-01-22 from component_type migration (Rule 53)"

View file

@ -0,0 +1,166 @@
# ComponentTypes class (concrete subclasses)
# Created per slot_fixes.yaml revision for: component_type
#
# MIGRATION NOTE (2026-01-22): Created as part of component_type migration per Rule 53.
# Contains concrete component type subclasses per Rule 0b (Type/Types pattern).
id: https://nde.nl/ontology/hc/class/ComponentTypes
name: component_types_class
title: Component Types Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
locn: http://www.w3.org/ns/locn#
schema: http://schema.org/
imports:
- linkml:types
- ../metadata
- ./ComponentType # Import abstract base class
default_prefix: hc
classes:
# === Address Component Types ===
StreetNumber:
is_a: ComponentType
class_uri: locn:locatorDesignator
description: |
House or building number component.
**LOCN Alignment**: `locn:locatorDesignator`
**Examples**: "1", "221B", "100-102"
exact_mappings:
- locn:locatorDesignator
annotations:
specificity_score: 0.45
specificity_rationale: Address-specific component type.
Route:
is_a: ComponentType
class_uri: locn:thoroughfare
description: |
Street or road name component.
**LOCN Alignment**: `locn:thoroughfare`
**Examples**: "Museumstraat", "Baker Street", "Avenue des Champs-Élysées"
exact_mappings:
- locn:thoroughfare
annotations:
specificity_score: 0.45
specificity_rationale: Address-specific component type.
Locality:
is_a: ComponentType
class_uri: locn:postName
description: |
City, town, or village component.
**LOCN Alignment**: `locn:postName`
**Examples**: "Amsterdam", "London", "Paris"
exact_mappings:
- locn:postName
annotations:
specificity_score: 0.40
specificity_rationale: Common geographic component type.
PostalCode:
is_a: ComponentType
class_uri: locn:postCode
description: |
ZIP or postal code component.
**LOCN Alignment**: `locn:postCode`
**Examples**: "1071 XX", "SW1A 1AA", "75008"
exact_mappings:
- locn:postCode
annotations:
specificity_score: 0.45
specificity_rationale: Address-specific component type.
Subregion:
is_a: ComponentType
class_uri: locn:adminUnitL2
description: |
County, district, or second-level administrative division.
**LOCN Alignment**: `locn:adminUnitL2`
**Examples**: "Greater London", "Amsterdam", "Orange County"
exact_mappings:
- locn:adminUnitL2
annotations:
specificity_score: 0.45
specificity_rationale: Administrative geography component.
Region:
is_a: ComponentType
class_uri: locn:adminUnitL1
description: |
State, province, or first-level administrative division.
**LOCN Alignment**: `locn:adminUnitL1`
**Examples**: "Noord-Holland", "California", "Île-de-France"
exact_mappings:
- locn:adminUnitL1
annotations:
specificity_score: 0.40
specificity_rationale: Common geographic component type.
Country:
is_a: ComponentType
class_uri: schema:Country
description: |
Country component.
**Schema.org Alignment**: `schema:Country`
**Examples**: "Netherlands", "United Kingdom", "France"
exact_mappings:
- schema:Country
annotations:
specificity_score: 0.35
specificity_rationale: Fundamental geographic component type.
Premise:
is_a: ComponentType
class_uri: hc:Premise
description: |
Building or complex name component.
**Examples**: "Rijksmuseum", "British Library", "Louvre"
annotations:
specificity_score: 0.50
specificity_rationale: Building-level component type.
Subpremise:
is_a: ComponentType
class_uri: hc:Subpremise
description: |
Unit, floor, or suite within a building.
**LOCN Alignment**: Related to `locn:locatorDesignator`
**Examples**: "Floor 3", "Suite 100", "Unit A"
close_mappings:
- locn:locatorDesignator
annotations:
specificity_score: 0.55
specificity_rationale: Fine-grained location component type.

View file

@ -1,4 +1,8 @@
# Condition - Condition class
#
# Migration: condition_description → has_or_had_description (2026-01-18, Rule 53)
# Per slot_fixes.yaml revision for condition_description
#
id: https://nde.nl/ontology/hc/class/Condition
name: Condition
prefixes:
@ -7,8 +11,10 @@ prefixes:
schema: http://schema.org/
imports:
- ./ConditionType
- ./Description
- linkml:types
- ../slots/has_or_had_type
- ../slots/has_or_had_description
classes:
Condition:
class_uri: schema:OfferItemCondition
@ -21,15 +27,27 @@ classes:
Maps to schema:OfferItemCondition for interoperability with general
item condition vocabularies.
**Migration (2026-01-18)**:
- `condition_description` (inline attribute) → `has_or_had_description` slot with `Description` range
- Per slot_fixes.yaml (Rule 53, 56)
slots:
- has_or_had_type
- has_or_had_description # was: condition_description (inline) - migrated per Rule 53 (2026-01-18)
slot_usage:
has_or_had_type:
range: ConditionType
has_or_had_description: # was: condition_description - migrated per Rule 53 (2026-01-18)
range: Description
description: |
Textual description of the condition state.
MIGRATED from inline condition_description attribute per slot_fixes.yaml (Rule 53, 2026-01-18).
examples:
- value:
description_text: "Good physical condition with minor wear"
description_type: condition
description: Condition description using Description class
attributes:
condition_description:
description: Textual description of the condition state
range: string
condition_date:
description: Date when the condition was assessed
range: date

View file

@ -0,0 +1,118 @@
# ConditionPolicy class
# Created 2026-01-22 per slot_fixes.yaml revision for condition_policy (Rule 53)
#
# Generation date: 2026-01-22
# Rule compliance: 53 (slot_fixes.yaml), 39 (RiC-O naming)
#
# Policies specifying required conditions for storage, handling, display, etc.
id: https://nde.nl/ontology/hc/class/ConditionPolicy
name: condition_policy_class
title: Condition Policy Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
odrl: http://www.w3.org/ns/odrl/2/
crm: http://www.cidoc-crm.org/cidoc-crm/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
- ./Policy
- ../slots/has_or_had_requirement_status
- ./RequirementStatus
- ../slots/standards_compliance
- ../slots/is_or_was_approved_by
- ./Approver
classes:
ConditionPolicy:
class_uri: hc:ConditionPolicy
is_a: Policy
description: |
Policy specifying required conditions for heritage materials.
**DEFINITION**:
A ConditionPolicy defines normative environmental, handling, or
preservation conditions that SHOULD be maintained. This contrasts
with Condition classes which describe ACTUAL observed states.
**SUBCLASSES**:
- **StorageConditionPolicy**: Conditions for storage facilities
- **DisplayConditionPolicy**: Conditions for exhibition display
- **TransportConditionPolicy**: Conditions during transit
- **LoanConditionPolicy**: Conditions required for loans
**POLICY vs OBSERVATION PATTERN**:
```
Heritage Object
├── has_or_had_policy → ConditionPolicy (what SHOULD be)
│ ├── policy_name: "Conservation-grade storage"
│ ├── temperature_setpoint: 18°C ±2°C
│ └── humidity_setpoint: 50% ±5%
└── has_or_had_condition → Condition (what IS)
├── temperature: 22°C ✗ (exceeds policy)
└── humidity: 48% ✓ (within policy)
```
**USE CASES**:
1. **Storage Policy**: Climate requirements for archive storage
2. **Loan Policy**: Conditions required before lending objects
3. **Display Policy**: Light and climate limits for exhibition
4. **Handling Policy**: Environmental controls during movement
Created as part of condition_policy migration per slot_fixes.yaml (Rule 53).
exact_mappings:
- hc:ConditionPolicy
close_mappings:
- odrl:Policy
- crm:E29_Design_or_Procedure
slots:
- has_or_had_requirement_status
- standards_compliance
- is_or_was_approved_by
slot_usage:
has_or_had_requirement_status:
description: Requirements that must be met under this policy.
standards_compliance:
description: Standards this policy complies with (ISO, EN, etc.).
is_or_was_approved_by:
description: Authority that approved this policy.
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Condition policies apply to all heritage types.
specificity_score: 0.45
specificity_rationale: Specialized policy type for condition management.
comments:
- "Subclass of Policy for condition-related policies"
- "StorageConditionPolicy is a further specialization"
- "Created 2026-01-22 per slot_fixes.yaml condition_policy migration"
examples:
- value:
policy_name: "Archive Storage Policy"
policy_description: "Environmental requirements for archival storage per ISO/TR 19815:2018"
standards_compliance:
- "ISO/TR 19815:2018"
- "EN 16893:2018"
policy_effective_from: "2020-01-01"
description: Archive climate control policy
- value:
policy_name: "Exhibition Light Policy"
policy_description: "Maximum light exposure for sensitive materials"
policy_effective_from: "2022-06-01"
description: Display condition policy for light-sensitive materials

View file

@ -0,0 +1,125 @@
# ConditionState - State/condition at a point in time
# Created 2026-01-22 per slot_fixes.yaml revision for condition_after/condition_before (Rule 53)
#
# CIDOC-CRM: E3 Condition State - describes the physical condition of objects
# Used with final_of_the_final (post-event) and initial_of_the_initial (pre-event)
#
id: https://nde.nl/ontology/hc/class/ConditionState
name: ConditionState
title: Condition State
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
schema: http://schema.org/
imports:
- linkml:types
- ./ConditionType
- ./ConditionTypes
- ../slots/has_or_had_type
- ../slots/has_or_had_description
- ./Description
default_prefix: hc
classes:
ConditionState:
class_uri: crm:E3_Condition_State
description: |
The physical or preservation state of an object at a specific point in time.
Maps to CIDOC-CRM E3 Condition State, which describes "the physical condition
of an object at a specific time, typically relevant for conservation."
**USE CASES**:
1. **Conservation Records**: Before/after treatment states
- `initial_of_the_initial`: Pre-treatment condition
- `final_of_the_final`: Post-treatment condition
2. **Condition Assessments**: Periodic condition surveys
3. **Loan Records**: Condition at departure/return
**RELATION TO ConditionType**:
- Uses `has_or_had_type` with `ConditionType` subclasses for classification
- E.g., ExcellentCondition, GoodCondition, FairCondition, PoorCondition, CriticalCondition
**TEMPORAL SEMANTICS**:
- Each ConditionState instance represents a snapshot at a moment in time
- Multiple states can be tracked for the same object over time
**Migration (2026-01-22)**:
- `condition_after` → `final_of_the_final` + `ConditionState`
- `condition_before` → `initial_of_the_initial` + `ConditionState`
- Per slot_fixes.yaml (Rule 53)
exact_mappings:
- crm:E3_Condition_State
close_mappings:
- schema:OfferItemCondition
slots:
- has_or_had_type
- has_or_had_description
slot_usage:
has_or_had_type:
range: ConditionType
description: |
Classification of this condition state (e.g., ExcellentCondition, GoodCondition).
Uses ConditionType taxonomy from ConditionTypes.yaml.
examples:
- value: GoodCondition
description: Object in good physical condition
- value: PoorCondition
description: Object requires conservation attention
has_or_had_description:
range: Description
description: |
Detailed textual description of the condition state.
May include observations, measurements, damage descriptions.
examples:
- value:
description_text: "Minor foxing on page margins, binding intact"
description: Book condition description
attributes:
state_date:
description: Date when this condition state was observed/recorded
range: date
assessed_by:
description: Person or entity who assessed the condition
range: string
annotations:
custodian_types: '["M", "A", "L", "R"]'
custodian_types_rationale: "Primarily used by museums, archives, libraries, research centers with physical collections."
specificity_score: 0.6
specificity_rationale: "Moderately specific - used in conservation and preservation contexts."
examples:
- value:
has_or_had_type: GoodCondition
has_or_had_description:
description_text: "Object stabilized after treatment. Surface cleaned, minor losses filled."
state_date: "2026-01-15"
assessed_by: "Conservation Department"
description: Post-conservation condition state
- value:
has_or_had_type: PoorCondition
has_or_had_description:
description_text: "Significant foxing, loose binding, torn pages 45-48."
state_date: "2025-12-01"
assessed_by: "Jane Smith, Conservator"
description: Pre-treatment condition state
- value:
has_or_had_type: FairCondition
has_or_had_description:
description_text: "Minor wear consistent with age, no active deterioration."
state_date: "2026-01-20"
description: Routine condition assessment

View file

@ -1,4 +1,5 @@
# ConditionType - Abstract condition type
# Updated 2026-01-22: Expanded scope to include access/use conditions per condition slot migration
id: https://nde.nl/ontology/hc/class/ConditionType
name: ConditionType
prefixes:
@ -15,12 +16,23 @@ classes:
class_uri: skos:Concept
abstract: true
description: |
Abstract base class for condition assessment type classification.
Abstract base class for condition type classification.
Defines the taxonomy of preservation condition states such as excellent,
good, fair, poor, or critical. May also include specialized condition
categories for different material types (paper, textiles, metals, etc.)
or assessment methodologies.
Covers TWO distinct semantic domains:
**1. Physical/Preservation Conditions**:
Condition states for heritage objects (excellent, good, fair, poor, critical).
May include specialized categories for different material types.
**2. Access/Use Conditions** (added 2026-01-22):
Requirements or restrictions on accessing or using materials. Includes:
- AccessCondition: Appointment requirements, reading room rules
- UseCondition: Photography restrictions, handling requirements
- ReproductionCondition: Permissions, fees, attribution requirements
- LoanCondition: Insurance, environmental, courier requirements
- DigitizationCondition: Quality standards, metadata requirements
Per slot_fixes.yaml migration: `condition` → `poses_or_posed_condition` + Condition (Rule 53)
slots:
- has_or_had_identifier # was: type_id - migrated per Rule 56 (2026-01-16)
- has_or_had_label # was: type_label

View file

@ -1,4 +1,5 @@
# ConditionTypes - Concrete condition type subclasses
# Updated 2026-01-22: Added access condition types per condition slot migration (Rule 53)
id: https://nde.nl/ontology/hc/class/ConditionTypes
name: ConditionTypes
prefixes:
@ -8,18 +9,52 @@ imports:
- linkml:types
- ./ConditionType
classes:
# === PHYSICAL/PRESERVATION CONDITION TYPES ===
ExcellentCondition:
is_a: ConditionType
description: Excellent physical condition
description: Excellent physical condition with no significant deterioration
GoodCondition:
is_a: ConditionType
description: Good physical condition
description: Good physical condition with minor wear or aging
FairCondition:
is_a: ConditionType
description: Fair physical condition
description: Fair physical condition with moderate deterioration
PoorCondition:
is_a: ConditionType
description: Poor physical condition
description: Poor physical condition requiring conservation attention
CriticalCondition:
is_a: ConditionType
description: Critical condition requiring intervention
description: Critical condition requiring immediate intervention
# === ACCESS/USE CONDITION TYPES ===
# Added 2026-01-22 per condition slot migration (Rule 53)
AccessCondition:
is_a: ConditionType
description: |
Condition or requirement for accessing materials.
Includes appointment requirements, reading room rules,
registration requirements, or other access stipulations.
UseCondition:
is_a: ConditionType
description: |
Condition or restriction on how materials may be used.
Includes photography restrictions, handling requirements,
reproduction limitations, or citation requirements.
ReproductionCondition:
is_a: ConditionType
description: |
Condition or restriction on reproducing materials.
Includes permissions needed, fees, quality requirements,
or attribution requirements for reproductions.
LoanCondition:
is_a: ConditionType
description: |
Condition or requirement for borrowing/lending materials.
Includes insurance requirements, environmental conditions,
courier requirements, or exhibition restrictions.
DigitizationCondition:
is_a: ConditionType
description: |
Condition or requirement for digitizing materials.
Includes quality standards, metadata requirements,
or restrictions on derivative works.

View file

@ -11,24 +11,16 @@ prefixes:
imports:
- linkml:types
- ../metadata
# NOTE: This class uses confidence_value/confidence_method directly (not migrated to is_or_was_generated_by pattern)
# because it serves as the range for has_or_had_confidence_measure slot in CustodianObservation, ReconstructionActivity
- ../slots/confidence_value
- ../slots/confidence_method
- ../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
- ../slots/confidence_method
- ../slots/confidence_value
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ../slots/confidence_method
- ../slots/confidence_value
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
classes:
ConfidenceMeasure:
class_uri: prov:Confidence

View file

@ -0,0 +1,135 @@
# ConfidenceMethod - Method used to calculate confidence scores
#
# Created per slot_fixes.yaml migration for: confidence_method
# Revision: has_or_had_method + ConfidenceMethod
# Creation date: 2026-01-19
id: https://nde.nl/ontology/hc/class/ConfidenceMethod
name: confidence_method_class
title: Confidence Method
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
imports:
- linkml:types
- ../slots/has_or_had_type
- ../slots/has_or_had_description
- ../slots/has_or_had_identifier
default_prefix: hc
classes:
ConfidenceMethod:
description: >-
A method or algorithm used to calculate confidence scores.
**USAGE**:
Documents how confidence values were computed:
- Fuzzy string matching algorithms
- ML model predictions
- Rule-based validation
- XPath match verification
- Human assessment
**COMMON METHODS**:
| Method | Description |
|--------|-------------|
| fuzzy_matching | Levenshtein, Jaro-Winkler, etc. |
| xpath_validation | XPath match confidence |
| llm_classification | LLM-based entity classification |
| ml_prediction | Machine learning model output |
| human_assessment | Manual quality assessment |
| ensemble | Combined multiple methods |
class_uri: prov:Plan
exact_mappings:
- prov:Plan
close_mappings:
- schema:HowTo
slots:
- has_or_had_type
- has_or_had_description
- has_or_had_identifier
slot_usage:
has_or_had_type:
range: string
required: true
description: >-
Type of confidence calculation method.
examples:
- value: "fuzzy_matching"
description: String similarity algorithm
- value: "ml_prediction"
description: Machine learning model
- value: "human_assessment"
description: Manual human review
has_or_had_description:
range: string
required: false
description: >-
Detailed description of the method implementation.
examples:
- value: "Jaro-Winkler similarity with 0.7 threshold"
description: Fuzzy matching configuration
has_or_had_identifier:
range: string
required: false
description: >-
Identifier for the method (e.g., algorithm name, model version).
examples:
- value: "rapidfuzz-2.15.1"
description: Library version
attributes:
threshold:
range: float
description: >-
Confidence threshold used by this method for accept/reject decisions.
examples:
- value: 0.85
description: 85% threshold for acceptance
is_deterministic:
range: boolean
description: >-
Whether the method produces consistent results for same inputs.
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Confidence methods apply universally to data quality assessment.
custodian_types_primary: "*"
specificity_score: 0.25
specificity_rationale: >-
Low specificity - fundamental methodology documentation.
examples:
- value:
has_or_had_type: "fuzzy_matching"
has_or_had_description: "Levenshtein distance with ratio normalization"
has_or_had_identifier: "rapidfuzz-levenshtein"
threshold: 0.85
is_deterministic: true
description: Fuzzy string matching method
- value:
has_or_had_type: "llm_classification"
has_or_had_description: "GPT-4 based entity type classification"
has_or_had_identifier: "gpt-4-turbo-2024-04-09"
is_deterministic: false
description: LLM-based classification method
comments:
- Created from slot_fixes.yaml migration (2026-01-19)
- Documents confidence calculation methodology
- Used with ConfidenceScore class

View file

@ -0,0 +1,126 @@
# ConfidenceScore - Confidence score class for quality/certainty measurements
#
# Created per slot_fixes.yaml migration for: confidence_score
# Revision: is_or_was_generated_by + GenerationEvent + has_or_had_score + ConfidenceScore
# Creation date: 2026-01-19
id: https://nde.nl/ontology/hc/class/ConfidenceScore
name: confidence_score_class
title: Confidence Score
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
sosa: http://www.w3.org/ns/sosa/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
imports:
- linkml:types
- ../slots/has_or_had_score
- ../slots/has_or_had_method
- ../slots/has_or_had_description
default_prefix: hc
classes:
ConfidenceScore:
description: >-
A structured confidence score representing quality/certainty measurements.
**MIGRATION**:
Replaces simple `confidence_score` float slot with structured class:
- `has_or_had_score`: The numeric value (0.0-1.0)
- `has_or_had_method`: How confidence was calculated
- `has_or_had_description`: Explanation of confidence assessment
**USAGE**:
- Process quality assessment (methodology confidence)
- Match/similarity confidence (entity resolution)
- Extraction confidence (NLP/XPath extraction)
- Prediction confidence (ML model outputs)
**RANGE**: 0.0 (low confidence) to 1.0 (high confidence)
**ONTOLOGY MAPPING**:
- sosa:hasSimpleResult for the score value
- prov:value as close mapping
class_uri: sosa:Result
exact_mappings:
- sosa:Result
close_mappings:
- prov:Value
- schema:Rating
slots:
- has_or_had_score
- has_or_had_method
- has_or_had_description
slot_usage:
has_or_had_score:
range: float
minimum_value: 0.0
maximum_value: 1.0
required: true
description: >-
The confidence score value, ranging from 0.0 (no confidence) to 1.0 (complete confidence).
examples:
- value: 0.95
description: High confidence (95%)
- value: 0.50
description: Moderate confidence (50%)
- value: 0.10
description: Low confidence (10%)
has_or_had_method:
range: string
required: false
description: >-
Method or algorithm used to calculate the confidence score.
examples:
- value: "fuzzy_string_matching"
description: String similarity method
- value: "xpath_extraction_validation"
description: XPath match validation
- value: "llm_classification"
description: LLM-based classification
has_or_had_description:
range: string
required: false
description: >-
Human-readable explanation of the confidence assessment.
examples:
- value: "High confidence - exact name match with verified ISIL code"
description: Explanation for high score
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Confidence scoring applies universally across all data extraction contexts.
custodian_types_primary: "*"
specificity_score: 0.20
specificity_rationale: >-
Low specificity - fundamental measurement concept for data quality.
examples:
- value:
has_or_had_score: 0.95
has_or_had_method: "xpath_extraction"
has_or_had_description: "Exact match found at expected XPath location"
description: High confidence XPath extraction
- value:
has_or_had_score: 0.65
has_or_had_method: "fuzzy_string_matching"
has_or_had_description: "Moderate similarity to reference name (Levenshtein ratio 0.85)"
description: Moderate confidence entity resolution
comments:
- Created from slot_fixes.yaml migration (2026-01-19)
- Replaces simple confidence_score float slot
- Used with is_or_was_generated_by slot for provenance

View file

@ -0,0 +1,106 @@
# ConfidenceThreshold - Class for structured threshold values
# Created 2026-01-22 per slot_fixes.yaml revision for confidence_threshold (Rule 53)
#
id: https://nde.nl/ontology/hc/class/ConfidenceThreshold
name: ConfidenceThreshold
title: Confidence Threshold
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
- ../slots/has_or_had_description
- ./Description
default_prefix: hc
classes:
ConfidenceThreshold:
class_uri: hc:ConfidenceThreshold
description: |
A threshold value used in confidence-based processing or validation.
**DEFINITION**:
ConfidenceThreshold captures the minimum (or maximum) confidence level
required for an action or classification to be accepted. Common in:
- NLP entity extraction pipelines
- ML classification workflows
- Automated data validation
- Quality assurance checks
**THRESHOLD TYPES**:
- **CONFIDENCE**: Minimum confidence score for acceptance (0.0-1.0)
- **PROBABILITY**: Probability threshold for classification
- **QUALITY**: Minimum quality score for data acceptance
- **SIMILARITY**: Minimum similarity score for matching
**EXAMPLE**:
```yaml
has_or_had_threshold:
- threshold_value: 0.85
threshold_type: CONFIDENCE
threshold_description: "Entity must have ≥85% confidence to be extracted"
- threshold_value: 0.70
threshold_type: SIMILARITY
threshold_description: "Name matches require ≥70% similarity"
```
**Migration (2026-01-22)**:
Created as part of confidence_threshold → has_or_had_threshold migration
per slot_fixes.yaml (Rule 53).
slots:
- has_or_had_description
attributes:
threshold_value:
description: The numeric threshold value (typically 0.0-1.0 for confidence)
range: float
required: true
threshold_type:
description: Type of threshold (CONFIDENCE, PROBABILITY, QUALITY, SIMILARITY)
range: string
threshold_operator:
description: Comparison operator (GTE, LTE, GT, LT, EQ)
range: string
threshold_description:
description: Human-readable description of what this threshold controls
range: string
slot_usage:
has_or_had_description:
range: Description
description: Detailed description of the threshold and its application
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Threshold-based processing applies across heritage types."
specificity_score: 0.6
specificity_rationale: "Specialized class for methodology/processing contexts."
examples:
- value:
threshold_value: 0.85
threshold_type: CONFIDENCE
threshold_operator: GTE
threshold_description: "Entity extraction requires ≥85% confidence"
description: NLP entity extraction threshold
- value:
threshold_value: 0.70
threshold_type: SIMILARITY
threshold_operator: GTE
threshold_description: "Name matching requires ≥70% Levenshtein similarity"
description: Fuzzy matching threshold
- value:
threshold_value: 0.95
threshold_type: QUALITY
threshold_operator: GTE
threshold_description: "Data must pass 95% quality checks"
description: Data quality threshold

View file

@ -19,9 +19,15 @@ imports:
- ../slots/follow_up_date
- ../slots/funding_source
- ../slots/object_ref
- ../slots/condition_after
- ../slots/condition_before
- ../slots/condition_description
# MIGRATED 2026-01-22: condition_after → final_of_the_final + ConditionState (Rule 53)
- ../slots/final_of_the_final
# MIGRATED 2026-01-22: condition_before → initial_of_the_initial + ConditionState (Rule 53)
- ../slots/initial_of_the_initial
- ./ConditionState
- ../slots/has_or_had_condition # was: condition_description - migrated per Rule 53 (2026-01-18)
- ./Condition
- ./Description
- ../slots/has_or_had_description
- ../slots/conservation_note
- ../slots/conservator
- ../slots/conservator_affiliation
@ -82,9 +88,11 @@ classes:
- schema:HowTo
- crm:E7_Activity
slots:
- condition_after
- condition_before
- condition_description
# MIGRATED 2026-01-22: condition_after → final_of_the_final + ConditionState (Rule 53)
- final_of_the_final
# MIGRATED 2026-01-22: condition_before → initial_of_the_initial + ConditionState (Rule 53)
- initial_of_the_initial
- has_or_had_condition # was: condition_description - migrated per Rule 53 (2026-01-18)
- conservation_lab
- conservation_note
- conservator
@ -147,25 +155,56 @@ classes:
begin_of_the_begin: '1994-03-01'
end_of_the_end: '1994-09-30'
description: Six-month restoration project
condition_before:
# MIGRATED 2026-01-22: condition_before → initial_of_the_initial + ConditionState (Rule 53)
initial_of_the_initial:
required: false
range: ConservationStatusEnum
range: ConditionState
inlined: true
description: |
Condition state BEFORE treatment/intervention using structured ConditionState class.
MIGRATED from condition_before (ConservationStatusEnum) per slot_fixes.yaml (Rule 53, 2026-01-22).
examples:
- value: FAIR
description: Yellowed varnish, surface dirt
condition_after:
- value:
has_or_had_type: FairCondition
has_or_had_description:
description_text: "Yellowed varnish, surface dirt"
description: Pre-treatment condition state
# MIGRATED 2026-01-22: condition_after → final_of_the_final + ConditionState (Rule 53)
final_of_the_final:
required: false
range: ConservationStatusEnum
range: ConditionState
inlined: true
description: |
Condition state AFTER treatment/intervention using structured ConditionState class.
MIGRATED from condition_after (ConservationStatusEnum) per slot_fixes.yaml (Rule 53, 2026-01-22).
examples:
- value: EXCELLENT
description: After cleaning and restoration
condition_description:
- value:
has_or_had_type: ExcellentCondition
has_or_had_description:
description_text: "After cleaning and restoration"
description: Post-treatment condition state
has_or_had_condition: # was: condition_description - migrated per Rule 53 (2026-01-18)
required: false
range: string
range: Condition
multivalued: true
inlined_as_list: true
description: |
Structured condition assessment for this conservation record.
MIGRATED from condition_description per slot_fixes.yaml (Rule 53, 2026-01-18).
Uses Condition class with has_or_had_description for textual descriptions.
examples:
- value: "The varnish had yellowed significantly, obscuring the delicate \ntonal gradations. Surface dirt accumulation\
\ in lower quadrant.\nOld retouching visible under UV light in background area.\nCanvas stable with no active\
\ distortions.\n"
- value:
has_or_had_type: FAIR
has_or_had_description:
description_text: "The varnish had yellowed significantly, obscuring the delicate tonal gradations. Surface dirt accumulation in lower quadrant. Old retouching visible under UV light in background area. Canvas stable with no active distortions."
description_type: condition
description: Condition assessment with structured description
- value:
has_or_had_type: GOOD
has_or_had_description:
description_text: "Minor surface dirt, varnish slightly yellowed but acceptable."
description_type: condition
description: Minor condition issues
has_or_had_treatment: # was: treatment_description - migrated per Rule 53
required: false
range: Treatment
@ -357,11 +396,21 @@ classes:
record_timespan:
begin_of_the_begin: '1994-03-01'
end_of_the_end: '1994-09-30'
condition_before: FAIR
condition_after: EXCELLENT
condition_description: "The painting's varnish had yellowed significantly over time, \nobscuring the delicate tonal\
\ gradations that are characteristic \nof Vermeer's technique. Surface dirt had accumulated, particularly \nin the\
\ lower portion. Previous restorations from the early 20th \ncentury were visible under UV examination.\n"
# MIGRATED 2026-01-22: condition_before → initial_of_the_initial + ConditionState
initial_of_the_initial:
has_or_had_type: FairCondition
has_or_had_description:
description_text: "Yellowed varnish, surface dirt, old restorations visible"
# MIGRATED 2026-01-22: condition_after → final_of_the_final + ConditionState
final_of_the_final:
has_or_had_type: ExcellentCondition
has_or_had_description:
description_text: "After cleaning and restoration - colors vibrant, original tones restored"
has_or_had_condition: # was: condition_description - migrated per Rule 53 (2026-01-18)
- has_or_had_type: FAIR
has_or_had_description:
description_text: "The painting's varnish had yellowed significantly over time, obscuring the delicate tonal gradations that are characteristic of Vermeer's technique. Surface dirt had accumulated, particularly in the lower portion. Previous restorations from the early 20th century were visible under UV examination."
description_type: condition
has_or_had_treatment: # was: treatment_description - migrated per Rule 53
- treatment_type: RESTORATION
treatment_description: "Comprehensive restoration including: removal of discolored varnish \nusing carefully calibrated\
@ -411,9 +460,16 @@ classes:
object_ref: https://nde.nl/ontology/hc/object/mauritshuis-girl-pearl-earring
record_type: LOAN_CONDITION_CHECK
record_date: '2023-02-09'
condition_before: EXCELLENT
condition_description: "Pre-loan condition check for Vermeer 2023 exhibition at Rijksmuseum.\nPainting in excellent\
\ stable condition. No changes from previous \nexamination. Surface clean, varnish clear, frame secure.\n"
# MIGRATED 2026-01-22: condition_before → initial_of_the_initial + ConditionState
initial_of_the_initial:
has_or_had_type: ExcellentCondition
has_or_had_description:
description_text: "Pre-loan condition excellent, painting stable"
has_or_had_condition: # was: condition_description - migrated per Rule 53 (2026-01-18)
- has_or_had_type: EXCELLENT
has_or_had_description:
description_text: "Pre-loan condition check for Vermeer 2023 exhibition at Rijksmuseum. Painting in excellent stable condition. No changes from previous examination. Surface clean, varnish clear, frame secure."
description_type: condition
related_loan: https://nde.nl/ontology/hc/loan/mauritshuis-rijksmuseum-2023-001
conservator:
- Abbie Vandivere
@ -430,14 +486,16 @@ classes:
object_ref: https://nde.nl/ontology/hc/object/rijksmuseum-night-watch
record_type: EXAMINATION
record_date: '2019-07-08'
condition_before: GOOD
condition_description: 'Comprehensive technical examination as part of Operation Night Watch.
Canvas shows historical damage from 1715 trimming and 1911/1975 attacks.
Paint layer stable with localized losses. Varnish slightly yellowed.
'
# MIGRATED 2026-01-22: condition_before → initial_of_the_initial + ConditionState
initial_of_the_initial:
has_or_had_type: GoodCondition
has_or_had_description:
description_text: "Good condition with historical damage from 1715 trimming and 1911/1975 attacks"
has_or_had_condition: # was: condition_description - migrated per Rule 53 (2026-01-18)
- has_or_had_type: GOOD
has_or_had_description:
description_text: "Comprehensive technical examination as part of Operation Night Watch. Canvas shows historical damage from 1715 trimming and 1911/1975 attacks. Paint layer stable with localized losses. Varnish slightly yellowed."
description_type: condition
has_or_had_examination_method:
- X-RADIOGRAPHY
- MACRO_XRF_SCANNING

View file

@ -17,7 +17,10 @@ imports:
- ./Label
# REMOVED 2026-01-18: ../slots/collection_description - migrated to has_or_had_description + Description (Rule 53)
- ../slots/has_or_had_description
- ../slots/collection_type
# REMOVED 2026-01-22: ../slots/collection_type - migrated to has_or_had_content + CollectionContent (Rule 53)
- ./CollectionContent
- ./CollectionContentType
- ./CollectionContentTypes
# REMOVED 2026-01-18: ../slots/collection_scope - migrated to has_or_had_scope + CollectionScope (Rule 53)
- ../slots/has_or_had_scope
- ./CollectionScope
@ -96,7 +99,7 @@ classes:
- has_or_had_label
# REMOVED 2026-01-18: collection_scope - migrated to has_or_had_scope + CollectionScope (Rule 53)
- has_or_had_scope
- collection_type
# REMOVED 2026-01-22: collection_type - migrated to has_or_had_content + CollectionContent (Rule 53)
- has_or_had_custodian_type
- custody_history
- digital_surrogate
@ -156,9 +159,7 @@ classes:
description_text: "The Nationaal Archief holdings comprise over 137 km of archival records documenting Dutch government and society from the medieval period to the present."
description_type: collection_description
description: National archive custodian collection description
collection_type:
range: string
multivalued: true
# REMOVED 2026-01-22: collection_type slot_usage - migrated to has_or_had_content + CollectionContent (Rule 53)
has_or_had_scope: # was: collection_scope - migrated per Rule 53/56 (2026-01-18)
description: |
MIGRATED from collection_scope per slot_fixes.yaml (Rule 53/56, 2026-01-18).
@ -178,21 +179,37 @@ classes:
scope_type: archival_scope
description: Archival collection scope example
has_or_had_content:
# was: temporal_coverage - migrated per Rule 53/56 (2026-01-16)
range: Content
# was: temporal_coverage (2026-01-16) + collection_type (2026-01-22) - migrated per Rule 53/56
range: CollectionContent
multivalued: true
inlined: true
inlined_as_list: true
required: false
description: |
Content scope including temporal, spatial, and topical coverage.
MIGRATED from temporal_coverage per slot_fixes.yaml (Rule 53/56, 2026-01-16).
Content held by this collection with typed categorization.
MIGRATED from:
- temporal_coverage per slot_fixes.yaml (Rule 53/56, 2026-01-16)
- collection_type per slot_fixes.yaml (Rule 53, 2026-01-22)
CollectionContent unifies content description with type classification:
- content_description: Free-text description of the content
- content_date_range: Temporal coverage (e.g., "1602-1799")
- content_extent: Size/extent of content
- has_or_had_type → CollectionContentType: Type classification (Archival, Library, Art, etc.)
examples:
- value:
has_or_had_label: "Colonial Archives"
temporal_extent:
begin_of_the_begin: '1602-01-01'
end_of_the_end: '1800-12-31'
description: Colonial period content coverage
content_description: "Colonial period administrative records"
content_date_range: "1602-1800"
has_or_had_type:
- type_label: Archival
description: Colonial archives content with type
- value:
content_description: "Religious art and liturgical objects"
content_extent: "450 objects"
has_or_had_type:
- type_label: Art
- type_label: Liturgical
description: Religious heritage content with multiple types
extent:
range: string
required: false

View file

@ -1,6 +1,7 @@
# CustodianLegalNameClaim - Legal name claim with provenance
# Extracted from custodian_source.yaml per Rule 38 (modular schema files)
# Extraction date: 2026-01-08
# MIGRATION 2026-01-19: claim_type → has_or_had_type + ClaimType (Rule 53/56)
id: https://nde.nl/ontology/hc/classes/CustodianLegalNameClaim
name: CustodianLegalNameClaim
@ -16,7 +17,10 @@ prefixes:
imports:
- linkml:types
# ADDED 2026-01-19: claim_type migration (Rule 53/56)
- ../slots/has_or_had_type
- ./ClaimType
- ./ClaimTypes
default_range: string
@ -36,10 +40,19 @@ classes:
- prov:Entity
related_mappings:
- schema:legalName
slots:
- has_or_had_type
slot_usage:
has_or_had_type:
range: ClaimType
inlined: true
required: false
description: |
MIGRATED from claim_type per slot_fixes.yaml (Rule 53/56, 2026-01-19).
Type of claim (always "legal_name" for this class).
Uses ClaimType class hierarchy.
attributes:
claim_type:
range: string
description: Type of claim (legal_name)
# REMOVED 2026-01-19: claim_type - migrated to has_or_had_type slot (Rule 53/56)
claim_value:
range: string
required: true

View file

@ -55,7 +55,7 @@ imports:
- ../slots/is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
- ../slots/is_or_was_revision_of # was: was_revision_of - migrated per Rule 53 (2026-01-15)
- ../slots/identifier
- ../slots/collections_under_responsibility
- ../slots/is_or_was_responsible_for # was: collections_under_responsibility - migrated per Rule 53 (2026-01-19)
- ../slots/has_articles_of_association
- ../slots/registration_date
- ../slots/specificity_annotation
@ -112,7 +112,7 @@ classes:
- bf:Organization
- bibframe:Agent
slots:
- collections_under_responsibility
- is_or_was_responsible_for # was: collections_under_responsibility - migrated per Rule 53 (2026-01-19)
- dissolution_date
- governance_structure
- has_articles_of_association
@ -142,6 +142,20 @@ classes:
examples:
- value: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
description: References the Rijksmuseum custodian hub
is_or_was_responsible_for: # was: collections_under_responsibility - migrated per Rule 53 (2026-01-19)
range: LegalResponsibilityCollection
multivalued: true
description: |
Collections (informatieobjecten) for which this legal entity bears formal legal responsibility.
MIGRATED from collections_under_responsibility per slot_fixes.yaml (Rule 53, 2026-01-19).
examples:
- value: |
- https://nde.nl/ontology/hc/collection/rm-national-collection
- https://nde.nl/ontology/hc/collection/rm-library
description: Rijksmuseum foundation responsible for National Collection and Library
- value: |
- https://nde.nl/ontology/hc/collection/nha-provincial-archive
description: Noord-Hollands Archief responsible for Provincial Archive
legal_entity_type:
range: LegalEntityType
required: true

View file

@ -1,6 +1,7 @@
# CustodianNameConsensus - Consensus determination of custodian name
# Extracted from custodian_source.yaml per Rule 38 (modular schema files)
# Extraction date: 2026-01-08
# MIGRATION 2026-01-19: claim_type → has_or_had_type + ClaimType (Rule 53/56)
id: https://nde.nl/ontology/hc/classes/CustodianNameConsensus
name: CustodianNameConsensus
@ -16,12 +17,14 @@ prefixes:
imports:
- linkml:types
- ./AlternativeName
- ./FormerName
- ./MatchingSource
- ./MergeNote
# ADDED 2026-01-19: claim_type migration (Rule 53/56)
- ../slots/has_or_had_type
- ./ClaimType
- ./ClaimTypes
default_range: string
classes:
@ -41,10 +44,19 @@ classes:
- skos:Concept
related_mappings:
- schema:name
slots:
- has_or_had_type
slot_usage:
has_or_had_type:
range: ClaimType
inlined: true
required: false
description: |
MIGRATED from claim_type per slot_fixes.yaml (Rule 53/56, 2026-01-19).
Type of claim (always "custodian_name" for this class).
Uses ClaimType class hierarchy.
attributes:
claim_type:
range: string
description: Always "custodian_name"
# REMOVED 2026-01-19: claim_type - migrated to has_or_had_type slot (Rule 53/56)
claim_value:
range: string
description: Determined name

View file

@ -317,3 +317,52 @@ classes:
range: Any
description: Koninklijke Bibliotheek (KB) enrichment data for library institutions
inlined: true
web_person_claims:
range: Any
description: Person claims extracted from web sources using CH-Annotator entity extraction
inlined: true
enriched_data:
range: Any
description: Enriched institution data including alternative names, descriptions, and classification
inlined: true
legal_entity:
range: Any
description: Legal entity information including KvK number, RSIN, bank account, legal form, and ANBI status
inlined: true
collections:
range: Any
multivalued: true
inlined_as_list: true
description: Collections held by the institution
conflict_status:
range: Any
description: Conflict/destruction status for heritage at risk
inlined: true
description:
range: Any
description: Institution description (can be object with language keys like en, ar)
inlined: true
parent_organization:
range: Any
description: Parent organization information
inlined: true
time_of_destruction:
range: Any
description: Date and details of destruction for damaged heritage sites
inlined: true
wikipedia_enrichment:
range: Any
description: Wikipedia enrichment data with claims extracted from articles
inlined: true
financial_enrichment:
range: Any
description: Financial data enrichment (annual reports, funding sources)
inlined: true
publications_enrichment:
range: Any
description: Publications data enrichment (journals, reports, catalogs)
inlined: true
web_contact_data:
range: Any
description: Contact data extracted from institution website (persons, phone numbers, emails)
inlined: true

View file

@ -0,0 +1,124 @@
# DeceasedStatus class
# Structured representation of a person's death status and circumstances
#
# Migration: Created per slot_fixes.yaml revision for circumstances_of_death (line 9369)
#
# Generation date: 2026-01-19
# Rule compliance: 38 (slot centralization), 39 (RiC-O naming), 53 (slot_fixes.yaml)
id: https://nde.nl/ontology/hc/class/DeceasedStatus
name: deceased_status_class
title: Deceased Status Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/is_or_was_caused_by
- ../slots/temporal_extent
- ../slots/has_or_had_description
- ./CauseOfDeath
- ./TimeSpan
classes:
DeceasedStatus:
class_uri: schema:DeathEvent
description: |
Structured representation of a person's death status and circumstances.
**Purpose**:
Captures comprehensive information about a person's death, replacing the
simple `circumstances_of_death` string with structured data:
- **Cause**: Why/how the person died (CauseOfDeath class)
- **Temporal**: When the death occurred (TimeSpan for fuzzy dates)
- **Narrative**: Detailed description of circumstances
**Ontological Alignment**:
- **Primary** (`class_uri`): `schema:DeathEvent` - Schema.org death event
- **Related**: `crm:E69_Death` - CIDOC-CRM death event
- **Related**: `prov:End` - PROV-O activity end
**Heritage Sector Context**:
Critical for documenting:
- Heritage workers killed during armed conflicts (Gaza, Ukraine, Syria, etc.)
- Targeted attacks on cultural institutions and their staff
- Historical figures in the heritage sector
- Occupational hazards and accidents
**Privacy Considerations**:
- For recently deceased individuals, verify with institution before publishing
- Public figures and historical staff can generally be documented
- Follow local privacy laws and institutional policies
- Handle with respect and dignity
**Example - Conflict Death**:
```yaml
is_deceased:
is_or_was_caused_by:
cause_type: CONFLICT
has_or_had_description: |
Killed in Israeli airstrike on his home in Gaza City.
He was a journalist and information professional at Press House.
has_or_had_location:
city: Gaza City
country: PS
temporal_extent:
begin_of_the_begin: "2023-11-19T00:00:00Z"
end_of_the_end: "2023-11-19T23:59:59Z"
has_or_had_description: |
Additional commemorative information and sources documenting
the death of this heritage worker.
```
exact_mappings:
- schema:DeathEvent
close_mappings:
- crm:E69_Death
related_mappings:
- prov:End
slots:
- is_or_was_caused_by
- temporal_extent
- has_or_had_description
slot_usage:
is_or_was_caused_by:
range: CauseOfDeath
inlined: true
description: |
The cause of death, using the CauseOfDeath class for structured
documentation of cause type, location, and narrative.
temporal_extent:
range: TimeSpan
inlined: true
description: |
The date/time of death. Uses TimeSpan to handle uncertainty,
particularly important for deaths during conflict where exact
dates may be unknown.
has_or_had_description:
range: string
description: |
Additional narrative description of the death circumstances,
commemorative information, or source documentation.
comments:
- "Structured death information for heritage workers"
- "Replaces simple circumstances_of_death string"
- "Uses CauseOfDeath for structured cause documentation"
- "Uses TimeSpan for fuzzy death dates (important for conflict situations)"
- "Handle with respect and verify facts before documenting"
see_also:
- https://schema.org/deathDate
- https://www.cidoc-crm.org/Entity/e69-death/version-7.1.1

View file

@ -26,7 +26,10 @@ imports:
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_type
- ../slots/confidence_score
# MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore
- ../slots/is_or_was_generated_by
- ./GenerationEvent
- ./ConfidenceScore
- ../slots/start_time
- ../slots/end_time
- ../slots/has_or_had_geographic_extent # was: bounding_box - migrated per Rule 53/56 (2026-01-17)
@ -107,7 +110,8 @@ classes:
- has_or_had_identifier
- has_or_had_label
- has_or_had_type
- confidence_score
# MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by
- is_or_was_generated_by
- start_time
- end_time
- has_or_had_geographic_extent # was: bounding_box - migrated per Rule 53/56 (2026-01-17)
@ -139,16 +143,23 @@ classes:
- value: "Museum Tour"
- value: "Opening Credits"
confidence_score:
range: float
is_or_was_generated_by:
range: GenerationEvent
required: false
minimum_value: 0.0
maximum_value: 1.0
description: "Detection confidence score (0.0 to 1.0)"
inlined: true
description: >-
Generation event containing confidence score for entity detection.
MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern.
examples:
- value: 0.95
- value:
has_or_had_score:
has_or_had_score: 0.95
has_or_had_method: "computer_vision"
description: "High confidence detection"
- value: 0.62
- value:
has_or_had_score:
has_or_had_score: 0.62
has_or_had_method: "ocr_extraction"
description: "Moderate confidence, may need review"
start_time:
@ -188,9 +199,10 @@ classes:
comments:
- "Base class for automated detection results"
- "Use has_or_had_type to link to specific Type classes (TransitionType, TextType)"
- "Captures detection metadata: confidence, timestamps, bounding boxes"
- "Captures detection metadata: confidence (via is_or_was_generated_by), timestamps, bounding boxes"
- "Generated by detection activities (prov:wasGeneratedBy pattern)"
- "Rule 39 compliant: uses has_or_had_* slot naming"
- "MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + ConfidenceScore"
see_also:
- https://www.w3.org/TR/prov-o/#Entity
@ -201,7 +213,10 @@ classes:
- value:
has_or_had_identifier: "transition-001"
has_or_had_type: "TransitionType:FADE_IN"
confidence_score: 0.95
is_or_was_generated_by:
has_or_had_score:
has_or_had_score: 0.95
has_or_had_method: "video_analysis"
start_time: "00:03:15"
end_time: "00:03:17"
description: "Video transition detection (fade in)"
@ -210,6 +225,9 @@ classes:
has_or_had_identifier: "text-001"
has_or_had_type: "TextType:TITLE"
has_or_had_label: "Museum Tour Guide"
confidence_score: 0.87
is_or_was_generated_by:
has_or_had_score:
has_or_had_score: 0.87
has_or_had_method: "ocr_extraction"
has_or_had_geographic_extent: [100.0, 50.0, 400.0, 150.0] # was: bounding_box
description: "On-screen text detection"

View file

@ -34,7 +34,9 @@ imports:
- ../slots/serves_finding_aid
- ./ReconstructedEntity
- ../slots/has_or_had_data_service_endpoint
- ../slots/collection_web_address
# REMOVED 2026-01-22: ../slots/collection_web_address - migrated to has_or_had_web_page + WebPage (Rule 53)
- ../slots/has_or_had_web_page
- ./WebPage
- ../slots/fixity_check_date
- ../slots/homepage_web_address
- ../slots/iiif_support
@ -114,7 +116,8 @@ classes:
# MIGRATED from auxiliary_platforms to has_or_had_auxiliary_entities (Rule 53)
# - auxiliary_platforms
- has_or_had_auxiliary_entities
- collection_web_address
# REMOVED 2026-01-22: collection_web_address - migrated to has_or_had_web_page + WebPage (Rule 53)
- has_or_had_web_page
- has_or_had_data_service_endpoint
- fixity_check_date
- homepage_web_address
@ -171,6 +174,10 @@ classes:
enrichment_source:
range: string
description: Source of enrichment data (kien_registry, KB Netherlands Library Network, manual_curation, web_research, website_scrape_and_google_maps, etc.)
provenance:
range: Any
description: Provenance information for this platform record
inlined: true
slot_usage:
platform_id:
range: uriorcurie
@ -207,12 +214,23 @@ classes:
description: Rijksmuseum homepage
- value: https://www.europeana.eu/
description: Europeana homepage
collection_web_address:
range: uri
has_or_had_web_page: # was: collection_web_address - migrated per Rule 53 (2026-01-22)
description: |
MIGRATED from collection_web_address per slot_fixes.yaml (Rule 53, 2026-01-22).
Web pages for accessing digital collections on this platform.
Uses WebPage class for structured representation with URL and metadata.
range: WebPage
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value: https://www.rijksmuseum.nl/nl/rijksstudio
description: Rijksstudio collection access
- value:
has_or_had_label:
label_value: "Rijksstudio Collections"
has_or_had_url:
- has_or_had_url: "https://www.rijksmuseum.nl/nl/rijksstudio"
has_or_had_type: collection_access
description: Rijksstudio collection access web page
inventory_web_address:
range: uri
multivalued: true
@ -402,8 +420,12 @@ classes:
platform_type:
- DiscoveryPortal
homepage_web_address: https://www.rijksmuseum.nl/
collection_web_address:
- https://www.rijksmuseum.nl/nl/rijksstudio
has_or_had_web_page: # was: collection_web_address - migrated per Rule 53 (2026-01-22)
- has_or_had_label:
label_value: "Rijksstudio Collections"
has_or_had_url:
- has_or_had_url: "https://www.rijksmuseum.nl/nl/rijksstudio"
has_or_had_type: collection_access
api_endpoint: https://www.rijksmuseum.nl/api/
iiif_support: true
linked_data: true
@ -420,8 +442,12 @@ classes:
- AggregationPlatform
- APIService
homepage_web_address: https://www.europeana.eu/
collection_web_address:
- https://www.europeana.eu/en/collections
has_or_had_web_page: # was: collection_web_address - migrated per Rule 53 (2026-01-22)
- has_or_had_label:
label_value: "Europeana Collections Browse"
has_or_had_url:
- has_or_had_url: "https://www.europeana.eu/en/collections"
has_or_had_type: collection_access
api_endpoint: https://api.europeana.eu/record/v2/
sparql_endpoint: https://api.europeana.eu/sparql
oai_pmh_endpoint: https://www.europeana.eu/oai

View file

@ -0,0 +1,181 @@
# DigitalPlatformUserIdentifier class
#
# Created per slot_fixes.yaml revision for: comment_author_channel_id
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 56
id: https://nde.nl/ontology/hc/class/DigitalPlatformUserIdentifier
name: digital_platform_user_identifier_class
title: Digital Platform User Identifier Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
foaf: http://xmlns.com/foaf/0.1/
as: https://www.w3.org/ns/activitystreams#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_identifier
- ./Identifier
default_prefix: hc
classes:
DigitalPlatformUserIdentifier:
is_a: Identifier
class_uri: hc:DigitalPlatformUserIdentifier
description: |
Identifier for a user account on a digital platform (YouTube, Twitter, etc.).
**PURPOSE**:
Structured representation of platform-specific user identifiers,
such as YouTube channel IDs, Twitter handles, or Instagram usernames.
Replaces simple string channel_id slots with typed identifiers.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `comment_author_channel_id` string
to structured `has_or_had_author` + `Author` with `has_or_had_identifier` +
`DigitalPlatformUserIdentifier` for platform user identification.
**PLATFORM IDENTIFIER TYPES**:
| Platform | Identifier Type | Example |
|----------|-----------------|---------|
| YouTube | Channel ID | UC1234abcdef |
| Twitter/X | User ID | 12345678 |
| Instagram | Username | @museum_account |
| Facebook | Page ID | 123456789 |
| LinkedIn | Company ID | heritage-foundation |
| TikTok | User ID | museum_official |
**ONTOLOGY ALIGNMENT**:
| Ontology | Class/Property | Usage |
|----------|----------------|-------|
| **Dublin Core** | `dcterms:identifier` | Base identifier semantics |
| **Schema.org** | `schema:identifier` | Web-standard identifier |
| **FOAF** | `foaf:OnlineAccount` | Online account modeling |
| **Activity Streams** | `as:Person` | Social media activity |
exact_mappings:
- foaf:OnlineAccount
close_mappings:
- schema:identifier
related_mappings:
- dcterms:identifier
- as:actor
attributes:
platform_type:
description: |
Type of digital platform (YouTube, Twitter, Instagram, etc.).
range: string
required: true
examples:
- value: "youtube"
- value: "twitter"
- value: "instagram"
- value: "facebook"
- value: "linkedin"
- value: "tiktok"
platform_user_id:
description: |
Platform-specific user/channel/account identifier.
range: string
required: true
examples:
- value: "UC1234abcdefghijk"
description: YouTube channel ID
- value: "12345678"
description: Twitter numeric user ID
- value: "museum_official"
description: TikTok username
platform_username:
description: |
Human-readable username or handle on the platform.
May differ from platform_user_id.
range: string
required: false
examples:
- value: "@rijksmuseum"
description: Twitter handle
- value: "MuseumFan2024"
description: YouTube display name
profile_url:
description: |
URL to the user's profile page on the platform.
range: uri
required: false
examples:
- value: "https://www.youtube.com/channel/UC1234abcdef"
- value: "https://twitter.com/rijksmuseum"
slot_usage:
identifier_scheme:
description: |
Platform identifier scheme. Use lowercase platform name.
Examples: youtube_channel_id, twitter_user_id, instagram_username
ifabsent: "string(digital_platform_user_id)"
examples:
- value: "youtube_channel_id"
- value: "twitter_user_id"
identifier_value:
description: |
The actual platform user identifier value.
Inherited from Identifier class.
examples:
- value: "UC1234abcdefghijk"
description: YouTube channel ID
examples:
- value:
identifier_scheme: youtube_channel_id
identifier_value: "UCsT0YIqwnpJCM-mx7-gSA4Q"
platform_type: "youtube"
platform_user_id: "UCsT0YIqwnpJCM-mx7-gSA4Q"
platform_username: "TEDx Talks"
profile_url: "https://www.youtube.com/channel/UCsT0YIqwnpJCM-mx7-gSA4Q"
description: YouTube channel identifier with full metadata
- value:
identifier_scheme: twitter_user_id
identifier_value: "12345678"
platform_type: "twitter"
platform_user_id: "12345678"
platform_username: "@rijksmuseum"
profile_url: "https://twitter.com/rijksmuseum"
description: Twitter user identifier
- value:
identifier_scheme: youtube_channel_id
identifier_value: "UC1234abcdef"
platform_type: "youtube"
platform_user_id: "UC1234abcdef"
description: Minimal YouTube channel identifier (just ID)
comments:
- Created per slot_fixes.yaml migration from comment_author_channel_id (2026-01-22)
- Extends Identifier class with platform-specific fields
- Use for identifying users/authors on digital platforms
- Supports YouTube, Twitter, Instagram, Facebook, LinkedIn, TikTok
see_also:
- http://xmlns.com/foaf/0.1/OnlineAccount
- https://www.w3.org/ns/activitystreams
- https://developers.google.com/youtube/v3/docs/channels
annotations:
specificity_score: 0.70
specificity_rationale: >-
Specific to digital platform user identification contexts.

View file

@ -129,3 +129,13 @@ classes:
multivalued: true
inlined_as_list: true
description: Claims extracted from web pages with provenance
collection_web_addresses:
range: uri
multivalued: true
inlined_as_list: true
description: URLs to collection pages or online catalogs
inventory_web_addresses:
range: uri
multivalued: true
inlined_as_list: true
description: URLs to inventory or finding aid pages

View file

@ -14,12 +14,25 @@ prefixes:
imports:
- linkml:types
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
- ../slots/is_or_was_founded_through
- ./FoundingEvent
default_range: string
classes:
DigitalPlatformV2OrganizationProfile:
description: Detailed profile of the organization including type, scope, and description
class_uri: schema:Organization
slots:
- is_or_was_founded_through # was: founding_date attribute - migrated per Rule 53 (2026-01-22)
slot_usage:
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
description: |
The founding event for this organization.
Migrated from founding_date attribute per slot_fixes.yaml revision.
range: FoundingEvent
inlined: true
attributes:
organization_type:
range: string
@ -30,9 +43,7 @@ classes:
description:
range: string
description: Detailed description of the organization and its activities
founding_date:
range: string
description: Date or year of founding
# REMOVED: founding_date - migrated to is_or_was_founded_through (Rule 53, 2026-01-22)
history:
range: string
description: Brief organizational history

View file

@ -22,7 +22,9 @@ imports:
- ../slots/has_or_had_custodian_type
- ../slots/diocese_name
- ../slots/ecclesiastical_province
- ../slots/founding_date_diocese
# MIGRATED 2026-01-22: founding_date_diocese → is_or_was_part_of + Diocese (Rule 53)
- ../slots/is_or_was_part_of
- ./Diocese
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ../slots/has_or_had_identifier # was: wikidata_entity - migrated per Rule 53 (2026-01-15)
@ -44,7 +46,7 @@ classes:
- has_or_had_custodian_type
- diocese_name
- ecclesiastical_province
- founding_date_diocese
- is_or_was_part_of # was: founding_date_diocese - migrated per Rule 53 (2026-01-22)
- hold_or_held_record_set_type
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
@ -81,10 +83,22 @@ classes:
range: string
examples:
- value: Province of Utrecht
founding_date_diocese:
range: date
# MIGRATED 2026-01-22: founding_date_diocese → is_or_was_part_of + Diocese (Rule 53)
is_or_was_part_of:
description: |
The diocese this archive is part of.
Diocese includes founding event with temporal extent.
Migrated from founding_date_diocese per slot_fixes.yaml revision.
range: Diocese
inlined: true
examples:
- value: '0695-01-01'
- value:
diocese_name: "Diocese of Utrecht"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "0695-01-01"
end_of_the_begin: "0695-12-31"
founding_description: "Established circa 695 by St. Willibrord"
description: Diocese of Utrecht established ~695
canonical_access_rule:
range: boolean
@ -128,6 +142,13 @@ classes:
diocese_name: Diocese of 's-Hertogenbosch
archdiocese_name: Archdiocese of Utrecht
ecclesiastical_province: Province of Utrecht
founding_date_diocese: '1559-05-12'
# MIGRATED 2026-01-22: founding_date_diocese → is_or_was_part_of + Diocese (Rule 53)
is_or_was_part_of:
diocese_name: "Diocese of 's-Hertogenbosch"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "1559-05-12"
end_of_the_begin: "1559-05-12"
founding_description: "Established 12 May 1559"
canonical_access_rules: true
description: Diocesan archive example - Diocese of 's-Hertogenbosch

View file

@ -0,0 +1,170 @@
# Diocese - Ecclesiastical administrative unit class
#
# Created per slot_fixes.yaml migration for: founding_date_diocese
# Creation date: 2026-01-22
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (slot_fixes revision)
id: https://nde.nl/ontology/hc/class/Diocese
name: Diocese
title: Diocese
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
org: http://www.w3.org/ns/org#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/is_or_was_founded_through
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/description
- ./FoundingEvent
classes:
Diocese:
class_uri: org:Organization
description: |
Represents an ecclesiastical diocese (bishopric) - an administrative unit
of the Catholic, Anglican, or other episcopal churches.
**USAGE**:
Captures structured information about dioceses that heritage custodians
(particularly diocesan archives) are part of.
**WIKIDATA**: Q131896 (diocese)
**ECCLESIASTICAL HIERARCHY**:
```
Vatican / Holy See
├── Ecclesiastical Province
│ └── Archdiocese (metropolitan see)
│ └── DIOCESE (suffragan see) ← THIS CLASS
│ └── Parish
└── Religious Orders
```
**HISTORICAL SIGNIFICANCE**:
Many European dioceses were established in medieval times and often
predate civil administrative divisions. Their founding dates are
significant for understanding ecclesiastical history.
**MIGRATION NOTE**:
Created per slot_fixes.yaml revision (Rule 53, 2026-01-22).
Replaces simple `founding_date_diocese` (date) with structured class
capturing diocese identity and founding event.
slots:
- is_or_was_founded_through
- has_or_had_identifier
- has_or_had_label
- description
attributes:
diocese_id:
identifier: true
description: |
Unique identifier for this diocese.
Recommended: Use Wikidata ID or institutional URI.
range: uriorcurie
slot_uri: dcterms:identifier
examples:
- value: "wd:Q1808831"
description: Diocese of Utrecht (Wikidata)
- value: "hc:diocese/s-hertogenbosch"
description: Diocese of 's-Hertogenbosch (internal URI)
diocese_name:
description: |
Official name of the diocese.
range: string
required: true
slot_uri: schema:name
examples:
- value: "Diocese of Utrecht"
- value: "Bistum Münster"
- value: "Diocese of 's-Hertogenbosch"
archdiocese_name:
description: |
Name of the metropolitan archdiocese this diocese belongs to.
range: string
slot_uri: schema:parentOrganization
examples:
- value: "Archdiocese of Utrecht"
ecclesiastical_province:
description: |
Name of the ecclesiastical province containing this diocese.
range: string
examples:
- value: "Province of Utrecht"
denomination:
description: |
Religious denomination (Catholic, Anglican, Orthodox, etc.)
range: string
slot_uri: schema:additionalType
examples:
- value: "Roman Catholic"
- value: "Church of England"
- value: "Eastern Orthodox"
slot_usage:
is_or_was_founded_through:
description: |
The founding event of this diocese.
Many dioceses have medieval founding dates.
range: FoundingEvent
inlined: true
examples:
- value:
temporal_extent:
begin_of_the_begin: "0695-01-01"
end_of_the_begin: "0695-12-31"
founding_description: "Diocese of Utrecht established circa 695 by St. Willibrord"
description: Medieval diocese founding
exact_mappings:
- wd:Q131896
close_mappings:
- org:Organization
- schema:Organization
examples:
- value:
diocese_id: "wd:Q1808831"
diocese_name: "Diocese of Utrecht"
archdiocese_name: "Archdiocese of Utrecht"
ecclesiastical_province: "Province of Utrecht"
denomination: "Roman Catholic"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "0695-01-01"
end_of_the_begin: "0695-12-31"
founding_description: "Established circa 695 by St. Willibrord"
description: Diocese of Utrecht example
- value:
diocese_id: "hc:diocese/s-hertogenbosch"
diocese_name: "Diocese of 's-Hertogenbosch"
archdiocese_name: "Archdiocese of Utrecht"
ecclesiastical_province: "Province of Utrecht"
denomination: "Roman Catholic"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "1559-05-12"
end_of_the_begin: "1559-05-12"
founding_description: "Established 12 May 1559 during reorganization of Dutch church"
description: Diocese of 's-Hertogenbosch example
annotations:
custodian_types: '["H"]'
custodian_types_rationale: "Dioceses are ecclesiastical organizations relevant to Holy Sites (H) heritage custodians."
specificity_score: "0.75"
specificity_rationale: "Fairly specific - primarily relevant for diocesan archives and religious heritage."

View file

@ -11,7 +11,11 @@ imports:
# REMOVED 2026-01-15: ../slots/annual_participants - migrated to has_or_had_annual_participant_count
# REMOVED 2026-01-15: ../slots/booking_required - migrated to is_or_was_required
- ../slots/is_or_was_required
- ../slots/classroom_count
# REMOVED 2026-01-19: ../slots/classroom_count - migrated to has_or_had_facility with Classroom
- ../slots/has_or_had_facility
- ./Classroom
- ./RoomUnit
- ../enums/RoomUnitTypeEnum
- ../slots/has_or_had_custodian_type
# Shared slots (replacing education_center_* slots per Rule 53)
- ../slots/has_or_had_identifier
@ -94,7 +98,8 @@ classes:
- has_or_had_annual_participant_count
# REMOVED 2026-01-15: booking_required - migrated to is_or_was_required
- is_or_was_required
- classroom_count
# REMOVED 2026-01-19: classroom_count - migrated to has_or_had_facility with Classroom
- has_or_had_facility
- has_or_had_custodian_type
# MIGRATED 2026-01-15: education_center_* slots replaced with shared slots per Rule 53
- has_or_had_identifier # was: education_center_id
@ -184,11 +189,31 @@ classes:
description: Professional development
- value: Genealogy workshops
description: Specialized workshops
classroom_count:
range: integer
# REMOVED 2026-01-19: classroom_count - migrated to has_or_had_facility with Classroom
# classroom_count:
# range: integer
# examples:
# - value: 4
# description: 4 classrooms
has_or_had_facility:
range: Classroom
inlined: true
multivalued: true
description: |
Classroom facilities at this education center.
MIGRATED 2026-01-19: Replaces classroom_count slot per Rule 53.
Uses Classroom class (subclass of Facility) with has_or_had_quantity
and has_or_had_unit for structured room counting.
examples:
- value: 4
description: 4 classrooms
- value: |
facility_name: "Main Classroom Wing"
has_or_had_quantity:
numeric_value: 4
has_or_had_unit:
unit_type: CLASSROOM
seating_capacity: 120
av_equipped: true
description: 4 classroom facility
# REMOVED 2026-01-14: workshop_space - migrated to has_or_had_quantity with Quantity
# workshop_space:
# range: integer
@ -291,7 +316,16 @@ classes:
- Interactive workshops
- Family treasure hunts
- Teacher training days
classroom_count: 4
# MIGRATED 2026-01-19: classroom_count → has_or_had_facility + Classroom
has_or_had_facility:
- facility_name: "Education Wing Classrooms"
has_or_had_quantity:
numeric_value: 4
has_or_had_unit:
unit_type: CLASSROOM
seating_capacity: 120
av_equipped: true
flexible_seating: true
has_or_had_quantity:
value: 2
unit: workshop_spaces
@ -322,7 +356,15 @@ classes:
- Genealogy workshops
- Paleography basics
- Teacher curriculum support
classroom_count: 2
# MIGRATED 2026-01-19: classroom_count → has_or_had_facility + Classroom
has_or_had_facility:
- facility_name: "Learning Rooms"
has_or_had_quantity:
numeric_value: 2
has_or_had_unit:
unit_type: CLASSROOM
seating_capacity: 40
av_equipped: true
max_group_size: 20
has_av_equipment: true
is_or_was_required: true

View file

@ -66,7 +66,8 @@ imports:
- ./TemplateSpecificityTypes
- ../slots/education_level
- ../slots/has_or_had_academic_program
- ../slots/collection_access
- ../slots/offers_or_offered_access
- ./Access
# REMOVED 2026-01-15: teaching_collection, student_service imports - defined locally as attributes, slots archived
- ../slots/has_or_had_accreditation
- ../slots/education_provider_subtype
@ -367,77 +368,15 @@ classes:
range: string
multivalued: true
slot_uri: aiiso:programme
collection_access:
description: 'Access policies for heritage collections, especially concerning student and faculty use.
Academic Community Access:
- Students enrolled: Undergraduate, graduate, doctoral students
- Faculty and staff: Teaching faculty, research faculty, emeritus
- Academic affiliates: Visiting scholars, postdocs, adjuncts
Curriculum Integration:
- Class visits: Scheduled visits as part of coursework
- Hands-on learning: Object-based teaching with collection items
- Laboratory access: Specimen examination for science students
- Research use: Thesis/dissertation research, faculty research projects
External Access:
- Public visiting hours: Open to general public (specific days/times)
- Appointment required: By-appointment access for researchers
- Restricted access: Academic credentials required
- Membership programs: Community membership for non-affiliated users
Digital Access:
- Online catalog: Searchable collection database
- Digital collections: Digitized materials available online
- Virtual exhibitions: Online exhibition programming
- Learning management integration: Collections in course management systems
Special Restrictions:
- Conservation concerns: Fragile materials limited access
- Donor restrictions: Bequest conditions limiting use
- Privacy restrictions: Student records, personnel files
- Security restrictions: High-value items in secure storage
Examples:
- "Open to enrolled students and faculty; public by appointment"
- "Class visits scheduled through instructors; public gallery hours Wednesday-Saturday"
- "Digital collections open access; physical materials require university ID"
This field maps to Schema.org and CIDOC-CRM access properties.
'
range: string
slot_uri: schema:publicAccess
offers_or_offered_access:
description: >-
Access offerings for heritage collections, especially concerning student and faculty use.
Uses structured Access class to capture access type, eligible users, conditions, and restrictions.
Education providers typically offer multiple access types for different user groups.
range: Access
multivalued: true
inlined: true
inlined_as_list: true
teaching_collection:
description: 'Description of collections specifically maintained for educational purposes and

View file

@ -20,7 +20,9 @@ imports:
- ../slots/legal_jurisdiction
- ../slots/external_identifier
- ../slots/has_or_had_area_served
- ../slots/founding_date
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
- ../slots/is_or_was_founded_through
- ./FoundingEvent
- ../slots/funding_focus
- ../slots/funding_scheme
- ../slots/governance_authority
@ -48,7 +50,7 @@ imports:
- ../slots/description
- ../slots/dissolution_date
- ../slots/external_identifier
- ../slots/founding_date
# REMOVED: ../slots/founding_date - migrated to is_or_was_founded_through (Rule 53, 2026-01-22)
- ../slots/governance_authority
- ../slots/has_or_had_area_served
- ../slots/has_or_had_member_custodian
@ -67,7 +69,7 @@ imports:
- ../slots/description
- ../slots/dissolution_date
- ../slots/external_identifier
- ../slots/founding_date
# REMOVED: ../slots/founding_date - migrated to is_or_was_founded_through (Rule 53, 2026-01-22)
- ../slots/governance_authority
- ../slots/has_or_had_area_served
- ../slots/has_or_had_member_custodian
@ -133,7 +135,7 @@ classes:
- description
- dissolution_date
- external_identifier
- founding_date
- is_or_was_founded_through # was: founding_date - migrated per Rule 53 (2026-01-22)
- governance_authority
- id
- legal_jurisdiction
@ -185,11 +187,20 @@ classes:
- value: Government ministry
- value: Non-profit foundation
- value: Professional association
founding_date:
range: date
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
description: |
The founding event for this encompassing body.
Migrated from founding_date per slot_fixes.yaml revision.
range: FoundingEvent
inlined: true
examples:
- value: '1965-07-01'
description: Ministry established July 1965
- value:
temporal_extent:
begin_of_the_begin: "1965-07-01"
end_of_the_begin: "1965-07-01"
founding_description: "Ministry established July 1965"
description: Ministry founding event (exact date)
dissolution_date:
range: date
examples:

View file

@ -16,7 +16,6 @@ imports:
- ./TimeSpan
- ../enums/EventTypeEnum
- ../slots/event_description
- ../slots/confidence_score
- ../slots/event_id
- ../slots/documentation_source
- ../slots/event_label
@ -28,32 +27,12 @@ imports:
- ../slots/takes_or_took_place_at # was: took_place_at - migrated per Rule 53
- ./SpecificityAnnotation
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ../slots/confidence_score
- ../slots/documentation_source
- ../slots/event_description
- ../slots/event_id
- ../slots/event_label
- ../slots/has_or_had_involved_actor
- ../slots/has_timespan
- ../slots/hypernym_event_type
- ../slots/specificity_annotation
- ../slots/takes_or_took_place_at
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ../slots/confidence_score
- ../slots/documentation_source
- ../slots/event_description
- ../slots/event_id
- ../slots/event_label
- ../slots/has_or_had_involved_actor
- ../slots/has_timespan
- ../slots/hypernym_event_type
- ../slots/specificity_annotation
- ../slots/takes_or_took_place_at
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
# MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore
- ../slots/is_or_was_generated_by
- ./GenerationEvent
- ./ConfidenceScore
classes:
Event:
class_uri: crm:E5_Event
@ -105,7 +84,6 @@ classes:
- crm:E85_Joining
- crm:E86_Leaving
slots:
- confidence_score
- documentation_source
- event_description
- event_id
@ -116,6 +94,7 @@ classes:
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- takes_or_took_place_at # was: took_place_at - migrated per Rule 53
- is_or_was_generated_by # MIGRATED 2026-01-19: replaces confidence_score
slot_usage:
event_id:
required: true
@ -124,6 +103,19 @@ classes:
required: true
has_timespan:
required: false
is_or_was_generated_by:
range: GenerationEvent
required: false
inlined: true
description: >-
Generation event containing confidence score for this event.
MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern.
examples:
- value:
has_or_had_score:
has_or_had_score: 0.95
has_or_had_method: "documentation_verification"
description: High confidence from verified documentation
comments:
- Event is the hub class for all temporal phenomena in the HC ontology
- Domain-specific events (OrganizationalChangeEvent, CollectionEvent) can inherit from Event
@ -131,6 +123,7 @@ classes:
- Actor links (involved_actors) connect events to both persons and organizations
- hypernym_event_type provides cross-domain event queries
- 'Future: Add participated_in_events slot to Custodian and Person for inverse navigation'
- 'MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + ConfidenceScore'
examples:
- value:
event_id: https://nde.nl/ontology/hc/event/nha-merger-2001
@ -142,4 +135,8 @@ classes:
has_or_had_involved_actor:
- https://nde.nl/ontology/hc/nl-nh-haa-a-gah
- https://nde.nl/ontology/hc/nl-nh-haa-a-ranh
description: Merger of two archives to form Noord-Hollands Archief
is_or_was_generated_by:
has_or_had_score:
has_or_had_score: 0.95
has_or_had_method: documentation_verification
description: Merger of two archives to form Noord-Hollands Archief with structured confidence score

View file

@ -426,15 +426,24 @@ classes:
range: ConservationRecord
multivalued: true
inlined: true
# MIGRATED 2026-01-22: condition_before/after → initial_of_the_initial/final_of_the_final + ConditionState (Rule 53)
examples:
- value:
record_id: https://nde.nl/ontology/hc/conservation/mauritshuis-gwpe-1994
record_type: TREATMENT
record_date: '1994-03-15'
condition_before: FAIR
condition_after: GOOD
treatment_description: Major restoration including cleaning of yellowed varnish
conservator_name: Jorgen Wadum
initial_of_the_initial:
has_or_had_type: FairCondition
has_or_had_description:
description_text: "Yellowed varnish, surface dirt"
final_of_the_final:
has_or_had_type: GoodCondition
has_or_had_description:
description_text: "After restoration - varnish cleaned"
has_or_had_treatment:
- treatment_type: CLEANING
treatment_description: "Major restoration including cleaning of yellowed varnish"
treated_by: "Jorgen Wadum"
description: 1994 restoration of Girl with a Pearl Earring
has_or_had_provenance_event:
required: false

View file

@ -25,7 +25,10 @@ imports:
- ../slots/has_or_had_identifier
- ./WikiDataIdentifier
- ../slots/exhibition_type
- ../slots/co_organized_by
# REMOVED 2026-01-19: co_organized_by - migrated to has_or_had_organizer + Organizer (Rule 53)
- ../slots/has_or_had_organizer
- ./Organizer
- ./OrganizerRole
- ../slots/curated_by
- ../slots/has_or_had_custodian_type
- ../slots/exhibition_catalog_url
@ -92,7 +95,8 @@ classes:
- schema:Event
- crm:E4_Period
slots:
- co_organized_by
# REMOVED 2026-01-19: co_organized_by - migrated to has_or_had_organizer + Organizer (Rule 53)
- has_or_had_organizer
- curated_by
- has_or_had_custodian_type
- end_date
@ -168,13 +172,42 @@ classes:
examples:
- value: https://nde.nl/ontology/hc/custodian/nl/rijksmuseum
- value: https://nde.nl/ontology/hc/custodian/nl/mauritshuis
co_organized_by:
# REMOVED 2026-01-19: co_organized_by - migrated to has_or_had_organizer + Organizer (Rule 53)
# co_organized_by:
# required: false
# range: uriorcurie
# multivalued: true
# inlined: false
# examples:
# - value: https://nde.nl/ontology/hc/custodian/us/national-gallery-washington
has_or_had_organizer:
required: false
range: uriorcurie
range: Organizer
multivalued: true
inlined: false
inlined: true
inlined_as_list: true
description: |
Organizations that organize this exhibition.
MIGRATED 2026-01-19: Replaces co_organized_by slot per Rule 53.
Includes primary organizers, co-organizers, sponsors with curatorial input.
examples:
- value: https://nde.nl/ontology/hc/custodian/us/national-gallery-washington
- value:
organizer_entity: https://nde.nl/ontology/hc/custodian/nl/rijksmuseum
has_or_had_role:
role_type: PRIMARY
description: "Rijksmuseum as primary organizer"
- value:
organizer_entity: https://nde.nl/ontology/hc/custodian/nl/mauritshuis
has_or_had_role:
role_type: CO_ORGANIZER
organizer_contribution: "Provided key loans including Girl with a Pearl Earring"
description: "Mauritshuis as co-organizer"
- value:
organizer_entity: https://nde.nl/ontology/hc/custodian/us/national-gallery-washington
has_or_had_role:
role_type: LENDING_INSTITUTION
organizer_contribution: "Lent Woman Holding a Balance"
description: "National Gallery Washington as lending institution"
curated_by:
required: false
range: string
@ -360,10 +393,15 @@ classes:
'
exhibition_type: BLOCKBUSTER
organized_by:
- https://nde.nl/ontology/hc/custodian/nl/rijksmuseum
co_organized_by:
- https://nde.nl/ontology/hc/custodian/nl/mauritshuis
# MIGRATED 2026-01-19: organized_by/co_organized_by → has_or_had_organizer + Organizer (Rule 53)
has_or_had_organizer:
- organizer_entity: https://nde.nl/ontology/hc/custodian/nl/rijksmuseum
has_or_had_role:
role_type: PRIMARY
- organizer_entity: https://nde.nl/ontology/hc/custodian/nl/mauritshuis
has_or_had_role:
role_type: CO_ORGANIZER
organizer_contribution: "Provided Girl with a Pearl Earring and 5 other Vermeers"
curated_by:
- Pieter Roelofs
- Gregor J.M. Weber
@ -407,8 +445,10 @@ classes:
exhibition_name: Voices from the War
exhibition_subtitle: Personal Stories from World War II Archives
exhibition_type: ARCHIVAL
organized_by:
- https://nde.nl/ontology/hc/custodian/nl/nationaal-archief
has_or_had_organizer:
- organizer_entity: https://nde.nl/ontology/hc/custodian/nl/nationaal-archief
has_or_had_role:
role_type: PRIMARY
start_date: '2024-05-04'
end_date: '2024-11-11'
exhibition_location:
@ -428,8 +468,10 @@ classes:
'
exhibition_type: PERMANENT
organized_by:
- https://nde.nl/ontology/hc/custodian/nl/rijksmuseum
has_or_had_organizer:
- organizer_entity: https://nde.nl/ontology/hc/custodian/nl/rijksmuseum
has_or_had_role:
role_type: PRIMARY
exhibition_venue: Gallery of Honour (Eregalerij)
featured_work:
- The Night Watch (Rembrandt)

View file

@ -16,15 +16,17 @@ prefixes:
imports:
- linkml:types
- ../slots/description
# REMOVED: ../slots/has_or_had_amount - file does not exist, was broken import
- ../slots/has_or_had_currency
- ../slots/currency
# MIGRATED 2026-01-22: amount → has_or_had_quantity per slot_fixes.yaml feedback F3
- ../slots/has_or_had_quantity
- ./Quantity
# ARCHIVED: ../slots/has_or_had_currency - currency is now part of Quantity.has_or_had_measurement_unit
# ARCHIVED: ../slots/currency - currency is now part of Quantity.has_or_had_measurement_unit
# ARCHIVED: ../slots/valid_from - use temporal_extent instead
# ARCHIVED: ../slots/valid_to - use temporal_extent instead
- ../slots/temporal_extent # was: valid_from + valid_to
- ../enums/ExpenseTypeEnum
- ./TimeSpan
- ../slots/amount # Internal field of Expenses - decimal amount combined with currency (Rule 53 exception)
# ARCHIVED: ../slots/amount → has_or_had_quantity (2026-01-22)
- ../slots/expense_type
default_prefix: hc
@ -78,18 +80,27 @@ classes:
**USAGE**:
The `has_or_had_expenses` slot links entities to Expenses instances:
The `has_or_had_expenses` slot links entities to Expenses instances.
Since 2026-01-22, uses `has_or_had_quantity` instead of separate amount/currency:
```yaml
financial_statement:
has_or_had_expenses:
- expense_type: ADMINISTRATIVE
amount: 10000000.0
currency: EUR
has_or_had_quantity:
quantity_value: 10000000.0
quantity_type: BUDGET_AMOUNT
has_or_had_measurement_unit:
unit_symbol: EUR
unit_type: CURRENCY
description: "Management and general expenses FY2023"
- expense_type: PROGRAM
amount: 62000000.0
currency: EUR
has_or_had_quantity:
quantity_value: 62000000.0
quantity_type: BUDGET_AMOUNT
has_or_had_measurement_unit:
unit_symbol: EUR
unit_type: CURRENCY
description: "Program service expenses FY2023"
```
@ -106,8 +117,7 @@ classes:
- frapo:hasFunding
slots:
- expense_type
- amount
- currency
- has_or_had_quantity # was: amount + currency (migrated 2026-01-22)
- description
- temporal_extent # was: valid_from + valid_to
slot_usage:
@ -115,18 +125,16 @@ classes:
range: ExpenseTypeEnum
required: true
description: Functional expense classification.
amount:
range: decimal
has_or_had_quantity:
range: Quantity
required: true
description: Expense amount as decimal value.
currency:
range: string
required: true
description: ISO 4217 currency code (EUR, USD, GBP).
examples:
- value: EUR
- value: USD
- value: GBP
inlined: true
description: >-
Expense amount as a Quantity instance. Replaces separate amount + currency fields.
The Quantity contains:
- quantity_value: decimal amount (e.g., 10000000.0)
- has_or_had_measurement_unit: MeasureUnit with currency code (e.g., EUR, USD, GBP)
- quantity_type: BUDGET_AMOUNT
description:
range: string
required: false
@ -148,8 +156,12 @@ classes:
examples:
- value:
expense_type: ADMINISTRATIVE
amount: 10000000.0
currency: EUR
has_or_had_quantity:
quantity_value: 10000000.0
quantity_type: BUDGET_AMOUNT
has_or_had_measurement_unit:
unit_symbol: EUR
unit_type: CURRENCY
description: "Management and general expenses for FY2023"
temporal_extent:
begin_of_the_begin: "2023-01-01"
@ -157,8 +169,12 @@ classes:
description: Administrative expense for Dutch museum
- value:
expense_type: PROGRAM
amount: 62000000.0
currency: EUR
has_or_had_quantity:
quantity_value: 62000000.0
quantity_type: BUDGET_AMOUNT
has_or_had_measurement_unit:
unit_symbol: EUR
unit_type: CURRENCY
description: "Program service expenses including exhibitions, conservation, education"
temporal_extent:
begin_of_the_begin: "2023-01-01"
@ -166,8 +182,12 @@ classes:
description: Program expense for major museum
- value:
expense_type: FUNDRAISING
amount: 3200000.0
currency: EUR
has_or_had_quantity:
quantity_value: 3200000.0
quantity_type: BUDGET_AMOUNT
has_or_had_measurement_unit:
unit_symbol: EUR
unit_type: CURRENCY
description: "Fundraising and donor relations expenses"
description: Fundraising expense

View file

@ -0,0 +1,74 @@
id: https://nde.nl/ontology/hc/class/ExtractionMethod
name: ExtractionMethod
title: ExtractionMethod Class - Methods for Data Extraction
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
nif: http://persistence.uni-leipzig.org/nlp2rdf/ontologies/nif-core#
imports:
- linkml:types
- ../slots/has_or_had_label
- ./Label
default_prefix: hc
classes:
ExtractionMethod:
class_uri: prov:SoftwareAgent
description: |
A method or technique used to extract data from a source.
Extraction methods define HOW data was obtained, providing
transparency and reproducibility for claim provenance.
**Common Extraction Methods**:
- `xpath_exact_match`: XPath query with exact text match
- `xpath_fuzzy_match`: XPath query with fuzzy text matching
- `text_search`: Full-text search within document
- `css_selector`: CSS selector for element location
- `json_ld_parse`: Parsing structured JSON-LD data
- `regex_pattern`: Regular expression pattern matching
- `nlp_ner`: Named Entity Recognition via NLP
- `manual_annotation`: Human annotator extraction
**Ontology Mapping Rationale**:
- class_uri is prov:SoftwareAgent because extraction methods
are typically software-based agents that perform extraction
- close_mappings includes nif:Context as NIF models text
extraction contexts and methods
**MIGRATION NOTE (2026-01-19)**:
Created per slot_fixes.yaml revision for claim_extraction_method
slot migration (Rule 53/56).
exact_mappings:
- prov:SoftwareAgent
close_mappings:
- nif:Context
- schema:HowTo
slots:
- has_or_had_label
slot_usage:
has_or_had_label:
description: |
The name/identifier of the extraction method.
Examples: "xpath_exact_match", "nlp_ner", "json_ld_parse"
range: Label
inlined: true
required: true
comments:
- 'CREATED 2026-01-19: Per slot_fixes.yaml revision (Rule 53/56)'
- Replaces string-valued claim_extraction_method slot
- Enables structured representation of extraction techniques
examples:
- value:
has_or_had_label:
has_or_had_label: xpath_exact_match
description: XPath extraction with exact text matching
- value:
has_or_had_label:
has_or_had_label: nlp_ner
description: Named Entity Recognition extraction
- value:
has_or_had_label:
has_or_had_label: json_ld_parse
description: Structured data extraction from JSON-LD

View file

@ -14,7 +14,8 @@ imports:
- ../slots/temporal_extent # was: valid_from + valid_to - migrated per Rule 53
- ./TimeSpan
# REMOVED 2026-01-14: valid_from + valid_to - migrated to temporal_extent (Rule 53)
- ../slots/classifies_place
# classifies_place REMOVED - migrated to classifies_or_classified (Rule 53, 2026-01-19)
- ../slots/classifies_or_classified
- ../slots/has_or_had_custodian_type
- ../slots/feature_description
- ../slots/feature_language
@ -62,7 +63,8 @@ classes:
- dcterms:Location
- geo:Feature
slots:
- classifies_place
# classifies_place REMOVED - migrated to classifies_or_classified (Rule 53, 2026-01-19)
- classifies_or_classified
- has_or_had_custodian_type
- feature_description
- feature_language
@ -111,7 +113,11 @@ classes:
description: Museum building characteristics
- value: 17th-century canal mansion with ornate gable facade
description: Mansion architectural features
classifies_place:
# classifies_place REMOVED - migrated to classifies_or_classified (Rule 53, 2026-01-19)
classifies_or_classified:
description: >-
Link to the CustodianPlace that this feature type classifies.
MIGRATED from classifies_place per slot_fixes.yaml (Rule 53, 2026-01-19).
range: CustodianPlace
required: true
examples:
@ -168,7 +174,7 @@ classes:
feature_language: nl
feature_description: Neo-Gothic museum building designed by P.J.H. Cuypers, opened 1885
feature_note: Rijksmonument, national heritage building
classifies_place: https://nde.nl/ontology/hc/place/rijksmuseum-ams
classifies_or_classified: https://nde.nl/ontology/hc/place/rijksmuseum-ams # was: classifies_place - migrated per Rule 53
is_or_was_derived_from: # was: was_derived_from - migrated per Rule 53
- https://w3id.org/heritage/observation/heritage-register-entry
is_or_was_generated_by: # was: was_generated_by - migrated per Rule 53 https://w3id.org/heritage/activity/feature-classification-2025
@ -180,7 +186,7 @@ classes:
feature_language: en
feature_description: 17th-century patrician mansion with ornate gable facade
feature_note: Classified as mansion based on architectural survey
classifies_place: https://nde.nl/ontology/hc/place/herenhuis-schilderswijk
classifies_or_classified: https://nde.nl/ontology/hc/place/herenhuis-schilderswijk # was: classifies_place - migrated per Rule 53
is_or_was_derived_from: # was: was_derived_from - migrated per Rule 53
- https://w3id.org/heritage/observation/notarial-deed-1850
valid_from: '1650-01-01'
@ -190,7 +196,7 @@ classes:
feature_name: Medieval parish church
feature_language: en
feature_description: Gothic church building with 14th-century tower
classifies_place: https://nde.nl/ontology/hc/place/oude-kerk-ams
classifies_or_classified: https://nde.nl/ontology/hc/place/oude-kerk-ams # was: classifies_place - migrated per Rule 53
is_or_was_derived_from: # was: was_derived_from - migrated per Rule 53
- https://w3id.org/heritage/observation/church-archive-catalog
valid_from: '1306-01-01'

View file

@ -43,13 +43,17 @@ imports:
- ../slots/has_or_had_provenance_path
- ./XPath
- ../slots/css_selector
- ../slots/confidence
# REMOVED 2026-01-19: ../slots/confidence - migrated to is_or_was_generated_by + GenerationEvent + ConfidenceScore (Rule 53)
- ../slots/is_or_was_generated_by
- ./GenerationEvent
- ./ConfidenceScore
- ./ConfidenceMethod
- ../slots/html_file
# REMOVED 2026-01-18: ../slots/claim_id - migrated to has_or_had_identifier + Identifier (Rule 53)
- ../slots/has_or_had_identifier
- ./Identifier
- ../slots/claim_type
- ../slots/claim_value
# REMOVED 2026-01-19: ../slots/claim_type - migrated to has_or_had_type + ClaimType (Rule 53)
# REMOVED 2026-01-18: ../slots/claim_value - migrated to has_or_had_content + Content (Rule 53) - import via WebClaim
- ../slots/source_url
- ../slots/has_or_had_label # was: title - migrated per Rule 53
- ../slots/date
@ -61,6 +65,7 @@ imports:
# - ../slots/publication_date # ARCHIVED 2026-01-17 - migrated per Rule 53/56
- ../slots/is_or_was_published_at # was: publication_date - migrated per Rule 53/56 (2026-01-17)
- ./PublicationEvent # for is_or_was_published_at range
- ./Quantity # for has_or_had_quantity range (was: claims_count) - added 2026-01-19
- ../slots/isbn
- ../slots/has_or_had_access_condition
- ../slots/is_or_was_access_restricted
@ -71,8 +76,12 @@ imports:
- ../slots/card_title
- ../slots/card_title_en
- ../slots/card_url
- ../slots/claims_count
- ../slots/colonial
- ../slots/has_or_had_quantity # was: claims_count - migrated per Rule 53 (2026-01-19)
# REMOVED 2026-01-22: ../slots/colonial - migrated to includes_or_included + GeoSpatialPlace + is_or_was_categorized_as + ColonialStatus (Rule 53)
- ../slots/includes_or_included
- ./GeoSpatialPlace
- ../slots/is_or_was_categorized_as
- ./ColonialStatus
- ../slots/content_block
- ../slots/crawler_version
- ../slots/custodian
@ -86,8 +95,12 @@ imports:
- ../slots/finding_aid_note
- ../slots/finding_aid_scope_note
- ../slots/has_or_had_type
- ../slots/format
- ../slots/fr
# MIGRATED 2026-01-22: format → has_or_had_format + Format (Rule 53)
- ../slots/has_or_had_format
- ./Format
# MIGRATED 2026-01-22: fr → has_or_had_language + Language (Rule 53)
- ../slots/has_or_had_language
- ./Language
- ../slots/full_name
- ../slots/geographic_coverage
- ../slots/ghcid
@ -265,7 +278,7 @@ classes:
- has_or_had_external_resource
- finding_aid_note
- has_or_had_type
- format
- has_or_had_format # was: format - migrated per Rule 53 (2026-01-22)
- geographic_coverage
- id
- isbn
@ -393,24 +406,61 @@ classes:
- http://id.loc.gov/ontologies/bibframe/
MultilingualText:
class_uri: skos:Concept
description: 'Container for multilingual text values (titles, descriptions).
Supports any ISO 639-1 language code as a slot name.
Common slots: nl (Dutch), en (English), de (German), fr (French).
'
description: |
Container for multilingual text values (titles, descriptions).
**MIGRATED 2026-01-22**: Language-specific slots (de, en, fr, nl) migrated to
unified `has_or_had_language` slot with `Language` class per Rule 53.
**Old Pattern** (deprecated):
```yaml
nl: "Nederlandse tekst"
en: "English text"
fr: "Texte français"
```
**New Pattern**:
```yaml
has_or_had_language:
- iso_639_1: "nl"
language_name: "Dutch"
text_content: "Nederlandse tekst"
- iso_639_1: "en"
language_name: "English"
text_content: "English text"
- iso_639_1: "fr"
language_name: "French"
text_content: "Texte français"
```
slots:
- de
- en
- fr
- nl
# MIGRATED 2026-01-22: de, en, fr, nl → has_or_had_language + Language (Rule 53)
- has_or_had_language
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
slot_usage:
has_or_had_language:
range: Language
multivalued: true
inlined: true
inlined_as_list: true
description: |
Language-tagged text content.
MIGRATED from de/en/fr/nl slots per slot_fixes.yaml (Rule 53, 2026-01-22).
Use Language class with iso_639_1, language_name, and text_content.
examples:
- value: |
- iso_639_1: "nl"
language_name: "Dutch"
text_content: "Nederlandse tekst"
- iso_639_1: "en"
language_name: "English"
text_content: "English text"
description: Multilingual text with Dutch and English versions
comments:
- At least one language slot should be populated
- At least one language entry should be populated
- nl is primary for Dutch archives
- MIGRATED 2026-01-22 from separate de/en/fr/nl slots to unified has_or_had_language
CustodianReference:
class_uri: rico:Agent
description: 'Reference to the heritage custodian that created/maintains this finding aid.
@ -553,7 +603,9 @@ classes:
'
slots:
- colonial
# MIGRATED 2026-01-22: colonial → includes_or_included + GeoSpatialPlace + is_or_was_categorized_as + ColonialStatus (Rule 53)
- includes_or_included
- is_or_was_categorized_as
- historical_region
- inbound_from
- international
@ -574,8 +626,41 @@ classes:
multivalued: true
historical_region:
multivalued: true
colonial:
# MIGRATED 2026-01-22: colonial → includes_or_included + is_or_was_categorized_as (Rule 53)
includes_or_included:
description: |
MIGRATED from colonial per slot_fixes.yaml (Rule 53, 2026-01-22).
Geographic territories included in this coverage area.
Use GeoSpatialPlace for structured geographic data.
range: GeoSpatialPlace
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value:
geospatial_id: https://nde.nl/ontology/hc/geo/dutch-east-indies
latitude: -6.2
longitude: 106.8
geometry_type: POLYGON
description: Dutch East Indies territory
is_or_was_categorized_as:
description: |
MIGRATED from colonial per slot_fixes.yaml (Rule 53, 2026-01-22).
Colonial status categorization for this geographic coverage.
Use ColonialStatus for structured colonial relationship data.
range: ColonialStatus
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value:
territory_name: "Dutch East Indies"
colonizing_power: "Netherlands"
modern_equivalent: ["ID"]
temporal_extent:
begin_of_the_begin: "1602-01-01"
end_of_the_end: "1949-12-27"
description: Dutch colonial Indonesia
international:
multivalued: true
major_city:
@ -801,7 +886,7 @@ classes:
'
slots:
- claims_count
- has_or_had_quantity # was: claims_count - migrated per Rule 53 (2026-01-19)
- crawler_version
- date_retrieved
- extraction_method
@ -822,8 +907,19 @@ classes:
required: true
source_url:
range: uri
claims_count:
range: integer
has_or_had_quantity: # was: claims_count - migrated per Rule 53 (2026-01-19)
range: Quantity
inlined: true
description: |
Number of claims extracted during this retrieval.
MIGRATED 2026-01-19: Replaces claims_count integer with structured Quantity.
Use quantity_type: CLAIM_COUNT for claim counts.
examples:
- value:
quantity_value: 47
quantity_type: CLAIM_COUNT
has_or_had_description: "Web claims extracted from finding aid page"
description: Claim count with structured quantity
has_or_had_status:
range: ValidationStatus
required: false

View file

@ -0,0 +1,150 @@
# Format - Document/resource format class
#
# Created per slot_fixes.yaml migration for: format
# Creation date: 2026-01-22
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (slot_fixes revision)
id: https://nde.nl/ontology/hc/class/Format
name: Format
title: Format
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dct: http://purl.org/dc/terms/
schema: http://schema.org/
premis: http://www.loc.gov/premis/rdf/v3/
default_prefix: hc
imports:
- linkml:types
- ../slots/description
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
classes:
Format:
class_uri: dct:MediaType
description: |
A structured representation of a document, file, or resource format.
**USAGE**:
Represents format specifications for:
- Finding aids (EAD, PDF, HTML, MARC)
- API responses (JSON, XML, RDF)
- Media files (JPEG, MP3, MP4)
- Transcripts and subtitles (VTT, SRT, TXT)
**ONTOLOGY ALIGNMENT**:
- **Primary** (`class_uri`): `dct:MediaType` - Dublin Core media type
- **Related**: `schema:encodingFormat` - Schema.org encoding
- **Related**: `premis:Format` - PREMIS preservation format
**MIGRATION NOTE**:
Created per slot_fixes.yaml revision (Rule 53, 2026-01-22).
Replaces simple string-valued `format` slot with structured class.
slots:
- has_or_had_identifier
- has_or_had_label
- description
attributes:
format_id:
identifier: true
description: |
Unique identifier for this format specification.
Recommended: Use IANA media type URI or CURIE.
range: uriorcurie
slot_uri: dct:identifier
examples:
- value: "iana:application/xml"
description: XML MIME type as CURIE
- value: "https://www.iana.org/assignments/media-types/text/vtt"
description: WebVTT format as full URI
format_name:
description: |
Human-readable name of the format.
range: string
slot_uri: schema:name
examples:
- value: "Encoded Archival Description (EAD)"
- value: "WebVTT Subtitle Format"
- value: "JSON (JavaScript Object Notation)"
mime_type:
description: |
IANA media type (MIME type) for this format.
range: string
slot_uri: dct:format
pattern: "^[a-z]+/[a-z0-9.+-]+$"
examples:
- value: "application/xml"
- value: "text/vtt"
- value: "application/json"
file_extension:
description: |
Common file extension(s) for this format.
range: string
multivalued: true
examples:
- value: ".xml"
- value: ".ead"
- value: ".vtt"
- value: ".json"
format_specification_url:
description: |
URL to the format's official specification or documentation.
range: uri
slot_uri: schema:url
examples:
- value: "https://www.loc.gov/ead/"
description: EAD specification
- value: "https://www.w3.org/TR/webvtt1/"
description: WebVTT W3C specification
exact_mappings:
- dct:MediaType
close_mappings:
- schema:encodingFormat
- premis:Format
examples:
- value:
format_id: "iana:application/xml+ead"
format_name: "Encoded Archival Description (EAD)"
mime_type: "application/xml"
file_extension:
- ".xml"
- ".ead"
format_specification_url: "https://www.loc.gov/ead/"
description: EAD finding aid format
- value:
format_id: "iana:text/vtt"
format_name: "WebVTT (Web Video Text Tracks)"
mime_type: "text/vtt"
file_extension:
- ".vtt"
format_specification_url: "https://www.w3.org/TR/webvtt1/"
description: WebVTT subtitle/caption format
- value:
format_id: "iana:application/pdf"
format_name: "Portable Document Format (PDF)"
mime_type: "application/pdf"
file_extension:
- ".pdf"
format_specification_url: "https://www.iso.org/standard/75839.html"
description: PDF document format
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Format specifications applicable to all custodian types."
specificity_score: "0.25"
specificity_rationale: "Broadly applicable - formats used across all heritage custodian types."

View file

@ -0,0 +1,157 @@
# FoundingEvent - Organization founding event class
#
# Created per slot_fixes.yaml migration for: founded_year, founding_date
# Creation date: 2026-01-22
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (slot_fixes revision)
id: https://nde.nl/ontology/hc/class/FoundingEvent
name: FoundingEvent
title: Founding Event
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
- ../slots/temporal_extent
- ../slots/description
- ../slots/has_or_had_identifier
- ./TimeSpan
classes:
FoundingEvent:
class_uri: crm:E63_Beginning_of_Existence
description: |
Represents the founding or establishment event of an organization.
**USAGE**:
Captures structured founding information for:
- Heritage custodians (museums, archives, libraries)
- Standards organizations
- Historic restaurants and venues
- Any organization with establishment history
**ONTOLOGY ALIGNMENT**:
- **Primary** (`class_uri`): `crm:E63_Beginning_of_Existence` - CIDOC-CRM
- **Close**: `schema:Event` - Schema.org event
- **Close**: `prov:Activity` - PROV-O activity
**TEMPORAL PATTERN**:
Uses CIDOC-CRM E52_Time-Span pattern for fuzzy temporal bounds:
- Known year: `begin_of_the_begin` = "YYYY-01-01", `end_of_the_begin` = "YYYY-12-31"
- Known exact date: all four bounds equal
- Unknown year range: set `begin_of_the_begin` to earliest, `end_of_the_begin` to latest
**MIGRATION NOTE**:
Created per slot_fixes.yaml revision (Rule 53, 2026-01-22).
Replaces simple `founded_year` (integer) and `founding_date` (string).
slots:
- temporal_extent
- description
- has_or_had_identifier
attributes:
founding_event_id:
identifier: true
description: |
Unique identifier for this founding event.
Recommended format: URI combining organization ID and "founding".
range: uriorcurie
slot_uri: dcterms:identifier
examples:
- value: "https://nde.nl/ontology/hc/event/founding/rijksmuseum-1800"
- value: "hc:event/founding/de-kas-1902"
founding_description:
description: |
Textual description of the founding event and circumstances.
range: string
slot_uri: schema:description
examples:
- value: "Founded by King Louis Napoleon as the Royal Museum"
- value: "Established as family restaurant in historic greenhouse"
founding_location:
description: |
Location where the founding took place (if different from current location).
range: string
slot_uri: schema:location
examples:
- value: "The Hague, Netherlands"
- value: "Original premises at 123 Main Street"
founded_by:
description: |
Person(s) or organization(s) who founded this entity.
range: string
multivalued: true
slot_uri: schema:founder
examples:
- value: "King Louis Napoleon"
- value: "Johannes van der Berg"
slot_usage:
temporal_extent:
description: |
The temporal extent of the founding event.
For a known year (e.g., 1902), use:
- begin_of_the_begin: "1902-01-01"
- end_of_the_begin: "1902-12-31"
For a precise date (e.g., 1902-03-15), set all bounds equal.
For uncertain date ranges, use appropriate fuzzy bounds.
range: TimeSpan
inlined: true
required: true
exact_mappings:
- crm:E63_Beginning_of_Existence
close_mappings:
- schema:Event
- prov:Activity
examples:
- value:
founding_event_id: "https://nde.nl/ontology/hc/event/founding/rijksmuseum-1800"
temporal_extent:
begin_of_the_begin: "1800-01-01"
end_of_the_begin: "1800-12-31"
notes: "Founded in 1800 by King Louis Napoleon"
founding_description: "Founded as the Royal Museum by King Louis Napoleon"
founded_by:
- "King Louis Napoleon"
founding_location: "The Hague, Netherlands"
description: Rijksmuseum founding event
- value:
founding_event_id: "https://nde.nl/ontology/hc/event/founding/de-kas-1902"
temporal_extent:
begin_of_the_begin: "1902-01-01"
end_of_the_begin: "1902-12-31"
founding_description: "Established as historic greenhouse restaurant"
founded_by:
- "Original family owners"
description: Historic restaurant founding
- value:
founding_event_id: "https://nde.nl/ontology/hc/event/founding/unknown-archive-1850s"
temporal_extent:
begin_of_the_begin: "1850-01-01"
end_of_the_begin: "1859-12-31"
notes: "Founded sometime in the 1850s"
founding_description: "Founded during the 1850s, exact date unknown"
description: Founding with decade-level uncertainty
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Founding events applicable to all custodian types."
specificity_score: "0.30"
specificity_rationale: "Broadly applicable - founding events for all heritage organizations."

View file

@ -6,8 +6,16 @@ imports:
- ./CustodianType
- ../enums/GalleryTypeEnum
- ../slots/has_or_had_artist_representation
- ../slots/commercial_operation
- ../slots/commission_rate
# REMOVED 2026-01-22: ../slots/commercial_operation - migrated to has_or_had_objective + Profit (Rule 53)
- ../slots/has_or_had_objective
- ./Profit
# REMOVED 2026-01-22: ../slots/commission_rate - migrated to has_or_had_service + ArtSaleService + takes_or_took_comission + CommissionRate (Rule 53)
- ../slots/has_or_had_service
- ./ArtSaleService
- ../slots/takes_or_took_comission
- ./CommissionRate
- ../slots/has_or_had_percentage
- ./Percentage
- ../slots/has_or_had_custodian_type
- ../slots/exhibition_focus
- ../slots/exhibition_model
@ -123,14 +131,13 @@ classes:
\ Example**:\n```turtle\n:Custodian_KunsthalRotterdam\n org:classification :GalleryType_Kunsthalle_Q1475403 .\n\n\
:GalleryType_Kunsthalle_Q1475403\n a glamtype:GalleryType, crm:E55_Type, skos:Concept ;\n skos:prefLabel \"Kunsthalle\"\
@en, \"kunsthalle\"@nl, \"Kunsthalle\"@de ;\n skos:broader :GalleryType_ArtGallery_Q1007870 ;\n schema:additionalType\
\ <http://www.wikidata.org/entity/Q1475403> ;\n glamtype:glamorcubesfixphdnt_code \"GALLERY\" ;\n glamtype:commercial_operation\
\ <http://www.wikidata.org/entity/Q1475403> ;\n glamtype:glamorcubesfixphdnt_code \"GALLERY\" ;\n glamtype:has_or_had_objective\
\ false ;\n glamtype:exhibition_focus \"contemporary art\" ;\n glamtype:sales_activity false ;\n glamtype:exhibition_model\
\ \"temporary rotating exhibitions\" .\n```\n\n**Domain-Specific Properties**:\nThis class adds gallery-specific metadata\
\ beyond base CustodianType:\n- `commercial_operation` - Whether gallery operates commercially (sells art)\n- `artist_representation`\
\ beyond base CustodianType:\n- `has_or_had_objective` - Structured profit objective (commercial/nonprofit/mixed)\n- `artist_representation`\
\ - Artists represented by gallery (for commercial galleries)\n- `exhibition_focus` - Type of art exhibited (contemporary,\
\ modern, photography, etc.)\n- `sales_activity` - Whether gallery sells artworks (not just exhibits)\n- `exhibition_model`\
\ - Exhibition strategy (temporary, rotating, curated shows)\n- `commission_rate` - Gallery commission percentage (for\
\ commercial galleries)\n\n**Getty AAT Integration**:\nThe Getty Art & Architecture Thesaurus provides standardized\
\ - Exhibition strategy (temporary, rotating, curated shows)\n- `has_or_had_service` - Art sales service with commission structure (ArtSaleService)\n\n**Getty AAT Integration**:\nThe Getty Art & Architecture Thesaurus provides standardized\
\ vocabulary:\n- aat:300005768 - art galleries (institutions)\n- aat:300240057 - commercial galleries\n- aat:300240058\
\ - nonprofit galleries\n- aat:300005741 - kunsthalles\n\n**Art Market Context**:\nCommercial galleries operate in the\
\ art market ecosystem:\n- **Primary market**: Representing living artists, first sales\n- **Secondary market**: Resale\
@ -139,8 +146,10 @@ classes:
\ extracted from 78 Wikidata entities with type='G'\nin `data/wikidata/GLAMORCUBEPSXHFN/hyponyms_curated_full.yaml`.\n"
slots:
- has_or_had_artist_representation
- commercial_operation
- commission_rate
# REMOVED 2026-01-22: commercial_operation - migrated to has_or_had_objective + Profit (Rule 53)
- has_or_had_objective
# REMOVED 2026-01-22: commission_rate - migrated to has_or_had_service + ArtSaleService (Rule 53)
- has_or_had_service
- has_or_had_custodian_type
- exhibition_focus
- exhibition_model
@ -185,7 +194,11 @@ classes:
- Kunsthalle@de
has_or_had_description: facility that mounts temporary art exhibitions without permanent collection # was: type_description - migrated per Rule 53/56 (2026-01-16)
custodian_type_broader: https://nde.nl/ontology/hc/type/gallery/Q1007870
commercial_operation: false
# MIGRATED 2026-01-22: commercial_operation → has_or_had_objective + Profit (Rule 53)
has_or_had_objective:
objective_type: "nonprofit"
is_commercial: false
profit_model: "Public funding and grants"
exhibition_focus: contemporary art
sales_activity: false
exhibition_model: temporary rotating exhibitions, no permanent collection
@ -199,7 +212,11 @@ classes:
- kunstgalerie@nl
has_or_had_description: for-profit gallery that sells artworks and represents artists # was: type_description - migrated per Rule 53/56 (2026-01-16)
custodian_type_broader: https://nde.nl/ontology/hc/type/gallery/Q1007870
commercial_operation: true
# MIGRATED 2026-01-22: commercial_operation → has_or_had_objective + Profit (Rule 53)
has_or_had_objective:
objective_type: "for-profit"
is_commercial: true
profit_model: "Sales commission (50%)"
has_or_had_artist_representation:
- Artist A
- Artist B
@ -207,5 +224,15 @@ classes:
exhibition_focus: contemporary painting and sculpture
sales_activity: true
exhibition_model: curated exhibitions of represented artists
commission_rate: 50%
# MIGRATED 2026-01-22: commission_rate → has_or_had_service + ArtSaleService (Rule 53)
has_or_had_service:
service_name: "Primary Market Sales"
market_type: "primary"
artist_representation: true
sales_activity: true
takes_or_took_comission:
rate_type: "primary_market"
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
description: Commercial gallery with artist representation and sales

Some files were not shown because too many files have changed in this diff Show more