Refactor schema and slots for improved clarity and organization

- Updated `has_or_had_url` slot to allow a broader range of values by changing its range from `uriorcurie` to `Any`.
- Removed obsolete slots: `house_number`, `html_file`, `html_snapshot_path`, and `http_status_code`.
- Introduced new classes: `CeasingEvent`, `FileLocation`, `FilePath`, `HTMLFile`, `HTTPStatusCode`, `HouseNumber`, `MaximumHumidity`, `MinimumHumidity`, `TargetHumidity`, and `WKT` to better represent various concepts.
- Migrated existing slots to new structures, ensuring alignment with RiC-O naming conventions.
- Added new slots: `ceases_or_ceased_through`, `has_or_had_file_location`, `has_or_had_file_path`, `has_or_had_http_status`, and `is_or_was_observed_by` to capture additional metadata.
- Enhanced descriptions and annotations for clarity and context.
This commit is contained in:
kempersc 2026-01-28 10:49:49 +01:00
parent fa5779bfd4
commit f3c0586d09
43 changed files with 641 additions and 372 deletions

View file

@ -4,33 +4,42 @@
## 1. Verified Ontology Files ## 1. Verified Ontology Files
The following ontologies are locally available. Always verify terms against these specific files. The following ontologies are locally available in `data/ontology/`. Always verify terms against these specific files. **NO HALLUCINATIONS ALLOWED.**
**Mandatory Verification Step**: Before using any `class_uri`, `slot_uri`, or mapping URI, you MUST `grep` the term in the local ontology file to confirm it exists.
| Prefix | Namespace | Local File | Key Classes/Predicates (Verified) | | Prefix | Namespace | Local File | Key Classes/Predicates (Verified) |
|--------|-----------|------------|-----------------------------------| |--------|-----------|------------|-----------------------------------|
| `cpov:` | `http://data.europa.eu/m8g/` | `core-public-organisation-ap.ttl` | `PublicOrganisation`, `contactPage`, `email` | | `cpov:` | `http://data.europa.eu/m8g/` | `core-public-organisation-ap.ttl` | `PublicOrganisation`, `contactPage`, `email` |
| `crm:` | `http://www.cidoc-crm.org/cidoc-crm/` | `CIDOC_CRM_v7.1.3.rdf` | `E1_CRM_Entity`, `E5_Event`, `P2_has_type` | | `crm:` | `http://www.cidoc-crm.org/cidoc-crm/` | `CIDOC_CRM_v7.1.3.rdf` | `E1_CRM_Entity`, `E5_Event`, `P2_has_type` |
| `rico:` | `https://www.ica.org/standards/RiC/ontology#` | `RiC-O_1-1.rdf` | `Record`, `Agent`, `hasOrHadHolder` | | `rico:` | `https://www.ica.org/standards/RiC/ontology#` | `RiC-O_1-1.rdf` | `Record`, `Agent`, `hasOrHadHolder` (Note: Use v1.1 file) |
| `pico:` | `https://personsincontext.org/model#` | `pico.ttl` | `PersonObservation`, `role` | | `pico:` | `https://personsincontext.org/model#` | `pico.ttl` | `PersonObservation`, `role` |
| `prov:` | `http://www.w3.org/ns/prov#` | `prov.ttl` | `Activity`, `Agent`, `wasGeneratedBy` | | `prov:` | `http://www.w3.org/ns/prov#` | `prov.ttl` | `Activity`, `Agent`, `wasGeneratedBy` |
| `skos:` | `http://www.w3.org/2004/02/skos/core#` | `skos.rdf` | `Concept`, `prefLabel`, `broader` | | `skos:` | `http://www.w3.org/2004/02/skos/core#` | `skos.rdf` | `Concept`, `prefLabel`, `broader` |
| `schema:` | `http://schema.org/` | `schemaorg.owl` | `Organization`, `Place`, `name`, `url` | | `schema:` | `https://schema.org/` | `frontend/public/ontology/schemaorg.owl` | `Organization`, `Place`, `name`, `url` |
| `dcterms:` | `http://purl.org/dc/terms/` | `dublin_core_elements.rdf` | `identifier`, `title`, `description` | | `dcterms:` | `http://purl.org/dc/terms/` | `dublin_core_elements.rdf` | `identifier`, `title`, `description` |
| `org:` | `http://www.w3.org/ns/org#` | `org.rdf` | `Organization`, `hasMember` | | `org:` | `http://www.w3.org/ns/org#` | `org.rdf` | `Organization`, `hasMember` |
| `tooi:` | `https://identifier.overheid.nl/tooi/def/ont/` | `tooiont.ttl` | `Overheidsorganisatie` | | `tooi:` | `https://identifier.overheid.nl/tooi/def/ont/` | `tooiont.ttl` | `Overheidsorganisatie` |
| `dcat:` | `http://www.w3.org/ns/dcat#` | `dcat3.ttl` | `Dataset`, `Catalog`, `dataset` | | `dcat:` | `http://www.w3.org/ns/dcat#` | `dcat3.ttl` | `Dataset`, `Catalog`, `dataset` |
| `gn:` | `https://www.geonames.org/ontology#` | `geonames_ontology.rdf` | `Feature` | | `gn:` | `https://www.geonames.org/ontology#` | `geonames_ontology.rdf` | `Feature` |
| `dqv:` | `http://www.w3.org/ns/dqv#` | `dqv.ttl` | `QualityMeasurement`, `hasQualityAnnotation` |
| `premis:` | `http://www.loc.gov/premis/rdf/v3/` | `premis3.owl` | `fixity`, `storedAt`, `Event` |
## 2. Verification Procedure ## 2. Verification Procedure (MANDATORY)
Before using a URI in a schema, verify it exists in the local file: **You MUST verify every term.** Do not assume a term exists just because it sounds standard.
```bash ```bash
# General verification # 1. Identify the source ontology file
grep -r "Term" data/ontology/ ls data/ontology/
# Specific verification (e.g. searching for 'hasPart' in Dublin Core) # 2. Grep for the specific term (e.g., 'hasFixity')
grep "hasPart" data/ontology/dublin_core_elements.rdf grep "hasFixity" data/ontology/premis3.owl
# Result: EMPTY -> Term does not exist! DO NOT USE.
# 3. Grep for the correct term (e.g., 'fixity')
grep "fixity" data/ontology/premis3.owl
# Result: <owl:ObjectProperty rdf:about=".../fixity"> -> Term exists. USE THIS.
``` ```
## 3. LinkML Mapping Requirements ## 3. LinkML Mapping Requirements
@ -43,13 +52,17 @@ Mappings must be precise and verified.
* `broad_mappings` = `skos:broadMatch` (Broader concept) * `broad_mappings` = `skos:broadMatch` (Broader concept)
* `narrow_mappings` = `skos:narrowMatch` (Narrower concept) * `narrow_mappings` = `skos:narrowMatch` (Narrower concept)
## 4. Prohibited/Invalid Terms ## 4. Prohibited/Invalid Terms (Hallucinations)
Do NOT use these commonly hallucinated or incorrect terms: Do NOT use these commonly hallucinated or incorrect terms. They have been verified as **non-existent** in our local ontologies:
* ❌ `dqv:value` (Use `rdf:value` or specific metric property) * ❌ `dqv:ConfidenceScore` (Use `dqv:QualityMeasurement`)
* ❌ `premis:hasFixity` (Use `premis:fixity`)
* ❌ `premis:hasFrameRate` (Verify specific PREMIS properties first) * ❌ `premis:hasFrameRate` (Verify specific PREMIS properties first)
* ❌ `schema:HeritageBuilding` (Use `schema:LandmarksOrHistoricalBuildings`) * ❌ `schema:HeritageBuilding` (Use `schema:LandmarksOrHistoricalBuildings`)
* ❌ `rico:has_provenance` (Use `rico:hasProvenance` or `rico:history`) * ❌ `rico:has_provenance` (Use `rico:history`)
* ❌ `rico:hasProvenance` (Use `rico:history`)
* ❌ `schema:archive` (Use `schema:archiveHeld` or `schema:archivedAt`)
**Always verify against the local file content.** **Always verify against the local file content.**

View file

