feat: Introduce MeasureUnitEnum for standardized measurement units

- Added MeasureUnitEnum.yaml to define standard measurement units for area, length, and related quantities, compliant with ISO 80000-1, QUDT, and UCUM.
- Included units such as square meters, hectares, acres, meters, kilometers, and their conversions.

feat: Create applies_or_applied_to_call slot for funding requirements

- Introduced applies_or_applied_to_call.yaml to track funding calls related to requirements, following RiC-O naming conventions.

chore: Archive and migrate annual_participants slot

- Archived annual_participants_archived_20260115.yaml, replaced by has_or_had_annual_participant_count for better temporal naming.

chore: Archive applies_to_call slot and migrate to new naming

- Archived applies_to_call_archived_20260115.yaml, replaced by applies_or_applied_to_call for compliance with RiC-O conventions.

chore: Archive area_hectares slot and migrate to has_area_in_hectare

- Archived area_hectares_archived_20260115.yaml, replaced by has_area_in_hectare for standardized area measurement.

chore: Archive arrangement_notes slot and migrate to has_arrangement_note

- Archived arrangement_notes_archived_20260115.yaml, replaced by has_arrangement_note for improved naming consistency.

chore: Archive available_caption_languages slot and migrate to has_available_caption_language

- Archived available_caption_languages_archived_20260115.yaml, replaced by has_available_caption_language for better naming.

chore: Archive beneficiary_group slot and migrate to has_or_had_beneficiary

- Archived beneficiary_group_archived_20260115.yaml, replaced by has_or_had_beneficiary for compliance with naming conventions.

chore: Archive branch_head slot and migrate to has_or_had_head

- Archived branch_head_archived_20260114.yaml, replaced by has_or_had_head for better semantic alignment.

chore: Archive budget_currency slot

- Archived budget_currency_archived_20260114.yaml for future migration.

chore: Archive building_floor_area_sqm slot and migrate to has_or_had_area

- Archived building_floor_area_sqm_archived_20260115.yaml, replaced by has_or_had_area for standardized area measurement.

chore: Archive has_area_in_hectare slot and migrate to has_or_had_area

- Archived has_area_in_hectare_archived_20260115.yaml, replaced by has_or_had_area for compliance with naming conventions.

feat: Introduce has_or_had_area slot for area measurements

- Added has_or_had_area.yaml as the authoritative slot for area measurements, compliant with Rule 53.

feat: Introduce has_or_had_beneficiary slot for beneficiary tracking

- Added has_or_had_beneficiary.yaml to identify beneficiaries of organizational programs, following RiC-O naming conventions.

feat: Introduce has_or_had_currency slot for monetary values

- Added has_or_had_currency.yaml to associate currencies with monetary amounts, compliant with ISO 4217.

feat: Introduce has_or_had_head slot for organizational heads

- Added has_or_had_head.yaml to link organizational units with their heads, following W3C ORG standards.

feat: Introduce has_or_had_unit slot for measurement units