@ -5520,6 +5520,17 @@ fixes:
type: slot type: slot
- label: Version - label: Version
type: class type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/as_wkt
revision:
- label: has_or_had_format
type: slot
- label: WKT
type: class
processed:
status: true
timestamp: '2026-01-28T02:20:00Z'
session: session-2026-01-28-as-wkt-migration
notes: 'FULLY MIGRATED: Geometry - as_wkt replaced with has_or_had_format -> WKT class. Created WKT.yaml. Archived as_wkt slot.'
- original_slot_id: https://nde.nl/ontology/hc/slot/assessment_date - original_slot_id: https://nde.nl/ontology/hc/slot/assessment_date
processed: processed:
status: true status: true
@ -17834,10 +17845,6 @@ fixes:
type: slot type: slot
- label: HeritageSocietyType - label: HeritageSocietyType
type: class type: class
processed:
status: true
date: '2026-01-27'
notes: 'Auto-marked: Targets exist: slot has_or_had_hyponym exists, class HeritageSocietyType exists'
- original_slot_id: https://nde.nl/ontology/hc/slot/heritage_status - original_slot_id: https://nde.nl/ontology/hc/slot/heritage_status
processed: processed:
status: true status: true
@ -17849,10 +17856,7 @@ fixes:
type: slot type: slot
- label: HeritageStatus - label: HeritageStatus
type: class type: class
processed:
status: true
date: '2026-01-28'
notes: 'FULLY MIGRATED: HistoricBuilding.yaml updated to use has_or_had_status + HeritageStatus. heritage_status.yaml archived.'
- original_slot_id: https://nde.nl/ontology/hc/slot/heritage_type - original_slot_id: https://nde.nl/ontology/hc/slot/heritage_type
revision: revision:
- label: is_or_was_related_to - label: is_or_was_related_to
@ -17973,23 +17977,15 @@ fixes:
notes: 'FULLY MIGRATED: HolySacredSiteType.yaml updated to use has_or_had_hyponym + HolySiteType. holy_site_subtype.yaml archived.' notes: 'FULLY MIGRATED: HolySacredSiteType.yaml updated to use has_or_had_hyponym + HolySiteType. holy_site_subtype.yaml archived.'
- original_slot_id: https://nde.nl/ontology/hc/slot/homepage_web_address - original_slot_id: https://nde.nl/ontology/hc/slot/homepage_web_address
revision: revision:
- label: has_or_had_homepage - label: has_or_had_url
type: slot type: slot
- label: uri - label: URL
type: class type: class
processed: processed:
status: true status: true
date: '2026-01-28' timestamp: '2026-01-28T01:40:00Z'
notes: 'FULLY MIGRATED: DigitalPlatform.yaml updated to use has_or_had_homepage (range: uri). homepage_web_address.yaml archived.' session: session-2026-01-28-homepage-web-address-migration
- label: has_or_had_type notes: 'FULLY MIGRATED: DigitalPlatform - homepage_web_address (and has_or_had_homepage) replaced with has_or_had_url -> URL class. Updated examples. Archived homepage_web_address slot.'
type: slot
- label: WebAddressType
type: class
- label: includes_or_included
type: slot
- label: WebAddressTypes
type: class
note: HomepageWebAddress class is defined in the LinkML file
- original_slot_id: https://nde.nl/ontology/hc/slot/hosts_branch - original_slot_id: https://nde.nl/ontology/hc/slot/hosts_branch
revision: revision:
- label: is_or_was_location_of - label: is_or_was_location_of
@ -18001,6 +17997,11 @@ fixes:
date: '2026-01-27' date: '2026-01-27'
notes: 'Auto-marked: Targets exist: class Branch exists' notes: 'Auto-marked: Targets exist: class Branch exists'
- original_slot_id: https://nde.nl/ontology/hc/slot/house_number - original_slot_id: https://nde.nl/ontology/hc/slot/house_number
processed:
status: true
timestamp: '2026-01-28T02:00:00Z'
session: session-2026-01-28-house-number-migration
notes: 'FULLY MIGRATED: Address - house_number replaced with has_or_had_section -> HouseNumber. Created HouseNumber.yaml. Archived house_number slot.'
revision: revision:
- label: has_or_had_section - label: has_or_had_section
type: slot type: slot
@ -18008,46 +18009,39 @@ fixes:
type: class type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/html_file - orignal_slot_id: https://nde.nl/ontology/hc/slot/html_file
revision: revision:
- label: has_or_had_provenance - label: has_or_had_file_path
type: slot type: slot
- label: Provenance - label: FilePath
type: class
- label: is_or_was_based_on
type: slot
- label: URL
type: class
- label: is_or_was_archived_as
type: slot
- label: HTMLFile
type: class
- label: has_or_had_file_location
type: slot
- label: FileLocation
type: class type: class
processed:
status: true
date: '2026-01-28'
notes: 'FULLY MIGRATED: WebClaim.yaml updated to use has_or_had_file_path + FilePath. html_file.yaml archived.'
- original_slot_id: https://nde.nl/ontology/hc/slot/html_snapshot_path - original_slot_id: https://nde.nl/ontology/hc/slot/html_snapshot_path
revision: revision:
- label: has_or_had_provenance
type: slot
- label: Provenance
type: class
- label: is_or_was_based_on
type: slot
- label: URL
type: class
- label: is_or_was_archived_as
type: slot
- label: HTMLFile
type: class
- label: has_or_had_file_location - label: has_or_had_file_location
type: slot type: slot
- label: FileLocation - label: FileLocation
type: class type: class
processed:
status: true
timestamp: '2026-01-28T02:10:00Z'
session: session-2026-01-28-html-snapshot-migration
notes: 'FULLY MIGRATED: FindingAid - html_snapshot_path replaced with has_or_had_file_location (generic) linking to FileLocation class. Archived html_snapshot_path.yaml.'
- original_slot_id: https://nde.nl/ontology/hc/slot/http_status_code - original_slot_id: https://nde.nl/ontology/hc/slot/http_status_code
revision: revision:
- label: has_or_had_status - label: has_or_had_status
type: slot type: slot
- label: HTTPStatusCode - label: HTTPStatusCode
type: class type: class
processed:
status: true
timestamp: '2026-01-28T02:20:00Z'
session: session-2026-01-28-http-status-migration
notes: 'FULLY MIGRATED: WebObservation - http_status_code replaced with has_or_had_status (generic) linking to HTTPStatusCode class (MIGRATED). Original slot was not a file.'
- original_slot_id: https://nde.nl/ontology/hc/slot/humidity_max - original_slot_id: https://nde.nl/ontology/hc/slot/humidity_max
revision: revision:
- label: has_or_had_policy - label: has_or_had_policy
@ -18058,6 +18052,11 @@ fixes:
type: slot type: slot
- label: MaximumHumidity - label: MaximumHumidity
type: class type: class
processed:
status: true
timestamp: '2026-01-28T02:40:00Z'
session: session-2026-01-28-humidity-migration
notes: 'FULLY MIGRATED: StorageConditionPolicy - humidity_max replaced with has_or_had_setpoint (generic) linking to Setpoint class (type: RELATIVE_HUMIDITY). Archived humidity_max.yaml.'
- original_slot_id: https://nde.nl/ontology/hc/slot/humidity_min - original_slot_id: https://nde.nl/ontology/hc/slot/humidity_min
revision: revision:
- label: has_or_had_policy - label: has_or_had_policy
@ -18068,6 +18067,11 @@ fixes:
type: slot type: slot
- label: MinimumHumidity - label: MinimumHumidity
type: class type: class
processed:
status: true
timestamp: '2026-01-28T02:40:00Z'
session: session-2026-01-28-humidity-migration
notes: 'FULLY MIGRATED: StorageConditionPolicy - humidity_min replaced with has_or_had_setpoint (generic) linking to Setpoint class (type: RELATIVE_HUMIDITY). Archived humidity_min.yaml.'
- original_slot_id: https://nde.nl/ontology/hc/slot/humidity_target - original_slot_id: https://nde.nl/ontology/hc/slot/humidity_target
revision: revision:
- label: has_or_had_policy - label: has_or_had_policy
@ -18078,6 +18082,12 @@ fixes:
type: slot type: slot
- label: TargetHumidity - label: TargetHumidity
type: class type: class
processed:
status: true
timestamp: '2026-01-28T02:40:00Z'
session: session-2026-01-28-humidity-migration
notes: 'FULLY MIGRATED: StorageConditionPolicy - humidity_target replaced with has_or_had_setpoint (generic) linking to Setpoint class (type: RELATIVE_HUMIDITY). Archived humidity_target.yaml.'
- original_slot_id: https://nde.nl/ontology/hc/slot/humidity_tolerance - original_slot_id: https://nde.nl/ontology/hc/slot/humidity_tolerance
revision: revision:
- label: has_or_had_policy - label: has_or_had_policy

View file