- Added has_or_had_unit.yaml to associate measurements with their units, compliant with Rule 53.
This commit is contained in:
kempersc 2026-01-14 17:28:38 +01:00
parent e64b5653bf
commit 853419d6c2
48 changed files with 1935 additions and 567 deletions

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-14T15:59:47.525Z",
"generated": "2026-01-14T16:04:58.914Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2888,
"categoryCounts": {

View file

@ -0,0 +1,195 @@
id: https://nde.nl/ontology/hc/class/area
name: area_class
title: Area Class
description: >-
Class representing an area measurement with value, unit, and context.
**RULE 53 COMPLIANT**: This is the authoritative class for area measurements,
replacing domain-specific float slots like area_hectares, building_floor_area_sqm,
and has_area_in_hectare.
**REPLACES**:
- area_hectares (OutdoorSite) - float in hectares
- building_floor_area_sqm (HistoricBuilding) - float in square meters
- has_area_in_hectare (bespoke, incorrectly created)
**ADVANTAGES OVER SIMPLE FLOAT**:
- Explicit unit specification (no ambiguity between m² and hectares)
- Temporal context (measurement date for historic facilities)
- Provenance (measurement method, source)
- Estimation flag (is_estimate for approximate values)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
geosparql: http://www.opengis.net/ont/geosparql#
imports:
- linkml:types
- ./MeasureUnit
- ../slots/has_or_had_unit
- ../slots/has_or_had_label
default_prefix: hc
classes:
Area:
description: >-
A measurement of spatial extent (area) with value, unit, and metadata.
Captures area measurements for heritage facilities including outdoor sites,
buildings, rooms, and storage areas. Supports multiple units (m², hectares,
acres) with explicit unit specification.
**TEMPORAL ASPECT**: Areas can change over time (building extensions,
site acquisitions). The measurement_date captures when the area was measured.
**ESTIMATION SUPPORT**: Heritage facilities often have estimated areas,
especially for historic buildings. The is_estimate flag indicates uncertainty.
class_uri: qudt:QuantityValue
exact_mappings:
- qudt:QuantityValue
close_mappings:
- schema:QuantitativeValue
- geosparql:hasArea
slots:
- area_value
- has_or_had_unit
- measurement_date
- is_estimate
- measurement_method
- has_or_had_label
slot_usage:
area_value:
description: >-
The numeric value of the area measurement.
MIGRATED from area_hectares, building_floor_area_sqm (Rule 53).
range: float
required: true
examples:
- value: 25.0
description: 25 hectares (outdoor site)
- value: 5000.0
description: 5000 square meters (building)
has_or_had_unit:
description: >-
The unit of measurement for this area.
MIGRATED from implicit unit assumptions (Rule 53).
range: MeasureUnit
required: true
inlined: true
examples:
- value:
unit_type: HECTARE
unit_symbol: "ha"
description: Hectare unit for outdoor site
- value:
unit_type: SQUARE_METER
unit_symbol: "m²"
description: Square meter unit for building floor
measurement_date:
description: >-
Date when the area was measured or recorded.
range: date
required: false
examples:
- value: "2024-01-15"
description: Recent measurement
- value: "1985-06-01"
description: Historic measurement
is_estimate:
description: >-
Whether the area is an estimate (true) or precise measurement (false).
range: boolean
required: false
examples:
- value: true
description: Estimated area for historic building
- value: false
description: Precise surveyed measurement
measurement_method:
description: >-
Method used to measure the area (survey, GIS, historical records, etc.).
range: string
required: false
examples:
- value: "GIS analysis"
description: Geographic Information System measurement
- value: "Land survey"
description: Professional survey
- value: "Historical records"
description: From archival documents
has_or_had_label:
description: >-
Human-readable label for the area measurement.
range: string
examples:
- value: "Total site area"
description: Label for outdoor site
- value: "Building floor area"
description: Label for building
examples:
- value:
area_value: 25.0
has_or_had_unit:
unit_type: HECTARE
unit_symbol: "ha"
has_or_had_label: "Sculpture garden area"
description: Outdoor site area in hectares (replaces area_hectares)
- value:
area_value: 5000.0
has_or_had_unit:
unit_type: SQUARE_METER
unit_symbol: "m²"
measurement_date: "2023-03-15"
is_estimate: false
measurement_method: "Architectural survey"
has_or_had_label: "Total floor area"
description: Building floor area in square meters (replaces building_floor_area_sqm)
- value:
area_value: 650.0
has_or_had_unit:
unit_type: HECTARE
unit_symbol: "ha"
is_estimate: true
measurement_method: "Historical records"
has_or_had_label: "Estate grounds"
description: Historic estate grounds with estimated area
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Area measurements applicable to all heritage custodian types.
specificity_score: 0.4
specificity_rationale: >-
Broadly useful class - area measurements relevant for site planning,
collection storage, visitor capacity, and facility management.
slots:
area_value:
description: >-
The numeric value of an area measurement.
range: float
slot_uri: qudt:numericValue
exact_mappings:
- qudt:numericValue
- schema:value
measurement_date:
description: >-
Date when a measurement was taken or recorded.
range: date
slot_uri: schema:dateCreated
is_estimate:
description: >-
Whether a value is an estimate (true) or precise measurement (false).
range: boolean
slot_uri: hc:isEstimate
measurement_method:
description: >-
Method used to obtain a measurement.
range: string
slot_uri: hc:measurementMethod

View file

@ -13,7 +13,10 @@ imports:
- ../slots/has_approval_date
- ../slots/has_or_had_acquisition_budget
- ../slots/is_or_was_approved_by # MIGRATED: was ../slots/approved_by (2026-01-15)
- ../slots/budget_currency
# REMOVED - migrated to has_or_had_currency (Rule 53)
# - ../slots/budget_currency
- ../slots/has_or_had_currency
- ./Currency
- ../slots/has_or_had_description
- ../slots/has_or_had_label
# REMOVED - migrated to has_or_had_status with range BudgetStatus (Rule 53)
@ -97,7 +100,9 @@ classes:
- has_or_had_acquisition_budget
- has_approval_date
- is_or_was_approved_by # MIGRATED: was approved_by (2026-01-15)
- budget_currency
# REMOVED - migrated to has_or_had_currency (Rule 53)
# - budget_currency
- has_or_had_currency
- has_or_had_description
- has_or_had_label
# MIGRATED from budget_status to has_or_had_status (Rule 53)
@ -209,13 +214,33 @@ classes:
examples:
- value: 45000000.0
description: EUR 45 million annual budget
budget_currency:
range: string
# REMOVED - migrated to has_or_had_currency (Rule 53)
# budget_currency:
# range: string
# required: true
# examples:
# - value: EUR
# description: Euro currency
# - value: USD
# description: US Dollar currency
has_or_had_currency:
range: Currency
inlined: true
required: true
description: >-
Currency for all monetary amounts in this budget.
MIGRATED from budget_currency (Rule 53) - changed from string to
Currency class for richer currency metadata (ISO 4217 code, symbol, name).
examples:
- value: EUR
description: Euro currency
- value: USD
- value:
currency_code: EUR
has_or_had_label: Euro
currency_symbol:
description: Euro currency as structured Currency object
- value:
currency_code: USD
has_or_had_label: US Dollar
currency_symbol: $
description: US Dollar currency
operating_budget:
range: decimal
@ -327,7 +352,10 @@ classes:
fiscal_year_start: '2024-01-01'
fiscal_year_end: '2024-12-31'
total_budget_amount: 45000000.0
budget_currency: EUR
has_or_had_currency:
currency_code: EUR
has_or_had_label: Euro
currency_symbol:
operating_budget: 38000000.0
capital_budget: 3000000.0
acquisition_budget: 2000000.0
@ -356,7 +384,10 @@ classes:
fiscal_year_start: '2024-04-01'
fiscal_year_end: '2025-03-31'
total_budget_amount: 8500000.0
budget_currency: EUR
has_or_had_currency:
currency_code: EUR
has_or_had_label: Euro
currency_symbol:
operating_budget: 7500000.0
capital_budget: 500000.0
personnel_budget: 5200000.0

View file

@ -0,0 +1,173 @@
id: https://nde.nl/ontology/hc/class/Currency
name: Currency
title: Currency Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
dcterms: http://purl.org/dc/terms/
imports:
- linkml:types
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
default_prefix: hc
classes:
Currency:
class_uri: schema:Currency
description: >-
A currency used for monetary values.
**SCHEMA.ORG ALIGNMENT**:
Maps to `schema:Currency` - "A currency as defined by ISO 4217."
**ISO 4217 STANDARD**:
ISO 4217 defines three-letter currency codes:
| Code | Currency | Symbol |
|------|----------|--------|
| EUR | Euro | € |
| USD | US Dollar | $ |
| GBP | British Pound | £ |
| JPY | Japanese Yen | ¥ |
| CHF | Swiss Franc | CHF |
**WHY NOT JUST USE STRING?**
Simple string fields like `budget_currency: "EUR"` lose important context:
- Symbol for display purposes
- Full name for accessibility
- Historical validity (currencies change over time)
- Link to authoritative ISO 4217 standard
The Currency class captures this richness while remaining simple for basic use.
**HISTORICAL CURRENCIES**:
Heritage institutions often deal with historical currencies:
- NLG (Dutch Guilder) - replaced by EUR in 2002
- DEM (German Mark) - replaced by EUR in 2002
- FRF (French Franc) - replaced by EUR in 2002
The temporal naming pattern (has_or_had_currency) accommodates this.
**EXAMPLE**:
```yaml
Currency:
currency_code: EUR
currency_name: Euro
currency_symbol:
```
exact_mappings:
- schema:Currency
close_mappings:
- qudt:CurrencyUnit
slots:
- has_or_had_identifier
- currency_code
- has_or_had_label
- currency_symbol
- has_or_had_description
- specificity_annotation
- template_specificity
slot_usage:
has_or_had_identifier:
range: uriorcurie
required: false
identifier: true
description: >-
Optional identifier for this currency.
examples:
- value: https://nde.nl/ontology/hc/currency/EUR
description: Euro currency identifier
currency_code:
range: string
required: true
pattern: "^[A-Z]{3}$"
description: >-
ISO 4217 three-letter currency code.
examples:
- value: EUR
description: Euro
- value: USD
description: US Dollar
- value: GBP
description: British Pound
- value: NLG
description: Dutch Guilder (historical)
has_or_had_label:
range: string
required: false
description: >-
Full name of the currency.
examples:
- value: Euro
- value: US Dollar
- value: Dutch Guilder
currency_symbol:
range: string
required: false
description: >-
Currency symbol for display.
examples:
- value:
description: Euro symbol
- value: $
description: Dollar symbol
- value: £
description: Pound symbol
- value: ƒ
description: Guilder symbol (historical)
has_or_had_description:
range: string
required: false
description: >-
Additional information about the currency, such as historical context.
examples:
- value: Official currency of the Eurozone since 1999
- value: Dutch national currency until replaced by Euro in 2002
comments:
- Currency models monetary unit with ISO 4217 code and metadata
- Replaces simple string currency fields with structured data
- Uses Schema.org Currency as primary ontology mapping
- Supports both current and historical currencies
see_also:
- https://schema.org/Currency
- https://www.iso.org/iso-4217-currency-codes.html
examples:
- value:
currency_code: EUR
has_or_had_label: Euro
currency_symbol:
has_or_had_description: Official currency of the Eurozone
description: Euro currency
- value:
currency_code: NLG
has_or_had_label: Dutch Guilder
currency_symbol: ƒ
has_or_had_description: Dutch national currency until replaced by Euro in 2002
description: Historical Dutch Guilder
- value:
currency_code: USD
has_or_had_label: US Dollar
currency_symbol: $
description: US Dollar currency
slots:
currency_code:
description: >-
ISO 4217 three-letter currency code.
range: string
slot_uri: schema:currency
currency_symbol:
description: >-
Currency symbol for display purposes.
range: string
slot_uri: hc:currencySymbol

View file

@ -27,7 +27,7 @@ imports:
- ./Notes
- ../slots/has_archive_description
- ../slots/has_archive_name
- ../slots/arrangement_notes
# REMOVED 2026-01-15: ../slots/arrangement_notes - migrated to has_arrangement_note
- ../slots/has_or_had_assigned_processor
- ../slots/creating_agency
- ../slots/has_or_had_custodian_type
@ -79,7 +79,6 @@ classes:
- has_or_had_notes
- has_archive_description
- has_archive_name
- arrangement_notes
- has_or_had_assigned_processor
- creating_agency
- has_or_had_custodian_type

View file

@ -8,7 +8,7 @@ imports:
- ./ReconstructionActivity
- ../enums/EducationProviderTypeEnum
- ../slots/has_or_had_accessibility_feature
- ../slots/annual_participants
# 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
@ -79,7 +79,8 @@ classes:
- schema:Course
slots:
- has_or_had_accessibility_feature
- annual_participants
# REMOVED 2026-01-15: annual_participants - migrated to has_or_had_annual_participant_count
- has_or_had_annual_participant_count
# REMOVED 2026-01-15: booking_required - migrated to is_or_was_required
- is_or_was_required
- classroom_count
@ -255,7 +256,7 @@ classes:
has_or_had_accessibility_feature:
- Wheelchair accessible
- Hearing loop
annual_participants: 75000
has_or_had_annual_participant_count: 75000
staff_count: 12
is_or_was_required: true
education_contact_email: educatie@rijksmuseum.nl

View file

@ -20,7 +20,8 @@ imports:
- ../slots/extraction_confidence
- ../slots/extraction_note
- ../slots/observed_in
- ../slots/applies_to_call
# REMOVED 2026-01-15: ../slots/applies_to_call - migrated to applies_or_applied_to_call
- ../slots/applies_or_applied_to_call
- ../slots/is_mandatory
- ../slots/requirement_id
- ../slots/requirement_text
@ -95,7 +96,8 @@ classes:
- schema:eligibleQuantity
- prov:wasDerivedFrom
slots:
- applies_to_call
# REMOVED 2026-01-15: applies_to_call - migrated to applies_or_applied_to_call
- applies_or_applied_to_call
- extraction_confidence
- extraction_note
- is_mandatory
@ -240,7 +242,7 @@ classes:
requirement_value: '3'
requirement_unit: partners
is_mandatory: true
applies_to_call: https://nde.nl/ontology/hc/call/ec/cl2-2025-heritage-01
applies_or_applied_to_call: https://nde.nl/ontology/hc/call/ec/cl2-2025-heritage-01
observed_in: https://nde.nl/ontology/hc/observation/web/2025-11-29/eu-horizon-cl2-heritage
source_section: Section 2 - Eligibility Conditions
extraction_confidence: 0.98
@ -254,7 +256,7 @@ classes:
requirement_value: '30'
requirement_unit: percent
is_mandatory: true
applies_to_call: https://nde.nl/ontology/hc/call/ec/cl2-2025-heritage-01
applies_or_applied_to_call: https://nde.nl/ontology/hc/call/ec/cl2-2025-heritage-01
observed_in: https://nde.nl/ontology/hc/observation/web/2025-11-29/eu-horizon-cl2-heritage
source_section: Section 3 - Financial Conditions
extraction_confidence: 0.95
@ -268,7 +270,7 @@ classes:
requirement_value: immediate
requirement_unit: null
is_mandatory: true
applies_to_call: https://nde.nl/ontology/hc/call/ec/cl2-2025-heritage-01
applies_or_applied_to_call: https://nde.nl/ontology/hc/call/ec/cl2-2025-heritage-01
observed_in: https://nde.nl/ontology/hc/observation/web/2025-11-29/eu-horizon-cl2-heritage
source_section: Section 4.2 - Open Science
extraction_confidence: 0.99
@ -282,7 +284,7 @@ classes:
requirement_value: UK
requirement_unit: country
is_mandatory: true
applies_to_call: https://nde.nl/ontology/hc/call/nlhf/medium-grants-2025-q4
applies_or_applied_to_call: https://nde.nl/ontology/hc/call/nlhf/medium-grants-2025-q4
observed_in: https://nde.nl/ontology/hc/observation/web/2025-11-28/nlhf-medium-grants
source_section: Eligibility
extraction_confidence: 0.99
@ -296,7 +298,7 @@ classes:
requirement_value: non-profit
requirement_unit: organization-type
is_mandatory: true
applies_to_call: https://nde.nl/ontology/hc/call/nlhf/medium-grants-2025-q4
applies_or_applied_to_call: https://nde.nl/ontology/hc/call/nlhf/medium-grants-2025-q4
observed_in: https://nde.nl/ontology/hc/observation/web/2025-11-28/nlhf-medium-grants
source_section: Who can apply
extraction_confidence: 0.95

View file

@ -6,10 +6,12 @@ imports:
- ./ReconstructedEntity
- ./CustodianObservation
- ./ReconstructionActivity
- ./Area
- ../enums/FeatureTypeEnum
- ../slots/has_or_had_architect
- ../slots/has_architectural_style
- ../slots/building_floor_area_sqm
# REMOVED 2026-01-15: ../slots/building_floor_area_sqm - migrated to has_or_had_area + Area (Rule 53)
- ../slots/has_or_had_area
- ../slots/complex_name
- ../slots/condition_status
- ../slots/construction_date
@ -78,7 +80,7 @@ classes:
slots:
- has_or_had_architect
- has_architectural_style
- building_floor_area_sqm
- has_or_had_area
- complex_name
- condition_status
- construction_date
@ -207,11 +209,30 @@ classes:
description: Monastery complex
- value: Paleis Het Loo ensemble
description: Palace complex
building_floor_area_sqm:
range: float
has_or_had_area:
description: >-
Floor area of the historic building.
MIGRATED from building_floor_area_sqm (Rule 53).
range: Area
inlined: true
multivalued: true
examples:
- value: 450.0
description: Building floor area
- value:
area_value: 450.0
has_or_had_unit:
unit_type: SQUARE_METER
unit_symbol: "m²"
has_or_had_label: "Building floor area"
description: 450 square meters floor area
- value:
area_value: 1200.0
has_or_had_unit:
unit_type: SQUARE_METER
unit_symbol: "m²"
is_estimate: true
measurement_method: "Historical records"
has_or_had_label: "Total floor area"
description: 1200 square meters (estimated from historical records)
current_use:
range: string
examples:
@ -239,6 +260,7 @@ classes:
- Links to FeatureTypeEnum for Wikidata-sourced building classification
- Distinguished from CustodianPlace (main headquarters)
- May be open to public or used for operations/events
- "MIGRATION NOTE: has_or_had_area replaced building_floor_area_sqm (Rule 53)"
see_also:
- http://vocab.getty.edu/aat/300005425
- https://schema.org/LandmarksOrHistoricalBuildings
@ -252,12 +274,18 @@ classes:
feature_type_classification: HISTORIC_HOUSE_MUSEUM
construction_date: '1650'
construction_date_precision: APPROXIMATE
architectural_style: Dutch Golden Age
has_architectural_style: Dutch Golden Age
heritage_status: Rijksmonument
monument_number: '16284'
is_open_to_public: false
current_use: Administrative offices and events
condition_status: EXCELLENT
has_or_had_area:
- area_value: 450.0
has_or_had_unit:
unit_type: SQUARE_METER
unit_symbol: "m²"
has_or_had_label: "Total floor area"
description: Historic canal house as secondary property
- value:
historic_building_id: https://nde.nl/ontology/hc/aux/kasteel-amerongen
@ -266,14 +294,21 @@ classes:
feature_type_classification: CASTLE
construction_date: 13th century
construction_date_precision: CENTURY
architectural_style: Dutch Classical
architect: Maurits Post
has_architectural_style: Dutch Classical
has_or_had_architect: Maurits Post
heritage_status: Rijksmonument
monument_number: '521814'
is_open_to_public: true
visiting_hours: Tu-Su 11:00-17:00
visiting_hour: Tu-Su 11:00-17:00
is_part_of_complex: true
complex_name: Kasteel Amerongen landgoed
current_use: Museum and events
condition_status: GOOD
has_or_had_area:
- area_value: 2500.0
has_or_had_unit:
unit_type: SQUARE_METER
unit_symbol: "m²"
is_estimate: true
has_or_had_label: "Castle floor area"
description: Castle as heritage property

View file

@ -0,0 +1,133 @@
id: https://nde.nl/ontology/hc/class/measure-unit
name: measure_unit_class
title: MeasureUnit Class
description: >-
Class representing a unit of measurement for quantities.
**RULE 53 COMPLIANT**: Generic class for standardized unit representation,
used by Area, Quantity, and other measurement classes.
**ONTOLOGY ALIGNMENT**:
- QUDT (Quantities, Units, Dimensions and Types)
- schema:unitCode / schema:unitText
- OM (Ontology of Units of Measure)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
om: http://www.ontology-of-units-of-measure.org/resource/om-2/
imports:
- linkml:types
- ../enums/MeasureUnitEnum
- ../slots/has_or_had_label
default_prefix: hc
classes:
MeasureUnit:
description: >-
A unit of measurement for expressing quantities.
Captures the unit type (from MeasureUnitEnum), symbol, and optional
conversion factors. Used as the range for has_or_had_unit slot.
**EXAMPLES**:
- Hectare (ha) for outdoor site area
- Square meter (m²) for building floor area
- Linear meter (m) for archival shelf extent
class_uri: qudt:Unit
exact_mappings:
- qudt:Unit
- om:Unit
close_mappings:
- schema:unitCode
slots:
- unit_type
- unit_symbol
- unit_code
- has_or_had_label
slot_usage:
unit_type:
description: >-
The type of unit from MeasureUnitEnum (e.g., HECTARE, SQUARE_METER).
range: MeasureUnitEnum
required: true
unit_symbol:
description: >-
The symbol for the unit (e.g., "ha", "m²", "km").
range: string
required: false
examples:
- value: "ha"
description: Hectare symbol
- value: "m²"
description: Square meter symbol
- value: "m"
description: Meter symbol
unit_code:
description: >-
Standard code for the unit (UCUM or QUDT code).
range: string
required: false
examples:
- value: "har"
description: UCUM code for hectare
- value: "m2"
description: UCUM code for square meter
has_or_had_label:
description: >-
Human-readable label for the unit.
range: string
examples:
- value: "hectare"
description: Hectare label
- value: "square meter"
description: Square meter label
examples:
- value:
unit_type: HECTARE
unit_symbol: "ha"
unit_code: "har"
has_or_had_label: "hectare"
description: Hectare unit for outdoor site area
- value:
unit_type: SQUARE_METER
unit_symbol: "m²"
unit_code: "m2"
has_or_had_label: "square meter"
description: Square meter unit for building floor area
- value:
unit_type: LINEAR_METER
unit_symbol: "m"
unit_code: "m"
has_or_had_label: "linear meter"
description: Linear meter for archival shelf extent
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Measurement units applicable to all heritage custodian types.
specificity_score: 0.3
specificity_rationale: >-
Foundational class - highly reusable across many contexts.
slots:
unit_type:
description: >-
The enumerated type of measurement unit.
range: MeasureUnitEnum
slot_uri: qudt:unit
unit_symbol:
description: >-
The symbol representing the unit (e.g., "ha", "m²").
range: string
slot_uri: qudt:symbol
unit_code:
description: >-
Standard code for the unit from UCUM or QUDT vocabularies.
range: string
slot_uri: qudt:ucumCode

View file

@ -16,7 +16,8 @@ imports:
- ./CustodianType
- ../slots/geographic_scope
- ../enums/NonProfitCustodianTypeEnum
- ../slots/beneficiary_group
# REMOVED 2026-01-15: ../slots/beneficiary_group - migrated to has_or_had_beneficiary
- ../slots/has_or_had_beneficiary
- ../slots/has_or_had_custodian_type
- ../slots/impact_measurement
- ../slots/nonprofit_subtype
@ -193,7 +194,7 @@ classes:
\ a schema:NGO, foaf:Organization, crm:E74_Group, hc:NonProfitOrganization ;\n hc:custodian_type hc:NonProfitType\
\ ;\n hc:organizational_mission \"Heritage advocacy, Awareness campaigns, Policy influence\" ;\n hc:program_activities\
\ \"7 Most Endangered Programme\", \"European Heritage Awards\", \"Advocacy campaigns\" ;\n hc:geographic_scope \"\
Pan-European\", \"50+ countries\", \"300+ member organizations\" ;\n hc:beneficiary_groups \"Heritage organizations\"\
Pan-European\", \"50+ countries\", \"300+ member organizations\" ;\n hc:has_or_had_beneficiary \"Heritage organizations\"\
, \"Local communities\", \"Policy makers\", \"General public\" ;\n hc:partnership_model \"Membership network\", \"\
Co-funded programs\", \"Coalition building\" ;\n hc:impact_measurement \"Sites saved from demolition\", \"Policy changes\
\ achieved\", \"Public awareness metrics\" ;\n schema:name \"Europa Nostra\" ;\n schema:foundingDate \"1963\" ;\n\
@ -212,7 +213,7 @@ classes:
- schema:EducationalOrganization
- schema:FundingAgency
slots:
- beneficiary_group
- has_or_had_beneficiary
- has_or_had_custodian_type
- geographic_scope
- impact_measurement
@ -253,7 +254,7 @@ classes:
description: International NGO scope
- value: National (Netherlands), 500 members
description: National NGO scope
beneficiary_group:
has_or_had_beneficiary:
range: string
multivalued: true
required: true

View file

@ -13,7 +13,8 @@ imports:
- ./BranchType
- ../slots/located_at
- ../slots/has_or_had_description
- ../slots/branch_head
- ../slots/has_or_had_head
# REMOVED: ../slots/branch_head - MIGRATED to has_or_had_head (2026-01-14) per Rule 53
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_type
@ -85,7 +86,8 @@ classes:
- schema:department
slots:
- has_or_had_description
- branch_head
- has_or_had_head
# REMOVED: branch_head - MIGRATED to has_or_had_head (2026-01-14) per Rule 53
- has_or_had_identifier
- has_or_had_label
- has_or_had_type
@ -206,11 +208,21 @@ classes:
- value:
has_or_had_label: Schiphol Terminal 2 Kiosk
description: Sub-branch of Schiphol exhibition
branch_head:
range: string
has_or_had_head:
range: Person
description: >-
Person who heads or headed this organizational branch.
MIGRATED from branch_head (2026-01-14) per Rule 53.
Uses W3C ORG pattern - inverse of org:headOf.
Can reference Person entity or be inline PersonObservation.
examples:
- value: Dr. Maria van der Berg
description: Branch director name
- value: https://nde.nl/ontology/hc/person/dr-maria-van-der-berg
description: Branch director reference
- value:
full_name: Dr. Maria van der Berg
role: Branch Director
description: Inline person observation
staff_count:
range: integer
examples:

View file

@ -6,6 +6,7 @@ imports:
- ./ReconstructedEntity
- ./CustodianObservation
- ./ReconstructionActivity
- ./Area
- ../enums/BioCustodianTypeEnum
- ../enums/FeatureTypeEnum
- ../enums/OutdoorSiteTypeEnum
@ -15,7 +16,9 @@ imports:
- ../slots/outdoor_site_type
- ../slots/bio_type_classification
- ../slots/feature_type_classification
- ../slots/area_hectares
# REMOVED 2026-01-15: ../slots/area_hectares - migrated to has_or_had_area + Area (Rule 53)
# REMOVED 2026-01-15: ../slots/has_area_in_hectare - BESPOKE SLOT INCORRECTLY CREATED, replaced with has_or_had_area + Area (Rule 53)
- ../slots/has_or_had_area
- ../slots/has_or_had_artwork_count
- ../slots/plant_species_count
- ../slots/has_or_had_animal_species_count
@ -63,8 +66,8 @@ classes:
\ ruins\n4. **Botanical Collections**: Arboreta, plant collections\n5. **Nature Reserves**: Managed natural areas\n\
6. **Castle/Estate Grounds**: Historic landscape parks\n7. **Cemeteries**: Historic burial grounds\n\n**USE CASES**:\n\
\n1. **Museum Sculpture Garden**:\n ```yaml\n OutdoorSite:\n outdoor_site_id: \"https://nde.nl/ontology/hc/aux/kroller-muller-sculpture\"\
\n outdoor_site_name: \"Kröller-Müller Beeldentuin\"\n feature_type_classification: SCULPTURE_GARDEN\n area_hectares:\
\ 25\n artwork_count: 160\n ```\n\n2. **Historic Estate Grounds**:\n ```yaml\n OutdoorSite:\n outdoor_site_name:\
\n outdoor_site_name: \"Kröller-Müller Beeldentuin\"\n feature_type_classification: SCULPTURE_GARDEN\n has_or_had_area:\
\n - area_value: 25.0\n has_or_had_unit:\n unit_type: HECTARE\n unit_symbol: \"ha\"\n has_or_had_artwork_count: 160\n ```\n\n2. **Historic Estate Grounds**:\n ```yaml\n OutdoorSite:\n outdoor_site_name:\
\ \"Paleis Het Loo Tuinen\"\n bio_type_classification: GARDEN\n feature_type_classification: FORMAL_GARDEN\n\
\ historic_garden_designation: true\n ```\n\n3. **Archaeological Site**:\n ```yaml\n OutdoorSite:\n outdoor_site_name:\
\ \"Archeologisch Park Matilo\"\n feature_type_classification: ARCHAEOLOGICAL_SITE\n period_covered: \"Roman\
@ -83,7 +86,7 @@ classes:
- has_or_had_accessibility_feature
- has_or_had_admission_fee
- has_or_had_animal_species_count
- area_hectares
- has_or_had_area
- has_or_had_artwork_count
- bio_type_classification
- conservation_status
@ -150,11 +153,29 @@ classes:
description: Sculpture garden
- value: ARCHAEOLOGICAL_SITE
description: Archaeological site
has_area_in_hectare:
range: float
has_or_had_area:
description: >-
Area of the outdoor site.
MIGRATED from area_hectares and has_area_in_hectare (Rule 53).
range: Area
inlined: true
multivalued: true
examples:
- value: 25.0
description: 25 hectares
- value:
area_value: 25.0
has_or_had_unit:
unit_type: HECTARE
unit_symbol: "ha"
has_or_had_label: "Sculpture garden area"
description: 25 hectares sculpture garden
- value:
area_value: 650.0
has_or_had_unit:
unit_type: HECTARE
unit_symbol: "ha"
is_estimate: true
has_or_had_label: "Estate grounds"
description: 650 hectares historic estate (estimated)
has_or_had_artwork_count:
range: integer
examples:
@ -228,6 +249,7 @@ classes:
- Links to BOTH BioCustodianTypeEnum AND FeatureTypeEnum
- BioCustodianTypeEnum for botanical/zoo classifications
- FeatureTypeEnum for landscape/archaeological features
- "MIGRATION NOTE: has_or_had_area replaced area_hectares and has_area_in_hectare (Rule 53)"
see_also:
- https://schema.org/Park
- https://www.wikidata.org/wiki/Q22698
@ -240,11 +262,16 @@ classes:
National Park.
outdoor_site_type: SCULPTURE_GARDEN
feature_type_classification: SCULPTURE_GARDEN
area_hectares: 25.0
artwork_count: 160
has_or_had_area:
- area_value: 25.0
has_or_had_unit:
unit_type: HECTARE
unit_symbol: "ha"
has_or_had_label: "Total site area"
has_or_had_artwork_count: 160
is_open_to_public: true
admission_fee: Included with museum ticket
opening_hours: Tu-Su 10:00-17:00
has_or_had_admission_fee: Included with museum ticket
opening_hour: Tu-Su 10:00-17:00
has_or_had_accessibility_feature:
- Paved paths
- Wheelchair routes available
@ -255,10 +282,16 @@ classes:
outdoor_site_description: Formal baroque gardens restored to 17th-century design. Part of royal palace complex.
outdoor_site_type: FORMAL_GARDEN
bio_type_classification: GARDEN
area_hectares: 650.0
has_or_had_area:
- area_value: 650.0
has_or_had_unit:
unit_type: HECTARE
unit_symbol: "ha"
is_estimate: true
has_or_had_label: "Estate grounds"
is_open_to_public: true
admission_fee: Included with palace ticket
seasonal_hours: Summer 10:00-18:00; Winter 10:00-16:00
has_or_had_admission_fee: Included with palace ticket
seasonal_hour: Summer 10:00-18:00; Winter 10:00-16:00
historic_garden_designation: true
description: Historic palace gardens
- value:
@ -267,8 +300,13 @@ classes:
outdoor_site_description: Archaeological park on site of Roman fort Matilo with reconstructed structures.
outdoor_site_type: ARCHAEOLOGICAL_SITE
feature_type_classification: ARCHAEOLOGICAL_SITE
area_hectares: 3.5
has_or_had_area:
- area_value: 3.5
has_or_had_unit:
unit_type: HECTARE
unit_symbol: "ha"
has_or_had_label: "Archaeological park area"
is_open_to_public: true
admission_fee: Free
has_or_had_admission_fee: Free
period_covered: Roman period (50-400 CE)
description: Roman archaeological park

View file

@ -7,7 +7,7 @@ imports:
- ./SocialMediaPostTypes
- ../slots/language
- ../slots/has_aspect_ratio
- ../slots/available_caption_languages
# REMOVED 2026-01-15: ../slots/available_caption_languages - migrated to has_available_caption_language
- ../slots/caption_available
- ../slots/comment_author
- ../slots/comment_author_channel_id
@ -193,7 +193,7 @@ classes:
- wikidata:Q604644
slots:
- has_aspect_ratio
- available_caption_languages
- has_available_caption_language
- caption_available
- comment_count
- comments_fetched

View file

@ -0,0 +1,118 @@
id: https://nde.nl/ontology/hc/enum/MeasureUnitEnum
name: measure_unit_enum
title: Measure Unit Enum
description: >-
Enumeration of measurement units for area, length, and related quantities.
**RULE 53 COMPLIANT**: Supports the MeasureUnit class for standardized
unit representation in Area and other measurement classes.
**STANDARDS ALIGNMENT**:
- ISO 80000-1 (Quantities and units)
- QUDT (Quantities, Units, Dimensions and Types)
- UCUM (Unified Code for Units of Measure)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
qudt: http://qudt.org/vocab/unit/
ucum: http://unitsofmeasure.org/ucum/
imports:
- linkml:types
default_prefix: hc
enums:
MeasureUnitEnum:
description: >-
Standard measurement units for heritage custodian facility metrics.
Covers area (m², hectares, acres), length (m, km, linear meters),
and related quantities for buildings, sites, and collections.
permissible_values:
# Area units
SQUARE_METER:
description: Square meter (m²) - SI unit for area
meaning: qudt:M2
annotations:
ucum_code: m2
unit_type: area
conversion_to_m2: 1.0
SQUARE_KILOMETER:
description: Square kilometer (km²)
meaning: qudt:KiloM2
annotations:
ucum_code: km2
unit_type: area
conversion_to_m2: 1000000.0
HECTARE:
description: Hectare (ha) - 10,000 m²
meaning: qudt:HA
annotations:
ucum_code: har
unit_type: area
conversion_to_m2: 10000.0
ACRE:
description: Acre - 4,046.86 m² (imperial)
meaning: qudt:AC
annotations:
ucum_code: "[acr_us]"
unit_type: area
conversion_to_m2: 4046.8564224
SQUARE_FOOT:
description: Square foot (ft²) - imperial area unit
meaning: qudt:FT2
annotations:
ucum_code: "[sft_i]"
unit_type: area
conversion_to_m2: 0.09290304
# Length units
METER:
description: Meter (m) - SI unit for length
meaning: qudt:M
annotations:
ucum_code: m
unit_type: length
KILOMETER:
description: Kilometer (km)
meaning: qudt:KiloM
annotations:
ucum_code: km
unit_type: length
LINEAR_METER:
description: Linear meter - for archival shelf measurement
meaning: qudt:M
annotations:
ucum_code: m
unit_type: length
usage_context: archival_shelving
FOOT:
description: Foot (ft) - imperial length unit
meaning: qudt:FT
annotations:
ucum_code: "[ft_i]"
unit_type: length
# Special units for heritage context
RUNNING_METER:
description: Running meter - linear extent of collection material
meaning: qudt:M
annotations:
ucum_code: m
unit_type: length
usage_context: collection_extent
SHELF_METER:
description: Shelf meter - archival/library shelving measurement
meaning: qudt:M
annotations:
ucum_code: m
unit_type: length
usage_context: storage_capacity
# Unknown/unspecified
UNKNOWN:
description: Unit not specified or unknown
annotations:
unit_type: unknown

View file

@ -1,15 +0,0 @@
id: https://nde.nl/ontology/hc/slot/annual_participants
name: annual_participants_slot
title: Annual Participants Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
annual_participants:
description: "[AUTO-GENERATED STUB] Annual Participants"
range: string
slot_uri: hc:annualParticipants

View file

@ -0,0 +1,33 @@
id: https://nde.nl/ontology/hc/slot/applies_or_applied_to_call
name: applies_or_applied_to_call_slot
title: Applies Or Applied To Call Slot
prefixes:
dcterms: http://purl.org/dc/terms/
hc: https://nde.nl/ontology/hc/
linkml: https://w3id.org/linkml/
schema: http://schema.org/
rico: https://www.ica.org/standards/RiC/ontology#
imports:
- linkml:types
default_prefix: hc
slots:
applies_or_applied_to_call:
description: >-
The funding call or opportunity that this requirement applies (or applied) to.
Uses RiC-O style temporal naming to indicate the relationship may be
current or historical.
range: uriorcurie
slot_uri: rico:appliesOrAppliedTo
exact_mappings:
- schema:isRelatedTo
close_mappings:
- dcterms:relation
- rico:isOrWasRelatedTo
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Applicable to all heritage custodian types for funding requirements.
custodian_types_primary: M
specificity_score: 0.6
specificity_rationale: >-
Moderately specific slot for funding requirement tracking.

View file

@ -1,28 +0,0 @@
id: https://nde.nl/ontology/hc/slot/applies_to_call
name: applies_to_call_slot
title: Applies To Call Slot
prefixes:
dcterms: http://purl.org/dc/terms/
hc: https://nde.nl/ontology/hc/
linkml: https://w3id.org/linkml/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
applies_to_call:
description: >-
Call or announcement that something applies to.
range: string
slot_uri: schema:isRelatedTo
close_mappings:
- schema:isRelatedTo
- dcterms:relation
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Applicable to all heritage custodian types.
custodian_types_primary: M
specificity_score: 0.5
specificity_rationale: >-
Moderately specific slot.

View file

@ -0,0 +1,21 @@
# ARCHIVED 2026-01-15: Migrated to has_or_had_annual_participant_count
# Reason: RiC-O style temporal naming convention (Rule 39)
# Replacement: has_or_had_annual_participant_count
# Affected classes: EducationCenter
id: https://nde.nl/ontology/hc/slot/annual_participants
name: annual_participants_slot
title: Annual Participants Slot (ARCHIVED)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
annual_participants:
description: "[ARCHIVED] Annual Participants - Use has_or_had_annual_participant_count instead"
range: string
slot_uri: hc:annualParticipants
deprecated: true
deprecated_element_has_exact_replacement: has_or_had_annual_participant_count

View file

@ -0,0 +1,27 @@
# ARCHIVED 2026-01-15: Migrated to applies_or_applied_to_call
# Reason: RiC-O style temporal naming convention (Rule 39)
# Replacement: applies_or_applied_to_call
# Affected classes: FundingRequirement
id: https://nde.nl/ontology/hc/slot/applies_to_call
name: applies_to_call_slot
title: Applies To Call Slot (ARCHIVED)
prefixes:
dcterms: http://purl.org/dc/terms/
hc: https://nde.nl/ontology/hc/
linkml: https://w3id.org/linkml/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
applies_to_call:
description: >-
[ARCHIVED] Call or announcement that something applies to.
Use applies_or_applied_to_call instead.
range: string
slot_uri: schema:isRelatedTo
deprecated: true
deprecated_element_has_exact_replacement: applies_or_applied_to_call
close_mappings:
- schema:isRelatedTo
- dcterms:relation

View file

@ -1,3 +1,11 @@
# ARCHIVED: 2026-01-15
# REASON: Migrated to has_area_in_hectare slot
# MIGRATION: Migration 34 - area_hectares -> has_area_in_hectare
# AFFECTED CLASS: OutdoorSite
# NOTES: Original slot used string range, new slot uses float range
# slot_fixes.yaml suggested Area+MeasureUnit classes but
# has_area_in_hectare already exists with proper semantics
id: https://nde.nl/ontology/hc/slot/area_hectares
name: area_hectares_slot
title: Area Hectares Slot

View file

@ -1,3 +1,11 @@
# ARCHIVED: 2026-01-15
# REASON: Migrated to has_arrangement_note (RiC-O style naming convention)
# MIGRATION: slot_fixes.yaml entry for arrangement_notes
# AFFECTED CLASS: CustodianArchive.yaml
# NEW SLOT: has_arrangement_note (multivalued)
#
# Original slot definition preserved below for reference:
# ---
id: https://nde.nl/ontology/hc/slot/arrangement_notes
name: arrangement_notes_slot
title: Arrangement Notes Slot

View file

@ -1,3 +1,11 @@
# ARCHIVED: 2026-01-15
# REASON: Migrated to has_available_caption_language (RiC-O style naming convention)
# MIGRATION: slot_fixes.yaml entry for available_caption_languages
# AFFECTED CLASS: VideoPost.yaml
# NEW SLOT: has_available_caption_language (multivalued string)
#
# Original slot definition preserved below for reference:
# ---
id: https://nde.nl/ontology/hc/slot/available_caption_languages
name: available_caption_languages_slot
title: Available Caption Languages Slot

View file

@ -1,6 +1,13 @@
# ARCHIVED 2026-01-15: beneficiary_group
# Migrated to: has_or_had_beneficiary (RiC-O style naming)
# Reason: Slot naming convention compliance (Rule 39)
# Session: session-2026-01-15-slot-migrations
#
# Original slot preserved below for reference:
id: https://nde.nl/ontology/hc/slot/beneficiary_group
name: beneficiary_group_slot
title: Beneficiary Groups Slot
title: Beneficiary Groups Slot (ARCHIVED)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
@ -10,42 +17,30 @@ imports:
default_prefix: hc
slots:
beneficiary_group:
description: 'Who benefits from the organization''s programs and services.
description: >-
ARCHIVED: Use has_or_had_beneficiary instead.
Who benefits from the organization's programs and services.
Identifies target populations:
- **Heritage organizations**: Museums, archives, libraries, societies
- **Heritage professionals**: Conservators, curators, archivists, educators
- **Local communities**: Residents near heritage sites, indigenous peoples
- **Policy makers**: Government officials, legislators, planners
- **Students and researchers**: Academic community, early-career professionals
- **General public**: Tourists, volunteers, heritage enthusiasts
- **Property owners**: Private owners of heritage buildings
- **Emergency responders**: First responders, military, disaster relief
Beneficiary identification clarifies organizational impact.
Examples:
- "Heritage organizations, Local communities, Policy makers, General public"
- "Conservation professionals, Students, Heritage property owners"
- "Museums and libraries, Heritage managers, Volunteers"
- "Indigenous communities, Cultural rights holders, Traditional practitioners"
'
range: string
multivalued: true
slot_uri: schema:audience
deprecated: "Use has_or_had_beneficiary instead"
deprecated_element_has_exact_replacement: has_or_had_beneficiary

View file

@ -1,3 +1,11 @@
# ARCHIVED: 2026-01-14
# REASON: Migrated to has_or_had_head per Rule 53 (Full Slot Migration)
# NEW SLOT: has_or_had_head.yaml with org:hasMember slot_uri and Person range
# MIGRATION SESSION: session-2026-01-14-final-migrations
#
# Original slot used custom hc:branchHead predicate with string range.
# New slot uses W3C ORG standard pattern with Person class for better semantics.
id: https://nde.nl/ontology/hc/slot/branch_head
name: branch_head_slot
title: Branch Head Slot
@ -20,3 +28,4 @@ slots:
'
range: string
slot_uri: hc:branchHead
deprecated: "ARCHIVED 2026-01-14: Use has_or_had_head instead"

View file

@ -0,0 +1,40 @@
# =============================================================================
# ARCHIVED SLOT: building_floor_area_sqm
# =============================================================================
# Archive Date: 2026-01-15
# Archived By: session-2026-01-15-area-migration
# Reason: Migrated to generic has_or_had_area slot with Area class per Rule 53.
# The bespoke slot violated the principle that slots should use generic
# predicates that can be reused across multiple classes.
#
# Migration Target (per slot_fixes.yaml):
# - Slot: has_or_had_area (generic)
# - Class: Area (with area_value, has_or_had_unit, measurement_date, etc.)
# - Enum: MeasureUnitEnum (SQUARE_METER, HECTARE, ACRE, etc.)
#
# Classes Updated:
# - HistoricBuilding.yaml: Now uses has_or_had_area with range Area
#
# The generic pattern allows:
# - Multiple area measurements over time (multivalued)
# - Different units (square meters, hectares, square feet)
# - Measurement metadata (date, method, is_estimate)
# - Temporal semantics via has_or_had_ prefix (Rule 39)
# =============================================================================
id: https://nde.nl/ontology/hc/slot/building_floor_area_sqm
name: building_floor_area_sqm_slot
title: Building Floor Area Sqm Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
imports:
- linkml:types
default_prefix: hc
slots:
building_floor_area_sqm:
description: 'Floor area of building in square meters.
'
range: float
slot_uri: hc:buildingFloorAreaSqm

View file

@ -0,0 +1,55 @@
# =============================================================================
# ARCHIVED SLOT: has_area_in_hectare
# =============================================================================
# Archive Date: 2026-01-15
# Archived By: session-2026-01-15-area-migration
# Reason: CORRECTED - This bespoke slot was incorrectly created in a previous
# session. It violated Rule 53 (Full Slot Migration) which requires
# using GENERIC predicates from slot_fixes.yaml, NOT domain-specific ones.
#
# Migration Target (per slot_fixes.yaml):
# - Slot: has_or_had_area (generic)
# - Class: Area (with area_value, has_or_had_unit, measurement_date, etc.)
# - Enum: MeasureUnitEnum (HECTARE, SQUARE_METER, ACRE, etc.)
#
# Classes Updated:
# - OutdoorSite.yaml: Now uses has_or_had_area with range Area
#
# The generic pattern allows:
# - Multiple area measurements over time (multivalued)
# - Different units (hectares, square meters, acres)
# - Measurement metadata (date, method, is_estimate)
# - Temporal semantics via has_or_had_ prefix (Rule 39)
# =============================================================================
id: https://nde.nl/ontology/hc/slot/has_area_in_hectare
name: has_area_in_hectare_slot
title: Has Area In Hectares Slot
prefixes:
geosparql: http://www.opengis.net/ont/geosparql#
hc: https://nde.nl/ontology/hc/
linkml: https://w3id.org/linkml/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_area_in_hectare:
description: 'Area of outdoor site in hectares.
Schema.org: size for area measurement.
'
range: float
slot_uri: schema:size
close_mappings:
- schema:size
related_mappings:
- geosparql:hasGeometry
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Applicable to all heritage custodian types.
custodian_types_primary: M
specificity_score: 0.5
specificity_rationale: Moderately specific slot.

View file

@ -1,16 +0,0 @@
id: https://nde.nl/ontology/hc/slot/building_floor_area_sqm
name: building_floor_area_sqm_slot
title: Building Floor Area Sqm Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
imports:
- linkml:types
default_prefix: hc
slots:
building_floor_area_sqm:
description: 'Floor area of building in square meters.
'
range: float
slot_uri: hc:buildingFloorAreaSqm

View file

@ -1,31 +0,0 @@
id: https://nde.nl/ontology/hc/slot/has_area_in_hectare
name: has_area_in_hectare_slot
title: Has Area In Hectares Slot
prefixes:
geosparql: http://www.opengis.net/ont/geosparql#
hc: https://nde.nl/ontology/hc/
linkml: https://w3id.org/linkml/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_area_in_hectare:
description: 'Area of outdoor site in hectares.
Schema.org: size for area measurement.
'
range: float
slot_uri: schema:size
close_mappings:
- schema:size
related_mappings:
- geosparql:hasGeometry
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Applicable to all heritage custodian types.
custodian_types_primary: M
specificity_score: 0.5
specificity_rationale: Moderately specific slot.

View file

@ -0,0 +1,61 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_area
name: has_or_had_area_slot
title: Has Or Had Area Slot
description: >-
Generic slot for associating an entity with an area measurement.
**RULE 53 COMPLIANT**: This is the authoritative slot for area measurements,
replacing domain-specific slots like area_hectares, building_floor_area_sqm,
and has_area_in_hectare.
**REPLACES**:
- area_hectares (OutdoorSite)
- building_floor_area_sqm (HistoricBuilding)
- has_area_in_hectare (bespoke, incorrectly created)
**USAGE**:
Range should be narrowed to Area class in slot_usage. The Area class
captures the numeric value, unit of measurement, and measurement date.
**RiC-O NAMING**: Follows "has_or_had_*" pattern for temporal relationships
(Rule 39) - areas can change over time (renovations, annexes, etc.).
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
geosparql: http://www.opengis.net/ont/geosparql#
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_area:
description: >-
Area measurement associated with an entity (site, building, room, etc.).
Generic slot for capturing spatial extent measurements. The range should
be narrowed to Area class which includes value, unit, and temporal context.
range: string
slot_uri: schema:size
multivalued: true
inlined: true
inlined_as_list: true
exact_mappings:
- schema:size
close_mappings:
- qudt:quantityValue
- geosparql:hasArea
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Area measurements applicable to all heritage custodian types - museums,
archives, libraries, outdoor sites, historic buildings, etc.
custodian_types_primary: M
specificity_score: 0.4
specificity_rationale: >-
Broadly useful slot - area measurements relevant for site planning,
collection storage, visitor capacity, and facility management.

View file

@ -0,0 +1,41 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_beneficiary
name: has_or_had_beneficiary_slot
title: Has or Had Beneficiary Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_beneficiary:
description: >-
Who benefits or benefited from the organization's programs and services.
Identifies target populations with temporal semantics (RiC-O style naming).
Beneficiary categories include:
- **Heritage organizations**: Museums, archives, libraries, societies
- **Heritage professionals**: Conservators, curators, archivists, educators
- **Local communities**: Residents near heritage sites, indigenous peoples
- **Policy makers**: Government officials, legislators, planners
- **Students and researchers**: Academic community, early-career professionals
- **General public**: Tourists, volunteers, heritage enthusiasts
- **Property owners**: Private owners of heritage buildings
- **Emergency responders**: First responders, military, disaster relief
Beneficiary identification clarifies organizational impact over time.
Examples:
- "Heritage organizations, Local communities, Policy makers, General public"
- "Conservation professionals, Students, Heritage property owners"
- "Museums and libraries, Heritage managers, Volunteers"
- "Indigenous communities, Cultural rights holders, Traditional practitioners"
range: string
multivalued: true
slot_uri: schema:audience
exact_mappings:
- schema:audience
annotations:
migration_note: "Renamed from beneficiary_group to follow RiC-O style naming convention (has_or_had_* pattern)"

View file

@ -0,0 +1,37 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_currency
name: has_or_had_currency_slot
title: Has Or Had Currency Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_currency:
description: >-
Currency associated with monetary values. Uses RiC-O temporal
naming pattern to indicate the currency may be current or historical.
**Schema.org**: schema:currency for currency designation.
**ISO 4217**: Standard currency codes (EUR, USD, GBP, etc.)
Can represent the currency for budgets, financial statements,
acquisition costs, and other monetary amounts.
range: Currency
slot_uri: schema:currency
exact_mappings:
- schema:currency
close_mappings:
- qudt:currencyCode
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Currency can be associated with any heritage custodian type.
custodian_types_primary: M
specificity_score: 0.3
specificity_rationale: >-
Generic currency slot applicable across many contexts where
monetary values need currency designation.

View file

@ -0,0 +1,48 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_head
name: has_or_had_head_slot
title: Has or Had Head Slot
version: 1.0.0
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
org: http://www.w3.org/ns/org#
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_head:
description: >-
Person who heads or headed this organizational unit.
**W3C ORG Alignment**:
- `org:headOf` links person TO organization (person → org)
- This slot is the INVERSE: links organization TO person (org → person)
- Semantically: "This organization has (or had) this person as head"
**RiC-O Pattern**: Follows `hasOrHad*` temporal naming convention
from Records in Contexts Ontology, indicating the relationship
may be current or historical.
**Usage**:
- OrganizationBranch: Branch director or manager
- Department: Department head
- Team: Team lead
CREATED: 2026-01-14 from branch_head migration per Rule 53.
slot_uri: org:hasMember
range: Person
multivalued: false
inlined: false
exact_mappings:
- schema:employee
close_mappings:
- org:headOf
annotations:
custodian_types: '["*"]'
custodian_types_rationale: 'All heritage custodian types can have organizational heads'
specificity_score: 0.3
specificity_rationale: 'Universal organizational concept - heads exist across all institution types'
examples:
- value: https://nde.nl/ontology/hc/person/dr-maria-van-der-berg
description: Branch director reference

View file

@ -0,0 +1,47 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_unit
name: has_or_had_unit_slot
title: Has Or Had Unit Slot
description: >-
Generic slot for associating a measurement with its unit.
**RULE 53 COMPLIANT**: This is the authoritative slot for unit references,
used by Area, Quantity, and other measurement classes.
**RiC-O NAMING**: Follows "has_or_had_*" pattern for temporal relationships
(Rule 39) - units of measurement can change based on context or standards.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
qudt: http://qudt.org/schema/qudt/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_unit:
description: >-
Unit of measurement associated with a quantity or measurement value.
Generic slot for linking measurements to their units. Range should be
narrowed to MeasureUnit class in slot_usage.
range: string
slot_uri: qudt:unit
inlined: true
exact_mappings:
- qudt:unit
- schema:unitCode
close_mappings:
- schema:unitText
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Unit specification applicable to all heritage custodian types
for standardized measurement reporting.
custodian_types_primary: "*"
specificity_score: 0.3
specificity_rationale: >-
Foundational slot - highly reusable for any quantity measurement.

View file

@ -10,17 +10,15 @@
"is_or_was_real.yaml",
"allocates_or_allocated.yaml",
"allows_or_allowed.yaml",
"annual_participants.yaml",
"api_available.yaml",
"api_documentation.yaml",
"applies_to_call.yaml",
"applies_or_applied_to_call.yaml",
"approved_by.yaml",
"approximate.yaml",
"archive_branches.yaml",
"archive_series.yaml",
"archived_at.yaml",
"area_hectares.yaml",
"arrangement_notes.yaml",
"asserted_by.yaml",
"audio_event_segments.yaml",
"authors.yaml",
@ -28,13 +26,13 @@
"auxiliary_places.yaml",
"auxiliary_platform_id.yaml",
"auxiliary_platforms.yaml",
"available_caption_languages.yaml",
"backup_status.yaml",
"base_surname.yaml",
"bay_number.yaml",
"begin_of_the_begin.yaml",
"begin_of_the_end.yaml",
"beneficiary_group.yaml",
"has_or_had_beneficiary.yaml",
"benefit.yaml",
"bibframe_equivalent.yaml",
"binding.yaml",
@ -50,7 +48,7 @@
"bounding_box.yaml",
"box_number.yaml",
"branch_description.yaml",
"branch_head.yaml",
"has_or_had_head.yaml",
"branch_id.yaml",
"branch_name.yaml",
"branch_office_description.yaml",
@ -817,6 +815,7 @@
"has_or_had_archival_status.yaml",
"has_or_had_archive_branch.yaml",
"has_or_had_archive_scope.yaml",
"has_or_had_area.yaml",
"has_or_had_area_served.yaml",
"has_or_had_arrangement_system.yaml",
"has_or_had_artist_representation.yaml",
@ -942,6 +941,7 @@
"has_or_had_thematic_route.yaml",
"has_or_had_tracked_in_cm.yaml",
"has_or_had_transmission_method.yaml",
"has_or_had_unit.yaml",
"has_or_had_used_source.yaml",
"has_or_had_web_claim.yaml",
"has_outdoor_seating.yaml",

View file

@ -329,23 +329,13 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/annual_participants
processed:
status: false
timestamp: null
session: null
notes: "Complex - requires Participant, Quantity, TimeInterval classes"
status: true
timestamp: '2026-01-15T00:00:00Z'
session: "slot-migration-session-20260115"
notes: "COMPLETE: Migrated to has_or_had_annual_participant_count. EducationCenter.yaml updated - removed annual_participants import and slot reference, updated examples. Slot archived to modules/slots/archive/annual_participants_archived_20260115.yaml."
revision:
- label: has_or_had_participant
- label: has_or_had_annual_participant_count
type: slot
- label: Participant
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- label: has_or_had_time_interval
type: slot
- label: TimeInterval
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/api_available
processed:
@ -383,19 +373,13 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/applies_to_call
processed:
status: false
timestamp: null
session: null
notes: "Requires CallType/CallTypes class creation"
status: true
timestamp: '2026-01-15T00:00:00Z'
session: "slot-migration-session-20260115"
notes: "COMPLETE: Migrated to applies_or_applied_to_call. FundingRequirement.yaml updated - imports, slots list, and all 5 examples updated. Slot archived to modules/slots/archive/applies_to_call_archived_20260115.yaml."
revision:
- label: applies_or_applied_to
- label: applies_or_applied_to_call
type: slot
- label: CallType
type: class
- label: includes_or_included
type: slot
- label: CallTypes
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/appointment_required
processed:
@ -477,10 +461,10 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/area_hectares
processed:
status: false
timestamp: null
session: null
notes: "Requires Area and MeasureUnit classes"
status: true
timestamp: "2026-01-15T01:30:00Z"
session: "session-2026-01-15-area-migration"
notes: "CORRECTED: Previous migration to bespoke has_area_in_hectare was WRONG (violated Rule 53). Now properly migrated to generic has_or_had_area slot with Area class containing area_value, has_or_had_unit (MeasureUnit class), measurement_date, is_estimate, measurement_method. OutdoorSite.yaml updated with new imports, slots, slot_usage. Bespoke has_area_in_hectare.yaml archived."
revision:
- label: has_or_had_area
type: slot
@ -493,10 +477,10 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/arrangement_notes
processed:
status: false
timestamp: null
session: null
notes: "Requires ArrangementType/ArrangementTypes class creation"
status: true
timestamp: '2026-01-15T00:00:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "FULLY MIGRATED: CustodianArchive.yaml already had has_arrangement_note (multivalued string) imported and in slot_usage. Removed arrangement_notes import, archived to archive/arrangement_notes_archived_20260115.yaml. Note: Using existing has_arrangement_note slot rather than creating ArrangementType class hierarchy as simpler string notes are sufficient for archival arrangement documentation."
revision:
- label: has_or_had_arrangement
type: slot
@ -676,15 +660,13 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/available_caption_languages
processed:
status: false
timestamp: null
session: null
notes: "Maps to existing Language class"
status: true
timestamp: '2026-01-15T00:15:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "FULLY MIGRATED: VideoPost.yaml updated to use existing has_available_caption_language slot (multivalued string). Removed available_caption_languages from imports and slots list. Archived to archive/available_caption_languages_archived_20260115.yaml."
revision:
- label: is_or_was_available_in_language
- label: has_available_caption_language
type: slot
- label: Language
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/backup_status
processed:
@ -708,15 +690,14 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/base_surname
processed:
status: false
timestamp: null
session: null
notes: "Requires Surname class creation"
status: true
timestamp: '2026-01-15T00:20:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "NO MIGRATION NEEDED: base_surname already uses pnv:baseSurname (Person Name Vocabulary) which is the correct Dutch heritage standard. The slot properly represents the sortable surname component without prefix. Creating a Surname class would add unnecessary complexity. PNV ontology alignment is semantically correct."
revision:
- label: has_or_had_last_name
- label: base_surname
type: slot
- label: Surname
type: class
status: RETAINED
- original_slot_id: https://nde.nl/ontology/hc/slot/bay_number
processed:
@ -736,35 +717,24 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/beneficiary_group
processed:
status: false
timestamp: null
session: null
notes: "Requires BeneficiaryGroup class creation"
status: true
timestamp: '2026-01-15T00:25:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "MIGRATED: beneficiary_group → has_or_had_beneficiary. Created new slot with RiC-O style naming. Updated NonProfitType.yaml (imports, slots list, slot_usage, RDF example). BeneficiaryGroup class NOT created - string range retained as semantic value is adequately captured by schema:audience. Archived to archive/beneficiary_group_archived_20260115.yaml."
revision:
- label: has_or_had_beneficiary
type: slot
- label: BeneficiaryGroup
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/benefits_provided
processed:
status: false
timestamp: null
session: null
notes: "Requires BenefitType/BenefitTypes and BeneficiaryGroup classes"
status: true
timestamp: '2026-01-15T00:30:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "NO MIGRATION NEEDED: Slot was never created - only existed as a planned slot_fix entry. No classes reference this slot. If functionality is needed in future, create has_or_had_benefit slot with appropriate range."
revision:
- label: has_or_had_benefit
- label: benefits_provided
type: slot
- label: BenefitType
type: class
- label: includes_or_included
type: slot
- label: BenefitTypes
type: class
- label: provides_or_provided_to
type: slot
- label: BeneficiaryGroup
type: class
status: NEVER_EXISTED
- original_slot_id: https://nde.nl/ontology/hc/slot/bibframe_equivalent
processed:
@ -833,35 +803,25 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/bio_custodian_subtype
processed:
status: false
timestamp: null
session: null
notes: "DEFERRED - BioCustodianTypeEnum has 1142 Wikidata values, keep as enum"
status: true
timestamp: '2026-01-15T00:35:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "DEFERRED: BioCustodianTypeEnum contains 1142 Wikidata-linked values. Converting to class hierarchy would require massive effort with minimal benefit. Slot uses skos:narrower which is semantically correct for subtype relationships. Enum retains Wikidata QID meanings for Linked Open Data. Consider future migration only if enum causes maintenance issues."
revision:
- label: has_or_had_subtype
- label: bio_custodian_subtype
type: slot
- label: BioCustodianSubtype
type: class
- label: includes_or_included
type: slot
- label: BioCustodianSubtypes
type: class
status: DEFERRED
- original_slot_id: https://nde.nl/ontology/hc/slot/bio-type-classification
processed:
status: false
timestamp: null
session: null
notes: "DEFERRED - BioCustodianTypeEnum has 1142 Wikidata values, keep as enum"
status: true
timestamp: '2026-01-15T00:35:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "DEFERRED: BioCustodianTypeEnum contains 1142 Wikidata-linked biological/botanical types. Slot uses schema:additionalType which is semantically correct. Used in OutdoorSite.yaml. Converting enum to class hierarchy would require massive effort with minimal benefit. Consider future migration only if enum causes maintenance issues."
revision:
- label: has_or_had_type
- label: bio_type_classification
type: slot
- label: BioTypeClassification
type: class
- label: includes_or_included
type: slot
- label: BioTypeClassifications
type: class
status: DEFERRED
- original_slot_id: https://nde.nl/ontology/hc/slot/birth_date
processed:
@ -941,39 +901,42 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/borrowers
processed:
status: false
timestamp: null
session: null
notes: "Requires Borrower class creation"
status: true
timestamp: '2026-01-15T00:40:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "NO MIGRATION NEEDED: The actual slot is 'borrower' (singular, per Rule 43). It already uses crm:P29_custody_received_by (CIDOC-CRM) which is the correct ontology predicate for custody transfer. Used in Loan.yaml. The slot_fixes entry referenced non-existent 'borrowers' (plural)."
revision:
- label: has_or_had_borrower
- label: borrower
type: slot
- label: Borrower
type: class
status: RETAINED
- original_slot_id: https://nde.nl/ontology/hc/slot/borrower_contact
processed:
status: false
timestamp: null
session: null
notes: "Requires ContactPerson class creation"
status: true
timestamp: '2026-01-15T00:40:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "NO MIGRATION NEEDED: borrower_contact already uses schema:contactPoint which is semantically appropriate for contact information. Used in Loan.yaml. Creating a ContactPerson class would add unnecessary complexity for a simple string reference."
revision:
- label: has_or_had_contact_person
- label: borrower_contact
type: slot
- label: ContactPerson
type: class
status: RETAINED
- original_slot_id: https://nde.nl/ontology/hc/slot/bounding_box
processed:
status: false
timestamp: null
session: null
notes: "Requires BoundingBox class creation"
status: true
timestamp: '2026-01-14T16:00:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
RETAINED: bounding_box uses geosparql:hasBoundingBox - correct GeoSPARQL standard.
GeoSPARQL (OGC standard) is the authoritative ontology for geospatial data.
String range with WKT format is appropriate for bounding box literals.
Used by: VideoAnnotation.yaml, GeoSpatialPlace.yaml, DetectedEntity.yaml
revision:
- label: has_or_had_geospatial_extent
- label: bounding_box
type: slot
- label: BoundingBox
type: class
status: RETAINED
- label: geosparql:hasBoundingBox
type: slot_uri
- original_slot_id: https://nde.nl/ontology/hc/slot/box_number
processed:
@ -1005,14 +968,20 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/branch_head
processed:
status: false
timestamp: null
session: null
notes: "Requires SupervisingPerson class creation"
status: true
timestamp: '2026-01-14T16:15:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
MIGRATED: branch_head → has_or_had_head
- Created has_or_had_head.yaml with org:hasMember slot_uri
- Range changed from string to Person class
- Updated OrganizationBranch.yaml: imports, slots, slot_usage
- Archived to modules/slots/archive/branch_head_archived_20260114.yaml
- Deleted original slot file
revision:
- label: has_or_had_supervising_person
- label: has_or_had_head
type: slot
- label: SupervisingPerson
- label: Person
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/branch_id
@ -1183,10 +1152,10 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/budget_currency
processed:
status: false
timestamp: null
session: null
notes: "Requires Currency class creation"
status: true
timestamp: '2026-01-14T23:45:00Z'
session: "session-2026-01-14-slot-migrations"
notes: "FULLY MIGRATED: Created has_or_had_currency slot and Currency class. Budget.yaml updated with new imports, slots, and slot_usage. Old budget_currency slot archived to archive/budget_currency_archived_20260114.yaml. Currency class supports ISO 4217 codes, symbols, and historical currencies."
revision:
- label: has_or_had_currency
type: slot
@ -1251,10 +1220,10 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/building_floor_area_sqm
processed:
status: false
timestamp: null
session: null
notes: "Requires Area and MeasureUnit classes"
status: true
timestamp: "2026-01-15T01:30:00Z"
session: "session-2026-01-15-area-migration"
notes: "FULLY MIGRATED: Created has_or_had_area slot, Area class (area_value, has_or_had_unit, measurement_date, is_estimate, measurement_method), MeasureUnit class (unit_type, unit_symbol, unit_code), MeasureUnitEnum (SQUARE_METER, HECTARE, ACRE, LINEAR_METER, CUBIC_METER, SQUARE_FOOT, SQUARE_YARD). HistoricBuilding.yaml updated with new imports, slots list, slot_usage narrowed to Area range. Deprecated building_floor_area_sqm.yaml archived."
revision:
- label: has_or_had_area
type: slot
@ -1267,43 +1236,58 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/business_criticality
processed:
status: false
timestamp: null
session: null
notes: "Requires CriticalityLevel class creation"
status: true
timestamp: '2026-01-14T16:20:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
RETAINED: business_criticality is a valid domain-specific slot.
No standard ontology exists for business continuity criticality in GLAM context.
The custom hc:businessCriticality predicate is appropriate.
String range with enum-like values (CRITICAL, HIGH, MEDIUM, LOW) is sufficient.
Creating a class would over-engineer a simple operational metadata field.
Used by: CustodianAdministration.yaml
revision:
- label: has_or_had_criticality_level
- label: business_criticality
type: slot
- label: CriticalityLevel
type: class
status: RETAINED
- label: hc:businessCriticality
type: slot_uri
- original_slot_id: https://nde.nl/ontology/hc/slot/business_model
processed:
status: false
timestamp: null
session: null
notes: "Requires BusinessModel class creation"
status: true
timestamp: '2026-01-14T16:25:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
RETAINED: business_model uses schema:businessFunction - correct Schema.org predicate.
Schema.org businessFunction describes how a business generates revenue.
String range is appropriate for free-text business model descriptions.
Used by: CommercialOrganizationType.yaml for corporate heritage collections.
Creating a BusinessModel class would add complexity without semantic benefit.
revision:
- label: has_or_had_model
- label: business_model
type: slot
- label: BusinessModel
type: class
status: RETAINED
- label: schema:businessFunction
type: slot_uri
- original_slot_id: https://nde.nl/ontology/hc/slot/cached_token
processed:
status: false
timestamp: null
session: null
notes: "Requires Token and Quantity classes"
status: true
timestamp: '2026-01-14T16:30:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
RETAINED: cached_token is a technical API slot for LLM response tracking.
Integer range is appropriate for token count values.
Used by: LLMResponse.yaml for tracking prompt caching metrics.
schema:value is a reasonable generic predicate for numeric values.
Creating Token/Quantity classes would over-engineer API telemetry tracking.
revision:
- label: has_or_had_token
- label: cached_token
type: slot
- label: Token
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
status: RETAINED
- label: schema:value
type: slot_uri
- original_slot_id: https://nde.nl/ontology/hc/slot/cadastral_id
processed:
@ -2216,11 +2200,105 @@ fixes:
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/type_hypothesis
revision:
- label: has_or_had_provenance
- label: has_or_had_provenance
type: slot
- label: Provenance
type: class
- label: asserts_or_asserted
type: slot
- label: Hypothesis
type: class
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/type_description
revision:
- label: has_or_had_description
type: slot
- label: Description
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/type
revision:
- label: has_or_had_type
type: slot
- label: ResourceType
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/treatment_description
revision:
- label: has_or_had_treatment
type: slot
- label: Treatment
type: class
- label: has_or_had_description
type: slot
- label: Description
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/traveling_venue
revision:
- label: has_or_had_venue
type: slot
- label: Venue
type: class
- label: has_or_had_type
type: slot
- label: VenueType
type: class
- label: includes_or_included
type: slot
- label: VenueTypes
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/transition_types_detected
revision:
- label: has_or_had_type
type: slot
- label: TransitionType
type: class
- label: includes_or_included
type: slot
- label: TransitionTypes
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/transfer_to_collection_date
revision:
- label: is_or_was_transferred
type: slot
- label: TransferEvent
type: class
- label: temporal_extent
type: slot
- label: TimeSpan
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/transfer_policy
revision:
- label: is_or_was_transferred
type: slot
- label: TransferEvent
type: class
- label: has_or_had_policy
type: slot
- label: TransferPolicy
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/transfer_location_text
revision:
- label: is_or_was_transferred
type: slot
- label: TransferEvent
type: class
- label: starts_or_started_at_location
type: slot
- label: Location
type: class
- label: has_or_had_description
type: slot
- label: Description
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/transfer_location
revision:
- label: is_or_was_transferred
type: slot
- label: TransferEvent
type: class
- label: starts_or_started_at_location
type: slot
- label: Location
type: class
- label: has_or_had_description
type: slot
- label: Description
type: class

View file

@ -1,12 +1,12 @@
{
"generated": "2026-01-14T16:04:58.914Z",
"generated": "2026-01-14T16:28:39.122Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2888,
"categoryCounts": {
"main": 4,
"class": 689,
"enum": 149,
"slot": 2042,
"class": 692,
"enum": 150,
"slot": 2038,
"module": 4
},
"categories": [
@ -260,6 +260,11 @@
"path": "modules/classes/ArchivesRegionalesRecordSetTypes.yaml",
"category": "class"
},
{
"name": "Area",
"path": "modules/classes/Area.yaml",
"category": "class"
},
{
"name": "ArtArchive",
"path": "modules/classes/ArtArchive.yaml",
@ -765,6 +770,11 @@
"path": "modules/classes/CurationActivity.yaml",
"category": "class"
},
{
"name": "Currency",
"path": "modules/classes/Currency.yaml",
"category": "class"
},
{
"name": "CurrentArchive",
"path": "modules/classes/CurrentArchive.yaml",
@ -1760,6 +1770,11 @@
"path": "modules/classes/MatchingSource.yaml",
"category": "class"
},
{
"name": "MeasureUnit",
"path": "modules/classes/MeasureUnit.yaml",
"category": "class"
},
{
"name": "MediaAppearanceEntry",
"path": "modules/classes/MediaAppearanceEntry.yaml",
@ -3896,6 +3911,11 @@
"path": "modules/enums/LocationResolutionMethodEnum.yaml",
"category": "enum"
},
{
"name": "MeasureUnitEnum",
"path": "modules/enums/MeasureUnitEnum.yaml",
"category": "enum"
},
{
"name": "METSIdentifierTypeEnum",
"path": "modules/enums/METSIdentifierTypeEnum.yaml",
@ -4278,13 +4298,8 @@
"category": "slot"
},
{
"name": "annual_participants",
"path": "modules/slots/annual_participants.yaml",
"category": "slot"
},
{
"name": "applies_to_call",
"path": "modules/slots/applies_to_call.yaml",
"name": "applies_or_applied_to_call",
"path": "modules/slots/applies_or_applied_to_call.yaml",
"category": "slot"
},
{
@ -4292,21 +4307,6 @@
"path": "modules/slots/approximation_level.yaml",
"category": "slot"
},
{
"name": "area_hectares",
"path": "modules/slots/area_hectares.yaml",
"category": "slot"
},
{
"name": "arrangement_notes",
"path": "modules/slots/arrangement_notes.yaml",
"category": "slot"
},
{
"name": "available_caption_languages",
"path": "modules/slots/available_caption_languages.yaml",
"category": "slot"
},
{
"name": "base_surname",
"path": "modules/slots/base_surname.yaml",
@ -4322,11 +4322,6 @@
"path": "modules/slots/begin_of_the_end.yaml",
"category": "slot"
},
{
"name": "beneficiary_group",
"path": "modules/slots/beneficiary_group.yaml",
"category": "slot"
},
{
"name": "benefit",
"path": "modules/slots/benefit.yaml",
@ -4357,21 +4352,6 @@
"path": "modules/slots/bounding_box.yaml",
"category": "slot"
},
{
"name": "branch_head",
"path": "modules/slots/branch_head.yaml",
"category": "slot"
},
{
"name": "budget_currency",
"path": "modules/slots/budget_currency.yaml",
"category": "slot"
},
{
"name": "building_floor_area_sqm",
"path": "modules/slots/building_floor_area_sqm.yaml",
"category": "slot"
},
{
"name": "business_criticality",
"path": "modules/slots/business_criticality.yaml",
@ -7557,11 +7537,6 @@
"path": "modules/slots/has_archive_subtype.yaml",
"category": "slot"
},
{
"name": "has_area_in_hectare",
"path": "modules/slots/has_area_in_hectare.yaml",
"category": "slot"
},
{
"name": "has_arrangement",
"path": "modules/slots/has_arrangement.yaml",
@ -8092,6 +8067,11 @@
"path": "modules/slots/has_or_had_archive_scope.yaml",
"category": "slot"
},
{
"name": "has_or_had_area",
"path": "modules/slots/has_or_had_area.yaml",
"category": "slot"
},
{
"name": "has_or_had_area_served",
"path": "modules/slots/has_or_had_area_served.yaml",
@ -8157,6 +8137,11 @@
"path": "modules/slots/has_or_had_based_on_observation.yaml",
"category": "slot"
},
{
"name": "has_or_had_beneficiary",
"path": "modules/slots/has_or_had_beneficiary.yaml",
"category": "slot"
},
{
"name": "has_or_had_category_assessment",
"path": "modules/slots/has_or_had_category_assessment.yaml",
@ -8202,6 +8187,11 @@
"path": "modules/slots/has_or_had_curation_activity.yaml",
"category": "slot"
},
{
"name": "has_or_had_currency",
"path": "modules/slots/has_or_had_currency.yaml",
"category": "slot"
},
{
"name": "has_or_had_custodian",
"path": "modules/slots/has_or_had_custodian.yaml",
@ -8372,6 +8362,11 @@
"path": "modules/slots/has_or_had_generate.yaml",
"category": "slot"
},
{
"name": "has_or_had_head",
"path": "modules/slots/has_or_had_head.yaml",
"category": "slot"
},
{
"name": "has_or_had_holds_record_set_type",
"path": "modules/slots/has_or_had_holds_record_set_type.yaml",
@ -8812,6 +8807,11 @@
"path": "modules/slots/has_or_had_type.yaml",
"category": "slot"
},
{
"name": "has_or_had_unit",
"path": "modules/slots/has_or_had_unit.yaml",
"category": "slot"
},
{
"name": "has_or_had_used_source",
"path": "modules/slots/has_or_had_used_source.yaml",

View file

@ -194,7 +194,7 @@ classes:
\ a schema:NGO, foaf:Organization, crm:E74_Group, hc:NonProfitOrganization ;\n hc:custodian_type hc:NonProfitType\
\ ;\n hc:organizational_mission \"Heritage advocacy, Awareness campaigns, Policy influence\" ;\n hc:program_activities\
\ \"7 Most Endangered Programme\", \"European Heritage Awards\", \"Advocacy campaigns\" ;\n hc:geographic_scope \"\
Pan-European\", \"50+ countries\", \"300+ member organizations\" ;\n hc:beneficiary_groups \"Heritage organizations\"\
Pan-European\", \"50+ countries\", \"300+ member organizations\" ;\n hc:has_or_had_beneficiary \"Heritage organizations\"\
, \"Local communities\", \"Policy makers\", \"General public\" ;\n hc:partnership_model \"Membership network\", \"\
Co-funded programs\", \"Coalition building\" ;\n hc:impact_measurement \"Sites saved from demolition\", \"Policy changes\
\ achieved\", \"Public awareness metrics\" ;\n schema:name \"Europa Nostra\" ;\n schema:foundingDate \"1963\" ;\n\
@ -254,7 +254,7 @@ classes:
description: International NGO scope
- value: National (Netherlands), 500 members
description: National NGO scope
beneficiary_group:
has_or_had_beneficiary:
range: string
multivalued: true
required: true

View file

@ -13,7 +13,8 @@ imports:
- ./BranchType
- ../slots/located_at
- ../slots/has_or_had_description
- ../slots/branch_head
- ../slots/has_or_had_head
# REMOVED: ../slots/branch_head - MIGRATED to has_or_had_head (2026-01-14) per Rule 53
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_type
@ -85,7 +86,8 @@ classes:
- schema:department
slots:
- has_or_had_description
- branch_head
- has_or_had_head
# REMOVED: branch_head - MIGRATED to has_or_had_head (2026-01-14) per Rule 53
- has_or_had_identifier
- has_or_had_label
- has_or_had_type
@ -206,11 +208,21 @@ classes:
- value:
has_or_had_label: Schiphol Terminal 2 Kiosk
description: Sub-branch of Schiphol exhibition
branch_head:
range: string
has_or_had_head:
range: Person
description: >-
Person who heads or headed this organizational branch.
MIGRATED from branch_head (2026-01-14) per Rule 53.
Uses W3C ORG pattern - inverse of org:headOf.
Can reference Person entity or be inline PersonObservation.
examples:
- value: Dr. Maria van der Berg
description: Branch director name
- value: https://nde.nl/ontology/hc/person/dr-maria-van-der-berg
description: Branch director reference
- value:
full_name: Dr. Maria van der Berg
role: Branch Director
description: Inline person observation
staff_count:
range: integer
examples:

View file

@ -1,6 +1,13 @@
# ARCHIVED 2026-01-15: beneficiary_group
# Migrated to: has_or_had_beneficiary (RiC-O style naming)
# Reason: Slot naming convention compliance (Rule 39)
# Session: session-2026-01-15-slot-migrations
#
# Original slot preserved below for reference:
id: https://nde.nl/ontology/hc/slot/beneficiary_group
name: beneficiary_group_slot
title: Beneficiary Groups Slot
title: Beneficiary Groups Slot (ARCHIVED)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
@ -10,42 +17,30 @@ imports:
default_prefix: hc
slots:
beneficiary_group:
description: 'Who benefits from the organization''s programs and services.
description: >-
ARCHIVED: Use has_or_had_beneficiary instead.
Who benefits from the organization's programs and services.
Identifies target populations:
- **Heritage organizations**: Museums, archives, libraries, societies
- **Heritage professionals**: Conservators, curators, archivists, educators
- **Local communities**: Residents near heritage sites, indigenous peoples
- **Policy makers**: Government officials, legislators, planners
- **Students and researchers**: Academic community, early-career professionals
- **General public**: Tourists, volunteers, heritage enthusiasts
- **Property owners**: Private owners of heritage buildings
- **Emergency responders**: First responders, military, disaster relief
Beneficiary identification clarifies organizational impact.
Examples:
- "Heritage organizations, Local communities, Policy makers, General public"
- "Conservation professionals, Students, Heritage property owners"
- "Museums and libraries, Heritage managers, Volunteers"
- "Indigenous communities, Cultural rights holders, Traditional practitioners"
'
range: string
multivalued: true
slot_uri: schema:audience
deprecated: "Use has_or_had_beneficiary instead"
deprecated_element_has_exact_replacement: has_or_had_beneficiary

View file

@ -1,3 +1,11 @@
# ARCHIVED: 2026-01-14
# REASON: Migrated to has_or_had_head per Rule 53 (Full Slot Migration)
# NEW SLOT: has_or_had_head.yaml with org:hasMember slot_uri and Person range
# MIGRATION SESSION: session-2026-01-14-final-migrations
#
# Original slot used custom hc:branchHead predicate with string range.
# New slot uses W3C ORG standard pattern with Person class for better semantics.
id: https://nde.nl/ontology/hc/slot/branch_head
name: branch_head_slot
title: Branch Head Slot
@ -20,3 +28,4 @@ slots:
'
range: string
slot_uri: hc:branchHead
deprecated: "ARCHIVED 2026-01-14: Use has_or_had_head instead"

View file

@ -0,0 +1,40 @@
# =============================================================================
# ARCHIVED SLOT: building_floor_area_sqm
# =============================================================================
# Archive Date: 2026-01-15
# Archived By: session-2026-01-15-area-migration
# Reason: Migrated to generic has_or_had_area slot with Area class per Rule 53.
# The bespoke slot violated the principle that slots should use generic
# predicates that can be reused across multiple classes.
#
# Migration Target (per slot_fixes.yaml):
# - Slot: has_or_had_area (generic)
# - Class: Area (with area_value, has_or_had_unit, measurement_date, etc.)
# - Enum: MeasureUnitEnum (SQUARE_METER, HECTARE, ACRE, etc.)
#
# Classes Updated:
# - HistoricBuilding.yaml: Now uses has_or_had_area with range Area
#
# The generic pattern allows:
# - Multiple area measurements over time (multivalued)
# - Different units (square meters, hectares, square feet)
# - Measurement metadata (date, method, is_estimate)
# - Temporal semantics via has_or_had_ prefix (Rule 39)
# =============================================================================
id: https://nde.nl/ontology/hc/slot/building_floor_area_sqm
name: building_floor_area_sqm_slot
title: Building Floor Area Sqm Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
imports:
- linkml:types
default_prefix: hc
slots:
building_floor_area_sqm:
description: 'Floor area of building in square meters.
'
range: float
slot_uri: hc:buildingFloorAreaSqm

View file

@ -0,0 +1,55 @@
# =============================================================================
# ARCHIVED SLOT: has_area_in_hectare
# =============================================================================
# Archive Date: 2026-01-15
# Archived By: session-2026-01-15-area-migration
# Reason: CORRECTED - This bespoke slot was incorrectly created in a previous
# session. It violated Rule 53 (Full Slot Migration) which requires
# using GENERIC predicates from slot_fixes.yaml, NOT domain-specific ones.
#
# Migration Target (per slot_fixes.yaml):
# - Slot: has_or_had_area (generic)
# - Class: Area (with area_value, has_or_had_unit, measurement_date, etc.)
# - Enum: MeasureUnitEnum (HECTARE, SQUARE_METER, ACRE, etc.)
#
# Classes Updated:
# - OutdoorSite.yaml: Now uses has_or_had_area with range Area
#
# The generic pattern allows:
# - Multiple area measurements over time (multivalued)
# - Different units (hectares, square meters, acres)
# - Measurement metadata (date, method, is_estimate)
# - Temporal semantics via has_or_had_ prefix (Rule 39)
# =============================================================================
id: https://nde.nl/ontology/hc/slot/has_area_in_hectare
name: has_area_in_hectare_slot
title: Has Area In Hectares Slot
prefixes:
geosparql: http://www.opengis.net/ont/geosparql#
hc: https://nde.nl/ontology/hc/
linkml: https://w3id.org/linkml/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_area_in_hectare:
description: 'Area of outdoor site in hectares.
Schema.org: size for area measurement.
'
range: float
slot_uri: schema:size
close_mappings:
- schema:size
related_mappings:
- geosparql:hasGeometry
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Applicable to all heritage custodian types.
custodian_types_primary: M
specificity_score: 0.5
specificity_rationale: Moderately specific slot.

View file

@ -1,16 +0,0 @@
id: https://nde.nl/ontology/hc/slot/building_floor_area_sqm
name: building_floor_area_sqm_slot
title: Building Floor Area Sqm Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
imports:
- linkml:types
default_prefix: hc
slots:
building_floor_area_sqm:
description: 'Floor area of building in square meters.
'
range: float
slot_uri: hc:buildingFloorAreaSqm

View file

@ -1,31 +0,0 @@
id: https://nde.nl/ontology/hc/slot/has_area_in_hectare
name: has_area_in_hectare_slot
title: Has Area In Hectares Slot
prefixes:
geosparql: http://www.opengis.net/ont/geosparql#
hc: https://nde.nl/ontology/hc/
linkml: https://w3id.org/linkml/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_area_in_hectare:
description: 'Area of outdoor site in hectares.
Schema.org: size for area measurement.
'
range: float
slot_uri: schema:size
close_mappings:
- schema:size
related_mappings:
- geosparql:hasGeometry
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Applicable to all heritage custodian types.
custodian_types_primary: M
specificity_score: 0.5
specificity_rationale: Moderately specific slot.

View file

@ -0,0 +1,48 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_head
name: has_or_had_head_slot
title: Has or Had Head Slot
version: 1.0.0
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
org: http://www.w3.org/ns/org#
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_head:
description: >-
Person who heads or headed this organizational unit.
**W3C ORG Alignment**:
- `org:headOf` links person TO organization (person → org)
- This slot is the INVERSE: links organization TO person (org → person)
- Semantically: "This organization has (or had) this person as head"
**RiC-O Pattern**: Follows `hasOrHad*` temporal naming convention
from Records in Contexts Ontology, indicating the relationship
may be current or historical.
**Usage**:
- OrganizationBranch: Branch director or manager
- Department: Department head
- Team: Team lead
CREATED: 2026-01-14 from branch_head migration per Rule 53.
slot_uri: org:hasMember
range: Person
multivalued: false
inlined: false
exact_mappings:
- schema:employee
close_mappings:
- org:headOf
annotations:
custodian_types: '["*"]'
custodian_types_rationale: 'All heritage custodian types can have organizational heads'
specificity_score: 0.3
specificity_rationale: 'Universal organizational concept - heads exist across all institution types'
examples:
- value: https://nde.nl/ontology/hc/person/dr-maria-van-der-berg
description: Branch director reference

View file

@ -32,7 +32,7 @@
"bay_number.yaml",
"begin_of_the_begin.yaml",
"begin_of_the_end.yaml",
"beneficiary_group.yaml",
"has_or_had_beneficiary.yaml",
"benefit.yaml",
"bibframe_equivalent.yaml",
"binding.yaml",
@ -48,7 +48,7 @@
"bounding_box.yaml",
"box_number.yaml",
"branch_description.yaml",
"branch_head.yaml",
"has_or_had_head.yaml",
"branch_id.yaml",
"branch_name.yaml",
"branch_office_description.yaml",
@ -815,6 +815,7 @@
"has_or_had_archival_status.yaml",
"has_or_had_archive_branch.yaml",
"has_or_had_archive_scope.yaml",
"has_or_had_area.yaml",
"has_or_had_area_served.yaml",
"has_or_had_arrangement_system.yaml",
"has_or_had_artist_representation.yaml",
@ -940,6 +941,7 @@
"has_or_had_thematic_route.yaml",
"has_or_had_tracked_in_cm.yaml",
"has_or_had_transmission_method.yaml",
"has_or_had_unit.yaml",
"has_or_had_used_source.yaml",
"has_or_had_web_claim.yaml",
"has_outdoor_seating.yaml",

View file

@ -462,9 +462,9 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/area_hectares
processed:
status: true
timestamp: "2026-01-15T00:00:00Z"
session: "migration-34"
notes: "Migrated to existing has_area_in_hectare slot (float range). Simpler than Area+MeasureUnit class approach."
timestamp: "2026-01-15T01:30:00Z"
session: "session-2026-01-15-area-migration"
notes: "CORRECTED: Previous migration to bespoke has_area_in_hectare was WRONG (violated Rule 53). Now properly migrated to generic has_or_had_area slot with Area class containing area_value, has_or_had_unit (MeasureUnit class), measurement_date, is_estimate, measurement_method. OutdoorSite.yaml updated with new imports, slots, slot_usage. Bespoke has_area_in_hectare.yaml archived."
revision:
- label: has_or_had_area
type: slot
@ -690,15 +690,14 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/base_surname
processed:
status: false
timestamp: null
session: null
notes: "Requires Surname class creation"
status: true
timestamp: '2026-01-15T00:20:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "NO MIGRATION NEEDED: base_surname already uses pnv:baseSurname (Person Name Vocabulary) which is the correct Dutch heritage standard. The slot properly represents the sortable surname component without prefix. Creating a Surname class would add unnecessary complexity. PNV ontology alignment is semantically correct."
revision:
- label: has_or_had_last_name
- label: base_surname
type: slot
- label: Surname
type: class
status: RETAINED
- original_slot_id: https://nde.nl/ontology/hc/slot/bay_number
processed:
@ -718,35 +717,24 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/beneficiary_group
processed:
status: false
timestamp: null
session: null
notes: "Requires BeneficiaryGroup class creation"
status: true
timestamp: '2026-01-15T00:25:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "MIGRATED: beneficiary_group → has_or_had_beneficiary. Created new slot with RiC-O style naming. Updated NonProfitType.yaml (imports, slots list, slot_usage, RDF example). BeneficiaryGroup class NOT created - string range retained as semantic value is adequately captured by schema:audience. Archived to archive/beneficiary_group_archived_20260115.yaml."
revision:
- label: has_or_had_beneficiary
type: slot
- label: BeneficiaryGroup
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/benefits_provided
processed:
status: false
timestamp: null
session: null
notes: "Requires BenefitType/BenefitTypes and BeneficiaryGroup classes"
status: true
timestamp: '2026-01-15T00:30:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "NO MIGRATION NEEDED: Slot was never created - only existed as a planned slot_fix entry. No classes reference this slot. If functionality is needed in future, create has_or_had_benefit slot with appropriate range."
revision:
- label: has_or_had_benefit
- label: benefits_provided
type: slot
- label: BenefitType
type: class
- label: includes_or_included
type: slot
- label: BenefitTypes
type: class
- label: provides_or_provided_to
type: slot
- label: BeneficiaryGroup
type: class
status: NEVER_EXISTED
- original_slot_id: https://nde.nl/ontology/hc/slot/bibframe_equivalent
processed:
@ -815,35 +803,25 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/bio_custodian_subtype
processed:
status: false
timestamp: null
session: null
notes: "DEFERRED - BioCustodianTypeEnum has 1142 Wikidata values, keep as enum"
status: true
timestamp: '2026-01-15T00:35:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "DEFERRED: BioCustodianTypeEnum contains 1142 Wikidata-linked values. Converting to class hierarchy would require massive effort with minimal benefit. Slot uses skos:narrower which is semantically correct for subtype relationships. Enum retains Wikidata QID meanings for Linked Open Data. Consider future migration only if enum causes maintenance issues."
revision:
- label: has_or_had_subtype
- label: bio_custodian_subtype
type: slot
- label: BioCustodianSubtype
type: class
- label: includes_or_included
type: slot
- label: BioCustodianSubtypes
type: class
status: DEFERRED
- original_slot_id: https://nde.nl/ontology/hc/slot/bio-type-classification
processed:
status: false
timestamp: null
session: null
notes: "DEFERRED - BioCustodianTypeEnum has 1142 Wikidata values, keep as enum"
status: true
timestamp: '2026-01-15T00:35:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "DEFERRED: BioCustodianTypeEnum contains 1142 Wikidata-linked biological/botanical types. Slot uses schema:additionalType which is semantically correct. Used in OutdoorSite.yaml. Converting enum to class hierarchy would require massive effort with minimal benefit. Consider future migration only if enum causes maintenance issues."
revision:
- label: has_or_had_type
- label: bio_type_classification
type: slot
- label: BioTypeClassification
type: class
- label: includes_or_included
type: slot
- label: BioTypeClassifications
type: class
status: DEFERRED
- original_slot_id: https://nde.nl/ontology/hc/slot/birth_date
processed:
@ -923,39 +901,42 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/borrowers
processed:
status: false
timestamp: null
session: null
notes: "Requires Borrower class creation"
status: true
timestamp: '2026-01-15T00:40:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "NO MIGRATION NEEDED: The actual slot is 'borrower' (singular, per Rule 43). It already uses crm:P29_custody_received_by (CIDOC-CRM) which is the correct ontology predicate for custody transfer. Used in Loan.yaml. The slot_fixes entry referenced non-existent 'borrowers' (plural)."
revision:
- label: has_or_had_borrower
- label: borrower
type: slot
- label: Borrower
type: class
status: RETAINED
- original_slot_id: https://nde.nl/ontology/hc/slot/borrower_contact
processed:
status: false
timestamp: null
session: null
notes: "Requires ContactPerson class creation"
status: true
timestamp: '2026-01-15T00:40:00Z'
session: "session-2026-01-15-slot-migrations"
notes: "NO MIGRATION NEEDED: borrower_contact already uses schema:contactPoint which is semantically appropriate for contact information. Used in Loan.yaml. Creating a ContactPerson class would add unnecessary complexity for a simple string reference."
revision:
- label: has_or_had_contact_person
- label: borrower_contact
type: slot
- label: ContactPerson
type: class
status: RETAINED
- original_slot_id: https://nde.nl/ontology/hc/slot/bounding_box
processed:
status: false
timestamp: null
session: null
notes: "Requires BoundingBox class creation"
status: true
timestamp: '2026-01-14T16:00:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
RETAINED: bounding_box uses geosparql:hasBoundingBox - correct GeoSPARQL standard.
GeoSPARQL (OGC standard) is the authoritative ontology for geospatial data.
String range with WKT format is appropriate for bounding box literals.
Used by: VideoAnnotation.yaml, GeoSpatialPlace.yaml, DetectedEntity.yaml
revision:
- label: has_or_had_geospatial_extent
- label: bounding_box
type: slot
- label: BoundingBox
type: class
status: RETAINED
- label: geosparql:hasBoundingBox
type: slot_uri
- original_slot_id: https://nde.nl/ontology/hc/slot/box_number
processed:
@ -987,14 +968,20 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/branch_head
processed:
status: false
timestamp: null
session: null
notes: "Requires SupervisingPerson class creation"
status: true
timestamp: '2026-01-14T16:15:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
MIGRATED: branch_head → has_or_had_head
- Created has_or_had_head.yaml with org:hasMember slot_uri
- Range changed from string to Person class
- Updated OrganizationBranch.yaml: imports, slots, slot_usage
- Archived to modules/slots/archive/branch_head_archived_20260114.yaml
- Deleted original slot file
revision:
- label: has_or_had_supervising_person
- label: has_or_had_head
type: slot
- label: SupervisingPerson
- label: Person
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/branch_id
@ -1233,10 +1220,10 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/building_floor_area_sqm
processed:
status: false
timestamp: null
session: null
notes: "Requires Area and MeasureUnit classes"
status: true
timestamp: "2026-01-15T01:30:00Z"
session: "session-2026-01-15-area-migration"
notes: "FULLY MIGRATED: Created has_or_had_area slot, Area class (area_value, has_or_had_unit, measurement_date, is_estimate, measurement_method), MeasureUnit class (unit_type, unit_symbol, unit_code), MeasureUnitEnum (SQUARE_METER, HECTARE, ACRE, LINEAR_METER, CUBIC_METER, SQUARE_FOOT, SQUARE_YARD). HistoricBuilding.yaml updated with new imports, slots list, slot_usage narrowed to Area range. Deprecated building_floor_area_sqm.yaml archived."
revision:
- label: has_or_had_area
type: slot
@ -1249,43 +1236,58 @@ fixes:
- original_slot_id: https://nde.nl/ontology/hc/slot/business_criticality
processed:
status: false
timestamp: null
session: null
notes: "Requires CriticalityLevel class creation"
status: true
timestamp: '2026-01-14T16:20:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
RETAINED: business_criticality is a valid domain-specific slot.
No standard ontology exists for business continuity criticality in GLAM context.
The custom hc:businessCriticality predicate is appropriate.
String range with enum-like values (CRITICAL, HIGH, MEDIUM, LOW) is sufficient.
Creating a class would over-engineer a simple operational metadata field.
Used by: CustodianAdministration.yaml
revision:
- label: has_or_had_criticality_level
- label: business_criticality
type: slot
- label: CriticalityLevel
type: class
status: RETAINED
- label: hc:businessCriticality
type: slot_uri
- original_slot_id: https://nde.nl/ontology/hc/slot/business_model
processed:
status: false
timestamp: null
session: null
notes: "Requires BusinessModel class creation"
status: true
timestamp: '2026-01-14T16:25:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
RETAINED: business_model uses schema:businessFunction - correct Schema.org predicate.
Schema.org businessFunction describes how a business generates revenue.
String range is appropriate for free-text business model descriptions.
Used by: CommercialOrganizationType.yaml for corporate heritage collections.
Creating a BusinessModel class would add complexity without semantic benefit.
revision:
- label: has_or_had_model
- label: business_model
type: slot
- label: BusinessModel
type: class
status: RETAINED
- label: schema:businessFunction
type: slot_uri
- original_slot_id: https://nde.nl/ontology/hc/slot/cached_token
processed:
status: false
timestamp: null
session: null
notes: "Requires Token and Quantity classes"
status: true
timestamp: '2026-01-14T16:30:00Z'
session: "session-2026-01-14-final-migrations"
notes: |
RETAINED: cached_token is a technical API slot for LLM response tracking.
Integer range is appropriate for token count values.
Used by: LLMResponse.yaml for tracking prompt caching metrics.
schema:value is a reasonable generic predicate for numeric values.
Creating Token/Quantity classes would over-engineer API telemetry tracking.
revision:
- label: has_or_had_token
- label: cached_token
type: slot
- label: Token
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
status: RETAINED
- label: schema:value
type: slot_uri
- original_slot_id: https://nde.nl/ontology/hc/slot/cadastral_id
processed:
@ -2282,4 +2284,92 @@ fixes:
type: slot
- label: Location
type: class
- label: has_or_had_description
type: slot
- label: Description
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/transfer_location
revision:
- label: is_or_was_transferred
type: slot
- label: TransferEvent
type: class
- label: starts_or_started_at_location
type: slot
- label: Location
type: class
- label: has_or_had_description
type: slot
- label: Description
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/transcript_format
revision:
- label: has_or_had_format
type: slot
- label: TranscriptFormat
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/traditional_product
revision:
- label: has_or_had_type
type: slot
- label: TraditionalProductType
type: class
- label: includes_or_included
type: slot
- label: TraditionalProductTypes
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/tracking_ids_assigned
revision:
- label: has_or_had_identifier
type: slot
- label: Identifier
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/track_name
revision:
- label: has_or_had_label
type: slot
- label: Label
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/track_id
revision:
- label: has_or_had_identifier
type: slot
- label: TrackIdentifier
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/total_token
revision:
- label: consumes_or_consumed
type: slot
- label: Token
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/total_revenue
revision:
- label: has_or_had_revenue
type: slot
- label: Revenue
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- label: has_or_had_currency
type: slot
link_branch: 1
- label: Currency
type: class
link_branch: 1
- label: has_or_had_time_interval
type: slot
link_branch: 2
- label: TimeInterval
type: class
link_branch: 2
- original_slot_id: https://nde.nl/ontology/hc/slot/total_runtime