@ -1,5 +1,5 @@
{ {
"generated": "2026-01-28T07:06:56.543Z", "generated": "2026-01-28T08:43:41.869Z",
"schemaRoot": "/schemas/20251121/linkml", "schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 3000, "totalFiles": 3000,
"categoryCounts": { "categoryCounts": {

View file

@ -1,5 +1,5 @@
{ {
"generated": "2026-01-28T08:43:41.869Z", "generated": "2026-01-28T09:49:50.019Z",
"schemaRoot": "/schemas/20251121/linkml", "schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 3000, "totalFiles": 3000,
"categoryCounts": { "categoryCounts": {

View file

@ -23,11 +23,12 @@ imports:
# REMOVED 2026-01-22: ../slots/address_formatted - migrated to has_or_had_label + Label (Rule 53, Feedback F1) # REMOVED 2026-01-22: ../slots/address_formatted - migrated to has_or_had_label + Label (Rule 53, Feedback F1)
# REMOVED: ../slots/address_type - migrated to has_or_had_type (2026-01-17, Rule 53/56) # REMOVED: ../slots/address_type - migrated to has_or_had_type (2026-01-17, Rule 53/56)
# Address component slots # Address component slots
- ../slots/house_number - ../slots/has_or_had_section
# REMOVED: ../slots/street_name - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56) # REMOVED: ../slots/street_name - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56)
# REMOVED: ../slots/street_address - migrated to has_or_had_address + Address class (2026-01-17, Rule 53/56) # REMOVED: ../slots/street_address - migrated to has_or_had_address + Address class (2026-01-17, Rule 53/56)
# street_address was a redundant string slot; full Address class captures street data via components # street_address was a redundant string slot; full Address class captures street data via components
- ../slots/postal_code - ../slots/postal_code
- ../slots/locality - ../slots/locality
# REMOVED: ../slots/city - migrated to is_or_was_located_in + City (2026-01-18, Rule 53) # REMOVED: ../slots/city - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
- ../slots/is_or_was_located_in - ../slots/is_or_was_located_in
@ -76,7 +77,7 @@ classes:
An address consists of hierarchical components: An address consists of hierarchical components:
``` ```
Address Address
├── house_number (e.g., "1", "221B", "25-27") ├── has_or_had_section (e.g., "1", "221B", "25-27")
├── has_or_had_label (street name as Label, e.g., "Museumstraat") ├── has_or_had_label (street name as Label, e.g., "Museumstraat")
├── postal_code (e.g., "1071 XX") ├── postal_code (e.g., "1071 XX")
├── locality (e.g., "Amsterdam") ├── locality (e.g., "Amsterdam")
@ -112,7 +113,8 @@ classes:
- has_or_had_label: - has_or_had_label:
- has_or_had_label: "Museumstraat" - has_or_had_label: "Museumstraat"
language: "nl" language: "nl"
house_number: "1" has_or_had_section:
- has_or_had_value: "1"
postal_code: "1071 XX" postal_code: "1071 XX"
locality: "Amsterdam" locality: "Amsterdam"
region: "Noord-Holland" region: "Noord-Holland"
@ -149,7 +151,7 @@ classes:
slots: slots:
# Street-level components # Street-level components
- house_number - has_or_had_section
# REMOVED: street_name - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56) # REMOVED: street_name - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56)
# REMOVED: street_address - redundant string slot; use house_number + has_or_had_label (2026-01-17, Rule 53/56) # REMOVED: street_address - redundant string slot; use house_number + has_or_had_label (2026-01-17, Rule 53/56)
# Postal components # Postal components
@ -172,15 +174,18 @@ classes:
- is_or_was_derived_from # was: was_derived_from - migrated per Rule 53 - is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
- is_or_was_generated_by # was: was_generated_by - migrated per Rule 53 - is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
slot_usage: slot_usage:
house_number: has_or_had_section:
range: string range: HouseNumber
required: false required: false
description: House/building number within street description: House/building number within street.
examples: examples:
- value: "1" - value:
description: Rijksmuseum has_or_had_value: "1"
- value: "221B" description: Rijksmuseum
description: Baker Street notation - value:
has_or_had_value: "221B"
description: Baker Street notation
# REMOVED: street_name slot_usage - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56) # REMOVED: street_name slot_usage - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56)
# Street names should now use Label class with language tagging via has_or_had_label # Street names should now use Label class with language tagging via has_or_had_label
# REMOVED: street_address slot_usage - redundant string slot removed (2026-01-17, Rule 53/56) # REMOVED: street_address slot_usage - redundant string slot removed (2026-01-17, Rule 53/56)
@ -322,13 +327,15 @@ classes:
examples: examples:
- value: - value:
house_number: "1" has_or_had_section:
- has_or_had_value: "1"
has_or_had_label: has_or_had_label:
- has_or_had_label: "Museumstraat" - has_or_had_label: "Museumstraat"
language: "nl" language: "nl"
- has_or_had_label: "Museumstraat 1, 1071 XX Amsterdam, Netherlands" - has_or_had_label: "Museumstraat 1, 1071 XX Amsterdam, Netherlands"
language: "nl" language: "nl"
# REMOVED: street_address - migrated to house_number + has_or_had_label (2026-01-17, Rule 53/56) # REMOVED: street_address - migrated to house_number + has_or_had_label (2026-01-17, Rule 53/56)
postal_code: "1071 XX" postal_code: "1071 XX"
locality: "Amsterdam" locality: "Amsterdam"
region: "Noord-Holland" region: "Noord-Holland"
@ -340,13 +347,10 @@ classes:
description: Rijksmuseum headquarters - fully structured address (street_name and street_address migrated to has_or_had_label) description: Rijksmuseum headquarters - fully structured address (street_name and street_address migrated to has_or_had_label)
- value: - value:
house_number: "40" has_or_had_section:
has_or_had_label: - has_or_had_value: "40"
- has_or_had_label: "Jansstraat"
language: "nl"
- has_or_had_label: "Jansstraat 40, 2011 RX Haarlem, Netherlands"
language: "nl"
# REMOVED: street_address - migrated to house_number + has_or_had_label (2026-01-17, Rule 53/56) # REMOVED: street_address - migrated to house_number + has_or_had_label (2026-01-17, Rule 53/56)
postal_code: "2011 RX" postal_code: "2011 RX"
locality: "Haarlem" locality: "Haarlem"
country_name: "NL" country_name: "NL"
@ -369,7 +373,8 @@ classes:
language: "nl" language: "nl"
- has_or_had_label: "Euterpelaan 25, 3824 BK Amersfoort, Netherlands" - has_or_had_label: "Euterpelaan 25, 3824 BK Amersfoort, Netherlands"
language: "nl" language: "nl"
house_number: "25" has_or_had_section:
- has_or_had_value: "25"
postal_code: "3824 BK" postal_code: "3824 BK"
locality: "Amersfoort" locality: "Amersfoort"
region: "Utrecht" region: "Utrecht"

View file

@ -197,7 +197,9 @@ classes:
has_or_had_label: has_or_had_label:
- has_or_had_label: Euterpelaan 25, 3824 BK Amersfoort, Netherlands - has_or_had_label: Euterpelaan 25, 3824 BK Amersfoort, Netherlands
language: nl language: nl
house_number: '25' - has_or_had_section:
has_or_had_value: '25'
postal_code: 3824 BK postal_code: 3824 BK
locality: Amersfoort locality: Amersfoort
country_name: NL country_name: NL
@ -377,7 +379,8 @@ classes:
- has_or_had_label: - has_or_had_label:
- has_or_had_label: Euterpelaan 25, 3824 BK Amersfoort, Netherlands - has_or_had_label: Euterpelaan 25, 3824 BK Amersfoort, Netherlands
language: nl language: nl
house_number: '25' - has_or_had_section:
has_or_had_value: '25'
postal_code: 3824 BK postal_code: 3824 BK
locality: Amersfoort locality: Amersfoort
country_name: NL country_name: NL
@ -428,7 +431,8 @@ classes:
- has_or_had_label: - has_or_had_label:
- has_or_had_label: Kleine Houtweg 20, 2012 CH Haarlem, Netherlands - has_or_had_label: Kleine Houtweg 20, 2012 CH Haarlem, Netherlands
language: nl language: nl
house_number: '20' - has_or_had_section:
has_or_had_value: '20'
postal_code: 2012 CH postal_code: 2012 CH
locality: Haarlem locality: Haarlem
country_name: NL country_name: NL

View file

@ -0,0 +1,39 @@
id: https://nde.nl/ontology/hc/class/CeasingEvent
name: CeasingEvent
title: Ceasing Event Class
description: >-
An event marking the cessation of an entity (e.g., a web portal).
MIGRATED from cessation_observed_in (Rule 53).
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/is_or_was_observed_by
- ../slots/temporal_extent
- ./TimeSpan
- ./CustodianObservation
classes:
CeasingEvent:
class_uri: schema:Event
description: An event marking cessation.
slots:
- has_or_had_label
- has_or_had_description
- is_or_was_observed_by
- temporal_extent
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: ["*"]
custodian_types_rationale: Universal utility concept.

View file

@ -33,6 +33,7 @@ imports:
- ./ReconstructedEntity - ./ReconstructedEntity
- ../slots/has_or_had_data_service_endpoint - ../slots/has_or_had_data_service_endpoint
- ../slots/has_or_had_web_page - ../slots/has_or_had_web_page
- ./URL
- ./WebPage - ./WebPage
- ../slots/is_or_was_checked_through - ../slots/is_or_was_checked_through
- ./FixityVerification - ./FixityVerification
@ -92,7 +93,7 @@ classes:
- has_or_had_web_page - has_or_had_web_page
- has_or_had_data_service_endpoint - has_or_had_data_service_endpoint
- is_or_was_checked_through - is_or_was_checked_through
- has_or_had_address - has_or_had_url
- iiif_support - iiif_support
- inventory_web_address - inventory_web_address
- linked_data - linked_data
@ -176,21 +177,22 @@ classes:
description: Aggregation platform (wd:Q7894) description: Aggregation platform (wd:Q7894)
- value: WEBSITE - value: WEBSITE
description: Simple string type from enrichment data description: Simple string type from enrichment data
has_or_had_address: has_or_had_url:
range: WebAddress range: URL
required: false required: false
inlined: true inlined: true
description: 'Homepage URL of the platform. description: 'Homepage URL of the platform.
MIGRATED from homepage_web_address (Rule 53). MIGRATED from homepage_web_address (Rule 53).
Uses generic has_or_had_url with range URL.
' '
examples: examples:
- value: - value:
has_or_had_url: https://www.rijksmuseum.nl/ has_or_had_url: https://www.rijksmuseum.nl/
has_or_had_label: Rijksmuseum Homepage has_or_had_type: homepage
description: Rijksmuseum homepage description: Rijksmuseum homepage
- value: - value:
has_or_had_url: https://www.europeana.eu/ has_or_had_url: https://www.europeana.eu/
has_or_had_label: Europeana Homepage has_or_had_type: homepage
description: Europeana homepage description: Europeana homepage
has_or_had_web_page: has_or_had_web_page:
description: 'MIGRATED from collection_web_address per slot_fixes.yaml (Rule 53, 2026-01-22). description: 'MIGRATED from collection_web_address per slot_fixes.yaml (Rule 53, 2026-01-22).
@ -429,8 +431,11 @@ classes:
platform_name: Rijksmuseum Website platform_name: Rijksmuseum Website
platform_type: platform_type:
- DiscoveryPortal - DiscoveryPortal
has_or_had_homepage: https://www.rijksmuseum.nl/ has_or_had_url:
has_or_had_url: https://www.rijksmuseum.nl/
has_or_had_type: homepage
has_or_had_web_page: has_or_had_web_page:
- has_or_had_label: - has_or_had_label:
label_value: Rijksstudio Collections label_value: Rijksstudio Collections
has_or_had_url: has_or_had_url:
@ -451,8 +456,11 @@ classes:
platform_type: platform_type:
- AggregationPlatform - AggregationPlatform
- APIService - APIService
has_or_had_homepage: https://www.europeana.eu/ has_or_had_url:
has_or_had_url: https://www.europeana.eu/
has_or_had_type: homepage
has_or_had_web_page: has_or_had_web_page:
- has_or_had_label: - has_or_had_label:
label_value: Europeana Collections Browse label_value: Europeana Collections Browse
has_or_had_url: has_or_had_url:

View file

@ -0,0 +1,31 @@
id: https://nde.nl/ontology/hc/class/FileLocation
name: FileLocation
title: File Location Class
description: >-
The location of a file (e.g. path, URI).
MIGRATED from html_snapshot_path (Rule 53).
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_value
classes:
FileLocation:
class_uri: skos:Concept
description: A file location.
slots:
- has_or_had_value
- has_or_had_label
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: ["*"]
custodian_types_rationale: Universal utility concept.

View file

@ -0,0 +1,31 @@
id: https://nde.nl/ontology/hc/class/FilePath
name: FilePath
title: File Path Class
description: "A structured representation of a file path (local or remote).\n\n**MIGRATED** from html_file/html_snapshot_path strings (Rule 53)."
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_description
classes:
FilePath:
class_uri: schema:DigitalDocument
description: "Path to a file."
slots:
- has_or_had_label
- has_or_had_description
slot_usage:
has_or_had_label:
range: string
required: true
description: The file path string (e.g., "web/0021/rendered.html").
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types:
- '*'
custodian_types_rationale: Universal utility concept.

View file

@ -101,7 +101,8 @@ imports:
- ../slots/contains_or_contained_en - ../slots/contains_or_contained_en
- ../slots/is_or_was_located_in - ../slots/is_or_was_located_in
- ./HistoricalRegion - ./HistoricalRegion
- ../slots/html_snapshot_path - ../slots/has_or_had_file_location
- ./FileLocation
- ../slots/inbound_from - ../slots/inbound_from
- ../slots/international - ../slots/international

View file

@ -11,7 +11,8 @@ imports:
- ../slots/has_or_had_label - ../slots/has_or_had_label
- ../slots/has_or_had_description - ../slots/has_or_had_description
- ../slots/has_or_had_type - ../slots/has_or_had_type
- ../slots/as_wkt - ../slots/has_or_had_format
- ./WKT
- ./GeometryType - ./GeometryType
- ./GeometryTypes - ./GeometryTypes
default_prefix: hc default_prefix: hc
@ -22,8 +23,14 @@ classes:
- has_or_had_label - has_or_had_label
- has_or_had_description - has_or_had_description
- has_or_had_type - has_or_had_type
- as_wkt - has_or_had_format
slot_usage: slot_usage:
has_or_had_format:
range: WKT
description: |
WKT representation of the geometry.
MIGRATED from as_wkt (Rule 53).
required: true
has_or_had_type: has_or_had_type:
range: GeometryType range: GeometryType
required: true required: true

View file

@ -0,0 +1,33 @@
id: https://nde.nl/ontology/hc/class/HTMLFile
name: HTMLFile
title: HTML File Class
description: >-
An HTML file resource (e.g. a snapshot of a webpage).
MIGRATED from html_snapshot_path (Rule 53).
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/has_or_had_file_location
classes:
HTMLFile:
class_uri: skos:Concept
description: An HTML file.
slots:
- has_or_had_label
- has_or_had_description
- has_or_had_file_location
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: ["*"]
custodian_types_rationale: Universal utility concept.

View file

@ -0,0 +1,31 @@
id: https://nde.nl/ontology/hc/class/HTTPStatusCode
name: HTTPStatusCode
title: HTTP Status Code Class
description: >-
An HTTP status code.
MIGRATED from http_status_code (Rule 53).
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_value
classes:
HTTPStatusCode:
class_uri: skos:Concept
description: An HTTP status code.
slots:
- has_or_had_value
- has_or_had_label
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: ["*"]
custodian_types_rationale: Universal utility concept.

View file

@ -1,9 +1,9 @@
id: https://nde.nl/ontology/hc/class/WebAddress id: https://nde.nl/ontology/hc/class/HouseNumber
name: WebAddress name: HouseNumber
title: Web Address Class title: House Number Class
description: >- description: >-
A web address (URL) entity. A house number section of an address.
MIGRATED from homepage_web_address (Rule 53). MIGRATED from house_number (Rule 53).
prefixes: prefixes:
linkml: https://w3id.org/linkml/ linkml: https://w3id.org/linkml/
@ -14,15 +14,15 @@ default_prefix: hc
imports: imports:
- linkml:types - linkml:types
- ../slots/has_or_had_url
- ../slots/has_or_had_label - ../slots/has_or_had_label
- ../slots/has_or_had_value
classes: classes:
WebAddress: HouseNumber:
class_uri: skos:Concept class_uri: skos:Concept
description: A web address. description: A house number.
slots: slots:
- has_or_had_url - has_or_had_value
- has_or_had_label - has_or_had_label
annotations: annotations:
specificity_score: 0.1 specificity_score: 0.1

View file

@ -1,7 +1,7 @@
id: https://nde.nl/ontology/hc/class/Humidity id: https://nde.nl/ontology/hc/class/Humidity
name: Humidity name: Humidity
title: Humidity title: Humidity Class
description: Humidity measurement or requirement. description: "A class representing humidity measurements or policies (min, max, target).\n\n**MIGRATED** from humidity_max, humidity_min, humidity_target (Rule 53).\n\nUsed in storage condition policies."
prefixes: prefixes:
linkml: https://w3id.org/linkml/ linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/ hc: https://nde.nl/ontology/hc/
@ -9,18 +9,33 @@ prefixes:
default_prefix: hc default_prefix: hc
imports: imports:
- linkml:types - linkml:types
- ../slots/has_or_had_value - ../slots/maximum_of_maximum
- ../slots/has_or_had_unit - ../slots/minimum_of_minimum
- ../slots/has_or_had_target
- ./MaximumHumidity
- ./MinimumHumidity
- ./TargetHumidity
classes: classes:
Humidity: Humidity:
class_uri: schema:QuantitativeValue class_uri: schema:StructuredValue
description: Humidity value. description: "Humidity control parameters."
slots: slots:
- has_or_had_value - maximum_of_maximum
- has_or_had_unit - minimum_of_minimum
- has_or_had_target
slot_usage:
maximum_of_maximum:
range: MaximumHumidity
description: Maximum allowed humidity.
minimum_of_minimum:
range: MinimumHumidity
description: Minimum allowed humidity.
has_or_had_target:
range: TargetHumidity
description: Target humidity setpoint.
annotations: annotations:
specificity_score: 0.1 specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration specificity_rationale: Generic utility class.
custodian_types: custodian_types:
- '*' - '*'
custodian_types_rationale: Universal utility concept custodian_types_rationale: Universal utility concept.

View file

@ -0,0 +1,35 @@
id: https://nde.nl/ontology/hc/class/MaximumHumidity
name: MaximumHumidity
title: Maximum Humidity Class
description: "The maximum allowed or recorded relative humidity.\n\n**MIGRATED** from humidity_max (Rule 53).\n\nUsed in environmental control policies for heritage preservation."
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_value
- ../slots/has_or_had_unit
classes:
MaximumHumidity:
class_uri: schema:QuantitativeValue
description: "Maximum humidity constraint."
slots:
- has_or_had_value
- has_or_had_unit
slot_usage:
has_or_had_value:
range: float
required: true
description: Maximum relative humidity percentage (0-100).
has_or_had_unit:
range: string
ifabsent: string(%)
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types:
- '*'
custodian_types_rationale: Universal utility concept.

View file

@ -0,0 +1,35 @@
id: https://nde.nl/ontology/hc/class/MinimumHumidity
name: MinimumHumidity
title: Minimum Humidity Class
description: "The minimum allowed or recorded relative humidity.\n\n**MIGRATED** from humidity_min (Rule 53).\n\nUsed in environmental control policies for heritage preservation."
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_value
- ../slots/has_or_had_unit
classes:
MinimumHumidity:
class_uri: schema:QuantitativeValue
description: "Minimum humidity constraint."
slots:
- has_or_had_value
- has_or_had_unit
slot_usage:
has_or_had_value:
range: float
required: true
description: Minimum relative humidity percentage (0-100).
has_or_had_unit:
range: string
ifabsent: string(%)
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types:
- '*'
custodian_types_rationale: Universal utility concept.

View file

@ -22,7 +22,7 @@ imports:
- ../slots/has_or_had_origin - ../slots/has_or_had_origin
- ../slots/id - ../slots/id
- ../slots/has_or_had_associated_custodian - ../slots/has_or_had_associated_custodian
- ../slots/change_rationale - ../slots/has_or_had_rationale
- ../slots/staff_impact - ../slots/staff_impact
- ../slots/has_or_had_documentation - ../slots/has_or_had_documentation
- ../slots/has_or_had_url - ../slots/has_or_had_url
@ -130,7 +130,7 @@ classes:
slots: slots:
- has_or_had_affected_territory - has_or_had_affected_territory
- has_or_had_affected_unit - has_or_had_affected_unit
- change_rationale - has_or_had_rationale
- has_or_had_documentation - has_or_had_documentation
- temporal_extent - temporal_extent
- has_or_had_description - has_or_had_description
@ -209,10 +209,16 @@ classes:
- value: - value:
has_or_had_identifier: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804 has_or_had_identifier: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
description: Rijksmuseum description: Rijksmuseum
change_rationale: has_or_had_rationale:
range: string range: Rationale
inlined: true
description: |
Rationale for the change.
MIGRATED from change_rationale (Rule 53, 2026-01-28).
examples: examples:
- value: Part of 10-year museum renovation (2003-2013). Reorganization aimed to integrate conservation science with practice, create synergies between research and restoration functions, and modernize facilities with new conservation lab equipment. - value:
has_or_had_description: Part of 10-year museum renovation (2003-2013). Reorganization aimed to integrate conservation science with practice.
description: Renovation strategy rationale
staff_impact: staff_impact:
range: string range: string
examples: examples:
@ -315,7 +321,8 @@ classes:
unit_name: Conservation and Research Department unit_name: Conservation and Research Department
has_or_had_associated_custodian: has_or_had_associated_custodian:
has_or_had_identifier: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804 has_or_had_identifier: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
change_rationale: Strategic reorganization during 10-year renovation to integrate conservation science with practice and modernize facilities. has_or_had_rationale:
has_or_had_description: Strategic reorganization during 10-year renovation to integrate conservation science with practice and modernize facilities.
staff_impact: 28 FTE (12+16), all staff retained, 5 new positions staff_impact: 28 FTE (12+16), all staff retained, 5 new positions
has_or_had_documentation: has_or_had_documentation:
- has_or_had_url: - has_or_had_url:
@ -333,7 +340,8 @@ classes:
unit_name: Digital Preservation Department unit_name: Digital Preservation Department
has_or_had_associated_custodian: has_or_had_associated_custodian:
has_or_had_identifier: https://nde.nl/ontology/hc/nl-zh-haa-a-na has_or_had_identifier: https://nde.nl/ontology/hc/nl-zh-haa-a-na
change_rationale: Government mandate to preserve electronic records from ministries and agencies. Growing volume of born-digital materials requiring specialized expertise. has_or_had_rationale:
has_or_had_description: Government mandate to preserve electronic records from ministries and agencies. Growing volume of born-digital materials requiring specialized expertise.
staff_impact: 15 FTE, all new hires with digital archiving expertise staff_impact: 15 FTE, all new hires with digital archiving expertise
has_or_had_documentation: has_or_had_documentation:
- has_or_had_url: - has_or_had_url:
@ -353,7 +361,8 @@ classes:
unit_name: Amsterdam Museum unit_name: Amsterdam Museum
has_or_had_associated_custodian: has_or_had_associated_custodian:
has_or_had_identifier: https://nde.nl/ontology/hc/nl-nh-ams-m-am has_or_had_identifier: https://nde.nl/ontology/hc/nl-nh-ams-m-am
change_rationale: Historic Burgerweeshuis building requires major renovation. New facility offers better accessibility, climate control, and exhibition space. has_or_had_rationale:
has_or_had_description: Historic Burgerweeshuis building requires major renovation. New facility offers better accessibility, climate control, and exhibition space.
has_or_had_origin: has_or_had_origin:
place_name: Burgerweeshuis, Kalverstraat 92 place_name: Burgerweeshuis, Kalverstraat 92
place_specificity: BUILDING place_specificity: BUILDING

View file

@ -9,26 +9,19 @@ prefixes:
default_prefix: hc default_prefix: hc
imports: imports:
- linkml:types - linkml:types
- ../slots/has_or_had_rationale - ../slots/has_or_had_description
classes: classes:
Rationale: Rationale:
class_uri: skos:note class_uri: skos:note
description: 'A rationale or justification for a decision. description: 'A rationale or justification for a decision.'
**USAGE**:
Used for:
- Mapping rationale (Wikidata, ontology alignments)
- Decision justifications
- Methodology explanations
'
slots: slots:
- has_or_had_rationale - has_or_had_description
slot_usage:
has_or_had_description:
description: The text content of the rationale.
required: true
attributes: attributes:
decision_type: decision_type:
range: string range: string
@ -50,7 +43,7 @@ classes:
custodian_types_rationale: Universal utility concept custodian_types_rationale: Universal utility concept
examples: examples:
- value: - value:
has_or_had_rationale: Mapped based on exact name match and location has_or_had_description: Mapped based on exact name match and location
decision_type: MAPPING decision_type: MAPPING
confidence: 0.95 confidence: 0.95
description: Wikidata mapping rationale description: Wikidata mapping rationale

View file

@ -39,10 +39,11 @@ imports:
- ./FireSuppressionType - ./FireSuppressionType
- ./FireSuppressionTypes - ./FireSuppressionTypes
- ../slots/flood_protection_required - ../slots/flood_protection_required
- ../slots/humidity_max # - ../slots/humidity_max
- ../slots/humidity_min # - ../slots/humidity_min
- ../slots/humidity_target # - ../slots/humidity_target
- ../slots/light_max_lux - ../slots/light_max_lux
- ../slots/particulate_max - ../slots/particulate_max
- ../slots/pest_management_required - ../slots/pest_management_required
- ../slots/is_or_was_approved_by - ../slots/is_or_was_approved_by
@ -54,150 +55,15 @@ imports:
- ../slots/standards_compliance - ../slots/standards_compliance
- ../slots/has_or_had_security_level - ../slots/has_or_had_security_level
- ../slots/has_or_had_setpoint - ../slots/has_or_had_setpoint
- ./Setpoint - ../classes/Setpoint
- ../enums/SetpointTypeEnum - ../enums/SetpointTypeEnum
- ../slots/has_or_had_score # REMOVED 2026-01-28: humidity_max/min/target - migrated to has_or_had_setpoint (Rule 53)
- ../slots/has_or_had_requirement_status # - ../slots/humidity_max
- ./RequirementStatus # - ../slots/humidity_min
- ./SpecificityAnnotation # - ../slots/humidity_target
- ./TemplateSpecificityScore - ../slots/light_max_lux
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./Approver
- ./ConditionPolicy
classes:
StorageConditionPolicy:
is_a: ConditionPolicy
class_uri: hc:StorageConditionPolicy
description: "Designed environmental and safety conditions for a storage facility.\n\n**DEFINITION**:\n\nStorageConditionPolicy specifies what conditions SHOULD BE maintained\nin a storage facility according to institutional policy, standards\nrequirements, and preservation best practices.\n\n**CRITICAL DISTINCTION**:\n\n- **StorageConditionPolicy** (THIS CLASS): What SHOULD BE - designed conditions\n- **StorageCondition**: What IS - actual observed state\n\nThe gap between policy and reality is often significant and represents\na key transparency metric for heritage preservation assessment.\n\n**STANDARDS ALIGNMENT**:\n\nThis class captures requirements from:\n- **ISO/TR 19815:2018**: Environmental management framework\n- **EN 16893:2018**: Building specifications for storage\n- **EN 15757:2010**: Temperature and relative humidity control\n- **ISO 9706:2025**: Paper permanence requirements\n- **PAS 198**: Archive storage requirements\n- **ASHRAE**: HVAC specifications for cultural heritage\n\
\n**POLICY vs. OBSERVATION PATTERN**:\n\n```\nStorage Facility\n \u2502\n \u251C\u2500\u2500 condition_policy \u2192 StorageConditionPolicy (THIS CLASS)\n \u2502 \u251C\u2500\u2500 temperature_target: 18\xB0C\n \u2502 \u251C\u2500\u2500 temperature_tolerance: \xB12\xB0C\n \u2502 \u251C\u2500\u2500 humidity_target: 50%\n \u2502 \u251C\u2500\u2500 standards_compliance: [EN_15757_2010, ISO_TR_19815_2018]\n \u2502 \u2514\u2500\u2500 policy_effective_from: 2020-01-01\n \u2502\n \u2514\u2500\u2500 storage_conditions[] \u2192 StorageCondition (observations)\n \u251C\u2500\u2500 Observation 1: Temperature 19\xB0C \u2713 (within policy)\n \u251C\u2500\u2500 Observation 2: Temperature 25\xB0C \u2717 (exceeds policy)\n \u2514\u2500\u2500 Observation 3: Humidity 65% \u2717 (exceeds policy)\n```\n\n**ODRL ALIGNMENT**:\n\n`odrl:Policy` - \"A Policy is a named entity for a rule-based system\nfor specifying permissions, prohibitions, and obligations.\"\
\n\nWhile ODRL is primarily for digital rights, the policy pattern applies:\n- Policy defines RULES for acceptable conditions\n- Observations are checked against policy RULES\n- Violations trigger OBLIGATIONS (remediation)\n\n**USE CASES**:\n\n1. **Archive Climate Policy**:\n - Based on ISO/TR 19815:2018\n - Temperature: 18\xB0C \xB12\xB0C\n - Humidity: 50% RH \xB15%\n - Light: <50 lux for sensitive materials\n \n2. **Cold Storage Policy**:\n - Based on Image Permanence Institute guidelines\n - Temperature: -18\xB0C \xB12\xB0C\n - Humidity: 30% RH \xB15%\n - For film negatives and photographs\n \n3. **Art Storage Policy**:\n - Based on museum industry standards\n - Temperature: 21\xB0C \xB11\xB0C\n - Humidity: 50% RH \xB13%\n - Strict light and UV control\n"
exact_mappings:
- odrl:Policy
close_mappings:
- hc:EnvironmentalRequirement
- premis:PreservationPolicy
- schema:Policy
- crm:E29_Design_or_Procedure
slots:
- has_or_had_access_restriction
- specifies_or_specified
- requires_or_required
- flood_protection_required
- humidity_max
- humidity_min
- humidity_target
- humidity_tolerance
- allows_or_allowed
- light_max_lux
- note
- particulate_max
- pest_management_required
- is_or_was_approved_by
- policy_description
- policy_effective_from
- policy_effective_to
- policy_id
- policy_name
- policy_review_date
- specificity_annotation
- standards_compliance
- has_or_had_security_level
- has_or_had_setpoint
- has_or_had_score
- has_or_had_requirement_status
slot_usage:
specifies_or_specified:
range: uriorcurie
inlined: true
description: 'Specifies ventilation requirements, such as air changes per hour.
Replaces has_air_changes_per_hour per Rule 53.
'
examples:
- value: https://nde.nl/ontology/hc/policy/rijksmuseum-depot-climate-2020
required: true
identifier: true
policy_name:
range: string
required: true
examples:
- value: Rijksmuseum Depot Climate Control Policy
- value: National Archives Cold Storage Requirements
policy_description:
range: string
examples:
- value: Climate control policy for main art storage depot at Amersfoort. Designed to maintain stable conditions for mixed media collections including oil paintings, works on paper, and decorative arts. Based on EN 15757:2010 and museum industry best practices.
has_or_had_setpoint:
range: Setpoint
multivalued: true
inlined: true
inlined_as_list: true
description: 'Environmental control setpoints for this storage policy.
MIGRATED 2026-01-15: Replaces temperature_target, temperature_min, temperature_max.
Uses Setpoint class for structured setpoint data with types (TEMPERATURE, RELATIVE_HUMIDITY, etc.).
'
examples:
- value:
- setpoint_type: TEMPERATURE
setpoint_value: 18.0
setpoint_min: 16.0
setpoint_max: 22.0
setpoint_tolerance: 2.0
setpoint_unit: DEGREE_CELSIUS
iso_standard_reference: ISO 11799:2015
description: Archive temperature setpoint
allows_or_allowed:
range: TemperatureDeviation
multivalued: true
inlined: true
inlined_as_list: true
description: 'Allowed temperature deviation/tolerance for this policy.
MIGRATED 2026-01-16: Replaces temperature_tolerance (float).
Uses TemperatureDeviation class for structured tolerance data.
'
examples:
- value:
- deviation_value: 2.0
deviation_direction: PLUS_MINUS
has_or_had_measurement_unit:
has_or_had_type: DEGREE_CELSIUS
has_or_had_symbol: "\xB0C"
iso_standard_reference: ISO 11799:2015
description: "\xB12\xB0C tolerance per ISO 11799"
humidity_target:
range: float
minimum_value: 0.0
maximum_value: 100.0
examples:
- value: 50.0
description: 50% RH for general storage
- value: 30.0
description: 30% RH for cold storage
humidity_min:
range: float
minimum_value: 0.0
maximum_value: 100.0
examples:
- value: 45.0
humidity_max:
range: float
minimum_value: 0.0
maximum_value: 100.0
examples:
- value: 55.0
humidity_tolerance:
range: float
examples:
- value: 5.0
description: "\xB15% RH tolerance"
light_max_lux: light_max_lux:
range: float range: float
examples: examples:

View file

@ -0,0 +1,35 @@
id: https://nde.nl/ontology/hc/class/TargetHumidity
name: TargetHumidity
title: Target Humidity Class
description: "The target setpoint for relative humidity.\n\n**MIGRATED** from humidity_target (Rule 53).\n\nUsed in environmental control policies for heritage preservation."
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_value
- ../slots/has_or_had_unit
classes:
TargetHumidity:
class_uri: schema:QuantitativeValue
description: "Target humidity setpoint."
slots:
- has_or_had_value
- has_or_had_unit
slot_usage:
has_or_had_value:
range: float
required: true
description: Target relative humidity percentage (0-100).
has_or_had_unit:
range: string
ifabsent: string(%)
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types:
- '*'
custodian_types_rationale: Universal utility concept.

View file

@ -0,0 +1,32 @@
id: https://nde.nl/ontology/hc/class/WKT
name: WKT
title: WKT Class
description: >-
Well-Known Text (WKT) representation of a geometry.
MIGRATED from as_wkt (Rule 53).
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
geosparql: http://www.opengis.net/ont/geosparql#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_value
- ../slots/has_or_had_label
classes:
WKT:
class_uri: geosparql:wktLiteral
description: A WKT literal wrapper.
slots:
- has_or_had_value
- has_or_had_label
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: ["*"]
custodian_types_rationale: Universal utility concept.

View file

@ -21,7 +21,8 @@ imports:
- ../slots/source_url - ../slots/source_url
- ../slots/retrieved_on - ../slots/retrieved_on
- ../slots/has_or_had_provenance_path - ../slots/has_or_had_provenance_path
- ../slots/html_file - ../slots/has_or_had_file_path
- ./FilePath
- ../slots/has_or_had_identifier - ../slots/has_or_had_identifier
- ./Identifier - ./Identifier
- ../slots/has_or_had_type - ../slots/has_or_had_type
@ -66,7 +67,7 @@ classes:
- has_or_had_type - has_or_had_type
- has_or_had_content - has_or_had_content
- is_or_was_retrieved_through - is_or_was_retrieved_through
- html_file - has_or_had_file_path
- pipeline_stage - pipeline_stage
- retrieved_on - retrieved_on
- source_url - source_url
@ -222,8 +223,15 @@ classes:
range: XPath range: XPath
inlined: true inlined: true
description: XPath provenance for this claim - pointing to exact element in archived HTML. Contains expression, matched_text, and match_score. description: XPath provenance for this claim - pointing to exact element in archived HTML. Contains expression, matched_text, and match_score.
html_file: has_or_had_file_path:
required: true required: true
range: FilePath
inlined: true
description: Path to the archived HTML file (Playwright-rendered) used for extraction. MIGRATED from html_file.
examples:
- value:
has_or_had_label: web/0021/historischeverenigingnijeveen.nl/rendered.html
description: Archived HTML file path
is_or_was_retrieved_through: is_or_was_retrieved_through:
description: 'Retrieval event containing timestamp. description: 'Retrieval event containing timestamp.
@ -303,7 +311,8 @@ classes:
expression: /html[1]/body[1]/div[6]/div[1]/h1[1] expression: /html[1]/body[1]/div[6]/div[1]/h1[1]
match_score: 1.0 match_score: 1.0
source_document: web/0021/historischeverenigingnijeveen.nl/rendered.html source_document: web/0021/historischeverenigingnijeveen.nl/rendered.html
html_file: web/0021/historischeverenigingnijeveen.nl/rendered.html has_or_had_file_path:
has_or_had_label: web/0021/historischeverenigingnijeveen.nl/rendered.html
pipeline_stage: layout_analysis pipeline_stage: layout_analysis
description: Exact match claim for organization name (claim_type migrated to has_or_had_type) description: Exact match claim for organization name (claim_type migrated to has_or_had_type)
- value: - value:
@ -317,7 +326,8 @@ classes:
expression: /html[1]/body[1]/div[6]/div[1]/table[3]/tbody[1]/tr[1]/td[1]/p[1] expression: /html[1]/body[1]/div[6]/div[1]/table[3]/tbody[1]/tr[1]/td[1]/p[1]
match_score: 1.0 match_score: 1.0
source_document: web/0021/historischeverenigingnijeveen.nl/rendered.html source_document: web/0021/historischeverenigingnijeveen.nl/rendered.html
html_file: web/0021/historischeverenigingnijeveen.nl/rendered.html has_or_had_file_path:
has_or_had_label: web/0021/historischeverenigingnijeveen.nl/rendered.html
pipeline_stage: layout_analysis pipeline_stage: layout_analysis
description: Collection count claim from image bank statistics description: Collection count claim from image bank statistics
- value: - value:
@ -331,7 +341,8 @@ classes:
expression: /html[1]/body[1]/footer[1]/div[1]/a[3] expression: /html[1]/body[1]/footer[1]/div[1]/a[3]
match_score: 1.0 match_score: 1.0
source_document: web/0021/historischeverenigingnijeveen.nl/rendered.html source_document: web/0021/historischeverenigingnijeveen.nl/rendered.html
html_file: web/0021/historischeverenigingnijeveen.nl/rendered.html has_or_had_file_path:
has_or_had_label: web/0021/historischeverenigingnijeveen.nl/rendered.html
pipeline_stage: entity_linking pipeline_stage: entity_linking
description: Social media link claim - entity linking stage description: Social media link claim - entity linking stage
- value: - value:
@ -346,7 +357,8 @@ classes:
matched_text: De Historische Vereniging Nijeveen is ook te vinden op Facebook matched_text: De Historische Vereniging Nijeveen is ook te vinden op Facebook
match_score: 0.561 match_score: 0.561
source_document: web/0021/historischeverenigingnijeveen.nl/rendered.html source_document: web/0021/historischeverenigingnijeveen.nl/rendered.html
html_file: web/0021/historischeverenigingnijeveen.nl/rendered.html has_or_had_file_path:
has_or_had_label: web/0021/historischeverenigingnijeveen.nl/rendered.html
pipeline_stage: layout_analysis pipeline_stage: layout_analysis
description: Substring match - URL found within longer text description: Substring match - URL found within longer text
annotations: annotations:

View file

@ -29,7 +29,8 @@ imports:
- ../slots/has_or_had_method - ../slots/has_or_had_method
- ./CacheValidation - ./CacheValidation
- ./ETag - ./ETag
- ../slots/http_status_code - ../slots/has_or_had_status
- ../slots/last_modified - ../slots/last_modified
- ../slots/observation_id - ../slots/observation_id
- ../slots/observed_entity - ../slots/observed_entity
@ -69,8 +70,9 @@ classes:
- has_or_had_method - has_or_had_method
- extraction_confidence - extraction_confidence
- extraction_note - extraction_note
- http_status_code - has_or_had_status
- last_modified - last_modified
- observation_id - observation_id
- observed_entity - observed_entity
- page_title - page_title
@ -85,6 +87,18 @@ classes:
has_or_had_method: has_or_had_method:
range: CacheValidation range: CacheValidation
description: Cache validation method (e.g. ETag). MIGRATED from etag per slot_fixes.yaml (Rule 53). description: Cache validation method (e.g. ETag). MIGRATED from etag per slot_fixes.yaml (Rule 53).
has_or_had_status: # was: http_status_code - migrated per Rule 53/56 (2026-01-28)
range: HTTPStatusCode
description: |
HTTP response status code (e.g. 200, 404).
MIGRATED from http_status_code.
Uses HTTPStatusCode class which inherits from Status.
examples:
- value:
has_or_had_value: "200"
has_or_had_label: "OK"
description: Standard success response
comments: comments:
- WebObservation is a prov:Activity documenting web content retrieval - WebObservation is a prov:Activity documenting web content retrieval
- Integrates PROV-O for provenance and PAV for retrieval-specific properties - Integrates PROV-O for provenance and PAV for retrieval-specific properties
@ -103,8 +117,11 @@ classes:
retrieved_on: '2025-11-29T10:30:00Z' retrieved_on: '2025-11-29T10:30:00Z'
retrieved_by: claude-assistant retrieved_by: claude-assistant
retrieval_method: exa-search retrieval_method: exa-search
http_status_code: 200 has_or_had_status:
has_or_had_value: "200"
content_type: text/html content_type: text/html
page_title: Horizon Europe - Cultural heritage, cultural and creative industries page_title: Horizon Europe - Cultural heritage, cultural and creative industries
extraction_confidence: 0.92 extraction_confidence: 0.92
extraction_notes: Extracted via Exa AI search. Call details structured and well-formatted. Budget and deadline clearly stated. Eligibility criteria parsed from HTML sections. extraction_notes: Extracted via Exa AI search. Call details structured and well-formatted. Budget and deadline clearly stated. Eligibility criteria parsed from HTML sections.
@ -118,8 +135,11 @@ classes:
retrieved_on: '2025-11-28T14:00:00Z' retrieved_on: '2025-11-28T14:00:00Z'
retrieved_by: glam-harvester/1.0 retrieved_by: glam-harvester/1.0
retrieval_method: playwright-scraper retrieval_method: playwright-scraper
http_status_code: 200 has_or_had_status:
has_or_had_value: "200"
content_type: text/html content_type: text/html
page_title: Medium grants | The National Lottery Heritage Fund page_title: Medium grants | The National Lottery Heritage Fund
content_hash: sha256:a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456 content_hash: sha256:a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456
last_modified: '2025-11-15T09:00:00Z' last_modified: '2025-11-15T09:00:00Z'
@ -136,8 +156,10 @@ classes:
retrieved_on: '2025-11-29T09:00:00Z' retrieved_on: '2025-11-29T09:00:00Z'
retrieved_by: wikidata-mcp-server retrieved_by: wikidata-mcp-server
retrieval_method: sparql-api retrieval_method: sparql-api
http_status_code: 200 has_or_had_status:
has_or_had_value: "200"
content_type: application/sparql-results+json content_type: application/sparql-results+json
extraction_confidence: 1.0 extraction_confidence: 1.0
extraction_notes: SPARQL query for ECHOES/ECCCH Q-number (Q131381572). Structured API response with high confidence. extraction_notes: SPARQL query for ECHOES/ECCCH Q-number (Q131381572). Structured API response with high confidence.
observed_entity: observed_entity:

View file

@ -22,7 +22,8 @@ imports:
- ./TemplateSpecificityType - ./TemplateSpecificityType
- ./TemplateSpecificityTypes - ./TemplateSpecificityTypes
- ./MetadataStandard - ./MetadataStandard
- ../slots/cessation_observed_in - ../slots/ceases_or_ceased_through
- ./CeasingEvent
- ../slots/has_or_had_description - ../slots/has_or_had_description
- ./Description - ./Description
- ../slots/has_or_had_identifier - ../slots/has_or_had_identifier
@ -1133,7 +1134,7 @@ classes:
portal_type_category: portal_type_category:
equals_string: LIFECYCLE equals_string: LIFECYCLE
slots: slots:
- cessation_observed_in - ceases_or_ceased_through
- specificity_annotation - specificity_annotation
- is_or_was_superseded_by - is_or_was_superseded_by
- has_or_had_score - has_or_had_score

View file

@ -0,0 +1,7 @@
name: ceases_or_ceased_through
description: >-
The event through which an entity ceases or ceased to exist/operate.
MIGRATED from cessation_observed_in (Rule 53).
range: CeasingEvent
slot_uri: prov:wasInvalidatedBy
multivalued: true

View file

@ -1,75 +0,0 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_address
name: has_or_had_address_slot
title: Has or Had Address Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
vcard: http://www.w3.org/2006/vcard/ns#
schema: http://schema.org/
locn: http://www.w3.org/ns/locn#
org: http://www.w3.org/ns/org#
dcterms: http://purl.org/dc/terms/
prov: http://www.w3.org/ns/prov#
crm: http://www.cidoc-crm.org/cidoc-crm/
skos: http://www.w3.org/2004/02/skos/core#
rdfs: http://www.w3.org/2000/01/rdf-schema#
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
- ../classes/Address
default_range: string
description: "Links an entity to its physical address(es), acknowledging temporal semantics.\n\n**RULE 39 COMPLIANCE**:\n\nThis slot follows RiC-O-style naming convention (`has_or_had_*`) because\naddresses can change over time:\n- Heritage custodians relocate their headquarters\n- Legal registered addresses change\n- Branch offices open and close\n\nThe `has_or_had_` prefix indicates that:\n- The entity HAS this address currently, OR\n- The entity HAD this address historically\n\nFor current/former address distinction, use Address.temporal_coverage or\nattach to specific CustodianTimelineEvent records.\n\n**ONTOLOGY ALIGNMENT**:\n\nvCard: hasAddress - \"To specify the components of the delivery address \nfor the object\"\n\nSchema.org: address - \"Physical address of the item.\"\n\nW3C ORG: siteAddress - \"Indicates an Address which is the address of the \nSite of the Site.\"\n\nLOCN: address - \"The locn:address property relationship associates an \nAddress with something.\"\n"
slots:
has_or_had_address:
slot_uri: vcard:hasAddress
range: Address
required: false
multivalued: true
inlined_as_list: true
description: "Physical address(es) associated with this entity (current or historical).\n\nvCard: hasAddress - \"To specify the components of the delivery address \nfor the object\"\n\nAn entity may have multiple addresses of different types (headquarters, \nlegal, mailing, visiting, etc.) and may have had different addresses\nat different times.\n\nFor heritage custodians:\n- Main address: Primary public-facing address\n- Legal address: Registered business address\n- Mailing address: Correspondence address\n- Storage addresses: Depot/warehouse facilities\n\n**TEMPORAL SEMANTICS**:\n\nUse Address.temporal_coverage to indicate validity period, or link\naddress changes to CustodianTimelineEvent records for full provenance.\n"
exact_mappings:
- vcard:hasAddress
- vcard:adr
close_mappings:
- schema:address
- org:siteAddress
- locn:address
examples:
- value:
address_formatted: Museumstraat 1, 1071 XX Amsterdam, Netherlands
street_name: Museumstraat
house_number: '1'
postal_code: 1071 XX
locality: Amsterdam
country_name: NL
address_type: HEADQUARTERS
description: Rijksmuseum headquarters address (current)
- value:
address_formatted: Jansstraat 40, 2011 RX Haarlem, Netherlands
street_name: Jansstraat
house_number: '40'
postal_code: 2011 RX
locality: Haarlem
country_name: NL
address_type: HEADQUARTERS
temporal_coverage: 1995-01-01/..
description: Noord-Hollands Archief address with temporal validity
- value:
address_formatted: Euterpelaan 25, 3824 BK Amersfoort, Netherlands
street_name: Euterpelaan
house_number: '25'
postal_code: 3824 BK
locality: Amersfoort
country_name: NL
address_type: STORAGE
description: Rijksmuseum depot storage address
annotations:
custodian_types:
- '*'
custodian_types_rationale: Universal utility concept
comments:
- Renamed from has_address per Rule 39 (RiC-O temporal naming)
- Multivalued to support multiple address types (headquarters, legal, mailing)
- Use address_type to distinguish purpose of each address
- Inlined for data portability (address embedded in parent entity)
- Temporal validity tracked via Address.temporal_coverage or event links

View file

@ -0,0 +1,7 @@
name: has_or_had_file_location
description: >-
The location of a file.
MIGRATED from html_snapshot_path (Rule 53).
range: FileLocation
slot_uri: skos:note
multivalued: true

View file

@ -0,0 +1,29 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_file_path
name: has_or_had_file_path_slot
title: Has Or Had File Path Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
prov: http://www.w3.org/ns/prov#
crm: http://www.cidoc-crm.org/cidoc-crm/
skos: http://www.w3.org/2004/02/skos/core#
rdfs: http://www.w3.org/2000/01/rdf-schema#
org: http://www.w3.org/ns/org#
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_file_path:
description: "Path to a file associated with the entity.\n\n**MIGRATED** from html_file, html_snapshot_path (Rule 53).\n\nFollows RiC-O naming convention."
range: string
slot_uri: schema:contentUrl
annotations:
rico_naming_convention: Follows RiC-O "hasOrHad" pattern for temporal predicates.
custodian_types:
- '*'
custodian_types_rationale: Universal utility concept
exact_mappings:
- schema:contentUrl

View file

@ -0,0 +1,26 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_http_status
name: has_or_had_http_status_slot
title: Has Or Had HTTP Status Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
prov: http://www.w3.org/ns/prov#
crm: http://www.cidoc-crm.org/cidoc-crm/
skos: http://www.w3.org/2004/02/skos/core#
rdfs: http://www.w3.org/2000/01/rdf-schema#
org: http://www.w3.org/ns/org#
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_http_status:
description: "HTTP status code associated with a web resource or response.\n\n**MIGRATED** from http_status_code (Rule 53).\n\nFollows RiC-O naming convention."
range: integer
annotations:
rico_naming_convention: Follows RiC-O "hasOrHad" pattern for temporal predicates.
custodian_types:
- '*'
custodian_types_rationale: Universal utility concept

View file

@ -23,7 +23,7 @@ slots:
slot_uri: hc:hasOrHadUrl slot_uri: hc:hasOrHadUrl
description: "URL associated with this entity.\n\n**Temporal Semantics** (RiC-O Pattern):\nThe \"hasOrHad\" naming follows RiC-O convention indicating this\nURL may be historical - websites change over time.\n\n**Ontological Alignment**:\n- **Primary** (`slot_uri`): `hc:hasOrHadUrl` - Heritage Custodian\n ObjectProperty for class-valued URL range\n- **Close**: `schema:url` - Schema.org URL (DatatypeProperty)\n- **Close**: `foaf:homepage` - FOAF homepage (for main websites)\n\n**Use Cases**:\n- Institution websites (type: website)\n- API endpoints (type: api)\n- Vendor/supplier websites (type: vendor)\n- Documentation links (type: documentation)\n\n**Range**: URL class (structured URL with type and metadata)\n\n**Cardinality**:\nMultivalued - entities may have multiple URLs (different types).\n\n**Note**: slot_uri changed from schema:url to hc:hasOrHadUrl (2026-01-16)\nto resolve OWL ambiguous type warning. schema:url is a DatatypeProperty\nexpecting URI literals but range is URL class.\ description: "URL associated with this entity.\n\n**Temporal Semantics** (RiC-O Pattern):\nThe \"hasOrHad\" naming follows RiC-O convention indicating this\nURL may be historical - websites change over time.\n\n**Ontological Alignment**:\n- **Primary** (`slot_uri`): `hc:hasOrHadUrl` - Heritage Custodian\n ObjectProperty for class-valued URL range\n- **Close**: `schema:url` - Schema.org URL (DatatypeProperty)\n- **Close**: `foaf:homepage` - FOAF homepage (for main websites)\n\n**Use Cases**:\n- Institution websites (type: website)\n- API endpoints (type: api)\n- Vendor/supplier websites (type: vendor)\n- Documentation links (type: documentation)\n\n**Range**: URL class (structured URL with type and metadata)\n\n**Cardinality**:\nMultivalued - entities may have multiple URLs (different types).\n\n**Note**: slot_uri changed from schema:url to hc:hasOrHadUrl (2026-01-16)\nto resolve OWL ambiguous type warning. schema:url is a DatatypeProperty\nexpecting URI literals but range is URL class.\
\ Moved to close_mappings.\n\n**Range**: `Any` (2026-01-16) - Allows uri/string values and URL class instances.\n" \ Moved to close_mappings.\n\n**Range**: `Any` (2026-01-16) - Allows uri/string values and URL class instances.\n"
range: uriorcurie range: Any
implements: implements:
- owl:ObjectProperty - owl:ObjectProperty
required: false required: false

View file

@ -0,0 +1,7 @@
name: is_or_was_observed_by
description: >-
The observation that documented this event or state.
MIGRATED from cessation_observed_in (Rule 53).
range: CustodianObservation
slot_uri: prov:wasGenerartedBy
multivalued: true