Migrate multiple slots to enhance semantic clarity and align with best practices
- Migrated catering_type to CateringType with subclasses for better classification. - Updated certainty_level to has_or_had_level for improved metadata consistency. - Addressed cessation_observed_in by confirming existing temporal data structure. - Created NetAsset class and updated financial statements for richer financial modeling. - Completed migrations for default_access_policy, default_audio_language, and default_language to structured classes. - Migrated default_position to structured Alignment class for better representation. - Updated defined_by_standard to broaden range for identifier standards. - Migrated definition to structured Resolution class for video resolution modeling. - Completed migrations for degree_name, deliverable, and departement_code to structured classes. - Migrated deployment_date to structured DeploymentEvent with temporal extent. - Migrated derived_from_entity and derived_from_observation to new reference structures. - Completed description and description_text migrations to enhance content modeling. - Migrated detection_count, detection_level, and detection_threshold to structured slots with classes. - Migrated device-related slots to structured classes for better identification and classification. - Added new slots and classes for historic building and web address modeling.
This commit is contained in:
parent
511fc99847
commit
776462de90
188 changed files with 9617 additions and 1215 deletions
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"generated": "2026-01-24T12:26:12.079Z",
|
||||
"generated": "2026-01-25T11:26:41.239Z",
|
||||
"schemaRoot": "/schemas/20251121/linkml",
|
||||
"totalFiles": 3044,
|
||||
"totalFiles": 3045,
|
||||
"categoryCounts": {
|
||||
"main": 4,
|
||||
"class": 1004,
|
||||
"class": 1026,
|
||||
"enum": 154,
|
||||
"slot": 1878,
|
||||
"slot": 1857,
|
||||
"module": 4
|
||||
},
|
||||
"categories": [
|
||||
|
|
@ -135,6 +135,11 @@
|
|||
"path": "modules/classes/Agent.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Alignment",
|
||||
"path": "modules/classes/Alignment.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "AllocationAgency",
|
||||
"path": "modules/classes/AllocationAgency.yaml",
|
||||
|
|
@ -670,6 +675,16 @@
|
|||
"path": "modules/classes/CateringPlace.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "CateringType",
|
||||
"path": "modules/classes/CateringType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "CateringTypes",
|
||||
"path": "modules/classes/CateringTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "CathedralArchive",
|
||||
"path": "modules/classes/CathedralArchive.yaml",
|
||||
|
|
@ -1395,6 +1410,11 @@
|
|||
"path": "modules/classes/DeceasedStatus.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Deliverable",
|
||||
"path": "modules/classes/Deliverable.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Department",
|
||||
"path": "modules/classes/Department.yaml",
|
||||
|
|
@ -1415,6 +1435,11 @@
|
|||
"path": "modules/classes/DepartmentalArchivesRecordSetTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DeploymentEvent",
|
||||
"path": "modules/classes/DeploymentEvent.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DepositArchive",
|
||||
"path": "modules/classes/DepositArchive.yaml",
|
||||
|
|
@ -1440,6 +1465,31 @@
|
|||
"path": "modules/classes/DetectedEntity.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DetectionLevelType",
|
||||
"path": "modules/classes/DetectionLevelType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DetectionLevelTypes",
|
||||
"path": "modules/classes/DetectionLevelTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DetectionThreshold",
|
||||
"path": "modules/classes/DetectionThreshold.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DeviceType",
|
||||
"path": "modules/classes/DeviceType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DeviceTypes",
|
||||
"path": "modules/classes/DeviceTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DigitalArchive",
|
||||
"path": "modules/classes/DigitalArchive.yaml",
|
||||
|
|
@ -1700,6 +1750,11 @@
|
|||
"path": "modules/classes/Entity.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "EntityReconstruction",
|
||||
"path": "modules/classes/EntityReconstruction.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "EnvironmentalZone",
|
||||
"path": "modules/classes/EnvironmentalZone.yaml",
|
||||
|
|
@ -2250,6 +2305,11 @@
|
|||
"path": "modules/classes/InvestmentArea.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "IoTDevice",
|
||||
"path": "modules/classes/IoTDevice.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "IsilCodeEntry",
|
||||
"path": "modules/classes/IsilCodeEntry.yaml",
|
||||
|
|
@ -2295,6 +2355,16 @@
|
|||
"path": "modules/classes/Label.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "LabelType",
|
||||
"path": "modules/classes/LabelType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "LabelTypes",
|
||||
"path": "modules/classes/LabelTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Landsarkiv",
|
||||
"path": "modules/classes/Landsarkiv.yaml",
|
||||
|
|
@ -2520,6 +2590,16 @@
|
|||
"path": "modules/classes/MainPart.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Manager",
|
||||
"path": "modules/classes/Manager.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Manufacturer",
|
||||
"path": "modules/classes/Manufacturer.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "MappingType",
|
||||
"path": "modules/classes/MappingType.yaml",
|
||||
|
|
@ -2660,6 +2740,11 @@
|
|||
"path": "modules/classes/MixedCustodianType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Model",
|
||||
"path": "modules/classes/Model.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "MonasteryArchive",
|
||||
"path": "modules/classes/MonasteryArchive.yaml",
|
||||
|
|
@ -2895,6 +2980,11 @@
|
|||
"path": "modules/classes/OAIPMHEndpoint.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Observation",
|
||||
"path": "modules/classes/Observation.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "OfficialInstitutionType",
|
||||
"path": "modules/classes/OfficialInstitutionType.yaml",
|
||||
|
|
@ -3280,6 +3370,16 @@
|
|||
"path": "modules/classes/PressArchiveRecordSetTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Price",
|
||||
"path": "modules/classes/Price.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "PriceRange",
|
||||
"path": "modules/classes/PriceRange.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "PrimaryDigitalPresenceAssertion",
|
||||
"path": "modules/classes/PrimaryDigitalPresenceAssertion.yaml",
|
||||
|
|
@ -3640,6 +3740,11 @@
|
|||
"path": "modules/classes/ResearchSourceData.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Resolution",
|
||||
"path": "modules/classes/Resolution.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "ResourceType",
|
||||
"path": "modules/classes/ResourceType.yaml",
|
||||
|
|
@ -4075,6 +4180,11 @@
|
|||
"path": "modules/classes/StateRegionalArchiveCzechiaRecordSetTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Status",
|
||||
"path": "modules/classes/Status.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"path": "modules/classes/Storage.yaml",
|
||||
|
|
@ -5902,26 +6012,11 @@
|
|||
"path": "modules/slots/begin_of_the_end.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "catering_price_range",
|
||||
"path": "modules/slots/catering_price_range.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "catering_type",
|
||||
"path": "modules/slots/catering_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "cessation_observed_in",
|
||||
"path": "modules/slots/cessation_observed_in.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "change_in_net_asset",
|
||||
"path": "modules/slots/change_in_net_asset.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "change_rationale",
|
||||
"path": "modules/slots/change_rationale.yaml",
|
||||
|
|
@ -6582,106 +6677,11 @@
|
|||
"path": "modules/slots/date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "deduction_percentage",
|
||||
"path": "modules/slots/deduction_percentage.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "default_access_policy",
|
||||
"path": "modules/slots/default_access_policy.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "default_audio_language",
|
||||
"path": "modules/slots/default_audio_language.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "default_language",
|
||||
"path": "modules/slots/default_language.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "default_position",
|
||||
"path": "modules/slots/default_position.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "defined_by_standard",
|
||||
"path": "modules/slots/defined_by_standard.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "definition",
|
||||
"path": "modules/slots/definition.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "degree_name",
|
||||
"path": "modules/slots/degree_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "degree_of_certainty",
|
||||
"path": "modules/slots/degree_of_certainty.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "deliverable",
|
||||
"path": "modules/slots/deliverable.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "departement_code",
|
||||
"path": "modules/slots/departement_code.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "departement_name",
|
||||
"path": "modules/slots/departement_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_code",
|
||||
"path": "modules/slots/department_code.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_description",
|
||||
"path": "modules/slots/department_description.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_head",
|
||||
"path": "modules/slots/department_head.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_id",
|
||||
"path": "modules/slots/department_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_name",
|
||||
"path": "modules/slots/department_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "deployment_date",
|
||||
"path": "modules/slots/deployment_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "derived_from_entity",
|
||||
"path": "modules/slots/derived_from_entity.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "derived_from_observation",
|
||||
"path": "modules/slots/derived_from_observation.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "derives_or_derived_from",
|
||||
"path": "modules/slots/derives_or_derived_from.yaml",
|
||||
|
|
@ -6692,66 +6692,16 @@
|
|||
"path": "modules/slots/describes_or_described.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "description",
|
||||
"path": "modules/slots/description.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "description_text",
|
||||
"path": "modules/slots/description_text.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "description_type",
|
||||
"path": "modules/slots/description_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "detection_count",
|
||||
"path": "modules/slots/detection_count.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "detection_level",
|
||||
"path": "modules/slots/detection_level.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "detection_threshold",
|
||||
"path": "modules/slots/detection_threshold.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_count",
|
||||
"path": "modules/slots/device_count.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_id",
|
||||
"path": "modules/slots/device_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_manufacturer",
|
||||
"path": "modules/slots/device_manufacturer.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_model",
|
||||
"path": "modules/slots/device_model.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_name",
|
||||
"path": "modules/slots/device_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_type",
|
||||
"path": "modules/slots/device_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "diarization_confidence",
|
||||
"path": "modules/slots/diarization_confidence.yaml",
|
||||
|
|
@ -7712,6 +7662,11 @@
|
|||
"path": "modules/slots/filing_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "filters_or_filtered",
|
||||
"path": "modules/slots/filters_or_filtered.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "final_of_the_final",
|
||||
"path": "modules/slots/final_of_the_final.yaml",
|
||||
|
|
@ -8862,6 +8817,11 @@
|
|||
"path": "modules/slots/has_or_had_agent.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_alignment",
|
||||
"path": "modules/slots/has_or_had_alignment.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_alternative_name",
|
||||
"path": "modules/slots/has_or_had_alternative_name.yaml",
|
||||
|
|
@ -9692,6 +9652,11 @@
|
|||
"path": "modules/slots/has_or_had_previous_owner.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_price",
|
||||
"path": "modules/slots/has_or_had_price.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_primary_presence_assertion",
|
||||
"path": "modules/slots/has_or_had_primary_presence_assertion.yaml",
|
||||
|
|
@ -9822,6 +9787,11 @@
|
|||
"path": "modules/slots/has_or_had_research_attempt.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_resolution",
|
||||
"path": "modules/slots/has_or_had_resolution.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_responsibility",
|
||||
"path": "modules/slots/has_or_had_responsibility.yaml",
|
||||
|
|
@ -10102,6 +10072,11 @@
|
|||
"path": "modules/slots/has_or_had_treatment.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_treshold",
|
||||
"path": "modules/slots/has_or_had_treshold.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_type",
|
||||
"path": "modules/slots/has_or_had_type.yaml",
|
||||
|
|
@ -10967,6 +10942,11 @@
|
|||
"path": "modules/slots/is_or_was_collection_of.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_created_by",
|
||||
"path": "modules/slots/is_or_was_created_by.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_created_through",
|
||||
"path": "modules/slots/is_or_was_created_through.yaml",
|
||||
|
|
@ -10977,6 +10957,11 @@
|
|||
"path": "modules/slots/is_or_was_decommissioned_at.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_deployed_at",
|
||||
"path": "modules/slots/is_or_was_deployed_at.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_derived_from",
|
||||
"path": "modules/slots/is_or_was_derived_from.yaml",
|
||||
|
|
@ -11027,6 +11012,11 @@
|
|||
"path": "modules/slots/is_or_was_instance_of.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_instantiated_by",
|
||||
"path": "modules/slots/is_or_was_instantiated_by.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_involved_in",
|
||||
"path": "modules/slots/is_or_was_involved_in.yaml",
|
||||
|
|
@ -12517,6 +12507,11 @@
|
|||
"path": "modules/slots/offers_donation_scheme.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "offers_or_offered",
|
||||
"path": "modules/slots/offers_or_offered.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "offers_or_offered_access",
|
||||
"path": "modules/slots/offers_or_offered_access.yaml",
|
||||
|
|
@ -13787,6 +13782,11 @@
|
|||
"path": "modules/slots/recurrence_pattern.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "refers_or_referred_to",
|
||||
"path": "modules/slots/refers_or_referred_to.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "refers_to_access_policy",
|
||||
"path": "modules/slots/refers_to_access_policy.yaml",
|
||||
|
|
@ -14932,6 +14932,11 @@
|
|||
"path": "modules/slots/specificity_timestamp.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "specifies_or_specified",
|
||||
"path": "modules/slots/specifies_or_specified.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "specimen_count",
|
||||
"path": "modules/slots/specimen_count.yaml",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,93 @@
|
|||
id: https://nde.nl/ontology/hc/class/Alignment
|
||||
name: alignment_class
|
||||
title: Alignment Class
|
||||
description: |
|
||||
Represents positioning or alignment information for content elements.
|
||||
|
||||
**USE CASES**:
|
||||
- Caption/subtitle positioning (top, bottom, left, right)
|
||||
- Text alignment within containers
|
||||
- Visual element placement in layouts
|
||||
|
||||
**PROPERTIES**:
|
||||
- horizontal_alignment: left, center, right, justify
|
||||
- vertical_alignment: top, middle, bottom
|
||||
- position_value: Numeric or named position value
|
||||
|
||||
**RELATIONSHIP TO Caption**:
|
||||
Alignment can be used with Caption to specify where subtitles appear
|
||||
on screen (e.g., bottom-center is typical default).
|
||||
imports:
|
||||
- linkml:types
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
default_prefix: hc
|
||||
classes:
|
||||
Alignment:
|
||||
class_uri: hc:Alignment
|
||||
description: |
|
||||
Positioning or alignment information for content elements.
|
||||
Captures horizontal alignment, vertical alignment, and position values.
|
||||
slots:
|
||||
- horizontal_alignment
|
||||
- vertical_alignment
|
||||
- position_value
|
||||
- position_unit
|
||||
slot_usage:
|
||||
horizontal_alignment:
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: "left"
|
||||
description: Left-aligned content
|
||||
- value: "center"
|
||||
description: Center-aligned content
|
||||
- value: "right"
|
||||
description: Right-aligned content
|
||||
vertical_alignment:
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: "top"
|
||||
description: Top-aligned (e.g., top subtitles)
|
||||
- value: "bottom"
|
||||
description: Bottom-aligned (default for subtitles)
|
||||
- value: "middle"
|
||||
description: Vertically centered
|
||||
position_value:
|
||||
range: string
|
||||
required: false
|
||||
description: Numeric or named position value
|
||||
examples:
|
||||
- value: "10"
|
||||
description: Position 10 units from reference
|
||||
- value: "default"
|
||||
description: Default positioning
|
||||
position_unit:
|
||||
range: string
|
||||
required: false
|
||||
description: Unit of measurement for position (px, %, em, etc.)
|
||||
examples:
|
||||
- value: "px"
|
||||
description: Pixels
|
||||
- value: "%"
|
||||
description: Percentage of container
|
||||
slots:
|
||||
horizontal_alignment:
|
||||
slot_uri: hc:horizontalAlignment
|
||||
range: string
|
||||
description: Horizontal alignment (left, center, right, justify)
|
||||
vertical_alignment:
|
||||
slot_uri: hc:verticalAlignment
|
||||
range: string
|
||||
description: Vertical alignment (top, middle, bottom)
|
||||
position_value:
|
||||
slot_uri: hc:positionValue
|
||||
range: string
|
||||
description: Numeric or named position value
|
||||
position_unit:
|
||||
slot_uri: hc:positionUnit
|
||||
range: string
|
||||
description: Unit of measurement for position
|
||||
|
|
@ -15,7 +15,9 @@ imports:
|
|||
- ./Label
|
||||
- ./Description
|
||||
# Domain-specific slots (kept)
|
||||
- ../slots/catering_type
|
||||
# - ../slots/catering_type # ARCHIVED 2026-01-24: migrated to has_or_had_type + CateringType per Rule 53/56
|
||||
- ./CateringType
|
||||
- ./CateringTypes
|
||||
- ../slots/heritage_type_classification
|
||||
- ../slots/cuisine_type
|
||||
- ../slots/seating_capacity
|
||||
|
|
@ -27,7 +29,10 @@ imports:
|
|||
- ../slots/reservation_required
|
||||
- ../slots/has_michelin_star
|
||||
- ../slots/michelin_star
|
||||
- ../slots/catering_price_range
|
||||
# - ../slots/catering_price_range # ARCHIVED 2026-01-24: migrated to has_or_had_price + Price per Rule 53/56
|
||||
- ../slots/has_or_had_price
|
||||
- ./Price
|
||||
- ./PriceRange
|
||||
- ../slots/has_or_had_accessibility_feature
|
||||
- ../slots/operator
|
||||
# MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent (Rule 53)
|
||||
|
|
@ -91,8 +96,8 @@ classes:
|
|||
- has_or_had_description # was: has_or_had_description - migrated per Rule 55 (2026-01-16) # was: catering_place_description - migrated per Rule 53
|
||||
- has_or_had_identifier # was: catering_place_id - migrated per Rule 53
|
||||
- has_or_had_label # was: catering_place_name - migrated per Rule 53
|
||||
- catering_price_range
|
||||
- catering_type
|
||||
- has_or_had_price # was: catering_price_range - migrated per Rule 53/56 (2026-01-24)
|
||||
- has_or_had_type # was: catering_type - migrated per Rule 53/56 (2026-01-24)
|
||||
- cuisine_type
|
||||
- is_or_was_founded_through # was: founded_year - migrated per Rule 53 (2026-01-22)
|
||||
- has_michelin_star
|
||||
|
|
@ -142,13 +147,19 @@ classes:
|
|||
- value:
|
||||
description_text: Michelin-starred restaurant serving modern Dutch cuisine using seasonal ingredients. Located in the museum's atrium with views of the garden.
|
||||
description: Fine dining restaurant
|
||||
catering_type:
|
||||
range: CateringTypeEnum
|
||||
has_or_had_type: # was: catering_type - migrated per Rule 53/56 (2026-01-24)
|
||||
description: |
|
||||
MIGRATED from catering_type per Rule 53/56 (2026-01-24).
|
||||
Type classification of catering facility.
|
||||
range: CateringType
|
||||
required: true
|
||||
inlined: true
|
||||
examples:
|
||||
- value: RESTAURANT
|
||||
- value:
|
||||
has_or_had_name: Restaurant
|
||||
description: Full-service restaurant
|
||||
- value: CAFE
|
||||
- value:
|
||||
has_or_had_name: Café
|
||||
description: Café
|
||||
heritage_type_classification:
|
||||
range: TasteScentHeritageTypeEnum
|
||||
|
|
@ -216,15 +227,29 @@ classes:
|
|||
examples:
|
||||
- value: 1
|
||||
description: One Michelin star
|
||||
catering_price_range:
|
||||
range: string
|
||||
has_or_had_price: # was: catering_price_range - migrated per Rule 53/56 (2026-01-24)
|
||||
description: |
|
||||
MIGRATED from catering_price_range per Rule 53/56 (2026-01-24).
|
||||
Price range or pricing information for the catering place.
|
||||
range: Price
|
||||
inlined: true
|
||||
examples:
|
||||
- value: €€€€
|
||||
description: Fine dining price
|
||||
- value: €€
|
||||
description: Moderate
|
||||
- value: €
|
||||
description: Budget-friendly
|
||||
- value:
|
||||
has_or_had_value: "€€€€"
|
||||
has_or_had_type:
|
||||
has_or_had_name: Luxury
|
||||
has_or_had_description: Over €60 per person
|
||||
description: Fine dining price range
|
||||
- value:
|
||||
has_or_had_value: "€€"
|
||||
has_or_had_type:
|
||||
has_or_had_name: Moderate
|
||||
description: Moderate price range
|
||||
- value:
|
||||
has_or_had_value: "€"
|
||||
has_or_had_type:
|
||||
has_or_had_name: Budget
|
||||
description: Budget-friendly price range
|
||||
has_or_had_accessibility_feature:
|
||||
range: string
|
||||
multivalued: true
|
||||
|
|
@ -278,7 +303,8 @@ classes:
|
|||
label_text: RIJKS Restaurant
|
||||
has_or_had_description:
|
||||
description_text: Michelin-starred restaurant serving modern Dutch cuisine. Located in museum atrium with garden views.
|
||||
catering_type: RESTAURANT
|
||||
has_or_had_type: # was: catering_type
|
||||
has_or_had_name: Restaurant
|
||||
cuisine_type: Modern Dutch fine dining
|
||||
seating_capacity: 80
|
||||
has_outdoor_seating: true
|
||||
|
|
@ -288,7 +314,10 @@ classes:
|
|||
reservation_required: true
|
||||
has_michelin_star: true
|
||||
michelin_star: 1
|
||||
catering_price_range: €€€€
|
||||
has_or_had_price: # was: catering_price_range
|
||||
has_or_had_value: "€€€€"
|
||||
has_or_had_type:
|
||||
has_or_had_name: Luxury
|
||||
operator: Vermaat Groep
|
||||
description: Michelin-starred museum restaurant
|
||||
- value:
|
||||
|
|
@ -297,13 +326,17 @@ classes:
|
|||
label_text: Nationaal Archief Café
|
||||
has_or_had_description:
|
||||
description_text: Casual café for archive visitors. Light lunches, coffee, and pastries.
|
||||
catering_type: CAFE
|
||||
has_or_had_type: # was: catering_type
|
||||
has_or_had_name: Café
|
||||
cuisine_type: Café fare, sandwiches, soups
|
||||
seating_capacity: 40
|
||||
opening_hour: Tu-Fr 09:30-16:30
|
||||
serves_visitors_only: true
|
||||
reservation_required: false
|
||||
catering_price_range: €
|
||||
has_or_had_price: # was: catering_price_range
|
||||
has_or_had_value: "€"
|
||||
has_or_had_type:
|
||||
has_or_had_name: Budget
|
||||
has_or_had_accessibility_feature:
|
||||
- Wheelchair accessible
|
||||
description: Archive visitor café
|
||||
|
|
@ -313,7 +346,8 @@ classes:
|
|||
label_text: Café Americain
|
||||
has_or_had_description:
|
||||
description_text: Historic art deco café dating from 1902. Literary landmark and protected monument.
|
||||
catering_type: HISTORIC_CAFE
|
||||
has_or_had_type: # was: catering_type
|
||||
has_or_had_name: Historic Café
|
||||
heritage_type_classification: HISTORIC_RESTAURANT
|
||||
cuisine_type: International brasserie
|
||||
seating_capacity: 150
|
||||
|
|
@ -325,5 +359,8 @@ classes:
|
|||
begin_of_the_begin: "1902-01-01"
|
||||
end_of_the_begin: "1902-12-31"
|
||||
founding_description: "Historic art deco café established in 1902"
|
||||
catering_price_range: €€€
|
||||
has_or_had_price: # was: catering_price_range
|
||||
has_or_had_value: "€€€"
|
||||
has_or_had_type:
|
||||
has_or_had_name: Upscale
|
||||
description: Historic heritage café
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
id: https://nde.nl/ontology/hc/class/CateringType
|
||||
name: CateringType
|
||||
title: Catering Type (Abstract Base)
|
||||
description: |
|
||||
Abstract base class for types of catering facilities at heritage venues.
|
||||
|
||||
This class defines the taxonomy of catering establishment types found at
|
||||
museums, archives, libraries, and other heritage institutions.
|
||||
Concrete subclasses are defined in CateringTypes.yaml following the
|
||||
Type/Types naming convention (Rule 0b).
|
||||
|
||||
Created per slot_fixes.yaml revision for catering_type migration (Rule 53/56).
|
||||
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/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
- ../slots/has_or_had_description
|
||||
default_prefix: hc
|
||||
classes:
|
||||
CateringType:
|
||||
class_uri: skos:Concept
|
||||
abstract: true
|
||||
description: |
|
||||
Abstract base class for types of catering facilities.
|
||||
|
||||
Catering type categories:
|
||||
- Café/Coffee Shop
|
||||
- Restaurant
|
||||
- Tea Room
|
||||
- Canteen/Cafeteria
|
||||
- Terrace/Garden Café
|
||||
- Historic Café
|
||||
- Event Catering
|
||||
slots:
|
||||
- has_or_had_name
|
||||
- has_or_had_description
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
description: The name of this catering type category.
|
||||
required: true
|
||||
has_or_had_description:
|
||||
description: Description of this catering type and typical characteristics.
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
- schema:FoodEstablishment
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
id: https://nde.nl/ontology/hc/class/CateringTypes
|
||||
name: CateringTypes
|
||||
title: Catering Types (Concrete Subclasses)
|
||||
description: |
|
||||
Concrete subclasses of CateringType representing specific categories of
|
||||
catering facilities at heritage venues.
|
||||
|
||||
Follows the Type/Types naming convention (Rule 0b):
|
||||
- CateringType.yaml: Abstract base class
|
||||
- CateringTypes.yaml: This file with concrete subclasses
|
||||
|
||||
Created per slot_fixes.yaml revision for catering_type migration (Rule 53/56).
|
||||
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/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./CateringType
|
||||
default_prefix: hc
|
||||
classes:
|
||||
CafeCateringType:
|
||||
is_a: CateringType
|
||||
class_uri: hc:CafeCateringType
|
||||
description: |
|
||||
Casual café or coffee shop offering beverages, light snacks, and pastries.
|
||||
Typically self-service or counter-service with informal seating.
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
equals_string: Café
|
||||
exact_mappings:
|
||||
- schema:CafeOrCoffeeShop
|
||||
aliases:
|
||||
- Coffee Shop
|
||||
- Koffiehuis
|
||||
- Coffeebar
|
||||
|
||||
RestaurantCateringType:
|
||||
is_a: CateringType
|
||||
class_uri: hc:RestaurantCateringType
|
||||
description: |
|
||||
Full-service restaurant with table service, complete meals, and formal dining.
|
||||
May range from casual dining to fine dining establishments.
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
equals_string: Restaurant
|
||||
exact_mappings:
|
||||
- schema:Restaurant
|
||||
aliases:
|
||||
- Dining Room
|
||||
- Eatery
|
||||
|
||||
TeaRoomCateringType:
|
||||
is_a: CateringType
|
||||
class_uri: hc:TeaRoomCateringType
|
||||
description: |
|
||||
Tea room or tea salon specializing in tea service, often with afternoon tea,
|
||||
scones, sandwiches, and pastries.
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
equals_string: Tea Room
|
||||
aliases:
|
||||
- Tea Salon
|
||||
- Theehuis
|
||||
- Salon de Thé
|
||||
|
||||
CanteenCateringType:
|
||||
is_a: CateringType
|
||||
class_uri: hc:CanteenCateringType
|
||||
description: |
|
||||
Staff cafeteria or canteen primarily serving employees and staff.
|
||||
May be open to visitors or restricted to staff only.
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
equals_string: Canteen
|
||||
aliases:
|
||||
- Cafeteria
|
||||
- Staff Restaurant
|
||||
- Kantine
|
||||
|
||||
TerraceCateringType:
|
||||
is_a: CateringType
|
||||
class_uri: hc:TerraceCateringType
|
||||
description: |
|
||||
Outdoor or garden café, typically seasonal, offering refreshments
|
||||
in a garden, courtyard, or terrace setting.
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
equals_string: Terrace
|
||||
aliases:
|
||||
- Garden Café
|
||||
- Outdoor Café
|
||||
- Terras
|
||||
|
||||
HistoricCafeCateringType:
|
||||
is_a: CateringType
|
||||
class_uri: hc:HistoricCafeCateringType
|
||||
description: |
|
||||
Heritage café with cultural or historical significance.
|
||||
Often a protected monument or literary landmark in its own right.
|
||||
Examples: Café Americain, Café de Flore, Café Central.
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
equals_string: Historic Café
|
||||
aliases:
|
||||
- Heritage Café
|
||||
- Literary Café
|
||||
- Grand Café
|
||||
|
||||
EventCateringType:
|
||||
is_a: CateringType
|
||||
class_uri: hc:EventCateringType
|
||||
description: |
|
||||
Function and event catering space for private events, receptions,
|
||||
corporate functions, and special occasions.
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
equals_string: Event Catering
|
||||
aliases:
|
||||
- Function Catering
|
||||
- Banquet Hall
|
||||
- Reception Venue
|
||||
|
|
@ -24,7 +24,9 @@ imports:
|
|||
- ../slots/has_or_had_version # was: cms_product_version - migrated per Rule 53 (2026-01-19)
|
||||
- ./Version
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/deployment_date
|
||||
# MIGRATED 2026-01-25: deployment_date → is_or_was_deployed_at + DeploymentEvent (Rule 53)
|
||||
- ../slots/is_or_was_deployed_at
|
||||
- ./DeploymentEvent
|
||||
- ../slots/iiif_compatible
|
||||
- ../slots/license
|
||||
- ../slots/linked_data_export
|
||||
|
|
@ -126,7 +128,8 @@ classes:
|
|||
# REMOVED 2026-01-19: cms_product_version - migrated to has_or_had_version + Version (Rule 53)
|
||||
- has_or_had_version # was: cms_product_version - migrated per Rule 53 (2026-01-19)
|
||||
- has_or_had_custodian_type
|
||||
- deployment_date
|
||||
# MIGRATED 2026-01-25: deployment_date → is_or_was_deployed_at (Rule 53)
|
||||
- is_or_was_deployed_at
|
||||
- documentation_url
|
||||
- iiif_compatible
|
||||
- license
|
||||
|
|
@ -396,11 +399,35 @@ classes:
|
|||
examples:
|
||||
- value: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Rijksmuseum uses this CMS
|
||||
# MIGRATED 2026-01-25: deployment_date → is_or_was_deployed_at + DeploymentEvent (Rule 53)
|
||||
deployment_date:
|
||||
range: date
|
||||
description: |
|
||||
DEPRECATED 2026-01-25: Migrated to is_or_was_deployed_at slot with DeploymentEvent class.
|
||||
See is_or_was_deployed_at slot_usage for current pattern.
|
||||
deprecated: "Use is_or_was_deployed_at with DeploymentEvent class"
|
||||
is_or_was_deployed_at:
|
||||
description: |
|
||||
MIGRATED from deployment_date per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
|
||||
Deployment events for this CMS. Uses DeploymentEvent class which includes:
|
||||
- temporal_extent: TimeSpan with fuzzy boundaries for deployment date
|
||||
- refers_to_custodian: Institution where deployment occurred
|
||||
- description: Deployment notes and context
|
||||
|
||||
Enables tracking multiple deployments (initial, upgrades, re-deployments).
|
||||
range: DeploymentEvent
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
required: false
|
||||
examples:
|
||||
- value: '2015-06-01'
|
||||
description: CMS deployed June 2015
|
||||
- value:
|
||||
temporal_extent:
|
||||
begin_of_the_begin: "2015-06-01"
|
||||
end_of_the_end: "2015-06-01"
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
has_or_had_description:
|
||||
has_or_had_text: "Initial deployment of Adlib CMS"
|
||||
description: Rijksmuseum Adlib deployment (migrated from deployment_date)
|
||||
temporal_extent:
|
||||
range: TimeSpan
|
||||
examples:
|
||||
|
|
@ -477,6 +504,13 @@ classes:
|
|||
- https://nde.nl/ontology/hc/collection/rm-paintings
|
||||
- https://nde.nl/ontology/hc/collection/rm-prints
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
# MIGRATED 2026-01-25: deployment_date → is_or_was_deployed_at + DeploymentEvent (Rule 53)
|
||||
is_or_was_deployed_at:
|
||||
- temporal_extent:
|
||||
begin_of_the_begin: "2015-06-01"
|
||||
end_of_the_end: "2015-06-01"
|
||||
has_or_had_description:
|
||||
has_or_had_text: "Initial deployment of Adlib CMS at Rijksmuseum"
|
||||
description: Rijksmuseum Adlib CMS deployment
|
||||
- value:
|
||||
# cms_id migrated to has_or_had_identifier with Identifier class (2026-01-18)
|
||||
|
|
|
|||
|
|
@ -42,7 +42,9 @@ imports:
|
|||
# REMOVED 2026-01-15: ../slots/budget - migrated to is_or_was_allocated_budget
|
||||
- ../slots/is_or_was_allocated_budget
|
||||
- ../slots/curated_holding
|
||||
- ../slots/deliverable
|
||||
# MIGRATED 2026-01-24: deliverable → has_or_had_objective + Deliverable (Rule 53)
|
||||
- ../slots/has_or_had_objective
|
||||
- ./Deliverable
|
||||
- ../slots/documentation_produced
|
||||
- ../slots/funding_source
|
||||
- ../slots/is_recurring
|
||||
|
|
@ -174,7 +176,8 @@ classes:
|
|||
- is_or_was_allocated_budget
|
||||
- curated_holding
|
||||
- has_or_had_custodian_type
|
||||
- deliverable
|
||||
# MIGRATED 2026-01-24: deliverable → has_or_had_objective + Deliverable (Rule 53)
|
||||
- has_or_had_objective
|
||||
- documentation_produced
|
||||
- funding_source
|
||||
- is_recurring
|
||||
|
|
@ -305,15 +308,31 @@ classes:
|
|||
- Condition notation updates (42 records)
|
||||
description: Inventory deliverables
|
||||
|
||||
deliverable:
|
||||
range: uri
|
||||
# MIGRATED 2026-01-24: deliverable → has_or_had_objective + Deliverable (Rule 53)
|
||||
has_or_had_objective:
|
||||
range: Deliverable
|
||||
multivalued: true
|
||||
description: URIs to deliverable resources produced by this activity.
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
description: |
|
||||
Deliverable resources produced by this curation activity.
|
||||
MIGRATED from 'deliverable' slot per slot_fixes.yaml (Rule 53).
|
||||
Uses Deliverable class for structured representation.
|
||||
examples:
|
||||
- value:
|
||||
- https://example.org/reports/inventory-2025.pdf
|
||||
- https://example.org/finding-aids/voc-series-1.ead
|
||||
description: Deliverable URLs
|
||||
has_or_had_label:
|
||||
has_or_had_text: "Inventory reconciliation report"
|
||||
deliverable_type: "report"
|
||||
deliverable_url: "https://example.org/reports/inventory-2025.pdf"
|
||||
is_completed: true
|
||||
description: Inventory report deliverable
|
||||
- value:
|
||||
has_or_had_label:
|
||||
has_or_had_text: "VOC Series Finding Aid"
|
||||
deliverable_type: "finding_aid"
|
||||
deliverable_url: "https://example.org/finding-aids/voc-series-1.ead"
|
||||
is_completed: true
|
||||
description: EAD finding aid deliverable
|
||||
|
||||
funding_source:
|
||||
range: string
|
||||
|
|
@ -444,8 +463,13 @@ classes:
|
|||
- Digital asset management records
|
||||
- OCR quality assessment report
|
||||
- IIIF manifest files
|
||||
deliverable:
|
||||
- https://www.nationaalarchief.nl/onderzoeken/archief/1.04.02/digital
|
||||
# MIGRATED 2026-01-24: deliverable → has_or_had_objective (Rule 53)
|
||||
has_or_had_objective:
|
||||
- has_or_had_label:
|
||||
has_or_had_text: "VOC Digital Archive"
|
||||
deliverable_type: "digital_collection"
|
||||
deliverable_url: "https://www.nationaalarchief.nl/onderzoeken/archief/1.04.02/digital"
|
||||
is_completed: true
|
||||
funding_source: Metamorfoze National Digitization Programme
|
||||
is_or_was_allocated_budget: EUR 850,000 # MIGRATED 2026-01-15: was budget
|
||||
status: IN_PROGRESS
|
||||
|
|
|
|||
|
|
@ -30,7 +30,9 @@ imports:
|
|||
- ../slots/observation_source
|
||||
- ../slots/source
|
||||
- ../slots/observation_context
|
||||
- ../slots/derived_from_entity
|
||||
# MIGRATED 2026-01-25: derived_from_entity → refers_or_referred_to + EntityReconstruction (Rule 53)
|
||||
- ../slots/refers_or_referred_to
|
||||
- ./EntityReconstruction
|
||||
- ../slots/has_or_had_confidence_measure
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/specificity_annotation
|
||||
|
|
@ -59,7 +61,8 @@ classes:
|
|||
- has_or_had_alternative_observed_name
|
||||
- has_or_had_confidence_measure
|
||||
- has_or_had_custodian_type
|
||||
- derived_from_entity
|
||||
# MIGRATED 2026-01-25: derived_from_entity → refers_or_referred_to (Rule 53)
|
||||
- refers_or_referred_to
|
||||
- observation_context
|
||||
- observation_date
|
||||
- observation_source
|
||||
|
|
@ -88,8 +91,23 @@ classes:
|
|||
required: true
|
||||
observation_context:
|
||||
range: string
|
||||
# MIGRATED 2026-01-25: derived_from_entity → refers_or_referred_to (Rule 53)
|
||||
derived_from_entity:
|
||||
range: CustodianLegalStatus
|
||||
description: |
|
||||
DEPRECATED 2026-01-25: Migrated to refers_or_referred_to slot with EntityReconstruction class.
|
||||
See refers_or_referred_to slot_usage for current pattern.
|
||||
deprecated: "Use refers_or_referred_to with EntityReconstruction class"
|
||||
refers_or_referred_to:
|
||||
description: |
|
||||
MIGRATED from derived_from_entity per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
|
||||
Links observation to the formal entity it references (reconstructed entity).
|
||||
Uses EntityReconstruction class hierarchy (CustodianLegalStatus, CustodianName, CustodianPlace).
|
||||
range: CustodianLegalStatus # Keep backward compatible range for now
|
||||
required: false
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/legal/stichting-rijksmuseum
|
||||
description: Observation refers to Rijksmuseum legal entity
|
||||
has_or_had_confidence_measure:
|
||||
range: ConfidenceMeasure
|
||||
has_or_had_custodian_type:
|
||||
|
|
|
|||
|
|
@ -39,7 +39,9 @@ imports:
|
|||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/derived_from_observation
|
||||
# MIGRATED 2026-01-25: derived_from_observation → is_or_was_based_on + Observation (Rule 53)
|
||||
- ../slots/is_or_was_based_on
|
||||
- ./Observation
|
||||
- ../slots/place_custodian_ref
|
||||
classes:
|
||||
CustodianPlace:
|
||||
|
|
@ -196,10 +198,24 @@ classes:
|
|||
- place_name: Rijksmuseum Schiphol
|
||||
auxiliary_place_type: BRANCH_OFFICE
|
||||
description: Rijksmuseum subordinate locations
|
||||
# MIGRATED 2026-01-25: derived_from_observation → is_or_was_based_on (Rule 53)
|
||||
derived_from_observation:
|
||||
description: |
|
||||
DEPRECATED 2026-01-25: Migrated to is_or_was_based_on slot with Observation class.
|
||||
See is_or_was_based_on slot_usage for current pattern.
|
||||
deprecated: "Use is_or_was_based_on with Observation class"
|
||||
is_or_was_based_on:
|
||||
description: |
|
||||
MIGRATED from derived_from_observation per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
|
||||
Links to observations from which this place designation was derived.
|
||||
Uses Observation class hierarchy (CustodianObservation, etc.).
|
||||
range: uriorcurie
|
||||
multivalued: true
|
||||
required: true
|
||||
examples:
|
||||
- value: https://w3id.org/heritage/observation/notarial-deed-1850
|
||||
description: Observation from historical document
|
||||
is_or_was_generated_by: # was: was_generated_by - migrated per Rule 53
|
||||
range: ReconstructionActivity
|
||||
required: false
|
||||
|
|
|
|||
|
|
@ -0,0 +1,122 @@
|
|||
id: https://nde.nl/ontology/hc/class/Deliverable
|
||||
name: deliverable_class
|
||||
title: Deliverable Class
|
||||
description: |
|
||||
Represents a tangible output or result from a project or activity.
|
||||
|
||||
**USE CASES**:
|
||||
- Project outputs (reports, software, datasets)
|
||||
- Curation activity results (digitized collections, finding aids)
|
||||
- Research outputs (papers, methodologies, tools)
|
||||
|
||||
**PROPERTIES**:
|
||||
- deliverable_type: Type of deliverable (report, software, dataset, etc.)
|
||||
- deliverable_title: Name/title of the deliverable
|
||||
- deliverable_url: URL where deliverable can be accessed
|
||||
- completion_status: Status (planned, in_progress, completed, delayed)
|
||||
|
||||
**RELATIONSHIP TO Project and CurationActivity**:
|
||||
Used to track concrete outputs from heritage projects and
|
||||
curation activities. Each deliverable represents an expected
|
||||
or completed work product.
|
||||
imports:
|
||||
- linkml:types
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
default_prefix: hc
|
||||
classes:
|
||||
Deliverable:
|
||||
class_uri: hc:Deliverable
|
||||
description: |
|
||||
A tangible output or result from a project or activity.
|
||||
Captures type, title, URL, and completion status.
|
||||
exact_mappings:
|
||||
- prov:Entity
|
||||
close_mappings:
|
||||
- schema:CreativeWork
|
||||
slots:
|
||||
- deliverable_type
|
||||
- deliverable_title
|
||||
- deliverable_description
|
||||
- deliverable_url
|
||||
- completion_status
|
||||
- due_date
|
||||
slot_usage:
|
||||
deliverable_type:
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: "report"
|
||||
description: Written report deliverable
|
||||
- value: "software"
|
||||
description: Software/application deliverable
|
||||
- value: "dataset"
|
||||
description: Dataset deliverable
|
||||
- value: "finding_aid"
|
||||
description: Archival finding aid
|
||||
- value: "digitized_collection"
|
||||
description: Digitized heritage materials
|
||||
deliverable_title:
|
||||
range: string
|
||||
required: true
|
||||
examples:
|
||||
- value: "Project Final Report"
|
||||
description: Final project report
|
||||
- value: "Heritage Data Model v2.0"
|
||||
description: Data model deliverable
|
||||
deliverable_description:
|
||||
range: string
|
||||
required: false
|
||||
description: Description of the deliverable
|
||||
deliverable_url:
|
||||
range: uri
|
||||
required: false
|
||||
examples:
|
||||
- value: "https://github.org/project/repo"
|
||||
description: GitHub repository with deliverables
|
||||
- value: "https://doi.org/10.1234/deliverable"
|
||||
description: DOI for project deliverables
|
||||
completion_status:
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: "planned"
|
||||
description: Deliverable is planned but not started
|
||||
- value: "in_progress"
|
||||
description: Work is ongoing
|
||||
- value: "completed"
|
||||
description: Deliverable has been completed
|
||||
- value: "delayed"
|
||||
description: Deliverable is behind schedule
|
||||
due_date:
|
||||
range: date
|
||||
required: false
|
||||
description: Expected completion date
|
||||
slots:
|
||||
deliverable_type:
|
||||
slot_uri: hc:deliverableType
|
||||
range: string
|
||||
description: Type of deliverable (report, software, dataset, etc.)
|
||||
deliverable_title:
|
||||
slot_uri: hc:deliverableTitle
|
||||
range: string
|
||||
description: Name/title of the deliverable
|
||||
deliverable_description:
|
||||
slot_uri: hc:deliverableDescription
|
||||
range: string
|
||||
description: Description of the deliverable
|
||||
deliverable_url:
|
||||
slot_uri: hc:deliverableUrl
|
||||
range: uri
|
||||
description: URL where deliverable can be accessed
|
||||
completion_status:
|
||||
slot_uri: hc:completionStatus
|
||||
range: string
|
||||
description: Status of deliverable (planned, in_progress, completed, delayed)
|
||||
due_date:
|
||||
slot_uri: hc:dueDate
|
||||
range: date
|
||||
description: Expected completion date
|
||||
|
|
@ -22,11 +22,23 @@ imports:
|
|||
- ../slots/contact_point
|
||||
- ../slots/located_at
|
||||
- ../slots/refers_to_custodian
|
||||
- ../slots/department_code
|
||||
- ../slots/department_description
|
||||
- ../slots/department_head
|
||||
- ../slots/department_id
|
||||
- ../slots/department_name
|
||||
# MIGRATED 2026-01-25: department_code → has_or_had_label + Label + has_or_had_type + LabelType (Rule 53)
|
||||
- ../slots/has_or_had_label
|
||||
- ./Label
|
||||
- ../slots/has_or_had_type
|
||||
- ./LabelType
|
||||
- ./LabelTypes
|
||||
# MIGRATED 2026-01-25: department_description → has_or_had_description + Description (Rule 53)
|
||||
- ../slots/has_or_had_description
|
||||
- ./Description
|
||||
# MIGRATED 2026-01-25: department_head → is_or_was_managed_by + Manager (Rule 53)
|
||||
- ../slots/is_or_was_managed_by
|
||||
- ./Manager
|
||||
# MIGRATED 2026-01-25: department_id → has_or_had_identifier + Identifier (Rule 53)
|
||||
- ../slots/has_or_had_identifier
|
||||
- ./Identifier
|
||||
# MIGRATED 2026-01-25: department_name → has_or_had_label + Label + has_or_had_type + LabelType (Rule 53)
|
||||
# Already importing has_or_had_label, Label, has_or_had_type, LabelType above
|
||||
- ../slots/dissolved_date
|
||||
- ../slots/established_date
|
||||
- ../slots/has_or_had_manages_collection
|
||||
|
|
@ -42,40 +54,6 @@ imports:
|
|||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/contact_point
|
||||
- ../slots/department_code
|
||||
- ../slots/department_description
|
||||
- ../slots/department_head
|
||||
- ../slots/department_id
|
||||
- ../slots/department_name
|
||||
- ../slots/dissolved_date
|
||||
- ../slots/established_date
|
||||
- ../slots/has_or_had_manages_collection
|
||||
- ../slots/has_or_had_staff_member
|
||||
- ../slots/has_or_had_sub_department
|
||||
- ../slots/located_at
|
||||
- ../slots/mandate
|
||||
- ../slots/parent_department
|
||||
- ../slots/refers_to_custodian
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ../slots/contact_point
|
||||
- ../slots/department_code
|
||||
- ../slots/department_description
|
||||
- ../slots/department_head
|
||||
- ../slots/department_id
|
||||
- ../slots/department_name
|
||||
- ../slots/dissolved_date
|
||||
- ../slots/established_date
|
||||
- ../slots/has_or_had_manages_collection
|
||||
- ../slots/has_or_had_staff_member
|
||||
- ../slots/has_or_had_sub_department
|
||||
- ../slots/located_at
|
||||
- ../slots/mandate
|
||||
- ../slots/parent_department
|
||||
- ../slots/refers_to_custodian
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
classes:
|
||||
Department:
|
||||
class_uri: org:OrganizationalUnit
|
||||
|
|
@ -116,11 +94,17 @@ classes:
|
|||
- wikidata:Q107679962
|
||||
slots:
|
||||
- contact_point
|
||||
- department_code
|
||||
- department_description
|
||||
- department_head
|
||||
- department_id
|
||||
- department_name
|
||||
# MIGRATED 2026-01-25: department_code → has_or_had_label + has_or_had_type (Rule 53)
|
||||
- has_or_had_label
|
||||
- has_or_had_type
|
||||
# MIGRATED 2026-01-25: department_description → has_or_had_description (Rule 53)
|
||||
- has_or_had_description
|
||||
# MIGRATED 2026-01-25: department_head → is_or_was_managed_by (Rule 53)
|
||||
- is_or_was_managed_by
|
||||
# MIGRATED 2026-01-25: department_id → has_or_had_identifier (Rule 53)
|
||||
- has_or_had_identifier
|
||||
# MIGRATED 2026-01-25: department_name → has_or_had_label with LabelType: DepartmentNameType (Rule 53)
|
||||
# has_or_had_label already in slots list above
|
||||
- dissolved_date
|
||||
- established_date
|
||||
- located_at
|
||||
|
|
@ -133,35 +117,75 @@ classes:
|
|||
- has_or_had_sub_department
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
slot_usage:
|
||||
department_id:
|
||||
# MIGRATED 2026-01-25: department_id → has_or_had_identifier (Rule 53)
|
||||
has_or_had_identifier:
|
||||
description: |
|
||||
MIGRATED from department_id per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
Unique identifier for this department.
|
||||
Format: URI following NDE Heritage Custodian ontology conventions.
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/dept/nationaal-archief-colonial-records
|
||||
description: Colonial Records Department at National Archives
|
||||
# MIGRATED 2026-01-25: department_name → has_or_had_label with LabelType (Rule 53)
|
||||
department_name:
|
||||
range: string
|
||||
required: true
|
||||
description: |
|
||||
DEPRECATED 2026-01-25: Migrated to has_or_had_label slot with Label class
|
||||
using has_or_had_type: "DepartmentNameType" for type discrimination.
|
||||
See has_or_had_label slot_usage for current pattern.
|
||||
deprecated: "Use has_or_had_label with Label(has_or_had_type='DepartmentNameType')"
|
||||
# MIGRATED 2026-01-25: department_code + department_name → has_or_had_label + has_or_had_type (Rule 53)
|
||||
has_or_had_label:
|
||||
description: |
|
||||
MIGRATED from department_code AND department_name per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
|
||||
This slot now covers BOTH department codes AND department names.
|
||||
Uses Label class with has_or_had_type for discrimination:
|
||||
- has_or_had_type: "DepartmentCodeType" - Short code for department
|
||||
- has_or_had_type: "DepartmentNameType" - Official name of department
|
||||
range: Label
|
||||
inlined: true
|
||||
multivalued: true
|
||||
required: true # At least one label (name) required
|
||||
examples:
|
||||
- value: Colonial Records Department
|
||||
- value: Paintings Department
|
||||
- value: Special Collections Department
|
||||
- value: Preservation and Conservation Department
|
||||
department_code:
|
||||
range: string
|
||||
- value:
|
||||
has_or_had_text: "Colonial Records Department"
|
||||
has_or_had_type: DepartmentNameType
|
||||
description: Department name (migrated from department_name)
|
||||
- value:
|
||||
has_or_had_text: "CRD"
|
||||
has_or_had_type: DepartmentCodeType
|
||||
description: Department code (migrated from department_code)
|
||||
- value:
|
||||
has_or_had_text: "Paintings Department"
|
||||
has_or_had_type: DepartmentNameType
|
||||
description: Department name
|
||||
- value:
|
||||
has_or_had_text: "PNTG"
|
||||
has_or_had_type: DepartmentCodeType
|
||||
description: Department code
|
||||
has_or_had_type:
|
||||
description: |
|
||||
Type classification for labels (used with has_or_had_label).
|
||||
MIGRATED from department_code per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
range: LabelType
|
||||
inlined: true
|
||||
required: false
|
||||
# MIGRATED 2026-01-25: department_description → has_or_had_description (Rule 53)
|
||||
has_or_had_description:
|
||||
description: |
|
||||
MIGRATED from department_description per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
Detailed description of the department's purpose and holdings.
|
||||
Uses Description class for structured representation.
|
||||
range: Description
|
||||
inlined: true
|
||||
required: false
|
||||
examples:
|
||||
- value: CRD
|
||||
description: Colonial Records Department
|
||||
- value: PNTG
|
||||
description: Paintings Department
|
||||
- value: SPECCOLL
|
||||
description: Special Collections
|
||||
department_description:
|
||||
range: string
|
||||
examples:
|
||||
- value: The Colonial Records Department preserves and provides access to government records from the Dutch colonial
|
||||
period (1602-1949). Holdings include VOC archives, colonial administration files, and diplomatic correspondence.
|
||||
- value:
|
||||
has_or_had_text: "The Colonial Records Department preserves and provides access to government records from the Dutch colonial period (1602-1949). Holdings include VOC archives, colonial administration files, and diplomatic correspondence."
|
||||
description: Department description (migrated from department_description)
|
||||
mandate:
|
||||
range: string
|
||||
examples:
|
||||
|
|
@ -181,14 +205,20 @@ classes:
|
|||
- https://nde.nl/ontology/hc/dept/na-colonial-voc
|
||||
- https://nde.nl/ontology/hc/dept/na-colonial-wic
|
||||
description: VOC and WIC sub-departments
|
||||
department_head:
|
||||
range: PersonObservation
|
||||
# MIGRATED 2026-01-25: department_head → is_or_was_managed_by + Manager (Rule 53)
|
||||
is_or_was_managed_by:
|
||||
description: |
|
||||
MIGRATED from department_head per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
Person responsible for managing this department.
|
||||
Uses Manager class for structured representation.
|
||||
range: Manager
|
||||
inlined: true
|
||||
required: false
|
||||
examples:
|
||||
- value:
|
||||
person_name: Dr. Maria van der Berg
|
||||
staff_role: ARCHIVIST
|
||||
role_title: Head of Colonial Records Department
|
||||
description: Department head
|
||||
- value:
|
||||
has_or_had_name: "Dr. Maria van der Berg"
|
||||
has_or_had_title: "Head of Colonial Records Department"
|
||||
description: Department head (migrated from department_head)
|
||||
has_or_had_staff_member:
|
||||
range: PersonObservation
|
||||
multivalued: true
|
||||
|
|
@ -237,22 +267,20 @@ classes:
|
|||
- https://www.w3.org/ns/org#OrganizationalUnit
|
||||
- https://www.ica.org/standards/RiC/ontology#Agent
|
||||
examples:
|
||||
# MIGRATED 2026-01-25: All department_* slots migrated to generic slots (Rule 53)
|
||||
- value:
|
||||
department_id: https://nde.nl/ontology/hc/dept/nationaal-archief-colonial-records
|
||||
department_name: Colonial Records Department
|
||||
department_code: CRD
|
||||
department_description: 'Preserves and provides access to government records from the
|
||||
|
||||
Dutch colonial period (1602-1949). Holdings include VOC archives,
|
||||
|
||||
colonial administration files, and diplomatic correspondence.
|
||||
|
||||
'
|
||||
mandate: 'Established by Royal Decree of 1891 to manage and preserve
|
||||
|
||||
records of the Dutch East Indies administration.
|
||||
|
||||
'
|
||||
# MIGRATED: department_id → has_or_had_identifier
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/dept/nationaal-archief-colonial-records
|
||||
# MIGRATED: department_name + department_code → has_or_had_label (multivalued)
|
||||
has_or_had_label:
|
||||
- has_or_had_text: "Colonial Records Department"
|
||||
has_or_had_type: DepartmentNameType
|
||||
- has_or_had_text: "CRD"
|
||||
has_or_had_type: DepartmentCodeType
|
||||
# MIGRATED: department_description → has_or_had_description
|
||||
has_or_had_description:
|
||||
has_or_had_text: "Preserves and provides access to government records from the Dutch colonial period (1602-1949). Holdings include VOC archives, colonial administration files, and diplomatic correspondence."
|
||||
mandate: 'Established by Royal Decree of 1891 to manage and preserve records of the Dutch East Indies administration.'
|
||||
established_date: '1891-06-15'
|
||||
has_or_had_manages_collection:
|
||||
- https://nde.nl/ontology/hc/collection/na-voc-archives
|
||||
|
|
@ -261,20 +289,21 @@ classes:
|
|||
refers_to_custodian: https://nde.nl/ontology/hc/nl-zh-hag-a-na
|
||||
description: National Archives Colonial Records Department
|
||||
- value:
|
||||
department_id: https://nde.nl/ontology/hc/dept/rijksmuseum-paintings
|
||||
department_name: Paintings Department
|
||||
department_code: PNTG
|
||||
department_description: 'Responsible for the museum''s collection of paintings from the
|
||||
|
||||
Middle Ages to the 20th century. Includes Dutch Golden Age
|
||||
|
||||
masterpieces, Flemish Baroque, and European paintings.
|
||||
|
||||
'
|
||||
department_head:
|
||||
person_name: Dr. Pieter Roelofs
|
||||
staff_role: CURATOR
|
||||
role_title: Head of Paintings Department
|
||||
# MIGRATED: department_id → has_or_had_identifier
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/dept/rijksmuseum-paintings
|
||||
# MIGRATED: department_name + department_code → has_or_had_label (multivalued)
|
||||
has_or_had_label:
|
||||
- has_or_had_text: "Paintings Department"
|
||||
has_or_had_type: DepartmentNameType
|
||||
- has_or_had_text: "PNTG"
|
||||
has_or_had_type: DepartmentCodeType
|
||||
# MIGRATED: department_description → has_or_had_description
|
||||
has_or_had_description:
|
||||
has_or_had_text: "Responsible for the museum's collection of paintings from the Middle Ages to the 20th century. Includes Dutch Golden Age masterpieces, Flemish Baroque, and European paintings."
|
||||
# MIGRATED: department_head → is_or_was_managed_by
|
||||
is_or_was_managed_by:
|
||||
has_or_had_name: "Dr. Pieter Roelofs"
|
||||
has_or_had_title: "Head of Paintings Department"
|
||||
has_or_had_manages_collection:
|
||||
- https://nde.nl/ontology/hc/collection/rm-dutch-paintings
|
||||
- https://nde.nl/ontology/hc/collection/rm-flemish-paintings
|
||||
|
|
|
|||
|
|
@ -17,8 +17,9 @@ imports:
|
|||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/archive_series
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/departement_code
|
||||
- ../slots/departement_name
|
||||
# MIGRATED 2026-01-24: departement_code, departement_name → has_or_had_service_area + ServiceArea (Rule 53)
|
||||
- ../slots/has_or_had_service_area
|
||||
- ./ServiceArea
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ../slots/is_or_was_related_to # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
|
||||
|
|
@ -42,8 +43,8 @@ classes:
|
|||
slots:
|
||||
- archive_series
|
||||
- has_or_had_custodian_type
|
||||
- departement_code
|
||||
- departement_name
|
||||
# MIGRATED 2026-01-24: departement_code, departement_name → has_or_had_service_area + ServiceArea (Rule 53)
|
||||
- has_or_had_service_area
|
||||
- hold_or_held_record_set_type
|
||||
- specificity_annotation
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
|
|
@ -66,22 +67,39 @@ classes:
|
|||
slot_usage:
|
||||
has_or_had_identifier: # was: wikidata_entity - migrated per Rule 53 (2026-01-15)
|
||||
# equals_string removed: Q2860456 (incompatible with uriorcurie range)
|
||||
departement_code:
|
||||
range: string
|
||||
pattern: ^[0-9]{2,3}$
|
||||
# MIGRATED 2026-01-24: departement_code, departement_name → has_or_had_service_area + ServiceArea (Rule 53)
|
||||
has_or_had_service_area:
|
||||
range: ServiceArea
|
||||
inlined: true
|
||||
required: false
|
||||
description: |
|
||||
French département served by this archive.
|
||||
MIGRATED from 'departement_code' and 'departement_name' slots per slot_fixes.yaml (Rule 53).
|
||||
|
||||
Uses ServiceArea class with:
|
||||
- service_area_name: Département name (e.g., "Bouches-du-Rhône")
|
||||
- has_or_had_identifier: Département code as structured identifier (e.g., "13")
|
||||
examples:
|
||||
- value: '75'
|
||||
description: Paris
|
||||
- value: '13'
|
||||
description: Bouches-du-Rhône
|
||||
- value: '974'
|
||||
description: La Réunion (overseas)
|
||||
departement_name:
|
||||
range: string
|
||||
examples:
|
||||
- value: Bouches-du-Rhône
|
||||
- value: Nord
|
||||
- value: Seine-Maritime
|
||||
- value:
|
||||
service_area_name: "Paris"
|
||||
has_or_had_identifier:
|
||||
identifier_scheme: "FR_DEPARTEMENT"
|
||||
identifier_value: "75"
|
||||
description: Paris département (code 75)
|
||||
- value:
|
||||
service_area_name: "Bouches-du-Rhône"
|
||||
has_or_had_identifier:
|
||||
identifier_scheme: "FR_DEPARTEMENT"
|
||||
identifier_value: "13"
|
||||
description: Bouches-du-Rhône département (code 13)
|
||||
- value:
|
||||
service_area_name: "La Réunion"
|
||||
has_or_had_identifier:
|
||||
identifier_scheme: "FR_DEPARTEMENT"
|
||||
identifier_value: "974"
|
||||
covers_country:
|
||||
alpha_2: "FR"
|
||||
description: La Réunion overseas département (code 974)
|
||||
is_or_was_part_of_archive_series:
|
||||
range: string
|
||||
multivalued: true
|
||||
|
|
@ -138,8 +156,14 @@ classes:
|
|||
- archivos departamentales@es
|
||||
- archives départementales@fr
|
||||
has_or_had_description: Departmental archives in France # was: type_description - migrated per Rule 53/56 (2026-01-16)
|
||||
departement_code: '13'
|
||||
departement_name: Bouches-du-Rhône
|
||||
# MIGRATED 2026-01-24: departement_code, departement_name → has_or_had_service_area (Rule 53)
|
||||
has_or_had_service_area:
|
||||
service_area_name: "Bouches-du-Rhône"
|
||||
has_or_had_identifier:
|
||||
identifier_scheme: "FR_DEPARTEMENT"
|
||||
identifier_value: "13"
|
||||
covers_country:
|
||||
alpha_2: "FR"
|
||||
is_or_was_part_of_archive_series:
|
||||
- A-L (ancien régime)
|
||||
- E (état civil)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,155 @@
|
|||
# DeploymentEvent class
|
||||
# Represents software/system deployment events with temporal and contextual information
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 0 (LinkML single source of truth), 53 (migration from deployment_date)
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/DeploymentEvent
|
||||
name: deployment_event_class
|
||||
title: DeploymentEvent Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
schema: http://schema.org/
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./TimeSpan
|
||||
- ./Custodian
|
||||
- ../slots/temporal_extent
|
||||
- ../slots/has_or_had_description
|
||||
- ./Description
|
||||
- ../slots/refers_to_custodian
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
|
||||
classes:
|
||||
DeploymentEvent:
|
||||
class_uri: prov:Activity
|
||||
description: |
|
||||
Event representing the deployment of a software system (CMS, platform) at an institution.
|
||||
|
||||
**Purpose**:
|
||||
DeploymentEvent captures the full context of a software deployment:
|
||||
- WHEN: Via temporal_extent (TimeSpan with fuzzy boundaries)
|
||||
- WHERE: Via refers_to_custodian (target institution)
|
||||
- WHAT: Linked from CollectionManagementSystem.is_or_was_deployed_at
|
||||
- WHY: Via description (deployment rationale, notes)
|
||||
|
||||
**MIGRATED FROM**: `deployment_date` slot
|
||||
|
||||
Replaces simple date with structured event that:
|
||||
- Supports fuzzy temporal bounds (TimeSpan)
|
||||
- Tracks deployment at specific custodians
|
||||
- Enables multiple deployment events per system
|
||||
- Captures deployment context and rationale
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary**: `prov:Activity` - PROV-O activity
|
||||
- **Close**: `crm:E5_Event` - CIDOC-CRM event
|
||||
- **Related**: `schema:Action` - Schema.org action
|
||||
|
||||
**Relationship to CollectionManagementSystem**:
|
||||
```
|
||||
CollectionManagementSystem
|
||||
│
|
||||
└── is_or_was_deployed_at → DeploymentEvent[]
|
||||
├── temporal_extent → TimeSpan
|
||||
├── refers_to_custodian → Custodian
|
||||
└── description → Description
|
||||
```
|
||||
|
||||
exact_mappings:
|
||||
- prov:Activity
|
||||
|
||||
close_mappings:
|
||||
- crm:E5_Event
|
||||
- schema:Action
|
||||
|
||||
related_mappings:
|
||||
- schema:InstallAction
|
||||
|
||||
slots:
|
||||
- temporal_extent
|
||||
- refers_to_custodian
|
||||
- has_or_had_description
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
|
||||
slot_usage:
|
||||
temporal_extent:
|
||||
description: |
|
||||
When this deployment occurred.
|
||||
Uses TimeSpan for fuzzy temporal bounds:
|
||||
- Precise: Set all four bounds to same date
|
||||
- Approximate: Use begin_of_the_begin/end_of_the_end range
|
||||
range: TimeSpan
|
||||
inlined: true
|
||||
required: true
|
||||
examples:
|
||||
- value:
|
||||
begin_of_the_begin: "2015-06-01"
|
||||
end_of_the_end: "2015-06-01"
|
||||
description: Precise deployment date (June 1, 2015)
|
||||
- value:
|
||||
begin_of_the_begin: "2015-01-01"
|
||||
end_of_the_end: "2015-06-30"
|
||||
description: Approximate deployment (first half of 2015)
|
||||
refers_to_custodian:
|
||||
description: |
|
||||
The institution where this deployment occurred.
|
||||
range: Custodian
|
||||
required: false
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Deployment at Rijksmuseum
|
||||
has_or_had_description:
|
||||
description: |
|
||||
Notes about this deployment event (rationale, context, issues).
|
||||
range: Description
|
||||
inlined: true
|
||||
required: false
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_text: "Migrated from legacy system to Adlib v7.4. Data migration completed in phases over Q2 2015."
|
||||
description: Deployment notes
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Deployment events applicable to all custodian types.
|
||||
custodian_types_primary: null
|
||||
specificity_score: 0.7
|
||||
specificity_rationale: Specific to software deployment tracking.
|
||||
|
||||
comments:
|
||||
- "MIGRATED from deployment_date per slot_fixes.yaml (Rule 53)"
|
||||
- "PROV-O Activity for deployment tracking"
|
||||
- "Enables multiple deployments per CMS (upgrades, re-deployments)"
|
||||
- "TimeSpan allows fuzzy temporal bounds for uncertain deployment dates"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
temporal_extent:
|
||||
begin_of_the_begin: "2015-06-01"
|
||||
end_of_the_end: "2015-06-01"
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
has_or_had_description:
|
||||
has_or_had_text: "Initial deployment of Adlib CMS at Rijksmuseum"
|
||||
description: Rijksmuseum Adlib deployment event
|
||||
- value:
|
||||
temporal_extent:
|
||||
begin_of_the_begin: "2020-01-01"
|
||||
end_of_the_end: "2020-03-31"
|
||||
refers_to_custodian: https://nde.nl/ontology/hc/nl-zh-hag-a-na
|
||||
has_or_had_description:
|
||||
has_or_had_text: "Upgrade to MAIS-Flexis v3.0. Migration included archival descriptions from 2010-2019."
|
||||
description: National Archives MAIS upgrade event
|
||||
|
|
@ -35,7 +35,9 @@ default_prefix: hc
|
|||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ../slots/description_text
|
||||
# MIGRATED 2026-01-25: description_text → has_or_had_content + Content (Rule 53)
|
||||
- ../slots/has_or_had_content
|
||||
- ./Content
|
||||
- ../slots/description_type
|
||||
- ../slots/language
|
||||
- ../slots/specificity_annotation
|
||||
|
|
@ -91,18 +93,32 @@ classes:
|
|||
- schema:description
|
||||
|
||||
slots:
|
||||
- description_text
|
||||
# MIGRATED 2026-01-25: description_text → has_or_had_content (Rule 53)
|
||||
- has_or_had_content
|
||||
- description_type
|
||||
- language
|
||||
- specificity_annotation
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
slot_usage:
|
||||
description_text:
|
||||
# DEPRECATED 2026-01-25: description_text migrated to has_or_had_content + Content (Rule 53)
|
||||
# Old slot archived: modules/slots/archive/description_text_archived_20260125.yaml
|
||||
has_or_had_content:
|
||||
description: |
|
||||
The textual content of the description.
|
||||
range: string
|
||||
The content of the description, modeled as Content class.
|
||||
MIGRATED from description_text (string) per Rule 53.
|
||||
|
||||
**Migration Pattern**:
|
||||
- Old: description_text: "Climate-controlled storage zone..."
|
||||
- New: has_or_had_content with has_or_had_label and has_or_had_description
|
||||
range: Content
|
||||
required: true
|
||||
inlined: true
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label: "Zone Description"
|
||||
has_or_had_description: "Climate-controlled storage zone with dedicated HVAC for archival materials."
|
||||
description: Content for zone description
|
||||
description_type:
|
||||
description: |
|
||||
The type of description (binding, branch, budget, zone, warehouse, unit, type, general).
|
||||
|
|
@ -135,18 +151,25 @@ classes:
|
|||
specificity_rationale: Very broadly applicable generic class for textual descriptions.
|
||||
|
||||
examples:
|
||||
- value: |
|
||||
description_text: "Climate-controlled storage zone with dedicated HVAC for archival materials. Maintains 65°F and 35% RH."
|
||||
# MIGRATED 2026-01-25: examples updated to use has_or_had_content + Content (Rule 53)
|
||||
- value:
|
||||
has_or_had_content:
|
||||
has_or_had_label: "Storage Zone Climate Control"
|
||||
has_or_had_description: "Climate-controlled storage zone with dedicated HVAC for archival materials. Maintains 65°F and 35% RH."
|
||||
description_type: zone
|
||||
language: en
|
||||
description: "Zone description for archival storage facility"
|
||||
- value: |
|
||||
description_text: "Quarter leather binding with marbled boards, spine with five raised bands and gilt titling."
|
||||
- value:
|
||||
has_or_had_content:
|
||||
has_or_had_label: "Quarter Leather Binding"
|
||||
has_or_had_description: "Quarter leather binding with marbled boards, spine with five raised bands and gilt titling."
|
||||
description_type: binding
|
||||
language: en
|
||||
description: "Binding description for a rare book"
|
||||
- value: |
|
||||
description_text: "Regional branch serving Noord-Holland province with specialized genealogy and notarial collections."
|
||||
- value:
|
||||
has_or_had_content:
|
||||
has_or_had_label: "Noord-Holland Regional Branch"
|
||||
has_or_had_description: "Regional branch serving Noord-Holland province with specialized genealogy and notarial collections."
|
||||
description_type: branch
|
||||
language: en
|
||||
description: "Branch description for organizational unit"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,107 @@
|
|||
# DetectionLevelType class (Abstract Base)
|
||||
# Type taxonomy for detection confidence levels
|
||||
#
|
||||
# Following Type/Types naming convention (Rule 0b):
|
||||
# - DetectionLevelType: Abstract base class
|
||||
# - DetectionLevelTypes: Concrete subclasses (HIGH, MEDIUM, LOW, etc.)
|
||||
#
|
||||
# Created: 2026-01-25
|
||||
# Rule compliance: 0b (Type/Types pattern), 38 (slot centralization), 39 (RiC-O naming), 53 (slot_fixes.yaml)
|
||||
# Migration: detection_level → filters_or_filtered + has_or_had_type + DetectionLevelType
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/DetectionLevelType
|
||||
name: DetectionLevelType
|
||||
title: Detection Level Type Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
dqv: http://www.w3.org/ns/dqv#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ../slots/has_or_had_code
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
|
||||
classes:
|
||||
DetectionLevelType:
|
||||
class_uri: skos:Concept
|
||||
abstract: true
|
||||
description: |
|
||||
Abstract base class for detection confidence level types.
|
||||
|
||||
**Type/Types Pattern (Rule 0b)**:
|
||||
- `DetectionLevelType` (this file): Abstract base class
|
||||
- `DetectionLevelTypes.yaml`: Concrete subclasses (HIGH, MEDIUM, LOW, etc.)
|
||||
|
||||
**DEFINITION**:
|
||||
|
||||
Detection levels categorize the confidence/quality of automated detection
|
||||
results. Rather than raw numeric thresholds, these provide semantic
|
||||
categories for filtering and display decisions.
|
||||
|
||||
**Level Hierarchy**:
|
||||
|
||||
| Level | Confidence Range | Use Case |
|
||||
|-------|------------------|----------|
|
||||
| HIGH | 0.9+ | Production, public display |
|
||||
| MEDIUM | 0.7-0.9 | Review queue, moderate confidence |
|
||||
| LOW | 0.5-0.7 | Research, exhaustive analysis |
|
||||
| UNCERTAIN | < 0.5 | Flagged for manual review |
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **SKOS**: `skos:Concept` - controlled vocabulary term
|
||||
- **DQV**: Related to data quality metrics
|
||||
|
||||
**Migrated From** (per slot_fixes.yaml):
|
||||
- `detection_level` now uses:
|
||||
- `filters_or_filtered` → DetectedEntity
|
||||
- `has_or_had_type` → DetectionLevelType (this class)
|
||||
- `includes_or_included` → DetectionLevelTypes (subclasses)
|
||||
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
|
||||
close_mappings:
|
||||
- dqv:QualityAnnotation
|
||||
|
||||
slots:
|
||||
- has_or_had_code
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
|
||||
slot_usage:
|
||||
has_or_had_code:
|
||||
description: Short code for the detection level (HIGH, MEDIUM, LOW, etc.)
|
||||
pattern: "^[A-Z_]+$"
|
||||
examples:
|
||||
- value: HIGH
|
||||
- value: MEDIUM
|
||||
- value: LOW
|
||||
has_or_had_label:
|
||||
description: Human-readable label for the detection level
|
||||
examples:
|
||||
- value: "High Confidence"
|
||||
- value: "Medium Confidence"
|
||||
has_or_had_description:
|
||||
description: Description of when/how this level is used
|
||||
examples:
|
||||
- value: "High confidence detections suitable for production display"
|
||||
|
||||
annotations:
|
||||
custodian_types: '["D"]'
|
||||
custodian_types_rationale: Detection levels apply to digital platforms with automated analysis
|
||||
specificity_score: 0.75
|
||||
specificity_rationale: Specific to media analysis and detection contexts
|
||||
type_types_pattern: "Base class - concrete subclasses in DetectionLevelTypes.yaml"
|
||||
|
||||
comments:
|
||||
- "Abstract base class for detection level taxonomy"
|
||||
- "Concrete subclasses defined in DetectionLevelTypes.yaml"
|
||||
- "Follows Type/Types naming convention (Rule 0b)"
|
||||
- "Migrated from detection_level slot per slot_fixes.yaml"
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
# DetectionLevelTypes - Concrete subclasses for detection confidence levels
|
||||
#
|
||||
# Following Type/Types naming convention (Rule 0b):
|
||||
# - DetectionLevelType.yaml: Abstract base class
|
||||
# - DetectionLevelTypes.yaml (this file): Concrete subclasses
|
||||
#
|
||||
# Created: 2026-01-25
|
||||
# Rule compliance: 0b (Type/Types pattern), 38 (slot centralization), 39 (RiC-O naming), 53 (slot_fixes.yaml)
|
||||
# Migration: detection_level → filters_or_filtered + has_or_had_type + DetectionLevelType/DetectionLevelTypes
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/DetectionLevelTypes
|
||||
name: DetectionLevelTypes
|
||||
title: Detection Level Types
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./DetectionLevelType
|
||||
|
||||
classes:
|
||||
# HIGH confidence level - production quality
|
||||
HighDetectionLevel:
|
||||
is_a: DetectionLevelType
|
||||
class_uri: hc:HighDetectionLevel
|
||||
description: |
|
||||
High confidence detection level (0.9+ confidence).
|
||||
|
||||
**Use Case**: Production display, public-facing content.
|
||||
|
||||
High confidence detections have been verified to high accuracy standards
|
||||
and are suitable for automated display without human review.
|
||||
slot_usage:
|
||||
has_or_had_code:
|
||||
equals_string: HIGH
|
||||
has_or_had_label:
|
||||
equals_string: "High Confidence"
|
||||
annotations:
|
||||
confidence_range: "0.9-1.0"
|
||||
review_required: "false"
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: HIGH
|
||||
has_or_had_label: "High Confidence"
|
||||
has_or_had_description: "Suitable for production display"
|
||||
|
||||
# MEDIUM confidence level - review recommended
|
||||
MediumDetectionLevel:
|
||||
is_a: DetectionLevelType
|
||||
class_uri: hc:MediumDetectionLevel
|
||||
description: |
|
||||
Medium confidence detection level (0.7-0.9 confidence).
|
||||
|
||||
**Use Case**: General use, review queue.
|
||||
|
||||
Medium confidence detections may need spot-checking but are generally
|
||||
reliable for most applications.
|
||||
slot_usage:
|
||||
has_or_had_code:
|
||||
equals_string: MEDIUM
|
||||
has_or_had_label:
|
||||
equals_string: "Medium Confidence"
|
||||
annotations:
|
||||
confidence_range: "0.7-0.9"
|
||||
review_required: "recommended"
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: MEDIUM
|
||||
has_or_had_label: "Medium Confidence"
|
||||
has_or_had_description: "Review recommended before production use"
|
||||
|
||||
# LOW confidence level - research/exhaustive
|
||||
LowDetectionLevel:
|
||||
is_a: DetectionLevelType
|
||||
class_uri: hc:LowDetectionLevel
|
||||
description: |
|
||||
Low confidence detection level (0.5-0.7 confidence).
|
||||
|
||||
**Use Case**: Research, exhaustive analysis, recall-focused.
|
||||
|
||||
Low confidence detections prioritize recall over precision.
|
||||
Suitable for research workflows where missing items is more costly
|
||||
than including false positives.
|
||||
slot_usage:
|
||||
has_or_had_code:
|
||||
equals_string: LOW
|
||||
has_or_had_label:
|
||||
equals_string: "Low Confidence"
|
||||
annotations:
|
||||
confidence_range: "0.5-0.7"
|
||||
review_required: "required"
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: LOW
|
||||
has_or_had_label: "Low Confidence"
|
||||
has_or_had_description: "Requires human review before use"
|
||||
|
||||
# UNCERTAIN level - manual review required
|
||||
UncertainDetectionLevel:
|
||||
is_a: DetectionLevelType
|
||||
class_uri: hc:UncertainDetectionLevel
|
||||
description: |
|
||||
Uncertain detection level (< 0.5 confidence).
|
||||
|
||||
**Use Case**: Flagged items, manual review queue.
|
||||
|
||||
Uncertain detections should not be used without human verification.
|
||||
These are typically included in raw output for completeness but
|
||||
require manual curation before any production use.
|
||||
slot_usage:
|
||||
has_or_had_code:
|
||||
equals_string: UNCERTAIN
|
||||
has_or_had_label:
|
||||
equals_string: "Uncertain"
|
||||
annotations:
|
||||
confidence_range: "0.0-0.5"
|
||||
review_required: "mandatory"
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: UNCERTAIN
|
||||
has_or_had_label: "Uncertain"
|
||||
has_or_had_description: "Manual verification required"
|
||||
|
||||
# VERIFIED level - human confirmed
|
||||
VerifiedDetectionLevel:
|
||||
is_a: DetectionLevelType
|
||||
class_uri: hc:VerifiedDetectionLevel
|
||||
description: |
|
||||
Verified detection level (human confirmed).
|
||||
|
||||
**Use Case**: Human-verified detections, ground truth.
|
||||
|
||||
Verified detections have been manually confirmed by a human reviewer.
|
||||
These override automated confidence scores and serve as ground truth.
|
||||
slot_usage:
|
||||
has_or_had_code:
|
||||
equals_string: VERIFIED
|
||||
has_or_had_label:
|
||||
equals_string: "Human Verified"
|
||||
annotations:
|
||||
confidence_range: "1.0"
|
||||
review_required: "completed"
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: VERIFIED
|
||||
has_or_had_label: "Human Verified"
|
||||
has_or_had_description: "Manually confirmed by curator"
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
# DetectionThreshold class
|
||||
# Represents threshold configuration for detection/filtering in analysis pipelines
|
||||
#
|
||||
# Created: 2026-01-25
|
||||
# Rule compliance: 0b (Type/Types pattern), 38 (slot centralization), 39 (RiC-O naming), 53 (slot_fixes.yaml)
|
||||
# Migration: detection_threshold → filters_or_filtered + has_or_had_treshold + DetectionThreshold
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/DetectionThreshold
|
||||
name: DetectionThreshold
|
||||
title: Detection Threshold Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
dqv: http://www.w3.org/ns/dqv#
|
||||
schema: http://schema.org/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_type
|
||||
|
||||
classes:
|
||||
DetectionThreshold:
|
||||
class_uri: dqv:QualityMeasurement
|
||||
description: |
|
||||
Configuration for detection thresholds in analysis pipelines.
|
||||
|
||||
**DEFINITION**:
|
||||
|
||||
DetectionThreshold represents the confidence threshold settings used to filter
|
||||
detection results. CV models output confidence scores; thresholds determine
|
||||
which detections are included in results.
|
||||
|
||||
**Threshold Levels**:
|
||||
|
||||
| Threshold | Range | Use Case |
|
||||
|-----------|-------|----------|
|
||||
| HIGH_PRECISION | 0.9+ | Production display, high confidence |
|
||||
| BALANCED | 0.7-0.9 | General use, balance precision/recall |
|
||||
| HIGH_RECALL | 0.5-0.7 | Research, review, catch more |
|
||||
| RAW | < 0.5 | Unfiltered, needs post-processing |
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **DQV**: `dqv:QualityMeasurement` - quality metric for data assessment
|
||||
- **PROV-O**: Threshold as parameter of detection activity
|
||||
|
||||
**Migrated From** (per slot_fixes.yaml):
|
||||
- `detection_threshold` (float) now uses:
|
||||
- `filters_or_filtered` → DetectedEntity
|
||||
- `has_or_had_treshold` → DetectionThreshold (this class)
|
||||
|
||||
**Usage Pattern**:
|
||||
```
|
||||
VideoAnnotation
|
||||
└── filters_or_filtered → DetectedEntity
|
||||
└── has_or_had_treshold → DetectionThreshold
|
||||
├── threshold_value: 0.5
|
||||
└── threshold_type: MINIMUM
|
||||
```
|
||||
|
||||
exact_mappings:
|
||||
- dqv:QualityMeasurement
|
||||
|
||||
close_mappings:
|
||||
- schema:QuantitativeValue
|
||||
|
||||
related_mappings:
|
||||
- prov:SoftwareAgent
|
||||
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_type
|
||||
|
||||
attributes:
|
||||
threshold_value:
|
||||
range: float
|
||||
required: true
|
||||
minimum_value: 0.0
|
||||
maximum_value: 1.0
|
||||
description: |
|
||||
The numeric threshold value (0.0-1.0).
|
||||
Detections with confidence >= threshold_value are included.
|
||||
examples:
|
||||
- value: 0.5
|
||||
description: Standard threshold
|
||||
- value: 0.9
|
||||
description: High precision threshold
|
||||
|
||||
threshold_type:
|
||||
range: string
|
||||
required: false
|
||||
description: |
|
||||
Type of threshold application.
|
||||
- MINIMUM: Lower bound for inclusion
|
||||
- MAXIMUM: Upper bound (rare)
|
||||
- BAND: Range between two values
|
||||
examples:
|
||||
- value: MINIMUM
|
||||
description: Minimum confidence for inclusion
|
||||
|
||||
slot_usage:
|
||||
has_or_had_label:
|
||||
description: Human-readable label for this threshold configuration
|
||||
examples:
|
||||
- value: "High Precision Threshold"
|
||||
- value: "Research Mode Threshold"
|
||||
has_or_had_type:
|
||||
description: Type category for the threshold (HIGH_PRECISION, BALANCED, etc.)
|
||||
examples:
|
||||
- value: HIGH_PRECISION
|
||||
- value: BALANCED
|
||||
|
||||
annotations:
|
||||
custodian_types: '["D"]'
|
||||
custodian_types_rationale: Detection thresholds apply to digital platforms with automated analysis
|
||||
specificity_score: 0.75
|
||||
specificity_rationale: Fairly specific to video/media analysis contexts
|
||||
|
||||
comments:
|
||||
- "Represents detection threshold configuration"
|
||||
- "Migrated from detection_threshold slot per slot_fixes.yaml"
|
||||
- "threshold_value is the numeric confidence cutoff"
|
||||
- "threshold_type indicates how threshold is applied"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
threshold_value: 0.5
|
||||
threshold_type: MINIMUM
|
||||
has_or_had_label: "Standard Detection"
|
||||
description: "Standard detection threshold at 0.5 confidence"
|
||||
- value:
|
||||
threshold_value: 0.9
|
||||
threshold_type: MINIMUM
|
||||
has_or_had_label: "High Precision"
|
||||
has_or_had_description: "For production display requiring high confidence"
|
||||
description: "High precision threshold for production use"
|
||||
- value:
|
||||
threshold_value: 0.3
|
||||
threshold_type: MINIMUM
|
||||
has_or_had_label: "Research Mode"
|
||||
has_or_had_description: "Low threshold to maximize recall for research"
|
||||
description: "Low threshold for research/review workflows"
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
# DeviceType class (abstract base)
|
||||
# Abstract type taxonomy for IoT devices
|
||||
#
|
||||
# Following Type/Types naming convention (Rule 0b):
|
||||
# - DeviceType.yaml (singular): Abstract base class
|
||||
# - DeviceTypes.yaml (plural): Concrete subclasses
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 0 (LinkML single source of truth), 0b (Type/Types pattern), 53 (migration)
|
||||
# Migration source: device_type slot + DigitalPresenceTypeEnum per slot_fixes.yaml
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/DeviceType
|
||||
name: device_type_class
|
||||
title: DeviceType Class (Abstract Base)
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
sosa: http://www.w3.org/ns/sosa/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_identifier
|
||||
|
||||
classes:
|
||||
DeviceType:
|
||||
class_uri: schema:Product
|
||||
abstract: true
|
||||
description: |
|
||||
Abstract base class for IoT device type taxonomy.
|
||||
|
||||
**MIGRATION SOURCE**: Created from device_type slot migration (Rule 53, 2026-01-25).
|
||||
Replaces DigitalPresenceTypeEnum values (IOT_BEACON, IOT_SENSOR, IOT_KIOSK, etc.)
|
||||
with a class hierarchy following Type/Types pattern (Rule 0b).
|
||||
|
||||
**Pattern**: Type/Types (Rule 0b)
|
||||
- DeviceType (this file): Abstract base defining common slots
|
||||
- DeviceTypes (separate file): Concrete subclasses (IoTBeacon, IoTSensor, IoTKiosk, etc.)
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary**: `schema:Product` - Schema.org product (devices are products)
|
||||
- **Related**: `sosa:Platform` - SOSA platform hosting sensors
|
||||
|
||||
**Inheritance**:
|
||||
```
|
||||
DeviceType (abstract)
|
||||
├── IoTBeacon
|
||||
├── IoTSensor
|
||||
├── IoTKiosk
|
||||
├── IoTDisplay
|
||||
└── IoTActuator
|
||||
```
|
||||
|
||||
exact_mappings:
|
||||
- schema:Product
|
||||
|
||||
related_mappings:
|
||||
- sosa:Platform
|
||||
|
||||
slots:
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
description: Unique identifier for this device type.
|
||||
range: uriorcurie
|
||||
required: false
|
||||
has_or_had_label:
|
||||
description: Human-readable name of this device type.
|
||||
range: string
|
||||
required: true
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Device types applicable to all custodian types using IoT.
|
||||
custodian_types_primary: null
|
||||
specificity_score: 0.7
|
||||
specificity_rationale: Specific to IoT device classification.
|
||||
type_types_pattern: base
|
||||
type_types_related: DeviceTypes
|
||||
|
||||
comments:
|
||||
- "CREATED from device_type migration per slot_fixes.yaml (Rule 53)"
|
||||
- "Abstract base class - use concrete subclasses from DeviceTypes.yaml"
|
||||
- "Replaces DigitalPresenceTypeEnum values with class hierarchy"
|
||||
- "Type/Types pattern: DeviceType (base) + DeviceTypes (subclasses)"
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
# DeviceTypes class (concrete subclasses)
|
||||
# Concrete subclasses of DeviceType taxonomy
|
||||
#
|
||||
# Following Type/Types naming convention (Rule 0b):
|
||||
# - DeviceType.yaml (singular): Abstract base class
|
||||
# - DeviceTypes.yaml (plural): Concrete subclasses
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 0 (LinkML single source of truth), 0b (Type/Types pattern), 53 (migration)
|
||||
# Migration source: device_type slot + DigitalPresenceTypeEnum per slot_fixes.yaml
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/DeviceTypes
|
||||
name: device_types_class
|
||||
title: DeviceTypes Class (Concrete Subclasses)
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
sosa: http://www.w3.org/ns/sosa/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./DeviceType
|
||||
|
||||
classes:
|
||||
# Concrete subclasses of DeviceType
|
||||
|
||||
IoTBeacon:
|
||||
is_a: DeviceType
|
||||
class_uri: hc:IoTBeacon
|
||||
description: |
|
||||
Bluetooth beacon or proximity device for location-based triggers.
|
||||
|
||||
**Use Cases**:
|
||||
- Proximity triggers for mobile app content near artworks
|
||||
- Indoor navigation and wayfinding
|
||||
- Visitor tracking and analytics
|
||||
|
||||
**Replaces**: IOT_BEACON value from DigitalPresenceTypeEnum
|
||||
exact_mappings:
|
||||
- sosa:Platform
|
||||
annotations:
|
||||
enum_equivalent: IOT_BEACON
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label: Bluetooth Beacon
|
||||
description: Generic bluetooth beacon
|
||||
- value:
|
||||
has_or_had_label: iBeacon
|
||||
description: Apple iBeacon protocol device
|
||||
|
||||
IoTSensor:
|
||||
is_a: DeviceType
|
||||
class_uri: hc:IoTSensor
|
||||
description: |
|
||||
Environmental or measurement sensor device.
|
||||
|
||||
**Use Cases**:
|
||||
- Climate monitoring (temperature, humidity) for conservation
|
||||
- Light level sensors for protection of sensitive materials
|
||||
- Air quality monitoring in storage areas
|
||||
- Visitor counting
|
||||
|
||||
**Replaces**: IOT_SENSOR value from DigitalPresenceTypeEnum
|
||||
exact_mappings:
|
||||
- sosa:Sensor
|
||||
annotations:
|
||||
enum_equivalent: IOT_SENSOR
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label: Climate Sensor
|
||||
description: Temperature and humidity sensor
|
||||
- value:
|
||||
has_or_had_label: Light Level Sensor
|
||||
description: Lux measurement sensor
|
||||
|
||||
IoTKiosk:
|
||||
is_a: DeviceType
|
||||
class_uri: hc:IoTKiosk
|
||||
description: |
|
||||
Interactive information terminal or kiosk device.
|
||||
|
||||
**Use Cases**:
|
||||
- Self-service collection search for visitors
|
||||
- Wayfinding and orientation
|
||||
- Ticketing and information display
|
||||
|
||||
**Replaces**: IOT_KIOSK value from DigitalPresenceTypeEnum
|
||||
exact_mappings:
|
||||
- schema:Kiosk
|
||||
annotations:
|
||||
enum_equivalent: IOT_KIOSK
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label: Information Kiosk
|
||||
description: Interactive information terminal
|
||||
- value:
|
||||
has_or_had_label: Ticketing Kiosk
|
||||
description: Self-service ticketing terminal
|
||||
|
||||
IoTDisplay:
|
||||
is_a: DeviceType
|
||||
class_uri: hc:IoTDisplay
|
||||
description: |
|
||||
Digital signage or display device.
|
||||
|
||||
**Use Cases**:
|
||||
- Rotating information displays
|
||||
- Exhibition schedules
|
||||
- Digital labels for artworks
|
||||
|
||||
**Replaces**: IOT_DISPLAY value from DigitalPresenceTypeEnum (if existed)
|
||||
exact_mappings:
|
||||
- schema:VisualArtwork
|
||||
annotations:
|
||||
enum_equivalent: IOT_DISPLAY
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label: Digital Signage
|
||||
description: Digital information display
|
||||
- value:
|
||||
has_or_had_label: Interactive Screen
|
||||
description: Touch-enabled display
|
||||
|
||||
IoTActuator:
|
||||
is_a: DeviceType
|
||||
class_uri: hc:IoTActuator
|
||||
description: |
|
||||
Device that performs actions (e.g., HVAC controls, lighting).
|
||||
|
||||
**Use Cases**:
|
||||
- Climate control (HVAC) for conservation
|
||||
- Automated lighting systems
|
||||
- Security systems
|
||||
|
||||
exact_mappings:
|
||||
- sosa:Actuator
|
||||
annotations:
|
||||
enum_equivalent: IOT_ACTUATOR
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label: HVAC Controller
|
||||
description: Climate control actuator
|
||||
- value:
|
||||
has_or_had_label: Lighting Controller
|
||||
description: Automated lighting system
|
||||
|
|
@ -22,7 +22,8 @@ imports:
|
|||
- ./Scope # for has_or_had_scope range (2026-01-15)
|
||||
- ../slots/has_access_application_url
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/default_access_policy
|
||||
- ../slots/condition_of_access # was: default_access_policy - migrated per Rule 53 (2026-01-23)
|
||||
- ./Condition # Range for condition_of_access (note: revision typo said "type: slot")
|
||||
- ../slots/restriction_category
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
|
|
@ -44,7 +45,7 @@ classes:
|
|||
slots:
|
||||
- has_access_application_url
|
||||
- has_or_had_custodian_type
|
||||
- default_access_policy
|
||||
- condition_of_access # was: default_access_policy - migrated per Rule 53 (2026-01-23)
|
||||
- hold_or_held_record_set_type
|
||||
- restriction_category
|
||||
- specificity_annotation
|
||||
|
|
@ -74,16 +75,26 @@ classes:
|
|||
slot_usage:
|
||||
has_or_had_identifier: # was: wikidata_entity - migrated per Rule 53 (2026-01-15)
|
||||
# equals_string removed: Q112796779 (incompatible with uriorcurie range)
|
||||
default_access_policy:
|
||||
range: AccessPolicy
|
||||
condition_of_access: # was: default_access_policy - migrated per Rule 53 (2026-01-23)
|
||||
range: Condition
|
||||
inlined: true
|
||||
multivalued: true
|
||||
required: true
|
||||
description: |
|
||||
Access conditions that make this a "dim" archive.
|
||||
MIGRATED from default_access_policy per slot_fixes.yaml (Rule 53).
|
||||
Uses Condition class for structured representation.
|
||||
examples:
|
||||
- value:
|
||||
policy_id: https://nde.nl/ontology/hc/policy/researcher-only
|
||||
access_level: RESTRICTED
|
||||
restriction_reason: Privacy-sensitive personal data
|
||||
eligible_users: Credentialed academic researchers
|
||||
access_process: Application and approval required
|
||||
has_or_had_type: RESEARCHER_ONLY
|
||||
has_or_had_description:
|
||||
description_text: "Access restricted to credentialed academic researchers"
|
||||
description: User-based restriction condition
|
||||
- value:
|
||||
has_or_had_type: APPROVAL_REQUIRED
|
||||
has_or_had_description:
|
||||
description_text: "Application and approval process required"
|
||||
description: Process-based restriction condition
|
||||
restriction_category:
|
||||
range: string
|
||||
multivalued: true
|
||||
|
|
@ -137,12 +148,16 @@ classes:
|
|||
- Dim Archive@en
|
||||
- Dim Archive@de
|
||||
has_or_had_description: Archive with limited access # was: type_description - migrated per Rule 53/56 (2026-01-16)
|
||||
default_access_policy:
|
||||
policy_id: https://nde.nl/ontology/hc/policy/researcher-access
|
||||
access_level: RESTRICTED
|
||||
restriction_reason: Privacy-sensitive personal data (GDPR)
|
||||
eligible_users: Academic researchers with institutional has_or_had_affiliation
|
||||
access_process: Submit research proposal and sign access agreement
|
||||
condition_of_access:
|
||||
- has_or_had_type: RESEARCHER_ONLY
|
||||
has_or_had_description:
|
||||
description_text: "Academic researchers with institutional affiliation"
|
||||
- has_or_had_type: APPROVAL_REQUIRED
|
||||
has_or_had_description:
|
||||
description_text: "Submit research proposal and sign access agreement"
|
||||
- has_or_had_type: PRIVACY_SENSITIVE
|
||||
has_or_had_description:
|
||||
description_text: "Privacy-sensitive personal data (GDPR)"
|
||||
restriction_category:
|
||||
- user_based
|
||||
- process_based
|
||||
|
|
|
|||
|
|
@ -255,36 +255,47 @@ classes:
|
|||
description: |
|
||||
Tax scheme(s) applicable to donations to this institution.
|
||||
Multiple schemes may apply (e.g., ANBI + Cultural ANBI in NL).
|
||||
# MIGRATED 2026-01-24: deduction_percentage → offers_or_offered.has_or_had_percentage (Rule 53)
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_type: ANBI
|
||||
has_or_had_label: ANBI
|
||||
jurisdiction: NL
|
||||
deduction_percentage: 100
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
description: Dutch general public benefit institution
|
||||
- value:
|
||||
has_or_had_type: CulturalANBI
|
||||
has_or_had_label: Cultural ANBI (125%)
|
||||
jurisdiction: NL
|
||||
deduction_percentage: 125
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 125
|
||||
description: Dutch cultural institution with extra deduction
|
||||
- value:
|
||||
has_or_had_type: GiftAid
|
||||
has_or_had_label: Gift Aid
|
||||
jurisdiction: UK
|
||||
deduction_percentage: 100
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
description: UK Gift Aid scheme
|
||||
- value:
|
||||
has_or_had_type: Section501c3
|
||||
has_or_had_label: 501(c)(3)
|
||||
jurisdiction: US
|
||||
deduction_percentage: 100
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
description: US tax-exempt charitable organization
|
||||
- value:
|
||||
has_or_had_type: Gemeinnuetzigkeit
|
||||
has_or_had_label: Gemeinnützigkeit
|
||||
jurisdiction: DE
|
||||
deduction_percentage: 100
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
description: German charitable status
|
||||
contact_email:
|
||||
range: string
|
||||
|
|
@ -347,7 +358,10 @@ classes:
|
|||
- has_or_had_type: CulturalANBI
|
||||
has_or_had_label: Cultural ANBI (125%)
|
||||
jurisdiction: NL
|
||||
deduction_percentage: 125
|
||||
# MIGRATED 2026-01-24: deduction_percentage → offers_or_offered (Rule 53)
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 125
|
||||
regulatory_body: Belastingdienst
|
||||
observed_in: https://nde.nl/ontology/hc/observation/web/2026-01-01/rijksmuseum-support
|
||||
extraction_confidence: 0.95
|
||||
|
|
@ -377,7 +391,10 @@ classes:
|
|||
- has_or_had_type: GiftAid
|
||||
has_or_had_label: Gift Aid
|
||||
jurisdiction: UK
|
||||
deduction_percentage: 100
|
||||
# MIGRATED 2026-01-24: deduction_percentage → offers_or_offered (Rule 53)
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
regulatory_body: HMRC
|
||||
observed_in: https://nde.nl/ontology/hc/observation/web/2026-01-01/bl-support
|
||||
extraction_confidence: 0.98
|
||||
|
|
@ -409,7 +426,10 @@ classes:
|
|||
- has_or_had_type: GiftAid
|
||||
has_or_had_label: Gift Aid
|
||||
jurisdiction: UK
|
||||
deduction_percentage: 100
|
||||
# MIGRATED 2026-01-24: deduction_percentage → offers_or_offered (Rule 53)
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
regulatory_body: HMRC
|
||||
observed_in: https://nde.nl/ontology/hc/observation/web/2026-01-01/nhm-patrons
|
||||
extraction_confidence: 0.92
|
||||
|
|
@ -439,7 +459,10 @@ classes:
|
|||
- has_or_had_type: ANBI
|
||||
has_or_had_label: ANBI
|
||||
jurisdiction: NL
|
||||
deduction_percentage: 100
|
||||
# MIGRATED 2026-01-24: deduction_percentage → offers_or_offered (Rule 53)
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
regulatory_body: Belastingdienst
|
||||
observed_in: https://nde.nl/ontology/hc/observation/web/2026-01-01/iish-support
|
||||
extraction_confidence: 0.9
|
||||
|
|
@ -469,7 +492,10 @@ classes:
|
|||
has_or_had_label: ANBI (erfbelasting vrijstelling)
|
||||
has_or_had_description: ANBI status with inheritance tax exemption
|
||||
jurisdiction: NL
|
||||
deduction_percentage: 100
|
||||
# MIGRATED 2026-01-24: deduction_percentage → offers_or_offered (Rule 53)
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
regulatory_body: Belastingdienst
|
||||
contact_email: ontwikkeling@kb.nl
|
||||
observed_in: https://nde.nl/ontology/hc/observation/web/2026-01-01/kb-support
|
||||
|
|
|
|||
|
|
@ -13,7 +13,9 @@ imports:
|
|||
- linkml:types
|
||||
- ../metadata
|
||||
# activities_societies REMOVED - migrated to has_or_had_membership + has_or_had_activity_type (Rule 53)
|
||||
- ../slots/degree_name
|
||||
# MIGRATED 2026-01-24: degree_name → has_or_had_label + Label (Rule 53)
|
||||
- ../slots/has_or_had_label
|
||||
- ./Label
|
||||
- ../slots/education_description
|
||||
- ../slots/education_end_year
|
||||
- ../slots/education_start_year
|
||||
|
|
@ -79,7 +81,8 @@ classes:
|
|||
- schema:Degree
|
||||
slots:
|
||||
# activities_societies REMOVED - migrated to has_or_had_membership + has_or_had_activity_type
|
||||
- degree_name
|
||||
# MIGRATED 2026-01-24: degree_name → has_or_had_label + Label (Rule 53)
|
||||
- has_or_had_label
|
||||
- education_description
|
||||
- education_end_year
|
||||
- education_start_year
|
||||
|
|
@ -108,14 +111,25 @@ classes:
|
|||
pattern: ^https://www\.linkedin\.com/school/[a-z0-9-]+/?$
|
||||
examples:
|
||||
- value: https://www.linkedin.com/school/university-of-amsterdam
|
||||
degree_name:
|
||||
range: string
|
||||
# MIGRATED 2026-01-24: degree_name → has_or_had_label + Label (Rule 53)
|
||||
has_or_had_label:
|
||||
range: Label
|
||||
inlined: true
|
||||
required: false
|
||||
description: |
|
||||
Full degree name as displayed on LinkedIn.
|
||||
MIGRATED from 'degree_name' slot per slot_fixes.yaml (Rule 53).
|
||||
Uses Label class with has_or_had_text for the degree name.
|
||||
May include degree type, field, and specialization combined.
|
||||
examples:
|
||||
- value: Bachelor of Education - BEd, Elementary Education and Teaching
|
||||
- value:
|
||||
has_or_had_text: "Bachelor of Education - BEd, Elementary Education and Teaching"
|
||||
description: Combined degree type and field
|
||||
- value: Master of Arts - MA
|
||||
- value:
|
||||
has_or_had_text: "Master of Arts - MA"
|
||||
description: Degree type only
|
||||
- value: PhD in Museology
|
||||
- value:
|
||||
has_or_had_text: "PhD in Museology"
|
||||
description: Doctoral degree with specialization
|
||||
field_of_study:
|
||||
range: string
|
||||
|
|
|
|||
|
|
@ -0,0 +1,82 @@
|
|||
# EntityReconstruction class
|
||||
# Represents a reconstructed formal entity derived from observations
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 0 (LinkML single source of truth), 53 (migration from derived_from_entity)
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/EntityReconstruction
|
||||
name: entity_reconstruction_class
|
||||
title: EntityReconstruction Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
|
||||
classes:
|
||||
EntityReconstruction:
|
||||
class_uri: prov:Entity
|
||||
description: |
|
||||
Abstract base class for reconstructed formal entities derived from observations.
|
||||
|
||||
**Purpose**:
|
||||
EntityReconstruction represents the result of analyzing multiple observations
|
||||
to reconstruct a formal entity (legal status, name, place).
|
||||
|
||||
**Relationship to Observations**:
|
||||
```
|
||||
CustodianObservation[]
|
||||
│
|
||||
└── refers_or_referred_to → EntityReconstruction
|
||||
│
|
||||
└── (subtypes: CustodianLegalStatus,
|
||||
CustodianName,
|
||||
CustodianPlace)
|
||||
```
|
||||
|
||||
**PROV-O Semantics**:
|
||||
- `prov:Entity`: Base class for things with provenance
|
||||
- Links TO observations via inverse (has_derived_observation)
|
||||
- Links FROM observations via refers_or_referred_to
|
||||
|
||||
**Subtypes**:
|
||||
- CustodianLegalStatus - Reconstructed legal entity
|
||||
- CustodianName - Reconstructed emic/etic name
|
||||
- CustodianPlace - Reconstructed place designation
|
||||
|
||||
exact_mappings:
|
||||
- prov:Entity
|
||||
|
||||
close_mappings:
|
||||
- crm:E73_Information_Object
|
||||
|
||||
abstract: true
|
||||
|
||||
slots:
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Abstract base class for all reconstructed entities.
|
||||
custodian_types_primary: null
|
||||
specificity_score: 0.5
|
||||
specificity_rationale: Mid-level abstraction for entity reconstruction pattern.
|
||||
|
||||
comments:
|
||||
- "MIGRATED: supports derived_from_entity → refers_or_referred_to (Rule 53)"
|
||||
- "Abstract base for reconstructed formal entities"
|
||||
- "PROV-O Entity for provenance tracking"
|
||||
- "Subtypes: CustodianLegalStatus, CustodianName, CustodianPlace"
|
||||
|
|
@ -22,7 +22,9 @@ imports:
|
|||
- ../slots/has_audit_opinion
|
||||
- ../slots/has_or_had_audit_status
|
||||
- ../slots/has_auditor_name
|
||||
- ../slots/change_in_net_asset
|
||||
# - ../slots/change_in_net_asset # ARCHIVED 2026-01-24: migrated to specifies_or_specified + NetAsset per Rule 53/56
|
||||
- ../slots/specifies_or_specified
|
||||
- ./NetAsset
|
||||
- ../slots/documents_budget
|
||||
- ../slots/filing_id
|
||||
- ../slots/filing_type
|
||||
|
|
@ -123,7 +125,7 @@ classes:
|
|||
- audit_opinion
|
||||
- audit_status
|
||||
- auditor_name
|
||||
- change_in_net_asset
|
||||
- specifies_or_specified # was: change_in_net_asset - migrated per Rule 53/56 (2026-01-24)
|
||||
- documents_budget
|
||||
- filing_id
|
||||
- filing_type
|
||||
|
|
@ -220,9 +222,15 @@ classes:
|
|||
has_or_had_expense: # was: total_expense - migrated per Rule 53 (2026-01-15)
|
||||
range: decimal
|
||||
required: false
|
||||
change_in_net_asset:
|
||||
range: decimal
|
||||
specifies_or_specified: # was: change_in_net_asset - migrated per Rule 53/56 (2026-01-24)
|
||||
description: |
|
||||
MIGRATED from change_in_net_asset per Rule 53/56 (2026-01-24).
|
||||
Net asset change specification (surplus/deficit).
|
||||
= total_revenue - total_expenses
|
||||
range: NetAsset
|
||||
required: false
|
||||
inlined: true
|
||||
multivalued: true
|
||||
has_or_had_asset: # was: total_asset - migrated per Rule 53 (2026-01-15)
|
||||
range: decimal
|
||||
required: false
|
||||
|
|
@ -364,7 +372,10 @@ classes:
|
|||
duration_description: "fiscal year 2023"
|
||||
revenue_category: TOTAL
|
||||
total_expenses: 75200000.0
|
||||
change_in_net_assets: 3300000.0
|
||||
specifies_or_specified: # was: change_in_net_assets
|
||||
- has_or_had_net_asset: 3300000.0
|
||||
currency: EUR
|
||||
fiscal_year: 2023
|
||||
total_assets: 125000000.0
|
||||
total_liabilities: 15000000.0
|
||||
total_net_assets: 110000000.0
|
||||
|
|
@ -420,7 +431,10 @@ classes:
|
|||
duration_description: "fiscal year July 2022 - June 2023"
|
||||
revenue_category: TOTAL
|
||||
total_expenses: 412000000.0
|
||||
change_in_net_assets: 27000000.0
|
||||
specifies_or_specified: # was: change_in_net_assets
|
||||
- has_or_had_net_asset: 27000000.0
|
||||
currency: USD
|
||||
fiscal_year: 2022
|
||||
total_assets: 5200000000.0
|
||||
total_liabilities: 520000000.0
|
||||
total_net_assets: 4680000000.0
|
||||
|
|
|
|||
|
|
@ -17,7 +17,9 @@ imports:
|
|||
- ../slots/identifier_scheme
|
||||
- ../slots/identifier_value
|
||||
- ../slots/identifies_custodian
|
||||
- ../slots/defined_by_standard
|
||||
# MIGRATED 2026-01-24: defined_by_standard → has_or_had_standard + Standard (Rule 53)
|
||||
- ../slots/has_or_had_standard
|
||||
- ./Standard
|
||||
- ../slots/is_or_was_allocated_by
|
||||
- ../slots/identifier_format_used
|
||||
# MIGRATED 2026-01-22: canonical_value → has_or_had_canonical_form + CanonicalForm per slot_fixes.yaml feedback
|
||||
|
|
@ -185,7 +187,7 @@ classes:
|
|||
**Extended Provenance (v2)**:
|
||||
|
||||
The identifier now tracks its full lineage:
|
||||
- defined_by_standard: Which Standard defines this identifier type (ISIL → ISO 15511)
|
||||
- has_or_had_standard: Which Standard defines this identifier type (ISIL → ISO 15511)
|
||||
- allocated_by: Which AllocationAgency assigned this specific identifier
|
||||
- identifier_format_used: Which format variant is used in identifier_value
|
||||
- has_or_had_canonical_form: Normalized form (CanonicalForm) for deduplication and matching
|
||||
|
|
@ -217,7 +219,8 @@ classes:
|
|||
- has_or_had_secondary_label
|
||||
# MIGRATED 2026-01-22: canonical_value → has_or_had_canonical_form + CanonicalForm
|
||||
- has_or_had_canonical_form
|
||||
- defined_by_standard
|
||||
# MIGRATED 2026-01-24: defined_by_standard → has_or_had_standard + Standard (Rule 53)
|
||||
- has_or_had_standard
|
||||
- identifier_format_used
|
||||
- identifies_custodian
|
||||
- specificity_annotation
|
||||
|
|
@ -226,8 +229,36 @@ classes:
|
|||
identifies_custodian:
|
||||
range: Custodian
|
||||
required: false
|
||||
defined_by_standard:
|
||||
# MIGRATED 2026-01-24: defined_by_standard → has_or_had_standard + Standard (Rule 53)
|
||||
has_or_had_standard:
|
||||
range: Standard
|
||||
required: false
|
||||
multivalued: false
|
||||
inlined: false
|
||||
description: |
|
||||
The standard (identifier scheme) that defines this identifier.
|
||||
Links the identifier to its governing standard, providing access to:
|
||||
- Format specifications
|
||||
- Registration authority
|
||||
- Lookup URL template
|
||||
- Validation rules
|
||||
|
||||
**SKOS Alignment:**
|
||||
skos:inScheme - "Relates a resource to a concept scheme in which it is included"
|
||||
Here the identifier is treated as a SKOS notation within the scheme (standard).
|
||||
|
||||
**Examples:**
|
||||
- ISIL "NL-AmRMA" → ISIL standard (ISO 15511)
|
||||
- ISNI "0000 0001 2146 5765" → ISNI standard (ISO 27729)
|
||||
- Wikidata "Q190804" → Wikidata standard
|
||||
|
||||
MIGRATED 2026-01-24: Replaces defined_by_standard per slot_fixes.yaml (Rule 53).
|
||||
examples:
|
||||
- value:
|
||||
id: isil
|
||||
name: "International Standard Identifier for Libraries"
|
||||
has_or_had_abbreviation: "ISIL"
|
||||
description: ISIL identifier standard
|
||||
is_or_was_allocated_by:
|
||||
required: false
|
||||
identifier_format_used:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@ imports:
|
|||
- ./ReconstructionActivity
|
||||
- ./TimeSpan
|
||||
- ./CustodianPlace
|
||||
- ../enums/DigitalPresenceTypeEnum
|
||||
# MIGRATED 2026-01-25: DigitalPresenceTypeEnum → DeviceType class hierarchy (Rule 53)
|
||||
# - ../enums/DigitalPresenceTypeEnum # REMOVED - replaced by DeviceType hierarchy
|
||||
- ../slots/has_or_had_api_endpoint
|
||||
- ./ReconstructedEntity
|
||||
- ../slots/connectivity_type
|
||||
|
|
@ -20,11 +21,23 @@ imports:
|
|||
- ../slots/is_or_was_decommissioned_at # was: decommission_date - migrated per Rule 53 (2026-01-23)
|
||||
- ./Timestamp # Range for is_or_was_decommissioned_at
|
||||
- ../slots/device_count
|
||||
- ../slots/device_id
|
||||
- ../slots/device_manufacturer
|
||||
- ../slots/device_model
|
||||
- ../slots/device_name
|
||||
- ../slots/device_type
|
||||
# MIGRATED 2026-01-25: device_id → has_or_had_identifier + Identifier (Rule 53)
|
||||
- ../slots/has_or_had_identifier
|
||||
- ./Identifier
|
||||
# MIGRATED 2026-01-25: device_manufacturer → is_or_was_created_by + Manufacturer (Rule 53)
|
||||
- ../slots/is_or_was_created_by
|
||||
- ./Manufacturer
|
||||
# MIGRATED 2026-01-25: device_model → has_or_had_model + Model (Rule 53)
|
||||
- ../slots/has_or_had_model
|
||||
- ./Model
|
||||
# MIGRATED 2026-01-25: device_name → has_or_had_label + Label (Rule 53)
|
||||
- ../slots/has_or_had_label
|
||||
- ./Label
|
||||
# MIGRATED 2026-01-25: device_type → is_or_was_instantiated_by + IoTDevice + DeviceType hierarchy (Rule 53)
|
||||
- ../slots/is_or_was_instantiated_by
|
||||
- ./IoTDevice
|
||||
- ./DeviceType
|
||||
- ./DeviceTypes
|
||||
- ../slots/installation_date
|
||||
- ../slots/installed_at_place
|
||||
- ../slots/maintenance_schedule
|
||||
|
|
@ -107,11 +120,16 @@ classes:
|
|||
- has_or_had_output # was: data_format - migrated per Rule 53 (2026-01-22)
|
||||
- is_or_was_decommissioned_at # was: decommission_date - migrated per Rule 53 (2026-01-23)
|
||||
- device_count
|
||||
- device_id
|
||||
- device_manufacturer
|
||||
- device_model
|
||||
- device_name
|
||||
- device_type
|
||||
# MIGRATED 2026-01-25: device_id → has_or_had_identifier (Rule 53)
|
||||
- has_or_had_identifier
|
||||
# MIGRATED 2026-01-25: device_manufacturer → is_or_was_created_by (Rule 53)
|
||||
- is_or_was_created_by
|
||||
# MIGRATED 2026-01-25: device_model → has_or_had_model (Rule 53)
|
||||
- has_or_had_model
|
||||
# MIGRATED 2026-01-25: device_name → has_or_had_label (Rule 53)
|
||||
- has_or_had_label
|
||||
# MIGRATED 2026-01-25: device_type → is_or_was_instantiated_by (Rule 53)
|
||||
- is_or_was_instantiated_by
|
||||
- installation_date
|
||||
- installed_at_place
|
||||
- maintenance_schedule
|
||||
|
|
@ -128,42 +146,84 @@ classes:
|
|||
- is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
|
||||
- is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
|
||||
slot_usage:
|
||||
device_id:
|
||||
# MIGRATED 2026-01-25: device_id → has_or_had_identifier (Rule 53)
|
||||
has_or_had_identifier:
|
||||
description: |
|
||||
MIGRATED from device_id per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
Unique identifier for this IoT device or device network.
|
||||
Format: URI following NDE Heritage Custodian ontology conventions.
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/iot/rijksmuseum-beacon-gallery-1
|
||||
description: Beacon network in Gallery of Honour
|
||||
device_name:
|
||||
range: string
|
||||
# MIGRATED 2026-01-25: device_name → has_or_had_label (Rule 53)
|
||||
has_or_had_label:
|
||||
description: |
|
||||
MIGRATED from device_name per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
Human-readable name of the IoT device or device network.
|
||||
range: Label
|
||||
inlined: true
|
||||
required: true
|
||||
examples:
|
||||
- value: Gallery of Honour Beacon Network
|
||||
- value:
|
||||
label_value: Gallery of Honour Beacon Network
|
||||
description: Beacon network name
|
||||
- value: Depot Climate Monitoring System
|
||||
- value:
|
||||
label_value: Depot Climate Monitoring System
|
||||
description: Sensor network name
|
||||
device_type:
|
||||
range: DigitalPresenceTypeEnum
|
||||
# MIGRATED 2026-01-25: device_type → is_or_was_instantiated_by (Rule 53)
|
||||
is_or_was_instantiated_by:
|
||||
description: |
|
||||
MIGRATED from device_type per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
Type classification of this IoT device using DeviceType hierarchy.
|
||||
Replaces DigitalPresenceTypeEnum values with class-based types.
|
||||
range: IoTDevice
|
||||
inlined: true
|
||||
required: true
|
||||
examples:
|
||||
- value: IOT_BEACON
|
||||
description: Bluetooth beacon
|
||||
- value: IOT_SENSOR
|
||||
description: Environmental sensor
|
||||
- value: IOT_KIOSK
|
||||
description: Interactive kiosk
|
||||
device_model:
|
||||
range: string
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_label: Bluetooth Beacon
|
||||
description: Beacon device (was IOT_BEACON)
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_label: Climate Sensor
|
||||
description: Sensor device (was IOT_SENSOR)
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_label: Information Kiosk
|
||||
description: Kiosk device (was IOT_KIOSK)
|
||||
# MIGRATED 2026-01-25: device_model → has_or_had_model (Rule 53)
|
||||
has_or_had_model:
|
||||
description: |
|
||||
MIGRATED from device_model per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
Model designation of the IoT device.
|
||||
range: Model
|
||||
inlined: true
|
||||
required: false
|
||||
examples:
|
||||
- value: Estimote Proximity Beacon
|
||||
- value:
|
||||
has_or_had_label: Estimote Proximity Beacon
|
||||
description: Beacon model
|
||||
device_manufacturer:
|
||||
range: string
|
||||
- value:
|
||||
has_or_had_label: Sensirion SHT45
|
||||
description: Sensor model
|
||||
# MIGRATED 2026-01-25: device_manufacturer → is_or_was_created_by (Rule 53)
|
||||
is_or_was_created_by:
|
||||
description: |
|
||||
MIGRATED from device_manufacturer per slot_fixes.yaml (Rule 53, 2026-01-25).
|
||||
Manufacturer of the IoT device.
|
||||
range: Manufacturer
|
||||
inlined: true
|
||||
required: false
|
||||
examples:
|
||||
- value: Estimote
|
||||
- value:
|
||||
has_or_had_label: Estimote
|
||||
description: Beacon manufacturer
|
||||
- value: Samsung
|
||||
- value:
|
||||
has_or_had_label: Samsung
|
||||
description: Kiosk manufacturer
|
||||
device_count:
|
||||
range: integer
|
||||
|
|
@ -329,12 +389,22 @@ classes:
|
|||
- https://www.w3.org/TR/vocab-sosa/
|
||||
- https://schema.org/Thing
|
||||
examples:
|
||||
# MIGRATED 2026-01-25: device_id → has_or_had_identifier (Rule 53)
|
||||
# MIGRATED 2026-01-25: device_manufacturer → is_or_was_created_by (Rule 53)
|
||||
# MIGRATED 2026-01-25: device_model → has_or_had_model (Rule 53)
|
||||
# MIGRATED 2026-01-25: device_name → has_or_had_label (Rule 53)
|
||||
# MIGRATED 2026-01-25: device_type → is_or_was_instantiated_by (Rule 53)
|
||||
- value:
|
||||
device_id: https://nde.nl/ontology/hc/iot/rijksmuseum-beacon-gallery-honour
|
||||
device_name: Gallery of Honour Beacon Network
|
||||
device_type: IOT_BEACON
|
||||
device_model: Estimote Proximity Beacon
|
||||
device_manufacturer: Estimote
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/iot/rijksmuseum-beacon-gallery-honour
|
||||
has_or_had_label:
|
||||
has_or_had_label: Gallery of Honour Beacon Network
|
||||
is_or_was_instantiated_by:
|
||||
has_or_had_type:
|
||||
has_or_had_label: Bluetooth Beacon
|
||||
has_or_had_model:
|
||||
has_or_had_label: Estimote Proximity Beacon
|
||||
is_or_was_created_by:
|
||||
has_or_had_label: Estimote
|
||||
device_count: 24
|
||||
coverage_area: Gallery of Honour (main wing)
|
||||
purpose: Proximity triggers for mobile app content near masterpieces
|
||||
|
|
@ -348,11 +418,16 @@ classes:
|
|||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Beacon network in Rijksmuseum Gallery of Honour
|
||||
- value:
|
||||
device_id: https://nde.nl/ontology/hc/iot/rijksmuseum-climate-monitoring
|
||||
device_name: Conservation Climate Monitoring System
|
||||
device_type: IOT_SENSOR
|
||||
device_model: Sensirion SHT45
|
||||
device_manufacturer: Sensirion
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/iot/rijksmuseum-climate-monitoring
|
||||
has_or_had_label:
|
||||
has_or_had_label: Conservation Climate Monitoring System
|
||||
is_or_was_instantiated_by:
|
||||
has_or_had_type:
|
||||
has_or_had_label: Climate Sensor
|
||||
has_or_had_model:
|
||||
has_or_had_label: Sensirion SHT45
|
||||
is_or_was_created_by:
|
||||
has_or_had_label: Sensirion
|
||||
device_count: 150
|
||||
coverage_area: All galleries and storage areas
|
||||
purpose: Temperature and humidity monitoring for preservation
|
||||
|
|
@ -380,11 +455,16 @@ classes:
|
|||
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||
description: Climate monitoring sensor network at Rijksmuseum
|
||||
- value:
|
||||
device_id: https://nde.nl/ontology/hc/iot/rijksmuseum-entrance-kiosk
|
||||
device_name: Main Entrance Information Kiosks
|
||||
device_type: IOT_KIOSK
|
||||
device_model: Samsung Kiosk 24 Touch
|
||||
device_manufacturer: Samsung
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/iot/rijksmuseum-entrance-kiosk
|
||||
has_or_had_label:
|
||||
has_or_had_label: Main Entrance Information Kiosks
|
||||
is_or_was_instantiated_by:
|
||||
has_or_had_type:
|
||||
has_or_had_label: Information Kiosk
|
||||
has_or_had_model:
|
||||
has_or_had_label: Samsung Kiosk 24 Touch
|
||||
is_or_was_created_by:
|
||||
has_or_had_label: Samsung
|
||||
device_count: 4
|
||||
coverage_area: Main entrance lobby
|
||||
purpose: Self-service collection search and wayfinding for visitors
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
# IoTDevice class
|
||||
# Wrapper class linking InternetOfThings to DeviceType hierarchy
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 0 (LinkML single source of truth), 53 (migration from device_type)
|
||||
# Migration source: device_type slot per slot_fixes.yaml
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/IoTDevice
|
||||
name: iot_device_class
|
||||
title: IoTDevice Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
sosa: http://www.w3.org/ns/sosa/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_identifier
|
||||
- ./DeviceType
|
||||
- ./DeviceTypes
|
||||
|
||||
classes:
|
||||
IoTDevice:
|
||||
class_uri: sosa:Platform
|
||||
description: |
|
||||
Represents an IoT device instance with its type classification.
|
||||
|
||||
**MIGRATION SOURCE**: Created from device_type slot migration (Rule 53, 2026-01-25).
|
||||
|
||||
**Pattern**: Wraps DeviceType hierarchy for InternetOfThings class.
|
||||
- IoTDevice contains has_or_had_type → DeviceType (or subclass)
|
||||
- InternetOfThings uses is_or_was_instantiated_by → IoTDevice
|
||||
|
||||
**Structure**:
|
||||
```
|
||||
InternetOfThings
|
||||
└── is_or_was_instantiated_by → IoTDevice
|
||||
└── has_or_had_type → DeviceType subclass
|
||||
(IoTBeacon, IoTSensor, etc.)
|
||||
```
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary**: `sosa:Platform` - SOSA platform hosting sensors
|
||||
- **Close**: `schema:Product` - Schema.org product
|
||||
|
||||
exact_mappings:
|
||||
- sosa:Platform
|
||||
|
||||
close_mappings:
|
||||
- schema:Product
|
||||
|
||||
slots:
|
||||
- has_or_had_identifier
|
||||
- has_or_had_type
|
||||
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
description: Unique identifier for this IoT device instance.
|
||||
range: uriorcurie
|
||||
required: false
|
||||
has_or_had_type:
|
||||
description: |
|
||||
The type classification of this IoT device.
|
||||
Uses DeviceType hierarchy (IoTBeacon, IoTSensor, IoTKiosk, etc.)
|
||||
range: DeviceType
|
||||
required: true
|
||||
inlined: true
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: IoT devices applicable to all custodian types.
|
||||
custodian_types_primary: null
|
||||
specificity_score: 0.7
|
||||
specificity_rationale: Specific to IoT device tracking.
|
||||
|
||||
comments:
|
||||
- "CREATED from device_type migration per slot_fixes.yaml (Rule 53)"
|
||||
- "Wrapper class linking InternetOfThings to DeviceType hierarchy"
|
||||
- "Uses has_or_had_type to reference DeviceType subclasses"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_label: Bluetooth Beacon
|
||||
description: IoT beacon device
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_label: Climate Sensor
|
||||
description: IoT sensor device
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
id: https://nde.nl/ontology/hc/class/LabelType
|
||||
name: label_type_class
|
||||
title: Label Type Class
|
||||
description: |
|
||||
Abstract base class for label type taxonomy.
|
||||
Follows Rule 0b Type/Types naming pattern.
|
||||
|
||||
**USE CASES**:
|
||||
- Categorizing different kinds of labels (department codes, identifiers, names)
|
||||
- Distinguishing label purposes (official name, abbreviation, code)
|
||||
|
||||
**SUBCLASSES** (in LabelTypes.yaml):
|
||||
- DepartmentCode: Department identifier codes
|
||||
- DepartmentName: Department display names
|
||||
- OfficialName: Legal/official names
|
||||
- Abbreviation: Short form names
|
||||
imports:
|
||||
- linkml:types
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
default_prefix: hc
|
||||
classes:
|
||||
LabelType:
|
||||
class_uri: hc:LabelType
|
||||
abstract: true
|
||||
description: |
|
||||
Abstract base class for label type classifications.
|
||||
Concrete subclasses defined in LabelTypes.yaml.
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
slots:
|
||||
- type_code
|
||||
- type_name
|
||||
- type_description
|
||||
slot_usage:
|
||||
type_code:
|
||||
range: string
|
||||
required: true
|
||||
description: Short code for the label type
|
||||
examples:
|
||||
- value: "DEPT_CODE"
|
||||
description: Department code type
|
||||
type_name:
|
||||
range: string
|
||||
required: false
|
||||
description: Human-readable name for the label type
|
||||
type_description:
|
||||
range: string
|
||||
required: false
|
||||
description: Description of when to use this label type
|
||||
slots:
|
||||
type_code:
|
||||
slot_uri: hc:typeCode
|
||||
range: string
|
||||
description: Short code for the type
|
||||
type_name:
|
||||
slot_uri: hc:typeName
|
||||
range: string
|
||||
description: Human-readable name for the type
|
||||
type_description:
|
||||
slot_uri: hc:typeDescription
|
||||
range: string
|
||||
description: Description of the type
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
id: https://nde.nl/ontology/hc/class/LabelTypes
|
||||
name: label_types_classes
|
||||
title: Label Types Classes
|
||||
description: |
|
||||
Concrete subclasses for LabelType taxonomy.
|
||||
Follows Rule 0b Type/Types naming pattern.
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./LabelType
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
default_prefix: hc
|
||||
classes:
|
||||
DepartmentCodeType:
|
||||
is_a: LabelType
|
||||
class_uri: hc:DepartmentCodeType
|
||||
description: Label type for department identifier codes.
|
||||
|
||||
DepartmentNameType:
|
||||
is_a: LabelType
|
||||
class_uri: hc:DepartmentNameType
|
||||
description: Label type for department display names.
|
||||
|
||||
OfficialNameType:
|
||||
is_a: LabelType
|
||||
class_uri: hc:OfficialNameType
|
||||
description: Label type for legal/official organization names.
|
||||
|
||||
AbbreviationType:
|
||||
is_a: LabelType
|
||||
class_uri: hc:AbbreviationType
|
||||
description: Label type for abbreviations and acronyms.
|
||||
|
||||
InternalCodeType:
|
||||
is_a: LabelType
|
||||
class_uri: hc:InternalCodeType
|
||||
description: Label type for internal reference codes.
|
||||
|
||||
DisplayNameType:
|
||||
is_a: LabelType
|
||||
class_uri: hc:DisplayNameType
|
||||
description: Label type for public-facing display names.
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
id: https://nde.nl/ontology/hc/class/Manager
|
||||
name: manager_class
|
||||
title: Manager Class
|
||||
description: |
|
||||
Represents a person or role responsible for managing an organizational unit.
|
||||
|
||||
**USE CASES**:
|
||||
- Department heads and directors
|
||||
- Team leads and supervisors
|
||||
- Project managers
|
||||
|
||||
**RELATIONSHIP TO PersonObservation**:
|
||||
Manager captures the management role, which may link to a PersonObservation
|
||||
for full biographical details about the person filling the role.
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
- ../slots/has_or_had_title
|
||||
- ../slots/has_or_had_email
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
org: http://www.w3.org/ns/org#
|
||||
default_prefix: hc
|
||||
classes:
|
||||
Manager:
|
||||
class_uri: hc:Manager
|
||||
description: |
|
||||
A person or role responsible for managing an organizational unit.
|
||||
Captures name, title, and contact information for department heads.
|
||||
exact_mappings:
|
||||
- org:Head
|
||||
close_mappings:
|
||||
- schema:Person
|
||||
slots:
|
||||
- has_or_had_name
|
||||
- has_or_had_title
|
||||
- has_or_had_email
|
||||
- manager_since
|
||||
- person_reference
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
range: string
|
||||
required: true
|
||||
description: Name of the manager/department head
|
||||
examples:
|
||||
- value: "Dr. Jan de Vries"
|
||||
description: Department head name
|
||||
has_or_had_title:
|
||||
range: string
|
||||
required: false
|
||||
description: Job title of the manager
|
||||
examples:
|
||||
- value: "Head of Collections"
|
||||
description: Department head title
|
||||
- value: "Director of Archives"
|
||||
description: Senior management title
|
||||
has_or_had_email:
|
||||
range: string
|
||||
required: false
|
||||
description: Contact email for the manager
|
||||
manager_since:
|
||||
range: date
|
||||
required: false
|
||||
description: Date when person became manager of this unit
|
||||
person_reference:
|
||||
range: uriorcurie
|
||||
required: false
|
||||
description: Reference to full PersonObservation record if available
|
||||
slots:
|
||||
manager_since:
|
||||
slot_uri: hc:managerSince
|
||||
range: date
|
||||
description: Date when person became manager
|
||||
person_reference:
|
||||
slot_uri: hc:personReference
|
||||
range: uriorcurie
|
||||
description: Reference to PersonObservation record
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
# Manufacturer class
|
||||
# Represents a manufacturer or producer of devices/products
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 0 (LinkML single source of truth), 53 (migration from device_manufacturer)
|
||||
# Migration source: device_manufacturer slot per slot_fixes.yaml
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Manufacturer
|
||||
name: manufacturer_class
|
||||
title: Manufacturer Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
schema: http://schema.org/
|
||||
org: http://www.w3.org/ns/org#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_url
|
||||
- ../slots/has_or_had_identifier
|
||||
- ./URL
|
||||
|
||||
classes:
|
||||
Manufacturer:
|
||||
class_uri: schema:Organization
|
||||
description: |
|
||||
Represents a manufacturer or producer of devices, equipment, or products.
|
||||
|
||||
**MIGRATION SOURCE**: Created from device_manufacturer slot migration (Rule 53, 2026-01-25).
|
||||
|
||||
**Pattern**: Simple string manufacturer name replaced with structured class:
|
||||
- has_or_had_label: Manufacturer name (String or Label)
|
||||
- has_or_had_url: Manufacturer website (URL)
|
||||
- has_or_had_identifier: Unique identifier
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary**: `schema:Organization` - Schema.org organization
|
||||
- **Close**: `org:Organization` - W3C ORG organization
|
||||
- **Related**: `prov:Agent` - PROV-O agent responsible for production
|
||||
|
||||
**Use Cases**:
|
||||
- IoT device manufacturers (Estimote, Sensirion, Samsung)
|
||||
- Equipment vendors
|
||||
- Technology providers
|
||||
|
||||
**Relationship to InternetOfThings**:
|
||||
```
|
||||
InternetOfThings
|
||||
└── is_or_was_created_by → Manufacturer
|
||||
├── has_or_had_label → "Estimote"
|
||||
└── has_or_had_url → URL
|
||||
```
|
||||
|
||||
exact_mappings:
|
||||
- schema:Organization
|
||||
|
||||
close_mappings:
|
||||
- org:Organization
|
||||
- prov:Agent
|
||||
|
||||
slots:
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
- has_or_had_url
|
||||
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
description: Unique identifier for this manufacturer.
|
||||
range: uriorcurie
|
||||
required: false
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/manufacturer/estimote
|
||||
description: Estimote manufacturer identifier
|
||||
has_or_had_label:
|
||||
description: Name of the manufacturer.
|
||||
range: string
|
||||
required: true
|
||||
examples:
|
||||
- value: Estimote
|
||||
description: Beacon manufacturer
|
||||
- value: Sensirion
|
||||
description: Sensor manufacturer
|
||||
- value: Samsung
|
||||
description: Kiosk manufacturer
|
||||
has_or_had_url:
|
||||
description: Manufacturer website.
|
||||
range: URL
|
||||
inlined: true
|
||||
required: false
|
||||
examples:
|
||||
- value:
|
||||
url_value: https://estimote.com/
|
||||
description: Estimote website
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Manufacturers applicable to all custodian types using technology.
|
||||
custodian_types_primary: null
|
||||
specificity_score: 0.6
|
||||
specificity_rationale: Specific to equipment and technology tracking.
|
||||
|
||||
comments:
|
||||
- "CREATED from device_manufacturer migration per slot_fixes.yaml (Rule 53)"
|
||||
- "Schema.org Organization for manufacturer representation"
|
||||
- "Enables structured manufacturer data with website and identifier"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/manufacturer/estimote
|
||||
has_or_had_label: Estimote
|
||||
has_or_had_url:
|
||||
url_value: https://estimote.com/
|
||||
description: Estimote beacon manufacturer
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/manufacturer/sensirion
|
||||
has_or_had_label: Sensirion
|
||||
has_or_had_url:
|
||||
url_value: https://sensirion.com/
|
||||
description: Sensirion sensor manufacturer
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
# Model class
|
||||
# Represents a product model or design variant
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 0 (LinkML single source of truth), 53 (migration from device_model)
|
||||
# Migration source: device_model slot per slot_fixes.yaml
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Model
|
||||
name: model_class
|
||||
title: Model Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_identifier
|
||||
|
||||
classes:
|
||||
Model:
|
||||
class_uri: schema:ProductModel
|
||||
description: |
|
||||
Represents a product model or design variant.
|
||||
|
||||
**MIGRATION SOURCE**: Created from device_model slot migration (Rule 53, 2026-01-25).
|
||||
|
||||
**Pattern**: Simple string model name replaced with structured class:
|
||||
- has_or_had_label: Model name/designation
|
||||
- has_or_had_identifier: Model number or SKU
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary**: `schema:ProductModel` - Schema.org product model
|
||||
|
||||
**Use Cases**:
|
||||
- IoT device models (Estimote Proximity Beacon, Sensirion SHT45)
|
||||
- Equipment model variants
|
||||
- Hardware versions
|
||||
|
||||
**Relationship to InternetOfThings**:
|
||||
```
|
||||
InternetOfThings
|
||||
└── has_or_had_model → Model
|
||||
├── has_or_had_label → "Estimote Proximity Beacon"
|
||||
└── has_or_had_identifier → "EPB-v3.0"
|
||||
```
|
||||
|
||||
exact_mappings:
|
||||
- schema:ProductModel
|
||||
|
||||
slots:
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
description: Model number, SKU, or unique identifier for this model.
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: EPB-v3.0
|
||||
description: Estimote Proximity Beacon version 3.0
|
||||
- value: SHT45-AD1B-R2
|
||||
description: Sensirion sensor model number
|
||||
has_or_had_label:
|
||||
description: Name or designation of the model.
|
||||
range: string
|
||||
required: true
|
||||
examples:
|
||||
- value: Estimote Proximity Beacon
|
||||
description: Beacon model name
|
||||
- value: Sensirion SHT45
|
||||
description: Sensor model name
|
||||
- value: Samsung Kiosk 24 Touch
|
||||
description: Kiosk model name
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Product models applicable to all custodian types using equipment.
|
||||
custodian_types_primary: null
|
||||
specificity_score: 0.6
|
||||
specificity_rationale: Specific to equipment and technology tracking.
|
||||
|
||||
comments:
|
||||
- "CREATED from device_model migration per slot_fixes.yaml (Rule 53)"
|
||||
- "Schema.org ProductModel for model representation"
|
||||
- "Enables structured model data with name and identifier"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_identifier: EPB-v3.0
|
||||
has_or_had_label: Estimote Proximity Beacon
|
||||
description: Estimote beacon model
|
||||
- value:
|
||||
has_or_had_identifier: SHT45-AD1B-R2
|
||||
has_or_had_label: Sensirion SHT45
|
||||
description: Sensirion sensor model
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
# Observation class
|
||||
# Abstract base class for observational evidence
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 0 (LinkML single source of truth), 53 (migration from derived_from_observation)
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Observation
|
||||
name: observation_class
|
||||
title: Observation Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
pico: https://personsincontext.org/model#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
|
||||
classes:
|
||||
Observation:
|
||||
class_uri: pico:Observation
|
||||
description: |
|
||||
Abstract base class for observational evidence from sources.
|
||||
|
||||
**Purpose**:
|
||||
Observation is the base class for source-based evidence about entities.
|
||||
Concrete implementations include:
|
||||
- CustodianObservation - Evidence about heritage custodians
|
||||
- PersonObservation - Evidence about people (staff, directors)
|
||||
- WebObservation - Evidence from web scraping
|
||||
|
||||
**PiCo Model Alignment**:
|
||||
Following the Persons in Context (PiCo) model, observations are
|
||||
discrete pieces of evidence from specific sources that may be
|
||||
combined to reconstruct formal entities.
|
||||
|
||||
**PROV-O Semantics**:
|
||||
- `prov:Entity`: Observations are things with provenance
|
||||
- `is_or_was_based_on`: Links derived entities back to observations
|
||||
|
||||
**Relationship to EntityReconstruction**:
|
||||
```
|
||||
Observation[] (source evidence)
|
||||
│
|
||||
└── is_or_was_based_on ← EntityReconstruction
|
||||
(reconstructed formal entity)
|
||||
```
|
||||
|
||||
exact_mappings:
|
||||
- pico:Observation
|
||||
- prov:Entity
|
||||
|
||||
close_mappings:
|
||||
- crm:E13_Attribute_Assignment
|
||||
|
||||
abstract: true
|
||||
|
||||
slots:
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Abstract base class for all observations.
|
||||
custodian_types_primary: null
|
||||
specificity_score: 0.4
|
||||
specificity_rationale: Broad base class for observational evidence.
|
||||
|
||||
comments:
|
||||
- "MIGRATED: supports derived_from_observation → is_or_was_based_on (Rule 53)"
|
||||
- "Abstract base for observational evidence"
|
||||
- "PiCo model Observation pattern"
|
||||
- "Subtypes: CustodianObservation, PersonObservation, WebObservation"
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
id: https://nde.nl/ontology/hc/class/Price
|
||||
name: Price
|
||||
title: Price
|
||||
description: |
|
||||
Represents price or pricing information with value, currency, and optional range.
|
||||
|
||||
This class supports:
|
||||
- Exact prices (e.g., €15.00 admission)
|
||||
- Price ranges (e.g., € to €€€€ for restaurants)
|
||||
- Price categories (budget, moderate, premium)
|
||||
|
||||
Created per slot_fixes.yaml revision for catering_price_range migration (Rule 53/56).
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
gr: http://purl.org/goodrelations/v1#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_value
|
||||
- ../slots/has_or_had_currency
|
||||
- ../slots/has_or_had_type
|
||||
- ./Currency
|
||||
- ./PriceRange
|
||||
default_prefix: hc
|
||||
classes:
|
||||
Price:
|
||||
class_uri: schema:PriceSpecification
|
||||
description: |
|
||||
Price information including value, currency, and optional range/category.
|
||||
|
||||
For catering and services, price ranges use symbolic notation:
|
||||
- € (budget): Under €15 per person
|
||||
- €€ (moderate): €15-30 per person
|
||||
- €€€ (upscale): €30-60 per person
|
||||
- €€€€ (luxury): Over €60 per person
|
||||
slots:
|
||||
- has_or_had_value
|
||||
- has_or_had_currency
|
||||
- has_or_had_type
|
||||
slot_usage:
|
||||
has_or_had_value:
|
||||
description: |
|
||||
The price value. Can be:
|
||||
- Numeric (e.g., "15.00")
|
||||
- Symbolic (e.g., "€€€")
|
||||
- Descriptive (e.g., "free", "donation suggested")
|
||||
has_or_had_currency:
|
||||
description: The currency for this price (e.g., EUR, USD, GBP).
|
||||
range: Currency
|
||||
inlined: true
|
||||
has_or_had_type:
|
||||
description: Price range classification (budget, moderate, premium, luxury).
|
||||
range: PriceRange
|
||||
inlined: true
|
||||
exact_mappings:
|
||||
- schema:PriceSpecification
|
||||
- gr:PriceSpecification
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_value: "€€€€"
|
||||
has_or_had_type:
|
||||
has_or_had_name: Luxury
|
||||
has_or_had_description: Over €60 per person
|
||||
description: Luxury restaurant price range
|
||||
- value:
|
||||
has_or_had_value: "€"
|
||||
has_or_had_type:
|
||||
has_or_had_name: Budget
|
||||
has_or_had_description: Under €15 per person
|
||||
description: Budget cafe price range
|
||||
- value:
|
||||
has_or_had_value: "15.00"
|
||||
has_or_had_currency:
|
||||
has_or_had_code: EUR
|
||||
has_or_had_symbol: €
|
||||
description: Exact admission price
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
id: https://nde.nl/ontology/hc/class/PriceRange
|
||||
name: PriceRange
|
||||
title: Price Range
|
||||
description: |
|
||||
Represents a price range or price category classification.
|
||||
|
||||
This class provides structured metadata for price level indicators
|
||||
commonly used for restaurants, cafes, and other hospitality services.
|
||||
|
||||
Created per slot_fixes.yaml revision for catering_price_range migration (Rule 53/56).
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_symbol
|
||||
default_prefix: hc
|
||||
classes:
|
||||
PriceRange:
|
||||
class_uri: skos:Concept
|
||||
description: |
|
||||
A price range or category classification.
|
||||
|
||||
Standard price range categories:
|
||||
- Budget (€): Under €15 per person
|
||||
- Moderate (€€): €15-30 per person
|
||||
- Upscale (€€€): €30-60 per person
|
||||
- Luxury (€€€€): Over €60 per person
|
||||
- Free: No charge
|
||||
- Donation: Suggested donation
|
||||
slots:
|
||||
- has_or_had_name
|
||||
- has_or_had_description
|
||||
- has_or_had_symbol
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
description: Name of this price range (e.g., "Budget", "Luxury").
|
||||
required: true
|
||||
has_or_had_symbol:
|
||||
description: Symbolic representation (e.g., "€", "€€€€").
|
||||
has_or_had_description:
|
||||
description: Description of what this price range means.
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
- schema:priceRange
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_name: Budget
|
||||
has_or_had_symbol: €
|
||||
has_or_had_description: Under €15 per person
|
||||
description: Budget price range
|
||||
- value:
|
||||
has_or_had_name: Moderate
|
||||
has_or_had_symbol: €€
|
||||
has_or_had_description: €15-30 per person
|
||||
description: Moderate price range
|
||||
- value:
|
||||
has_or_had_name: Upscale
|
||||
has_or_had_symbol: €€€
|
||||
has_or_had_description: €30-60 per person
|
||||
description: Upscale price range
|
||||
- value:
|
||||
has_or_had_name: Luxury
|
||||
has_or_had_symbol: €€€€
|
||||
has_or_had_description: Over €60 per person
|
||||
description: Luxury price range
|
||||
|
|
@ -22,7 +22,9 @@ imports:
|
|||
- ./TemplateSpecificityTypes
|
||||
# Slot imports - migrated to RiC-O style (2026-01-16 per Rule 53)
|
||||
- ../slots/contact_email
|
||||
- ../slots/deliverable
|
||||
# MIGRATED 2026-01-24: deliverable → has_or_had_objective + Deliverable (Rule 53)
|
||||
- ../slots/has_or_had_objective
|
||||
- ./Deliverable
|
||||
- ../slots/documentation_url
|
||||
- ../slots/end_date
|
||||
- ../slots/funding_amount
|
||||
|
|
@ -92,7 +94,8 @@ classes:
|
|||
- schema:Grant
|
||||
slots:
|
||||
- contact_email
|
||||
- deliverable
|
||||
# MIGRATED 2026-01-24: deliverable → has_or_had_objective + Deliverable (Rule 53)
|
||||
- has_or_had_objective
|
||||
- documentation_url
|
||||
- end_date
|
||||
- funding_amount
|
||||
|
|
@ -209,15 +212,35 @@ classes:
|
|||
- value: Onboard 50 heritage institutions to NDE infrastructure
|
||||
- value: Create standardized metadata mappings for 10M records
|
||||
- value: Develop open source tools for digital preservation
|
||||
deliverable:
|
||||
range: string
|
||||
# MIGRATED 2026-01-24: deliverable → has_or_had_objective + Deliverable (Rule 53)
|
||||
has_or_had_objective:
|
||||
description: |
|
||||
MIGRATED from deliverable per slot_fixes.yaml (Rule 53, 2026-01-24).
|
||||
Project deliverables as structured Deliverable objects.
|
||||
Each deliverable captures type, title, URL, and completion status.
|
||||
range: Deliverable
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
required: false
|
||||
examples:
|
||||
- value: Technical implementation guide (published)
|
||||
- value: Training curriculum for digital preservation
|
||||
- value: Aggregated dataset of 5M heritage objects
|
||||
- value: Open source metadata normalization tool
|
||||
- value:
|
||||
deliverable_type: "report"
|
||||
deliverable_title: "Technical implementation guide"
|
||||
completion_status: "completed"
|
||||
description: Published technical guide (migrated from deliverable)
|
||||
- value:
|
||||
deliverable_type: "dataset"
|
||||
deliverable_title: "Aggregated dataset of 5M heritage objects"
|
||||
deliverable_url: "https://doi.org/10.1234/dataset"
|
||||
completion_status: "completed"
|
||||
description: Dataset deliverable with DOI
|
||||
- value:
|
||||
deliverable_type: "software"
|
||||
deliverable_title: "Open source metadata normalization tool"
|
||||
deliverable_url: "https://github.com/nde-project/tool"
|
||||
completion_status: "completed"
|
||||
description: Software tool deliverable
|
||||
organizing_body:
|
||||
required: true
|
||||
range: uriorcurie
|
||||
|
|
@ -308,11 +331,20 @@ classes:
|
|||
- Achieve IIIF compliance for 15 participating organizations
|
||||
- Publish 2M heritage objects as Linked Open Data
|
||||
- Train 200 heritage professionals in digital preservation
|
||||
deliverable:
|
||||
- Individual implementation roadmaps for each participant
|
||||
- Technical documentation and best practices guide
|
||||
- Training curriculum and workshop materials
|
||||
- Case study reports from participating institutions
|
||||
# MIGRATED 2026-01-24: deliverable → has_or_had_objective + Deliverable (Rule 53)
|
||||
has_or_had_objective:
|
||||
- deliverable_title: "Individual implementation roadmaps for each participant"
|
||||
deliverable_type: "report"
|
||||
completion_status: "completed"
|
||||
- deliverable_title: "Technical documentation and best practices guide"
|
||||
deliverable_type: "report"
|
||||
completion_status: "completed"
|
||||
- deliverable_title: "Training curriculum and workshop materials"
|
||||
deliverable_type: "training_materials"
|
||||
completion_status: "completed"
|
||||
- deliverable_title: "Case study reports from participating institutions"
|
||||
deliverable_type: "report"
|
||||
completion_status: "completed"
|
||||
organizing_body: https://nde.nl/ontology/hc/encompassing-body/network/nde
|
||||
participating_custodian:
|
||||
- https://nde.nl/ontology/hc/nl-nh-ams-m-am
|
||||
|
|
|
|||
|
|
@ -0,0 +1,117 @@
|
|||
id: https://nde.nl/ontology/hc/class/Resolution
|
||||
name: resolution_class
|
||||
title: Resolution Class
|
||||
description: |
|
||||
Represents resolution or quality specifications for media content.
|
||||
|
||||
**USE CASES**:
|
||||
- Video quality levels (SD, HD, 720p, 1080p, 4K, 8K)
|
||||
- Image resolution (width x height in pixels)
|
||||
- Display resolution specifications
|
||||
|
||||
**PROPERTIES**:
|
||||
- resolution_type: Type of resolution (video, image, display)
|
||||
- resolution_label: Standard label (HD, 4K, etc.)
|
||||
- width_pixels: Horizontal resolution
|
||||
- height_pixels: Vertical resolution
|
||||
- has_or_had_quantity: Structured numeric values
|
||||
- has_or_had_unit: Unit of measurement (pixels, DPI)
|
||||
|
||||
**STANDARD VIDEO RESOLUTIONS**:
|
||||
| Label | Resolution | Aspect Ratio |
|
||||
|-------|------------|--------------|
|
||||
| SD | 640x480 | 4:3 |
|
||||
| HD (720p) | 1280x720 | 16:9 |
|
||||
| Full HD (1080p) | 1920x1080 | 16:9 |
|
||||
| 4K (UHD) | 3840x2160 | 16:9 |
|
||||
| 8K | 7680x4320 | 16:9 |
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_quantity
|
||||
- ../slots/has_or_had_unit
|
||||
- ./Quantity
|
||||
- ./Unit
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
default_prefix: hc
|
||||
classes:
|
||||
Resolution:
|
||||
class_uri: hc:Resolution
|
||||
description: |
|
||||
Resolution or quality specifications for media content.
|
||||
Captures both quality labels (HD, 4K) and pixel dimensions.
|
||||
exact_mappings:
|
||||
- schema:videoQuality
|
||||
slots:
|
||||
- resolution_type
|
||||
- resolution_label
|
||||
- width_pixels
|
||||
- height_pixels
|
||||
- has_or_had_quantity
|
||||
- has_or_had_unit
|
||||
slot_usage:
|
||||
resolution_type:
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: "video"
|
||||
description: Video resolution
|
||||
- value: "image"
|
||||
description: Image resolution
|
||||
resolution_label:
|
||||
range: string
|
||||
required: false
|
||||
description: Standard quality label
|
||||
examples:
|
||||
- value: "hd"
|
||||
description: High definition (720p/1080p)
|
||||
- value: "sd"
|
||||
description: Standard definition
|
||||
- value: "4k"
|
||||
description: 4K Ultra HD
|
||||
- value: "8k"
|
||||
description: 8K resolution
|
||||
width_pixels:
|
||||
range: integer
|
||||
required: false
|
||||
description: Horizontal resolution in pixels
|
||||
examples:
|
||||
- value: 1920
|
||||
description: Full HD width
|
||||
height_pixels:
|
||||
range: integer
|
||||
required: false
|
||||
description: Vertical resolution in pixels
|
||||
examples:
|
||||
- value: 1080
|
||||
description: Full HD height
|
||||
has_or_had_quantity:
|
||||
range: Quantity
|
||||
inlined: true
|
||||
multivalued: true
|
||||
required: false
|
||||
description: Structured numeric values for resolution
|
||||
has_or_had_unit:
|
||||
range: Unit
|
||||
inlined: true
|
||||
required: false
|
||||
description: Unit of measurement (pixels, DPI)
|
||||
slots:
|
||||
resolution_type:
|
||||
slot_uri: hc:resolutionType
|
||||
range: string
|
||||
description: Type of resolution (video, image, display)
|
||||
resolution_label:
|
||||
slot_uri: hc:resolutionLabel
|
||||
range: string
|
||||
description: Standard quality label (SD, HD, 4K, etc.)
|
||||
width_pixels:
|
||||
slot_uri: hc:widthPixels
|
||||
range: integer
|
||||
description: Horizontal resolution in pixels
|
||||
height_pixels:
|
||||
slot_uri: hc:heightPixels
|
||||
range: integer
|
||||
description: Vertical resolution in pixels
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
# Status class
|
||||
# Generic status representation for various entities
|
||||
#
|
||||
# Generation date: 2026-01-23
|
||||
# Rule compliance: 53 (slot_fixes.yaml)
|
||||
#
|
||||
# Created for migrations: default_audio_language, default_language
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Status
|
||||
name: status_class
|
||||
title: Status Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/is_default
|
||||
|
||||
classes:
|
||||
Status:
|
||||
class_uri: schema:PropertyValue
|
||||
description: |
|
||||
Generic status or state representation for various entities.
|
||||
|
||||
**Purpose**:
|
||||
Provides structured representation of status information,
|
||||
particularly for indicating default/primary states.
|
||||
|
||||
**Use Cases**:
|
||||
- Default language status (is_default: true)
|
||||
- Processing status
|
||||
- Availability status
|
||||
- Publication status
|
||||
|
||||
**Migration Note**:
|
||||
Created per slot_fixes.yaml revision for default_audio_language
|
||||
and default_language migrations.
|
||||
|
||||
exact_mappings:
|
||||
- schema:PropertyValue
|
||||
|
||||
close_mappings:
|
||||
- prov:Entity
|
||||
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- is_default
|
||||
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
description: Type of status (e.g., DEFAULT, PRIMARY, SECONDARY)
|
||||
range: string
|
||||
has_or_had_label:
|
||||
description: Human-readable label for the status
|
||||
range: string
|
||||
is_default:
|
||||
description: Whether this represents a default/primary status
|
||||
range: boolean
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Generic status applicable to all entity types.
|
||||
specificity_score: 0.20
|
||||
specificity_rationale: Very broadly applicable generic class.
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_type: DEFAULT
|
||||
has_or_had_label: "Default Language"
|
||||
is_default: true
|
||||
description: Default language status
|
||||
- value:
|
||||
has_or_had_type: SECONDARY
|
||||
has_or_had_label: "Alternative Audio"
|
||||
is_default: false
|
||||
description: Non-default status
|
||||
|
|
@ -15,7 +15,8 @@ imports:
|
|||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/jurisdiction
|
||||
- ../slots/deduction_percentage
|
||||
- ../slots/offers_or_offered # was: deduction_percentage - migrated per Rule 53 (2026-01-23)
|
||||
- ./TaxDeductibility # Range for offers_or_offered
|
||||
- ../slots/regulatory_body
|
||||
- ../slots/legal_basis
|
||||
- ../slots/effective_date
|
||||
|
|
@ -71,7 +72,7 @@ classes:
|
|||
│
|
||||
├── jurisdiction ──→ "NL"
|
||||
│
|
||||
├── deduction_percentage ──→ 125
|
||||
├── offers_or_offered ──→ TaxDeductibility (with percentage)
|
||||
│
|
||||
├── regulatory_body ──→ "Belastingdienst"
|
||||
│
|
||||
|
|
@ -98,7 +99,7 @@ classes:
|
|||
- has_or_had_description
|
||||
- has_or_had_identifier
|
||||
- jurisdiction
|
||||
- deduction_percentage
|
||||
- offers_or_offered # was: deduction_percentage - migrated per Rule 53 (2026-01-23)
|
||||
- regulatory_body
|
||||
- legal_basis
|
||||
- effective_date
|
||||
|
|
@ -152,18 +153,30 @@ classes:
|
|||
description: United States
|
||||
- value: DE
|
||||
description: Germany
|
||||
deduction_percentage:
|
||||
range: integer
|
||||
offers_or_offered: # was: deduction_percentage - migrated per Rule 53 (2026-01-23)
|
||||
range: TaxDeductibility
|
||||
inlined: true
|
||||
multivalued: true
|
||||
description: |
|
||||
Percentage of donation that is tax-deductible (100 = full deduction).
|
||||
Tax deductibility offering provided by this scheme.
|
||||
MIGRATED from deduction_percentage per slot_fixes.yaml (Rule 53).
|
||||
Uses TaxDeductibility class with has_or_had_percentage for percentage.
|
||||
Values over 100 indicate enhanced cultural multipliers.
|
||||
examples:
|
||||
- value: 100
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_label: "Fully Deductible"
|
||||
has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
percentage_display: "100%"
|
||||
description: Standard 100% deduction
|
||||
- value: 125
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_label: "Enhanced Cultural"
|
||||
has_or_had_percentage:
|
||||
percentage_value: 125
|
||||
percentage_display: "125%"
|
||||
description: Cultural ANBI 125% enhanced deduction
|
||||
- value: 66
|
||||
description: French individual 66% reduction
|
||||
regulatory_body:
|
||||
range: string
|
||||
description: |
|
||||
|
|
@ -213,7 +226,12 @@ classes:
|
|||
with 125% tax deduction (100% standard + 25% cultural bonus).
|
||||
has_or_had_identifier: "RSIN 002006066"
|
||||
jurisdiction: NL
|
||||
deduction_percentage: 125
|
||||
offers_or_offered:
|
||||
- has_or_had_type:
|
||||
has_or_had_label: "Enhanced Cultural Deductibility"
|
||||
has_or_had_percentage:
|
||||
percentage_value: 125
|
||||
percentage_display: "125%"
|
||||
regulatory_body: Belastingdienst
|
||||
legal_basis: Wet inkomstenbelasting 2001, Art. 6.39a
|
||||
effective_date: "2008-01-01"
|
||||
|
|
@ -226,7 +244,12 @@ classes:
|
|||
to reclaim 25p for every £1 donated by UK taxpayers.
|
||||
has_or_had_identifier: "Charity No. 1034686"
|
||||
jurisdiction: UK
|
||||
deduction_percentage: 100
|
||||
offers_or_offered:
|
||||
- has_or_had_type:
|
||||
has_or_had_label: "Fully Deductible"
|
||||
has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
percentage_display: "100%"
|
||||
regulatory_body: HMRC
|
||||
legal_basis: Finance Act 1990
|
||||
effective_date: "1990-10-01"
|
||||
|
|
@ -239,7 +262,12 @@ classes:
|
|||
allowing donors to deduct contributions on federal income taxes.
|
||||
has_or_had_identifier: "EIN 53-0206027"
|
||||
jurisdiction: US
|
||||
deduction_percentage: 100
|
||||
offers_or_offered:
|
||||
- has_or_had_type:
|
||||
has_or_had_label: "Fully Deductible"
|
||||
has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
percentage_display: "100%"
|
||||
regulatory_body: IRS
|
||||
legal_basis: Internal Revenue Code Section 501(c)(3)
|
||||
description: Smithsonian Institution 501(c)(3) status
|
||||
|
|
|
|||
|
|
@ -1,4 +1,13 @@
|
|||
id: https://nde.nl/ontology/hc/class/TaxSchemeTypes
|
||||
# TaxSchemeTypes.yaml - Concrete subclasses of TaxSchemeType (Rule 0b)
|
||||
#
|
||||
# NOTE (2026-01-24): Class annotations like `deduction_percentage: 125` are METADATA
|
||||
# about the tax scheme type class, describing its characteristics. For INSTANCE data
|
||||
# on TaxScheme objects, use `offers_or_offered` slot with TaxDeductibility class
|
||||
# per slot_fixes.yaml migration (Rule 53).
|
||||
#
|
||||
# See: TaxScheme.yaml for slot-level usage with offers_or_offered
|
||||
|
||||
name: TaxSchemeTypes
|
||||
title: Tax Scheme Type Taxonomy
|
||||
prefixes:
|
||||
|
|
|
|||
|
|
@ -10,8 +10,11 @@ imports:
|
|||
- ../slots/has_annotation_motivation
|
||||
- ../slots/has_annotation_segment
|
||||
- ../slots/has_annotation_type
|
||||
- ../slots/detection_count
|
||||
- ../slots/detection_threshold
|
||||
# MIGRATED 2026-01-25: detection_count, detection_threshold → filters_or_filtered + DetectedEntity + Quantity/DetectionThreshold (Rule 53)
|
||||
- ../slots/filters_or_filtered
|
||||
- ./DetectedEntity
|
||||
- ./DetectionThreshold
|
||||
- ../slots/has_or_had_treshold
|
||||
# MIGRATED 2026-01-22: frame_sample_rate → analyzes_or_analyzed + VideoFrame + has_or_had_quantity + Quantity (Rule 53)
|
||||
- ./VideoFrame
|
||||
- ../slots/has_or_had_quantity
|
||||
|
|
@ -79,8 +82,8 @@ classes:
|
|||
- has_annotation_motivation
|
||||
- has_annotation_segment
|
||||
- has_annotation_type
|
||||
- detection_count
|
||||
- detection_threshold
|
||||
# MIGRATED 2026-01-25: detection_count, detection_threshold → filters_or_filtered (Rule 53)
|
||||
- filters_or_filtered
|
||||
# REMOVED 2026-01-22: frame_sample_rate - migrated to analyzes_or_analyzed + VideoFrame + has_or_had_quantity (Rule 53)
|
||||
- includes_bounding_box
|
||||
- includes_segmentation_mask
|
||||
|
|
@ -105,21 +108,43 @@ classes:
|
|||
examples:
|
||||
- value: '[{start_seconds: 30.0, end_seconds: 35.0, segment_text: ''Night Watch painting visible''}]'
|
||||
description: Object detection segment
|
||||
detection_threshold:
|
||||
range: float
|
||||
# DEPRECATED 2026-01-25: detection_threshold, detection_count → filters_or_filtered + DetectedEntity (Rule 53)
|
||||
# Old: detection_threshold: 0.5, detection_count: 342
|
||||
# New: filters_or_filtered with DetectedEntity containing Quantity and DetectionThreshold
|
||||
filters_or_filtered:
|
||||
description: |
|
||||
MIGRATED 2026-01-25: Replaces detection_count and detection_threshold slots.
|
||||
|
||||
Links to DetectedEntity which contains:
|
||||
- has_or_had_quantity → Quantity (for detection_count)
|
||||
- has_or_had_treshold → DetectionThreshold (for detection_threshold)
|
||||
|
||||
**Migration Pattern**:
|
||||
- Old: detection_count: 342, detection_threshold: 0.5
|
||||
- New: filters_or_filtered → DetectedEntity with structured data
|
||||
range: DetectedEntity
|
||||
inlined: true
|
||||
required: false
|
||||
minimum_value: 0.0
|
||||
maximum_value: 1.0
|
||||
examples:
|
||||
- value: 0.5
|
||||
description: Standard detection threshold
|
||||
detection_count:
|
||||
range: integer
|
||||
required: false
|
||||
minimum_value: 0
|
||||
examples:
|
||||
- value: 342
|
||||
description: 342 total detections found
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
quantity_value: 342
|
||||
has_or_had_unit:
|
||||
unit_value: "detections"
|
||||
has_or_had_treshold:
|
||||
threshold_value: 0.5
|
||||
threshold_type: MINIMUM
|
||||
description: "342 detections at 0.5 confidence threshold"
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
quantity_value: 89
|
||||
has_or_had_unit:
|
||||
unit_value: "detections"
|
||||
has_or_had_treshold:
|
||||
threshold_value: 0.9
|
||||
threshold_type: MINIMUM
|
||||
has_or_had_label: "High Precision"
|
||||
description: "89 high-confidence detections"
|
||||
# MIGRATED 2026-01-22: frame_sample_rate → analyzes_or_analyzed + VideoFrame + has_or_had_quantity (Rule 53)
|
||||
# frame_sample_rate:
|
||||
# range: float
|
||||
|
|
|
|||
|
|
@ -15,7 +15,13 @@ imports:
|
|||
- ../slots/has_or_had_detected_logo
|
||||
- ../slots/has_or_had_detected_object
|
||||
- ../slots/has_or_had_quantity
|
||||
- ../slots/detection_level
|
||||
# MIGRATED 2026-01-25: detection_level → filters_or_filtered + has_or_had_type + DetectionLevelType (Rule 53)
|
||||
- ../slots/filters_or_filtered
|
||||
- ./DetectedEntity
|
||||
- ../slots/has_or_had_type
|
||||
- ./DetectionLevelType
|
||||
- ./DetectionLevelTypes
|
||||
- ../slots/includes_or_included
|
||||
- ../slots/dissolve_count
|
||||
- ../slots/face_bbox
|
||||
- ../slots/face_confidence
|
||||
|
|
@ -197,7 +203,8 @@ classes:
|
|||
slots:
|
||||
- has_average_scene_duration_seconds
|
||||
- has_or_had_quantity # was: cut_count - migrated per Rule 53 (2026-01-22)
|
||||
- detection_level
|
||||
# MIGRATED 2026-01-25: detection_level → filters_or_filtered + DetectionLevelType (Rule 53)
|
||||
- filters_or_filtered
|
||||
- dissolve_count
|
||||
- fade_count
|
||||
- scene_count
|
||||
|
|
@ -229,12 +236,33 @@ classes:
|
|||
examples:
|
||||
- value: 8.5
|
||||
description: Average scene is 8.5 seconds
|
||||
detection_level:
|
||||
range: DetectionLevelEnum
|
||||
# DEPRECATED 2026-01-25: detection_level → filters_or_filtered + DetectedEntity + DetectionLevelType (Rule 53)
|
||||
# Old: detection_level: SCENE
|
||||
# New: filters_or_filtered with has_or_had_type → DetectionLevelType
|
||||
filters_or_filtered:
|
||||
description: |
|
||||
MIGRATED 2026-01-25: Replaces detection_level slot.
|
||||
|
||||
Links to DetectedEntity which contains:
|
||||
- has_or_had_type → DetectionLevelType (SCENE, SHOT, etc.)
|
||||
|
||||
**Migration Pattern**:
|
||||
- Old: detection_level: SCENE
|
||||
- New: filters_or_filtered → DetectedEntity with has_or_had_type
|
||||
range: DetectedEntity
|
||||
inlined: true
|
||||
required: true
|
||||
examples:
|
||||
- value: SCENE
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_code: SCENE
|
||||
has_or_had_label: "Scene Level Detection"
|
||||
description: Semantic scene detection
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_code: SHOT
|
||||
has_or_had_label: "Shot Level Detection"
|
||||
description: Technical shot boundary detection
|
||||
scene_types_detected:
|
||||
range: SceneTypeEnum
|
||||
multivalued: true
|
||||
|
|
|
|||
|
|
@ -38,8 +38,11 @@ imports:
|
|||
- ../slots/was_fetched_at
|
||||
- ../slots/is_or_was_part_of_total
|
||||
- ./SourceCommentCount
|
||||
- ../slots/default_audio_language
|
||||
- ../slots/default_language
|
||||
# MIGRATED 2026-01-23: default_audio_language, default_language → has_or_had_language + Language + has_or_had_status + Status
|
||||
- ../slots/has_or_had_language
|
||||
- ./Language
|
||||
- ../slots/has_or_had_status
|
||||
- ./Status
|
||||
- ../slots/dislike_count
|
||||
- ../slots/duration
|
||||
- ../slots/favorite_count
|
||||
|
|
@ -70,7 +73,9 @@ imports:
|
|||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/definition
|
||||
# MIGRATED 2026-01-24: definition → has_or_had_resolution + Resolution (Rule 53)
|
||||
- ../slots/has_or_had_resolution
|
||||
- ./Resolution
|
||||
- ../slots/has_available_caption_language
|
||||
- ../enums/VideoDefinitionEnum
|
||||
- ../enums/LiveBroadcastStatusEnum
|
||||
|
|
@ -231,9 +236,11 @@ classes:
|
|||
# REMOVED 2026-01-22: comments_fetched - migrated to was_fetched_at + is_or_was_part_of_total + SourceCommentCount (Rule 53)
|
||||
- was_fetched_at
|
||||
- is_or_was_part_of_total
|
||||
- default_audio_language
|
||||
- default_language
|
||||
- definition
|
||||
# MIGRATED 2026-01-23: default_audio_language, default_language → has_or_had_language + has_or_had_status (Rule 53)
|
||||
- has_or_had_language
|
||||
- has_or_had_status
|
||||
# MIGRATED 2026-01-24: definition → has_or_had_resolution + Resolution (Rule 53)
|
||||
- has_or_had_resolution
|
||||
- dislike_count
|
||||
- duration
|
||||
- favorite_count
|
||||
|
|
@ -261,12 +268,30 @@ classes:
|
|||
description: 10 minutes and 59 seconds
|
||||
- value: PT1H30M
|
||||
description: 1 hour 30 minutes
|
||||
definition:
|
||||
range: VideoDefinitionEnum
|
||||
# MIGRATED 2026-01-24: definition → has_or_had_resolution + Resolution (Rule 53)
|
||||
has_or_had_resolution:
|
||||
range: Resolution
|
||||
required: false
|
||||
inlined: true
|
||||
description: |
|
||||
Video resolution/quality information.
|
||||
MIGRATED from 'definition' slot per slot_fixes.yaml (Rule 53).
|
||||
Uses Resolution class with resolution_class, width, height.
|
||||
examples:
|
||||
- value: hd
|
||||
description: High definition (720p/1080p)
|
||||
- value:
|
||||
resolution_class: hd
|
||||
width: 1920
|
||||
height: 1080
|
||||
aspect_ratio: "16:9"
|
||||
description: Full HD 1080p video
|
||||
- value:
|
||||
resolution_class: "4k"
|
||||
width: 3840
|
||||
height: 2160
|
||||
description: 4K UHD video
|
||||
- value:
|
||||
resolution_class: sd
|
||||
description: Standard definition (simple enum for backward compatibility)
|
||||
has_aspect_ratio:
|
||||
range: string
|
||||
required: false
|
||||
|
|
@ -308,18 +333,54 @@ classes:
|
|||
is_available: false
|
||||
language: null
|
||||
description: No captions available (migrated from caption_available false)
|
||||
default_language:
|
||||
range: string
|
||||
# MIGRATED 2026-01-23: default_language, default_audio_language → has_or_had_language + Language + has_or_had_status + Status (Rule 53)
|
||||
has_or_had_language:
|
||||
description: |
|
||||
MIGRATED from default_language and default_audio_language per slot_fixes.yaml (Rule 53, 2026-01-23).
|
||||
Language information for video content using structured Language class.
|
||||
Use has_or_had_status to distinguish default/primary languages.
|
||||
|
||||
**MODELING PATTERN**:
|
||||
- For content language: Language with is_primary: true or has_or_had_status: "content_language"
|
||||
- For audio language: Language with has_or_had_status: "audio_language"
|
||||
- Multiple languages supported via multivalued slot
|
||||
range: Language
|
||||
inlined: true
|
||||
multivalued: true
|
||||
required: false
|
||||
examples:
|
||||
- value: nl
|
||||
description: Dutch language content
|
||||
default_audio_language:
|
||||
range: string
|
||||
- value:
|
||||
language_code: "nl"
|
||||
language_name: "Dutch"
|
||||
is_primary: true
|
||||
description: Dutch as primary content language (migrated from default_language)
|
||||
- value:
|
||||
language_code: "nl"
|
||||
language_name: "Dutch"
|
||||
description: Dutch audio track (migrated from default_audio_language)
|
||||
- value:
|
||||
language_code: "en"
|
||||
language_name: "English"
|
||||
is_primary: false
|
||||
description: English as secondary/subtitle language
|
||||
has_or_had_status:
|
||||
description: |
|
||||
MIGRATED 2026-01-23 to support default_language, default_audio_language distinction.
|
||||
Status tracking for language designations (primary, default, audio, content).
|
||||
Uses Status class for structured status representation.
|
||||
range: Status
|
||||
inlined: true
|
||||
multivalued: true
|
||||
required: false
|
||||
examples:
|
||||
- value: nl
|
||||
description: Dutch audio track
|
||||
- value:
|
||||
status_type: "default_content_language"
|
||||
status_value: "nl"
|
||||
description: Default content language is Dutch
|
||||
- value:
|
||||
status_type: "default_audio_language"
|
||||
status_value: "nl"
|
||||
description: Default audio language is Dutch
|
||||
has_available_caption_language:
|
||||
range: string
|
||||
multivalued: true
|
||||
|
|
|
|||
|
|
@ -6,7 +6,11 @@ imports:
|
|||
- ./VideoTranscript
|
||||
- ./VideoTimeSegment
|
||||
- ../slots/has_average_entry_duration_seconds
|
||||
- ../slots/default_position
|
||||
# MIGRATED 2026-01-24: default_position → has_or_had_caption + Caption + has_or_had_alignment + Alignment (Rule 53)
|
||||
- ../slots/has_or_had_caption
|
||||
- ./Caption
|
||||
- ../slots/has_or_had_alignment
|
||||
- ./Alignment
|
||||
- ../slots/entry_count
|
||||
- ../slots/includes_music_description
|
||||
- ../slots/includes_sound_description
|
||||
|
|
@ -235,7 +239,9 @@ classes:
|
|||
- schema:transcript
|
||||
slots:
|
||||
- has_average_entry_duration_seconds
|
||||
- default_position
|
||||
# MIGRATED 2026-01-24: default_position → has_or_had_caption + has_or_had_alignment (Rule 53)
|
||||
- has_or_had_caption
|
||||
- has_or_had_alignment
|
||||
- entry_count
|
||||
- includes_music_description
|
||||
- includes_sound_description
|
||||
|
|
@ -343,13 +349,41 @@ classes:
|
|||
examples:
|
||||
- value: '{"platform": "YouTube", "has_or_had_code": "en.3OWxR1w4QfE"}'
|
||||
description: YouTube caption track identifier
|
||||
default_position:
|
||||
range: SubtitlePositionEnum
|
||||
# MIGRATED 2026-01-24: default_position → has_or_had_caption + Caption + has_or_had_alignment + Alignment (Rule 53)
|
||||
has_or_had_caption:
|
||||
description: |
|
||||
MIGRATED from default_position per slot_fixes.yaml (Rule 53, 2026-01-24).
|
||||
Caption configuration for this subtitle track.
|
||||
Uses Caption class with has_or_had_alignment for positioning.
|
||||
range: Caption
|
||||
inlined: true
|
||||
required: false
|
||||
ifabsent: string(BOTTOM)
|
||||
examples:
|
||||
- value: BOTTOM
|
||||
description: Standard bottom caption position
|
||||
- value:
|
||||
is_available: true
|
||||
caption_format: VTT
|
||||
description: VTT caption available
|
||||
has_or_had_alignment:
|
||||
description: |
|
||||
MIGRATED from default_position per slot_fixes.yaml (Rule 53, 2026-01-24).
|
||||
Default positioning for subtitle display on screen.
|
||||
Uses Alignment class for structured representation.
|
||||
range: Alignment
|
||||
inlined: true
|
||||
required: false
|
||||
examples:
|
||||
- value:
|
||||
vertical_alignment: "bottom"
|
||||
horizontal_alignment: "center"
|
||||
description: Standard bottom-center caption position (default)
|
||||
- value:
|
||||
vertical_alignment: "top"
|
||||
horizontal_alignment: "center"
|
||||
description: Top-center position for dual subtitle scenarios
|
||||
- value:
|
||||
vertical_alignment: "bottom"
|
||||
horizontal_alignment: "left"
|
||||
description: Bottom-left positioning
|
||||
entry_count:
|
||||
range: integer
|
||||
required: false
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@ prefixes:
|
|||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
# ADDED 2026-01-24: for default_language migration (Rule 53)
|
||||
- ../slots/has_or_had_language
|
||||
- ./Language
|
||||
|
||||
default_range: string
|
||||
|
||||
|
|
@ -59,8 +61,11 @@ classes:
|
|||
has_iso_3166_1_alpha_2_code:
|
||||
range: string
|
||||
description: ISO 3166-1 alpha-2 country code (2-letter, e.g., NL, US, JP)
|
||||
default_language:
|
||||
range: string
|
||||
# MIGRATED 2026-01-24: default_language → has_or_had_language + Language (Rule 53)
|
||||
has_or_had_language:
|
||||
range: Language
|
||||
inlined: true
|
||||
description: Default language for the channel content.
|
||||
thumbnail_url:
|
||||
range: uri
|
||||
banner_url:
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ imports:
|
|||
- ./Timestamp # for comments_fetched migration per Rule 53 (2026-01-22)
|
||||
- ./YoutubeComment
|
||||
- ./YoutubeTranscript
|
||||
# ADDED 2026-01-24: for default_audio_language, default_language migration (Rule 53)
|
||||
- ../slots/has_or_had_language
|
||||
- ./Language
|
||||
default_range: string
|
||||
|
||||
classes:
|
||||
|
|
@ -75,9 +78,13 @@ classes:
|
|||
description: ISO 8601 duration format
|
||||
thumbnail_url:
|
||||
range: uri
|
||||
definition:
|
||||
range: string
|
||||
description: Video quality (hd, sd)
|
||||
# MIGRATED 2026-01-24: definition → has_or_had_resolution + Resolution (Rule 53)
|
||||
has_or_had_resolution:
|
||||
range: Resolution
|
||||
inlined: true
|
||||
description: |
|
||||
Video resolution/quality. MIGRATED from 'definition' slot per Rule 53.
|
||||
Uses Resolution class with resolution_class (hd, sd, 4k, 8k), width, height.
|
||||
caption_available:
|
||||
range: boolean
|
||||
description: Whether captions are available
|
||||
|
|
@ -89,12 +96,16 @@ classes:
|
|||
description: |
|
||||
Video tags - migrated from string tag attribute to structured Tag class.
|
||||
Enables rich tag metadata including platform, hashtag flags, multilingual labels.
|
||||
default_language:
|
||||
range: string
|
||||
description: Default language code
|
||||
default_audio_language:
|
||||
range: string
|
||||
description: Default audio language code
|
||||
# MIGRATED 2026-01-24: default_language, default_audio_language → has_or_had_language (Rule 53)
|
||||
# Use Language class with language_code and is_primary/language_purpose to distinguish
|
||||
has_or_had_language:
|
||||
range: Language
|
||||
inlined: true
|
||||
multivalued: true
|
||||
description: |
|
||||
Language information for video content.
|
||||
MIGRATED from default_language and default_audio_language per Rule 53.
|
||||
Use language_purpose to distinguish content vs audio language.
|
||||
category_id:
|
||||
range: string
|
||||
description: YouTube category ID
|
||||
|
|
|
|||
|
|
@ -0,0 +1,99 @@
|
|||
# filters_or_filtered slot
|
||||
# Generic slot for linking analysis contexts to entities filtered by detection thresholds
|
||||
#
|
||||
# Following RiC-O naming convention (Rule 39): "filtersOrFiltered" pattern
|
||||
# for active/passive temporal relationships.
|
||||
#
|
||||
# Created: 2026-01-25
|
||||
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 42 (no prefix), 53 (slot_fixes.yaml)
|
||||
# Migration: detection_count, detection_level, detection_threshold → filters_or_filtered
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/filters_or_filtered
|
||||
name: filters_or_filtered_slot
|
||||
title: Filters Or Filtered Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
schema: http://schema.org/
|
||||
dqv: http://www.w3.org/ns/dqv#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
slots:
|
||||
filters_or_filtered:
|
||||
slot_uri: dqv:computedOn
|
||||
description: |
|
||||
Links detection/analysis contexts to entities that were filtered by thresholds.
|
||||
|
||||
**Temporal Semantics** (RiC-O Pattern):
|
||||
The "filtersOrFiltered" naming follows RiC-O convention indicating this relationship
|
||||
may be historical - filter settings may change over time affecting detected entities.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary** (`slot_uri`): `dqv:computedOn` - DQV predicate for quality metrics
|
||||
computed on a specific dataset
|
||||
- **Related**: `prov:wasGeneratedBy` - provenance of filtered results
|
||||
|
||||
**Usage**:
|
||||
For annotation classes with detection thresholds and counts, this links the
|
||||
analysis context to DetectedEntity instances that passed filtering criteria.
|
||||
|
||||
**Pattern**:
|
||||
```
|
||||
VideoAnnotation
|
||||
└── filters_or_filtered → DetectedEntity
|
||||
├── has_or_had_quantity → Quantity (detection_count)
|
||||
└── has_or_had_type → DetectionLevelType
|
||||
```
|
||||
|
||||
**Migrated Slots** (per slot_fixes.yaml):
|
||||
- `detection_count` → filters_or_filtered + DetectedEntity + Quantity
|
||||
- `detection_level` → filters_or_filtered + DetectedEntity + DetectionLevelType
|
||||
- `detection_threshold` → filters_or_filtered + DetectedEntity + DetectionThreshold
|
||||
|
||||
**Cardinality**:
|
||||
Single-valued - links to a detection context (DetectedEntity) with aggregated info.
|
||||
|
||||
range: string
|
||||
required: false
|
||||
multivalued: false
|
||||
inlined: true
|
||||
|
||||
exact_mappings:
|
||||
- dqv:computedOn
|
||||
|
||||
related_mappings:
|
||||
- prov:wasGeneratedBy
|
||||
- schema:object
|
||||
|
||||
annotations:
|
||||
rico_naming_convention: |
|
||||
Follows RiC-O "filtersOrFiltered" pattern for active/passive predicates.
|
||||
See Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
replaces_slots: "detection_count, detection_level, detection_threshold"
|
||||
migration_date: "2026-01-25"
|
||||
|
||||
comments:
|
||||
- "Generic filtering slot for detection/analysis thresholds"
|
||||
- "Links analysis to DetectedEntity with aggregated detection info"
|
||||
- "DetectedEntity contains quantity, type, and threshold data"
|
||||
- "Replaces multiple detection_* slots per Rule 53"
|
||||
- "RiC-O naming: filtersOrFiltered indicates filtering relationship"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
quantity_value: 342
|
||||
has_or_had_unit:
|
||||
unit_value: "detections"
|
||||
description: "Detection context with 342 detected entities"
|
||||
- value:
|
||||
has_or_had_type: "DetectionLevelType:HIGH"
|
||||
has_or_had_quantity:
|
||||
quantity_value: 0.85
|
||||
description: "High confidence detection level"
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_alignment
|
||||
name: has_or_had_alignment
|
||||
title: Has or Had Alignment
|
||||
description: |
|
||||
Alignment or positioning information for content elements.
|
||||
Follows RiC-O temporal naming convention (Rule 39).
|
||||
|
||||
**USE CASES**:
|
||||
- Caption/subtitle positioning (top, bottom, center)
|
||||
- Text alignment (left, right, center, justify)
|
||||
- Visual element positioning in layouts
|
||||
|
||||
**MODELING**:
|
||||
Uses Alignment class for structured representation including:
|
||||
- Horizontal alignment (left, center, right)
|
||||
- Vertical alignment (top, middle, bottom)
|
||||
- Custom positioning coordinates
|
||||
slot_uri: hc:hasOrHadAlignment
|
||||
range: Alignment
|
||||
multivalued: false
|
||||
inlined: true
|
||||
annotations:
|
||||
specificity_score: 0.55
|
||||
specificity_rationale: "Applies to various content types requiring positioning information"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Content alignment applies across all heritage institution types"
|
||||
|
|
@ -3,7 +3,8 @@
|
|||
#
|
||||
# Created per slot_fixes.yaml revision for: commercial_operation
|
||||
# Migration date: 2026-01-22
|
||||
# Rule reference: Rule 53, Rule 39
|
||||
# Updated: 2026-01-24 - Broadened range for deliverable migration (Rule 55)
|
||||
# Rule reference: Rule 53, Rule 39, Rule 55
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/has_or_had_objective
|
||||
name: has_or_had_objective
|
||||
|
|
@ -14,6 +15,7 @@ prefixes:
|
|||
schema: http://schema.org/
|
||||
org: http://www.w3.org/ns/org#
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
|
@ -24,17 +26,25 @@ slots:
|
|||
has_or_had_objective:
|
||||
slot_uri: org:purpose
|
||||
description: |
|
||||
The objective or purpose of an organization's operations.
|
||||
The objective, purpose, or deliverable of an organization or activity.
|
||||
|
||||
**PURPOSE**:
|
||||
|
||||
Links an organization to its operational objectives (profit-making,
|
||||
nonprofit, educational, cultural preservation, etc.).
|
||||
Links an entity to its operational objectives or deliverable outputs:
|
||||
- Organizational purpose (profit-making, nonprofit, educational)
|
||||
- Project deliverables (reports, datasets, websites)
|
||||
- Activity outcomes
|
||||
|
||||
**RiC-O NAMING** (Rule 39):
|
||||
|
||||
Uses "has_or_had_" prefix indicating temporal relationship -
|
||||
the objective may change over time.
|
||||
objectives and deliverables may change over time.
|
||||
|
||||
**RANGE BROADENING (Rule 55)**:
|
||||
|
||||
Base range is uriorcurie to allow class-specific narrowing:
|
||||
- Use Profit range for organizational purpose (commercial_operation migration)
|
||||
- Use Deliverable range for project outputs (deliverable migration)
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
|
|
@ -42,38 +52,42 @@ slots:
|
|||
|----------|----------|-------|
|
||||
| **W3C Org** | `org:purpose` | Organizational purpose |
|
||||
| **Schema.org** | `schema:businessFunction` | Business function |
|
||||
| **SKOS** | `skos:scopeNote` | Scope description |
|
||||
| **PROV-O** | `prov:generated` | Activity outputs |
|
||||
|
||||
**MIGRATION NOTE**:
|
||||
**MIGRATION NOTES**:
|
||||
|
||||
Created from migration of `commercial_operation` slot per slot_fixes.yaml.
|
||||
Replaces boolean with structured Profit class for richer modeling.
|
||||
- 2026-01-22: Created from commercial_operation → Profit migration
|
||||
- 2026-01-24: Broadened for deliverable → Deliverable migration (Rule 55)
|
||||
|
||||
range: Profit
|
||||
range: uriorcurie
|
||||
inlined: true
|
||||
multivalued: true
|
||||
|
||||
exact_mappings:
|
||||
- org:purpose
|
||||
|
||||
close_mappings:
|
||||
- schema:businessFunction
|
||||
- prov:generated
|
||||
|
||||
examples:
|
||||
- value:
|
||||
objective_type: "for-profit"
|
||||
is_commercial: true
|
||||
description: Commercial gallery selling artworks
|
||||
description: Commercial gallery selling artworks (Profit range)
|
||||
- value:
|
||||
objective_type: "nonprofit"
|
||||
is_commercial: false
|
||||
description: Kunsthalle or non-profit exhibition space
|
||||
has_or_had_label:
|
||||
has_or_had_text: "Digitized Collection"
|
||||
deliverable_type: "dataset"
|
||||
description: Project deliverable output (Deliverable range)
|
||||
|
||||
comments:
|
||||
- Created 2026-01-22 from commercial_operation migration (Rule 53)
|
||||
- Updated 2026-01-24 for deliverable migration with broadened range (Rule 55)
|
||||
- Uses RiC-O temporal naming convention (Rule 39)
|
||||
- Links organization to operational objectives
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: >-
|
||||
Universal - any custodian type may have operational objectives.
|
||||
Universal - any custodian type may have operational objectives or deliverables.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_price
|
||||
name: has_or_had_price_slot
|
||||
title: Has or Had Price Slot
|
||||
description: |
|
||||
Slot file for has_or_had_price following Rule 53 (slot_fixes.yaml).
|
||||
Links an entity to its price or pricing information.
|
||||
|
||||
Created per slot_fixes.yaml revision for catering_price_range migration.
|
||||
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_price:
|
||||
slot_uri: schema:priceSpecification
|
||||
description: |
|
||||
Price or pricing information associated with an entity.
|
||||
|
||||
Follows RiC-O temporal naming convention (Rule 39) to indicate the
|
||||
relationship may be current or historical.
|
||||
|
||||
Can represent:
|
||||
- Exact prices (admission fees, ticket prices)
|
||||
- Price ranges (€ to €€€€)
|
||||
- Price categories (budget, moderate, premium)
|
||||
range: uriorcurie
|
||||
multivalued: true
|
||||
required: false
|
||||
exact_mappings:
|
||||
- schema:priceSpecification
|
||||
close_mappings:
|
||||
- schema:price
|
||||
- schema:priceRange
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_resolution
|
||||
name: has_or_had_resolution
|
||||
title: Has or Had Resolution
|
||||
description: |
|
||||
Resolution or quality level for media content.
|
||||
Follows RiC-O temporal naming convention (Rule 39).
|
||||
|
||||
**USE CASES**:
|
||||
- Video resolution (SD, HD, 4K, 8K)
|
||||
- Image resolution (pixels, DPI)
|
||||
- Display resolution specifications
|
||||
|
||||
**MODELING**:
|
||||
Uses Resolution class for structured representation including:
|
||||
- Resolution type (video, image, display)
|
||||
- Width and height in pixels
|
||||
- Quality level designation (SD, HD, 4K, 8K)
|
||||
slot_uri: hc:hasOrHadResolution
|
||||
range: Resolution
|
||||
multivalued: false
|
||||
inlined: true
|
||||
exact_mappings:
|
||||
- schema:videoQuality
|
||||
annotations:
|
||||
specificity_score: 0.60
|
||||
specificity_rationale: "Applies to video and image content requiring resolution metadata"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Digital content with resolution applies across all heritage institution types"
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
#
|
||||
# Created per slot_fixes.yaml migration for: typical_metadata_standard
|
||||
# Creation date: 2026-01-14
|
||||
# Updated: 2026-01-24 - Broadened range to uriorcurie per Rule 55 for defined_by_standard migration
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/has_or_had_standard
|
||||
name: has_or_had_standard
|
||||
|
|
@ -16,7 +17,6 @@ default_prefix: hc
|
|||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../classes/MetadataStandard
|
||||
|
||||
slots:
|
||||
has_or_had_standard:
|
||||
|
|
@ -26,18 +26,32 @@ slots:
|
|||
|
||||
**USAGE**:
|
||||
Used for:
|
||||
- Metadata standards (Dublin Core, MARC21, EAD)
|
||||
- Metadata standards (Dublin Core, MARC21, EAD) - use MetadataStandard range
|
||||
- Identifier standards (ISIL, ISNI, VIAF) - use Standard range
|
||||
- Technical standards
|
||||
- Process standards
|
||||
|
||||
range: MetadataStandard
|
||||
**RANGE BROADENING (Rule 55)**:
|
||||
Base range is uriorcurie to allow class-specific narrowing in slot_usage.
|
||||
Classes should narrow to MetadataStandard, Standard, or other subclasses as appropriate.
|
||||
|
||||
MIGRATED 2026-01-24: Now also replaces defined_by_standard for Identifier classes.
|
||||
|
||||
range: uriorcurie
|
||||
multivalued: true
|
||||
|
||||
exact_mappings:
|
||||
- dct:conformsTo
|
||||
broad_mappings:
|
||||
- skos:inScheme
|
||||
|
||||
examples:
|
||||
- value:
|
||||
standard_name: "Dublin Core"
|
||||
standard_uri: "http://purl.org/dc/elements/1.1/"
|
||||
description: Dublin Core metadata standard
|
||||
description: Dublin Core metadata standard (MetadataStandard range)
|
||||
- value:
|
||||
id: isil
|
||||
name: "International Standard Identifier for Libraries"
|
||||
has_or_had_abbreviation: "ISIL"
|
||||
description: ISIL identifier standard (Standard range)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,99 @@
|
|||
# has_or_had_treshold slot
|
||||
# Generic slot for linking entities to threshold values
|
||||
#
|
||||
# NOTE: Intentional spelling "treshold" (not "threshold") to match slot_fixes.yaml specification.
|
||||
# Per Rule 57, revision specifications are immutable.
|
||||
#
|
||||
# Following RiC-O naming convention (Rule 39): "hasOrHad..." pattern
|
||||
# for temporal relationships.
|
||||
#
|
||||
# Created: 2026-01-25
|
||||
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 42 (no prefix), 53 (slot_fixes.yaml), 57 (immutable revision)
|
||||
# Migration: detection_threshold → filters_or_filtered + has_or_had_treshold + DetectionThreshold
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/has_or_had_treshold
|
||||
name: has_or_had_treshold_slot
|
||||
title: Has Or Had Treshold Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
dqv: http://www.w3.org/ns/dqv#
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
slots:
|
||||
has_or_had_treshold:
|
||||
slot_uri: dqv:value
|
||||
description: |
|
||||
Links detection contexts to threshold configuration values.
|
||||
|
||||
**SPELLING NOTE**: Uses "treshold" (not "threshold") to match slot_fixes.yaml
|
||||
specification. Per Rule 57, revision specifications are immutable.
|
||||
|
||||
**Temporal Semantics** (RiC-O Pattern):
|
||||
The "hasOrHad" naming follows RiC-O convention indicating this relationship
|
||||
may be historical - threshold values may change across different analysis runs.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary** (`slot_uri`): `dqv:value` - DQV predicate for quality metric values
|
||||
- **Related**: `schema:minValue`/`schema:maxValue` - threshold bounds
|
||||
|
||||
**Usage**:
|
||||
For detection/filtering contexts where a confidence threshold determines
|
||||
which entities are included in results.
|
||||
|
||||
**Pattern**:
|
||||
```
|
||||
DetectedEntity
|
||||
└── has_or_had_treshold → DetectionThreshold
|
||||
├── threshold_value: 0.5 # minimum confidence
|
||||
└── threshold_type: MINIMUM
|
||||
```
|
||||
|
||||
**Migrated From** (per slot_fixes.yaml):
|
||||
- `detection_threshold` (float) → has_or_had_treshold + DetectionThreshold (class)
|
||||
|
||||
**Cardinality**:
|
||||
Single-valued - one threshold configuration per detection context.
|
||||
|
||||
range: string
|
||||
required: false
|
||||
multivalued: false
|
||||
inlined: true
|
||||
|
||||
exact_mappings:
|
||||
- dqv:value
|
||||
|
||||
related_mappings:
|
||||
- schema:minValue
|
||||
- schema:maxValue
|
||||
|
||||
annotations:
|
||||
rico_naming_convention: |
|
||||
Follows RiC-O "hasOrHad" pattern for temporal predicates.
|
||||
See Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
spelling_note: "Intentional 'treshold' spelling to match slot_fixes.yaml (Rule 57 immutability)"
|
||||
replaces_slots: "detection_threshold"
|
||||
migration_date: "2026-01-25"
|
||||
|
||||
comments:
|
||||
- "Generic threshold slot for detection/filtering configurations"
|
||||
- "Links detection contexts to threshold values"
|
||||
- "Uses DetectionThreshold class for structured threshold data"
|
||||
- "Spelling 'treshold' matches slot_fixes.yaml per Rule 57"
|
||||
- "RiC-O naming: hasOrHad indicates potentially historical relationship"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
threshold_value: 0.5
|
||||
threshold_type: MINIMUM
|
||||
description: "Minimum confidence threshold of 0.5"
|
||||
- value:
|
||||
threshold_value: 0.9
|
||||
threshold_type: HIGH_PRECISION
|
||||
description: "High precision threshold for production display"
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
# is_or_was_created_by slot
|
||||
# Links entity to its creator/manufacturer
|
||||
#
|
||||
# Following RiC-O naming convention (Rule 39): "isOrWas..." pattern
|
||||
# for temporal relationships in heritage domain.
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 42 (no prefix)
|
||||
# Migration source: device_manufacturer slot per slot_fixes.yaml
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/is_or_was_created_by
|
||||
name: is_or_was_created_by_slot
|
||||
title: Is Or Was Created By Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
schema: http://schema.org/
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
slots:
|
||||
is_or_was_created_by:
|
||||
slot_uri: prov:wasAttributedTo
|
||||
description: |
|
||||
Links an entity to its creator, manufacturer, or producer.
|
||||
|
||||
**Temporal Semantics** (RiC-O Pattern):
|
||||
The "isOrWas" naming follows RiC-O convention indicating this relationship
|
||||
may be historical - manufacturers change names, merge, or go out of business.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary** (`slot_uri`): `prov:wasAttributedTo` - PROV-O agent attribution
|
||||
- **Close**: `schema:manufacturer` - Schema.org manufacturer
|
||||
- **Close**: `crm:P108_was_produced_by` - CIDOC-CRM production relationship
|
||||
|
||||
**Usage**:
|
||||
Use with Manufacturer class for structured manufacturer information.
|
||||
Range is uriorcurie to allow both class instances and URI references.
|
||||
|
||||
**Replaces**: device_manufacturer slot per slot_fixes.yaml migration (2026-01-25)
|
||||
|
||||
range: uriorcurie # Range broadened per Rule 55 - allows Manufacturer class instances
|
||||
required: false
|
||||
multivalued: false
|
||||
|
||||
exact_mappings:
|
||||
- prov:wasAttributedTo
|
||||
|
||||
close_mappings:
|
||||
- schema:manufacturer
|
||||
- crm:P108_was_produced_by
|
||||
|
||||
annotations:
|
||||
rico_naming_convention: |
|
||||
Follows RiC-O "isOrWas" pattern for temporal predicates.
|
||||
See Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
replaces_slots: "device_manufacturer"
|
||||
migration_date: "2026-01-25"
|
||||
|
||||
comments:
|
||||
- "Links products/devices to their manufacturer"
|
||||
- "Use Manufacturer class for structured manufacturer data"
|
||||
- "RiC-O naming: isOrWas indicates potentially historical relationship"
|
||||
- "PROV-O wasAttributedTo for provenance chain tracking"
|
||||
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/manufacturer/estimote
|
||||
description: "Reference to Estimote as device manufacturer"
|
||||
- value: https://nde.nl/ontology/hc/manufacturer/sensirion
|
||||
description: "Reference to Sensirion as sensor manufacturer"
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
# is_or_was_deployed_at slot
|
||||
# Links software/system to deployment events
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 38 (slot centralization), 39 (RiC-O naming), 53 (migration from deployment_date)
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/is_or_was_deployed_at
|
||||
name: is_or_was_deployed_at_slot
|
||||
title: Is Or Was Deployed At Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
slots:
|
||||
is_or_was_deployed_at:
|
||||
slot_uri: prov:wasGeneratedBy
|
||||
description: |
|
||||
Links a system (CMS, software) to its deployment event(s).
|
||||
|
||||
**Temporal Semantics** (RiC-O Pattern):
|
||||
The "isOrWas" naming follows RiC-O convention indicating this relationship
|
||||
may be historical - a system may have been deployed multiple times at
|
||||
different institutions or locations.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary** (`slot_uri`): `prov:wasGeneratedBy` - PROV-O relationship
|
||||
linking entity to the activity that generated/deployed it
|
||||
- **Close**: `schema:datePublished` - Schema.org deployment date
|
||||
|
||||
**MIGRATED FROM**: `deployment_date` slot
|
||||
|
||||
The revision pattern replaces a simple date with structured DeploymentEvent:
|
||||
- DeploymentEvent.temporal_extent → TimeSpan with fuzzy boundaries
|
||||
- Enables tracking multiple deployments over time
|
||||
- Captures deployment context (who, where, why)
|
||||
|
||||
range: uriorcurie # Allows reference to DeploymentEvent or inline
|
||||
multivalued: true
|
||||
required: false
|
||||
|
||||
exact_mappings:
|
||||
- prov:wasGeneratedBy
|
||||
|
||||
close_mappings:
|
||||
- schema:datePublished
|
||||
|
||||
annotations:
|
||||
rico_naming_convention: |
|
||||
Follows RiC-O "isOrWas" pattern for temporal predicates.
|
||||
See Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
replaces_slots: "deployment_date"
|
||||
migration_date: "2026-01-25"
|
||||
|
||||
comments:
|
||||
- "MIGRATED from deployment_date per slot_fixes.yaml (Rule 53)"
|
||||
- "Structured deployment tracking via DeploymentEvent class"
|
||||
- "RiC-O naming: isOrWas indicates potentially historical relationship"
|
||||
- "PROV-O wasGeneratedBy for deployment provenance"
|
||||
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/event/rijksmuseum-adlib-deployment-2015
|
||||
description: "Reference to Adlib CMS deployment event at Rijksmuseum"
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
# is_or_was_instantiated_by slot
|
||||
# Links entity to its instantiated type class
|
||||
#
|
||||
# Following RiC-O naming convention (Rule 39): "isOrWas..." pattern
|
||||
# for temporal relationships in heritage domain.
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 42 (no prefix)
|
||||
# Migration source: device_type slot per slot_fixes.yaml
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/is_or_was_instantiated_by
|
||||
name: is_or_was_instantiated_by_slot
|
||||
title: Is Or Was Instantiated By Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
slots:
|
||||
is_or_was_instantiated_by:
|
||||
slot_uri: rdf:type
|
||||
description: |
|
||||
Links an entity to its instantiated type class.
|
||||
|
||||
**Temporal Semantics** (RiC-O Pattern):
|
||||
The "isOrWas" naming follows RiC-O convention indicating this relationship
|
||||
may be historical - device types may change or be reclassified over time.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary** (`slot_uri`): `rdf:type` - RDF type relationship
|
||||
- **Close**: `schema:additionalType` - Schema.org additional type
|
||||
|
||||
**Usage**:
|
||||
Use with typed class hierarchies (e.g., IoTDevice, DeviceType).
|
||||
Range is uriorcurie to allow both class instances and URI references.
|
||||
|
||||
**Replaces**: device_type slot per slot_fixes.yaml migration (2026-01-25)
|
||||
|
||||
range: uriorcurie
|
||||
required: false
|
||||
multivalued: false
|
||||
|
||||
exact_mappings:
|
||||
- rdf:type
|
||||
|
||||
close_mappings:
|
||||
- schema:additionalType
|
||||
|
||||
annotations:
|
||||
rico_naming_convention: |
|
||||
Follows RiC-O "isOrWas" pattern for temporal predicates.
|
||||
See Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
replaces_slots: "device_type"
|
||||
migration_date: "2026-01-25"
|
||||
|
||||
comments:
|
||||
- "Links entities to their type classes"
|
||||
- "RiC-O naming: isOrWas indicates potentially historical relationship"
|
||||
- "Primary for typed class hierarchies"
|
||||
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/class/IoTBeacon
|
||||
description: "IoT beacon device type"
|
||||
- value: https://nde.nl/ontology/hc/class/IoTSensor
|
||||
description: "IoT sensor device type"
|
||||
|
|
@ -40,7 +40,7 @@ slots:
|
|||
│
|
||||
└── regulated_by_scheme ──→ TaxScheme[]
|
||||
└── has_or_had_type: CulturalANBI
|
||||
└── deduction_percentage: 125
|
||||
└── offers_or_offered: [{ has_or_had_percentage: 125 }]
|
||||
```
|
||||
|
||||
**HERITAGE SECTOR CONTEXT**:
|
||||
|
|
|
|||
|
|
@ -28,10 +28,10 @@
|
|||
"has_or_had_measurement.yaml",
|
||||
"has_or_had_measurement_type.yaml",
|
||||
|
||||
"catering_price_range.yaml",
|
||||
"catering_type.yaml",
|
||||
"has_or_had_price.yaml",
|
||||
|
||||
"cessation_observed_in.yaml",
|
||||
"change_in_net_asset.yaml",
|
||||
"specifies_or_specified.yaml",
|
||||
"change_rationale.yaml",
|
||||
"changes_or_changed_ownership_from.yaml",
|
||||
"changes_or_changed_ownership_to.yaml",
|
||||
|
|
@ -195,34 +195,36 @@
|
|||
"__ARCHIVED_20260123__deductibility_conditions.yaml",
|
||||
"__ARCHIVED_20260123__deductibility_status.yaml",
|
||||
"__ARCHIVED_20260123__deductible_percentage.yaml",
|
||||
"deduction_percentage.yaml",
|
||||
"default_access_policy.yaml",
|
||||
"default_audio_language.yaml",
|
||||
"default_language.yaml",
|
||||
"default_position.yaml",
|
||||
"defined_by_standard.yaml",
|
||||
"definition.yaml",
|
||||
"degree_name.yaml",
|
||||
"__ARCHIVED_20260123__deduction_percentage.yaml",
|
||||
"__ARCHIVED_20260123__default_access_policy.yaml",
|
||||
"__ARCHIVED_20260123__default_audio_language.yaml",
|
||||
"__ARCHIVED_20260123__default_language.yaml",
|
||||
"__ARCHIVED_20260124__default_position.yaml",
|
||||
"__ARCHIVED_20260124__defined_by_standard.yaml",
|
||||
"__ARCHIVED_20260124__definition.yaml",
|
||||
"__ARCHIVED_20260124__degree_name.yaml",
|
||||
"degree_of_certainty.yaml",
|
||||
"deliverable.yaml",
|
||||
"departement_code.yaml",
|
||||
"departement_name.yaml",
|
||||
"department_code.yaml",
|
||||
"department_description.yaml",
|
||||
"department_head.yaml",
|
||||
"department_id.yaml",
|
||||
"department_name.yaml",
|
||||
"deployment_date.yaml",
|
||||
"derived_from_entity.yaml",
|
||||
"derived_from_observation.yaml",
|
||||
"__ARCHIVED_20260124__deliverable.yaml",
|
||||
"__ARCHIVED_20260124__departement_code.yaml",
|
||||
"__ARCHIVED_20260124__departement_name.yaml",
|
||||
"__ARCHIVED_20260125__department_code.yaml",
|
||||
"__ARCHIVED_20260125__department_description.yaml",
|
||||
"__ARCHIVED_20260125__department_head.yaml",
|
||||
"__ARCHIVED_20260125__department_id.yaml",
|
||||
"__ARCHIVED_20260125__department_name.yaml",
|
||||
"__ARCHIVED_20260125__deployment_date.yaml",
|
||||
"is_or_was_deployed_at.yaml",
|
||||
"refers_or_referred_to.yaml",
|
||||
"__ARCHIVED_20260125__derived_from_entity.yaml",
|
||||
"__ARCHIVED_20260125__derived_from_observation.yaml",
|
||||
"derives_or_derived_from.yaml",
|
||||
"describes_or_described.yaml",
|
||||
"description.yaml",
|
||||
"description_text.yaml",
|
||||
"__ARCHIVED_20260125__description.yaml",
|
||||
"__ARCHIVED_20260125__description_text.yaml",
|
||||
"description_type.yaml",
|
||||
"detection_count.yaml",
|
||||
"detection_level.yaml",
|
||||
"detection_threshold.yaml",
|
||||
"__ARCHIVED_20260125__detection_count.yaml",
|
||||
"__ARCHIVED_20260125__detection_level.yaml",
|
||||
"__ARCHIVED_20260125__detection_threshold.yaml",
|
||||
"device_count.yaml",
|
||||
"device_id.yaml",
|
||||
"device_manufacturer.yaml",
|
||||
|
|
@ -422,6 +424,7 @@
|
|||
"final_of_the_final.yaml",
|
||||
"filing_id.yaml",
|
||||
"filing_type.yaml",
|
||||
"filters_or_filtered.yaml",
|
||||
"financial_archival_stage.yaml",
|
||||
"financial_document_format.yaml",
|
||||
"financial_document_url.yaml",
|
||||
|
|
@ -651,6 +654,7 @@
|
|||
"has_or_had_affiliated_university.yaml",
|
||||
"has_or_had_affiliation.yaml",
|
||||
"has_or_had_agent.yaml",
|
||||
"has_or_had_alignment.yaml",
|
||||
"has_or_had_alternative_name.yaml",
|
||||
"has_or_had_alternative_observed_name.yaml",
|
||||
"has_or_had_animal_species_count.yaml",
|
||||
|
|
@ -829,6 +833,7 @@
|
|||
"has_or_had_related_guide.yaml",
|
||||
"has_or_had_related_heritage_form.yaml",
|
||||
"has_or_had_reply.yaml",
|
||||
"has_or_had_resolution.yaml",
|
||||
"has_or_had_requirement.yaml",
|
||||
"has_or_had_requirement_status.yaml",
|
||||
"has_or_had_research_attempt.yaml",
|
||||
|
|
@ -880,6 +885,7 @@
|
|||
"has_or_had_text_segment.yaml",
|
||||
"has_or_had_thematic_route.yaml",
|
||||
"has_or_had_threshold.yaml",
|
||||
"has_or_had_treshold.yaml",
|
||||
"has_or_had_thumbnail.yaml",
|
||||
"has_or_had_time_interval.yaml",
|
||||
"has_or_had_timestamp.yaml",
|
||||
|
|
@ -1366,6 +1372,7 @@
|
|||
"oclc_number.yaml",
|
||||
"offered_by.yaml",
|
||||
"offers_donation_scheme.yaml",
|
||||
"offers_or_offered.yaml",
|
||||
"offers_or_offered_access.yaml",
|
||||
"official_institution_subtype.yaml",
|
||||
"online_shop.yaml",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
# offers_or_offered slot
|
||||
# RiC-O temporal naming convention (Rule 39)
|
||||
#
|
||||
# Created per slot_fixes.yaml revision for: deduction_percentage
|
||||
# Migration date: 2026-01-23
|
||||
# Rule reference: Rule 53, Rule 39
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/offers_or_offered
|
||||
name: offers_or_offered
|
||||
title: Offers Or Offered Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
slots:
|
||||
offers_or_offered:
|
||||
slot_uri: schema:offers
|
||||
description: |
|
||||
Links an entity to something it offers or offered.
|
||||
|
||||
**PURPOSE**:
|
||||
|
||||
Generic slot for representing what an entity provides, makes available,
|
||||
or makes accessible. Follows RiC-O temporal naming convention.
|
||||
|
||||
**RiC-O NAMING** (Rule 39):
|
||||
|
||||
Uses "offers_or_offered" pattern indicating temporal relationship -
|
||||
what is offered may change over time.
|
||||
|
||||
**USE CASES**:
|
||||
|
||||
- TaxScheme offers_or_offered TaxDeductibility
|
||||
- Service offers_or_offered Benefit
|
||||
- Institution offers_or_offered Program
|
||||
|
||||
**MIGRATION NOTE**:
|
||||
|
||||
Created from migration of `deduction_percentage` slot per slot_fixes.yaml.
|
||||
Provides structured link to TaxDeductibility class.
|
||||
|
||||
range: Any
|
||||
multivalued: true
|
||||
|
||||
exact_mappings:
|
||||
- schema:offers
|
||||
|
||||
close_mappings:
|
||||
- schema:hasOfferCatalog
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_type:
|
||||
has_or_had_label: "Fully Deductible"
|
||||
has_or_had_percentage:
|
||||
percentage_value: 100
|
||||
description: Tax scheme offering full deductibility
|
||||
|
||||
comments:
|
||||
- Created 2026-01-23 from deduction_percentage migration (Rule 53)
|
||||
- Uses RiC-O temporal naming convention (Rule 39)
|
||||
- Generic offering relationship slot
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: >-
|
||||
Universal - many entities can offer something.
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
# refers_or_referred_to slot
|
||||
# Links observations to entities they reference/describe
|
||||
#
|
||||
# Generation date: 2026-01-25
|
||||
# Rule compliance: 38 (slot centralization), 39 (RiC-O naming), 53 (migration from derived_from_entity)
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/refers_or_referred_to
|
||||
name: refers_or_referred_to_slot
|
||||
title: Refers Or Referred To Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
rico: https://www.ica.org/standards/RiC/ontology#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
slots:
|
||||
refers_or_referred_to:
|
||||
slot_uri: prov:wasDerivedFrom
|
||||
description: |
|
||||
Links an observation or document to the entity it refers to or describes.
|
||||
|
||||
**Temporal Semantics** (RiC-O Pattern):
|
||||
The "refersOrReferred" naming follows RiC-O convention indicating this relationship
|
||||
may be historical - observations may reference entities from the past.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary** (`slot_uri`): `prov:wasDerivedFrom` - PROV-O derivation
|
||||
- **Close**: `rico:refersTo` - RiC-O reference relationship
|
||||
|
||||
**MIGRATED FROM**: `derived_from_entity` slot
|
||||
|
||||
The revision pattern generalizes the derivation relationship:
|
||||
- Can link to EntityReconstruction (reconstructed formal entities)
|
||||
- Can link to any entity type (not just CustodianLegalStatus)
|
||||
- Enables provenance chain traversal
|
||||
|
||||
range: uriorcurie # Allows reference to EntityReconstruction or other entities
|
||||
multivalued: true
|
||||
required: false
|
||||
|
||||
exact_mappings:
|
||||
- prov:wasDerivedFrom
|
||||
|
||||
close_mappings:
|
||||
- rico:refersTo
|
||||
|
||||
annotations:
|
||||
rico_naming_convention: |
|
||||
Follows RiC-O "refersOrReferred" pattern for temporal predicates.
|
||||
See Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
replaces_slots: "derived_from_entity"
|
||||
migration_date: "2026-01-25"
|
||||
|
||||
comments:
|
||||
- "MIGRATED from derived_from_entity per slot_fixes.yaml (Rule 53)"
|
||||
- "Links observation to entity it references"
|
||||
- "RiC-O naming: refersOrReferred indicates potentially historical relationship"
|
||||
- "PROV-O wasDerivedFrom for provenance chain"
|
||||
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/legal/stichting-rijksmuseum
|
||||
description: "Observation refers to Rijksmuseum legal entity"
|
||||
|
|
@ -45,7 +45,10 @@ slots:
|
|||
regulated_by_scheme:
|
||||
- scheme_type: CULTURAL_ANBI
|
||||
jurisdiction: NL
|
||||
deduction_percentage: 125
|
||||
# MIGRATED 2026-01-24: deduction_percentage → offers_or_offered (Rule 53)
|
||||
offers_or_offered:
|
||||
- has_or_had_percentage:
|
||||
percentage_value: 125
|
||||
regulatory_body: Belastingdienst
|
||||
```
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,33 @@
|
|||
id: https://nde.nl/ontology/hc/slot/specifies_or_specified
|
||||
name: specifies_or_specified_slot
|
||||
title: Specifies or Specified Slot
|
||||
description: |
|
||||
Slot file for specifies_or_specified following Rule 53 (slot_fixes.yaml).
|
||||
Links an entity to specifications or quantitative details it provides.
|
||||
|
||||
Created per slot_fixes.yaml revision for change_in_net_asset migration.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
rico: https://www.ica.org/standards/RiC/ontology#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
specifies_or_specified:
|
||||
slot_uri: rico:specifies
|
||||
description: |
|
||||
A specification or quantitative detail that this entity provides or provided.
|
||||
|
||||
Follows RiC-O temporal naming convention (Rule 39) to indicate the
|
||||
relationship may be current or historical.
|
||||
|
||||
Used for:
|
||||
- Financial specifications (net assets, revenues, expenses)
|
||||
- Quantitative measurements
|
||||
- Formal specifications and criteria
|
||||
range: uriorcurie
|
||||
multivalued: true
|
||||
required: false
|
||||
exact_mappings:
|
||||
- rico:specifies
|
||||
|
|
@ -67,7 +67,7 @@ export type DiagramType = 'mermaid-class' | 'mermaid-er' | 'plantuml' | 'graphvi
|
|||
export interface UMLNode {
|
||||
id: string;
|
||||
name: string;
|
||||
type: 'class' | 'enum' | 'entity';
|
||||
type: 'class' | 'enum' | 'entity' | 'slot';
|
||||
attributes?: { name: string; type: string }[];
|
||||
methods?: { name: string; returnType?: string }[];
|
||||
x?: number;
|
||||
|
|
@ -1933,7 +1933,7 @@ const UMLVisualizationInner: React.FC<UMLVisualizationProps> = ({
|
|||
.attr('height', (d) => d.height || nodeHeaderHeight)
|
||||
.attr('rx', 8)
|
||||
.attr('fill', 'white')
|
||||
.attr('stroke', (d) => d.type === 'enum' ? '#ffc107' : '#0a3dfa')
|
||||
.attr('stroke', (d) => d.type === 'enum' ? '#ffc107' : d.type === 'slot' ? '#10b981' : '#0a3dfa')
|
||||
.attr('stroke-width', 2);
|
||||
|
||||
// Node header background
|
||||
|
|
@ -1942,7 +1942,7 @@ const UMLVisualizationInner: React.FC<UMLVisualizationProps> = ({
|
|||
.attr('width', (d) => d.width || defaultNodeWidth)
|
||||
.attr('height', nodeHeaderHeight)
|
||||
.attr('rx', 8)
|
||||
.attr('fill', (d) => d.type === 'enum' ? '#fef3c7' : '#e0e7ff') // Light amber for enum, light indigo for class
|
||||
.attr('fill', (d) => d.type === 'enum' ? '#fef3c7' : d.type === 'slot' ? '#d1fae5' : '#e0e7ff') // Light amber for enum, light emerald for slot, light indigo for class
|
||||
.attr('opacity', 1);
|
||||
|
||||
// Node name
|
||||
|
|
@ -1952,7 +1952,7 @@ const UMLVisualizationInner: React.FC<UMLVisualizationProps> = ({
|
|||
.attr('y', nodeHeaderHeight / 2)
|
||||
.attr('text-anchor', 'middle')
|
||||
.attr('dominant-baseline', 'middle')
|
||||
.attr('fill', (d) => d.type === 'enum' ? '#92400e' : '#312e81') // Dark amber for enum, dark indigo for class
|
||||
.attr('fill', (d) => d.type === 'enum' ? '#92400e' : d.type === 'slot' ? '#065f46' : '#312e81') // Dark amber for enum, dark emerald for slot, dark indigo for class
|
||||
.attr('font-weight', 'bold')
|
||||
.attr('font-size', '14px')
|
||||
.text((d) => d.name);
|
||||
|
|
@ -1962,7 +1962,7 @@ const UMLVisualizationInner: React.FC<UMLVisualizationProps> = ({
|
|||
.attr('class', 'node-type')
|
||||
.attr('x', 8)
|
||||
.attr('y', 12)
|
||||
.attr('fill', (d) => d.type === 'enum' ? '#b45309' : '#4338ca') // Matching darker tones
|
||||
.attr('fill', (d) => d.type === 'enum' ? '#b45309' : d.type === 'slot' ? '#047857' : '#4338ca') // Matching darker tones
|
||||
.attr('font-size', '10px')
|
||||
.attr('font-style', 'italic')
|
||||
.text((d) => `«${d.type}»`);
|
||||
|
|
@ -2318,7 +2318,7 @@ const UMLVisualizationInner: React.FC<UMLVisualizationProps> = ({
|
|||
.transition()
|
||||
.duration(200)
|
||||
.attr('opacity', 1)
|
||||
.attr('stroke', nodeType === 'enum' ? '#ffc107' : '#0a3dfa')
|
||||
.attr('stroke', nodeType === 'enum' ? '#ffc107' : nodeType === 'slot' ? '#10b981' : '#0a3dfa')
|
||||
.attr('stroke-width', 2)
|
||||
.style('filter', null);
|
||||
|
||||
|
|
@ -2418,7 +2418,7 @@ const UMLVisualizationInner: React.FC<UMLVisualizationProps> = ({
|
|||
.transition()
|
||||
.duration(200)
|
||||
.attr('opacity', 1)
|
||||
.attr('stroke', d.type === 'enum' ? '#ffc107' : '#0a3dfa')
|
||||
.attr('stroke', d.type === 'enum' ? '#ffc107' : d.type === 'slot' ? '#10b981' : '#0a3dfa')
|
||||
.attr('stroke-width', 2)
|
||||
.style('filter', null);
|
||||
|
||||
|
|
@ -2906,7 +2906,8 @@ const UMLVisualizationInner: React.FC<UMLVisualizationProps> = ({
|
|||
<svg ref={svgRef} />
|
||||
</div>
|
||||
|
||||
{selectedNode && (
|
||||
{/* Show semantic details panel for classes and enums, but NOT for slots (predicates) */}
|
||||
{selectedNode && selectedNode.type !== 'slot' && (
|
||||
<SemanticDetailsPanel
|
||||
className={selectedNode.name}
|
||||
onClose={() => setSelectedNode(null)}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
import yaml from 'js-yaml';
|
||||
|
||||
// Debug flag - set to true to enable verbose logging
|
||||
const DEBUG_LINKML = true;
|
||||
const DEBUG_LINKML = false;
|
||||
|
||||
// Helper function for conditional debug logging
|
||||
function debugLog(...args: unknown[]): void {
|
||||
|
|
@ -1438,9 +1438,7 @@ class LinkMLSchemaService {
|
|||
* - Classes using slots with this range (computed reverse lookup)
|
||||
*/
|
||||
async getClassExportInfo(className: string): Promise<ClassExportInfo> {
|
||||
console.log(`[getClassExportInfo] Starting for class: ${className}`);
|
||||
await this.initialize();
|
||||
console.log(`[getClassExportInfo] Initialized. classSchemas size: ${this.classSchemas.size}, slotSchemas size: ${this.slotSchemas.size}`);
|
||||
|
||||
const exportInfo: ClassExportInfo = {
|
||||
className,
|
||||
|
|
@ -1520,15 +1518,6 @@ class LinkMLSchemaService {
|
|||
);
|
||||
exportInfo.linkedCollectionTypes.sort();
|
||||
|
||||
console.log(`[getClassExportInfo] Completed for ${className}:`, {
|
||||
subclasses: exportInfo.subclasses.length,
|
||||
mixinUsers: exportInfo.mixinUsers.length,
|
||||
slotsWithThisRange: exportInfo.slotsWithThisRange.length,
|
||||
classesReferencingInSlotUsage: exportInfo.classesReferencingInSlotUsage.length,
|
||||
classesUsingSlotWithThisRange: exportInfo.classesUsingSlotWithThisRange.length,
|
||||
linkedCollectionTypes: exportInfo.linkedCollectionTypes.length,
|
||||
});
|
||||
|
||||
return exportInfo;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3591,6 +3591,49 @@
|
|||
/* Remove fixed height - let container control size via inline styles */
|
||||
}
|
||||
|
||||
/* Resizable UML content */
|
||||
.linkml-viewer__uml-content--resizable {
|
||||
position: relative;
|
||||
min-height: 200px;
|
||||
}
|
||||
|
||||
/* Resize handle at bottom of UML container */
|
||||
.linkml-viewer__uml-resize-handle {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 8px;
|
||||
cursor: ns-resize;
|
||||
background: linear-gradient(to bottom, transparent 0%, var(--border-color, #e0e0e0) 50%, var(--border-color, #e0e0e0) 100%);
|
||||
border-radius: 0 0 6px 6px;
|
||||
opacity: 0.5;
|
||||
transition: opacity 0.2s ease, background 0.2s ease;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.linkml-viewer__uml-resize-handle:hover {
|
||||
opacity: 1;
|
||||
background: linear-gradient(to bottom, transparent 0%, var(--primary, #0a3dfa) 50%, var(--primary, #0a3dfa) 100%);
|
||||
}
|
||||
|
||||
.linkml-viewer__uml-resize-handle::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 40px;
|
||||
height: 4px;
|
||||
background: currentColor;
|
||||
border-radius: 2px;
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.linkml-viewer__uml-resize-handle:hover::before {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
/* UML visualization sizing - use 100% to respect container dimensions */
|
||||
.linkml-viewer__uml-content .uml-visualization {
|
||||
width: 100%;
|
||||
|
|
|
|||
|
|
@ -590,11 +590,6 @@ const transformContent = (text: string): string => {
|
|||
return transformAdmonitions(highlightCuries(transformLifecycleDiagrams(text)));
|
||||
};
|
||||
|
||||
// Debug logging helper
|
||||
const debugLog = (...args: unknown[]) => {
|
||||
console.log('[LinkMLViewerPage]', ...args);
|
||||
};
|
||||
|
||||
/**
|
||||
* Build a filtered UML diagram centered on a specific class.
|
||||
* Includes both imports (dependencies) and exports (reverse dependencies) based on flags.
|
||||
|
|
@ -843,45 +838,137 @@ const buildFilteredUMLDiagram = (
|
|||
addRelationshipsFromClass(className);
|
||||
}
|
||||
|
||||
// Debug logging to understand link generation
|
||||
debugLog(`[buildFilteredUMLDiagram] Building diagram for ${centerClassName}, depth=${depth}`);
|
||||
debugLog(`[buildFilteredUMLDiagram] showImports=${showImports}, showExports=${showExports}`);
|
||||
debugLog(`[buildFilteredUMLDiagram] Total nodes: ${nodes.length}`, nodes.map(n => n.name));
|
||||
debugLog(`[buildFilteredUMLDiagram] Total links: ${links.length}`);
|
||||
|
||||
// Log link breakdown by type
|
||||
const linksByType = {
|
||||
inheritance: links.filter(l => l.type === 'inheritance'),
|
||||
aggregation: links.filter(l => l.type === 'aggregation'),
|
||||
association: links.filter(l => l.type === 'association'),
|
||||
composition: links.filter(l => l.type === 'composition'),
|
||||
return {
|
||||
nodes,
|
||||
links,
|
||||
title: `${centerClassName} Relationships (Depth: ${depth})`,
|
||||
};
|
||||
debugLog(`[buildFilteredUMLDiagram] Links by type:`, {
|
||||
inheritance: linksByType.inheritance.length,
|
||||
aggregation: linksByType.aggregation.length,
|
||||
association: linksByType.association.length,
|
||||
composition: linksByType.composition.length,
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Build a UML diagram centered on a specific slot, showing RDF triple structure.
|
||||
*
|
||||
* The diagram visualizes:
|
||||
* - SUBJECTS (left): Classes that use this slot as a predicate
|
||||
* - PREDICATE (center): The slot itself
|
||||
* - OBJECTS (right): Range types that the slot points to
|
||||
*
|
||||
* For slot_usage overrides, the override details are shown as attributes
|
||||
* on the class node rather than as separate edge labels.
|
||||
*
|
||||
* @param slotName - The slot to center the diagram on
|
||||
* @param slotExportInfo - Export info showing what uses this slot
|
||||
* @param slotImportInfo - Import info showing what the slot depends on
|
||||
* @returns UMLDiagram with nodes and links for the slot relationships
|
||||
*/
|
||||
const buildSlotUMLDiagram = (
|
||||
slotName: string,
|
||||
slotExportInfo: SlotExportInfo,
|
||||
slotImportInfo: SlotImportInfo
|
||||
): UMLDiagram => {
|
||||
const nodes: UMLNode[] = [];
|
||||
const links: UMLLink[] = [];
|
||||
const addedNodes = new Set<string>();
|
||||
|
||||
// Log the actual import info to understand why slot ranges might be missing
|
||||
const centerImportInfo = allImportInfo[centerClassName];
|
||||
if (centerImportInfo) {
|
||||
debugLog(`[buildFilteredUMLDiagram] Center class import info:`, {
|
||||
parentClass: centerImportInfo.parentClass,
|
||||
mixins: centerImportInfo.mixins,
|
||||
slotRanges: centerImportInfo.slotRanges,
|
||||
slotUsageRanges: centerImportInfo.slotUsageRanges,
|
||||
linkedCollectionType: centerImportInfo.linkedCollectionType,
|
||||
linkedCustodianType: centerImportInfo.linkedCustodianType,
|
||||
// Track slot_usage overrides per class to add as node attributes
|
||||
const classOverrides = new Map<string, string[]>();
|
||||
for (const { className, overrides } of slotExportInfo.classesWithSlotUsage) {
|
||||
classOverrides.set(className, overrides);
|
||||
}
|
||||
|
||||
// Helper to add a node if not already added
|
||||
const addNode = (
|
||||
name: string,
|
||||
type: 'class' | 'enum' | 'slot' = 'class',
|
||||
attributes: Array<{ name: string; type: string }> = []
|
||||
) => {
|
||||
if (!addedNodes.has(name)) {
|
||||
addedNodes.add(name);
|
||||
nodes.push({
|
||||
id: name,
|
||||
name: name,
|
||||
type: type,
|
||||
attributes: attributes,
|
||||
methods: [],
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Add the central slot node (the predicate)
|
||||
addNode(slotName, 'slot');
|
||||
|
||||
// OBJECTS (right side): Add range types - what the slot points to
|
||||
if (slotImportInfo.rangeType) {
|
||||
const rangeType = slotImportInfo.rangeType;
|
||||
const nodeType = rangeType.isEnum ? 'enum' : 'class';
|
||||
addNode(rangeType.name, nodeType);
|
||||
|
||||
// Link from slot to range type (predicate → object)
|
||||
links.push({
|
||||
source: slotName,
|
||||
target: rangeType.name,
|
||||
type: 'aggregation',
|
||||
label: '→ object',
|
||||
});
|
||||
}
|
||||
|
||||
// Add any_of types (union types) - also objects
|
||||
for (const anyOfType of slotImportInfo.anyOfTypes) {
|
||||
const nodeType = anyOfType.isEnum ? 'enum' : 'class';
|
||||
addNode(anyOfType.name, nodeType);
|
||||
|
||||
links.push({
|
||||
source: slotName,
|
||||
target: anyOfType.name,
|
||||
type: 'aggregation',
|
||||
label: '→ object (any_of)',
|
||||
});
|
||||
}
|
||||
|
||||
// SUBJECTS (left side): Add classes that declare this slot
|
||||
// These are the subjects in triples using this predicate
|
||||
for (const className of slotExportInfo.classesUsingSlot) {
|
||||
// Check if this class also has slot_usage overrides
|
||||
const overrides = classOverrides.get(className);
|
||||
const attributes = overrides && overrides.length > 0
|
||||
? [{ name: 'slot_usage', type: overrides.join(', ') }]
|
||||
: [];
|
||||
|
||||
addNode(className, 'class', attributes);
|
||||
|
||||
// Link from class to slot (subject → predicate)
|
||||
links.push({
|
||||
source: className,
|
||||
target: slotName,
|
||||
type: 'association',
|
||||
label: 'subject →',
|
||||
});
|
||||
}
|
||||
|
||||
// Add classes that ONLY have slot_usage (don't declare directly)
|
||||
for (const { className, overrides } of slotExportInfo.classesWithSlotUsage) {
|
||||
// Skip if already added (declared the slot)
|
||||
if (addedNodes.has(className)) continue;
|
||||
|
||||
const attributes = overrides.length > 0
|
||||
? [{ name: 'slot_usage', type: overrides.join(', ') }]
|
||||
: [];
|
||||
|
||||
addNode(className, 'class', attributes);
|
||||
|
||||
// Link from class to slot - these customize but don't declare
|
||||
links.push({
|
||||
source: className,
|
||||
target: slotName,
|
||||
type: 'association',
|
||||
label: 'subject (via slot_usage) →',
|
||||
});
|
||||
} else {
|
||||
debugLog(`[buildFilteredUMLDiagram] WARNING: No import info for center class ${centerClassName}`);
|
||||
}
|
||||
|
||||
return {
|
||||
nodes,
|
||||
links,
|
||||
title: `${centerClassName} Relationships (Depth: ${depth})`,
|
||||
title: `${slotName} - Triple Structure`,
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -1160,6 +1247,9 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
// State for expandable UML diagram section in class details
|
||||
const [expandedUML, setExpandedUML] = useState<Set<string>>(new Set());
|
||||
|
||||
// State for expandable UML diagram section in slot details
|
||||
const [expandedSlotUML, setExpandedSlotUML] = useState<Set<string>>(new Set());
|
||||
|
||||
// State for expandable class slots section in class details
|
||||
const [expandedClassSlots, setExpandedClassSlots] = useState<Set<string>>(new Set());
|
||||
|
||||
|
|
@ -1185,6 +1275,10 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
// State for layout dropdown open per class
|
||||
const [umlLayoutDropdownOpen, setUmlLayoutDropdownOpen] = useState<Record<string, boolean>>({});
|
||||
|
||||
// State for custom UML heights (resizable by user dragging)
|
||||
// Key is class name or slot name, value is height in pixels
|
||||
const [umlCustomHeights, setUmlCustomHeights] = useState<Record<string, number>>({});
|
||||
|
||||
// State for parent class mapping (className -> parentClassName from is_a inheritance)
|
||||
// Built incrementally as classes are loaded for UML diagrams
|
||||
const [parentClassMap, setParentClassMap] = useState<Record<string, string>>({});
|
||||
|
|
@ -1475,72 +1569,103 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
}
|
||||
}, [slotImports, loadingSlotImports, isSchemaServiceComplete]);
|
||||
|
||||
// Toggle UML diagram section for a slot
|
||||
// Loads both exports AND imports data since UML diagram shows both directions
|
||||
const toggleSlotUML = useCallback(async (slotName: string) => {
|
||||
setExpandedSlotUML(prev => {
|
||||
const next = new Set(prev);
|
||||
if (next.has(slotName)) {
|
||||
next.delete(slotName);
|
||||
} else {
|
||||
next.add(slotName);
|
||||
}
|
||||
return next;
|
||||
});
|
||||
|
||||
// Load exports data if not already loaded
|
||||
if (!slotExports[slotName] && !loadingSlotExports.has(slotName) && isSchemaServiceComplete) {
|
||||
setLoadingSlotExports(prev => new Set(prev).add(slotName));
|
||||
try {
|
||||
const exportInfo = await linkmlSchemaService.getSlotExportInfo(slotName);
|
||||
setSlotExports(prev => ({ ...prev, [slotName]: exportInfo }));
|
||||
} catch (error) {
|
||||
console.error(`Error loading export info for slot ${slotName}:`, error);
|
||||
} finally {
|
||||
setLoadingSlotExports(prev => {
|
||||
const next = new Set(prev);
|
||||
next.delete(slotName);
|
||||
return next;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Load imports data if not already loaded
|
||||
if (!slotImports[slotName] && !loadingSlotImports.has(slotName) && isSchemaServiceComplete) {
|
||||
setLoadingSlotImports(prev => new Set(prev).add(slotName));
|
||||
try {
|
||||
const importInfo = await linkmlSchemaService.getSlotImportInfo(slotName);
|
||||
setSlotImports(prev => ({ ...prev, [slotName]: importInfo }));
|
||||
} catch (error) {
|
||||
console.error(`Error loading import info for slot ${slotName}:`, error);
|
||||
} finally {
|
||||
setLoadingSlotImports(prev => {
|
||||
const next = new Set(prev);
|
||||
next.delete(slotName);
|
||||
return next;
|
||||
});
|
||||
}
|
||||
}
|
||||
}, [slotExports, slotImports, loadingSlotExports, loadingSlotImports, isSchemaServiceComplete]);
|
||||
|
||||
// Toggle UML diagram section for a class
|
||||
// Loads both exports AND imports data since UML diagram can show both directions
|
||||
const toggleUML = useCallback(async (className: string) => {
|
||||
console.log(`[toggleUML] Called for class: ${className}`);
|
||||
console.log(`[toggleUML] State: isSchemaServiceComplete=${isSchemaServiceComplete}, hasExports=${!!classExports[className]}, hasImports=${!!classImports[className]}`);
|
||||
console.log(`[toggleUML] Loading state: loadingExports=${loadingExports.has(className)}, loadingImports=${loadingImports.has(className)}`);
|
||||
|
||||
setExpandedUML(prev => {
|
||||
const next = new Set(prev);
|
||||
if (next.has(className)) {
|
||||
next.delete(className);
|
||||
console.log(`[toggleUML] Collapsing UML for ${className}`);
|
||||
} else {
|
||||
next.add(className);
|
||||
console.log(`[toggleUML] Expanding UML for ${className}`);
|
||||
}
|
||||
return next;
|
||||
});
|
||||
|
||||
// Load exports data if not already loaded (for "Show Exports" checkbox)
|
||||
if (!classExports[className] && !loadingExports.has(className) && isSchemaServiceComplete) {
|
||||
console.log(`[toggleUML] Starting to load exports for ${className}`);
|
||||
setLoadingExports(prev => new Set(prev).add(className));
|
||||
try {
|
||||
const exportInfo = await linkmlSchemaService.getClassExportInfo(className);
|
||||
console.log(`[toggleUML] Loaded exports for ${className}:`, exportInfo);
|
||||
setClassExports(prev => ({ ...prev, [className]: exportInfo }));
|
||||
} catch (error) {
|
||||
console.error(`[toggleUML] Error loading export info for ${className}:`, error);
|
||||
console.error(`Error loading export info for ${className}:`, error);
|
||||
} finally {
|
||||
setLoadingExports(prev => {
|
||||
const next = new Set(prev);
|
||||
next.delete(className);
|
||||
return next;
|
||||
});
|
||||
console.log(`[toggleUML] Finished loading exports for ${className}`);
|
||||
}
|
||||
} else {
|
||||
console.log(`[toggleUML] Skipping exports load: hasExports=${!!classExports[className]}, isLoading=${loadingExports.has(className)}, serviceComplete=${isSchemaServiceComplete}`);
|
||||
}
|
||||
|
||||
// Load imports data if not already loaded (for "Show Imports" checkbox)
|
||||
if (!classImports[className] && !loadingImports.has(className) && isSchemaServiceComplete) {
|
||||
console.log(`[toggleUML] Starting to load imports for ${className}`);
|
||||
setLoadingImports(prev => new Set(prev).add(className));
|
||||
try {
|
||||
const importInfo = await linkmlSchemaService.getClassImportInfo(className);
|
||||
console.log(`[toggleUML] Loaded imports for ${className}:`, importInfo);
|
||||
setClassImports(prev => ({ ...prev, [className]: importInfo }));
|
||||
|
||||
// Also load primitive slots for UML attributes
|
||||
const primitiveSlots = await linkmlSchemaService.getClassPrimitiveSlots(className);
|
||||
console.log(`[toggleUML] Loaded primitive slots for ${className}:`, primitiveSlots);
|
||||
setClassPrimitiveSlots(prev => ({ ...prev, [className]: primitiveSlots }));
|
||||
} catch (error) {
|
||||
console.error(`[toggleUML] Error loading import info for ${className}:`, error);
|
||||
console.error(`Error loading import info for ${className}:`, error);
|
||||
} finally {
|
||||
setLoadingImports(prev => {
|
||||
const next = new Set(prev);
|
||||
next.delete(className);
|
||||
return next;
|
||||
});
|
||||
console.log(`[toggleUML] Finished loading imports for ${className}`);
|
||||
}
|
||||
} else {
|
||||
console.log(`[toggleUML] Skipping imports load: hasImports=${!!classImports[className]}, isLoading=${loadingImports.has(className)}, serviceComplete=${isSchemaServiceComplete}`);
|
||||
}
|
||||
}, [classExports, classImports, loadingExports, loadingImports, isSchemaServiceComplete]);
|
||||
|
||||
|
|
@ -2072,7 +2197,6 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
// Don't load custodian types until schema service has finished loading all class files
|
||||
// This prevents the race condition where we try to read annotations before they're loaded
|
||||
if (!isSchemaServiceComplete) {
|
||||
console.log('[LinkMLViewerPage] Waiting for schema service to complete before loading custodian types...');
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -2081,12 +2205,6 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
const slots = extractSlots(schema);
|
||||
const enums = extractEnums(schema);
|
||||
|
||||
console.log('[LinkMLViewerPage] Schema service complete, loading custodian types for', {
|
||||
classes: classes.length,
|
||||
slots: slots.length,
|
||||
enums: enums.length
|
||||
});
|
||||
|
||||
// Load types for all classes in parallel
|
||||
const classTypesPromises = classes.map(async (cls) => {
|
||||
const types = await getCustodianTypesForClassAsync(cls.name);
|
||||
|
|
@ -2132,14 +2250,8 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
setSlotCustodianTypes(slotTypesMap);
|
||||
setEnumCustodianTypes(enumTypesMap);
|
||||
setCustodianTypesLoaded(true);
|
||||
|
||||
console.log('[LinkMLViewerPage] Loaded custodian types from schema annotations:', {
|
||||
classes: Object.keys(classTypesMap).length,
|
||||
slots: Object.keys(slotTypesMap).length,
|
||||
enums: Object.keys(enumTypesMap).length
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('[LinkMLViewerPage] Error loading custodian types:', error);
|
||||
console.error('Error loading custodian types:', error);
|
||||
// Fall back to sync functions (will use defaults)
|
||||
setCustodianTypesLoaded(true);
|
||||
}
|
||||
|
|
@ -2157,9 +2269,8 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
try {
|
||||
const counts = await linkmlSchemaService.getAllClassDependencyCounts();
|
||||
setDependencyCounts(counts);
|
||||
console.log('[LinkMLViewerPage] Pre-loaded dependency counts for', counts.size, 'classes');
|
||||
} catch (error) {
|
||||
console.error('[LinkMLViewerPage] Error loading dependency counts:', error);
|
||||
console.error('Error loading dependency counts:', error);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -2194,11 +2305,8 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
}
|
||||
}
|
||||
setSlotSemanticLabels(labels);
|
||||
|
||||
console.log('[LinkMLViewerPage] Pre-loaded slot definitions for', slots.size, 'slots');
|
||||
console.log('[LinkMLViewerPage] Computed semantic labels for', labels.size, 'slots');
|
||||
} catch (error) {
|
||||
console.error('[LinkMLViewerPage] Error loading slot definitions:', error);
|
||||
console.error('Error loading slot definitions:', error);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -2946,12 +3054,12 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
<span className="linkml-viewer__uml-empty-icon">🔗</span>
|
||||
<p>{t('umlNoRelationshipsShown')}</p>
|
||||
</div>
|
||||
) : (
|
||||
) : (
|
||||
<div
|
||||
className={`linkml-viewer__uml-container ${umlFullscreen === cls.name ? 'linkml-viewer__uml-container--fullscreen' : ''}`}
|
||||
className={`linkml-viewer__uml-container linkml-viewer__uml-container--resizable ${umlFullscreen === cls.name ? 'linkml-viewer__uml-container--fullscreen' : ''}`}
|
||||
style={umlFullscreen !== cls.name ? {
|
||||
width: '100%',
|
||||
height: '720px'
|
||||
height: umlCustomHeights[`class:${cls.name}`] || 720
|
||||
} : undefined}
|
||||
>
|
||||
<UMLVisualization
|
||||
|
|
@ -2962,7 +3070,7 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
umlShowExports[cls.name] !== false
|
||||
)}
|
||||
width={umlFullscreen === cls.name ? window.innerWidth : undefined}
|
||||
height={umlFullscreen === cls.name ? window.innerHeight : 720}
|
||||
height={umlFullscreen === cls.name ? window.innerHeight : (umlCustomHeights[`class:${cls.name}`] || 720)}
|
||||
layoutType={umlLayoutType[cls.name] || 'dagre'}
|
||||
dagreDirection={umlDagreDirection[cls.name] || 'TB'}
|
||||
/>
|
||||
|
|
@ -2975,6 +3083,32 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
✕
|
||||
</button>
|
||||
)}
|
||||
{/* Resize handle - only show when not in fullscreen */}
|
||||
{umlFullscreen !== cls.name && (
|
||||
<div
|
||||
className="linkml-viewer__uml-resize-handle"
|
||||
onMouseDown={(e) => {
|
||||
e.preventDefault();
|
||||
const startY = e.clientY;
|
||||
const startHeight = umlCustomHeights[`class:${cls.name}`] || 720;
|
||||
|
||||
const handleMouseMove = (moveEvent: MouseEvent) => {
|
||||
const deltaY = moveEvent.clientY - startY;
|
||||
const newHeight = Math.max(300, startHeight + deltaY);
|
||||
setUmlCustomHeights(prev => ({ ...prev, [`class:${cls.name}`]: newHeight }));
|
||||
};
|
||||
|
||||
const handleMouseUp = () => {
|
||||
document.removeEventListener('mousemove', handleMouseMove);
|
||||
document.removeEventListener('mouseup', handleMouseUp);
|
||||
};
|
||||
|
||||
document.addEventListener('mousemove', handleMouseMove);
|
||||
document.addEventListener('mouseup', handleMouseUp);
|
||||
}}
|
||||
title="Drag to resize"
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
|
@ -3377,6 +3511,83 @@ const LinkMLViewerPage: React.FC = () => {
|
|||
</div>
|
||||
)}
|
||||
|
||||
{/* UML Diagram Section - Shows visual representation of slot usage */}
|
||||
{!className && isSchemaServiceComplete && (
|
||||
<div className="linkml-viewer__uml-section">
|
||||
<button
|
||||
className={`linkml-viewer__uml-toggle ${expandedSlotUML.has(slot.name) ? 'linkml-viewer__uml-toggle--expanded' : ''}`}
|
||||
onClick={() => toggleSlotUML(slot.name)}
|
||||
title={language === 'nl' ? 'Toont een visueel diagram van hoe deze slot wordt gebruikt' : 'Shows a visual diagram of how this slot is used'}
|
||||
>
|
||||
<span className="linkml-viewer__uml-icon">{expandedSlotUML.has(slot.name) ? '▼' : '▶'}</span>
|
||||
<span className="linkml-viewer__label">UML Diagram</span>
|
||||
{(loadingSlotExports.has(slot.name) || loadingSlotImports.has(slot.name)) &&
|
||||
<span className="linkml-viewer__uml-loading">Loading...</span>
|
||||
}
|
||||
</button>
|
||||
{expandedSlotUML.has(slot.name) && slotExports[slot.name] && slotImports[slot.name] && (
|
||||
<div
|
||||
className="linkml-viewer__uml-content linkml-viewer__uml-content--resizable"
|
||||
style={{
|
||||
height: umlCustomHeights[`slot:${slot.name}`] || Math.max(450,
|
||||
(slotExports[slot.name].classesUsingSlot.length +
|
||||
slotExports[slot.name].classesWithSlotUsage.length +
|
||||
(slotImports[slot.name].rangeType ? 1 : 0) +
|
||||
slotImports[slot.name].anyOfTypes.length + 1) * 80
|
||||
)
|
||||
}}
|
||||
>
|
||||
<UMLVisualization
|
||||
diagram={buildSlotUMLDiagram(slot.name, slotExports[slot.name], slotImports[slot.name])}
|
||||
layoutType="dagre"
|
||||
dagreDirection="LR"
|
||||
height={umlCustomHeights[`slot:${slot.name}`] || Math.max(450,
|
||||
(slotExports[slot.name].classesUsingSlot.length +
|
||||
slotExports[slot.name].classesWithSlotUsage.length +
|
||||
(slotImports[slot.name].rangeType ? 1 : 0) +
|
||||
slotImports[slot.name].anyOfTypes.length + 1) * 80
|
||||
)}
|
||||
/>
|
||||
{/* Resize handle */}
|
||||
<div
|
||||
className="linkml-viewer__uml-resize-handle"
|
||||
onMouseDown={(e) => {
|
||||
e.preventDefault();
|
||||
const startY = e.clientY;
|
||||
const startHeight = umlCustomHeights[`slot:${slot.name}`] || Math.max(450,
|
||||
(slotExports[slot.name].classesUsingSlot.length +
|
||||
slotExports[slot.name].classesWithSlotUsage.length +
|
||||
(slotImports[slot.name].rangeType ? 1 : 0) +
|
||||
slotImports[slot.name].anyOfTypes.length + 1) * 80
|
||||
);
|
||||
|
||||
const handleMouseMove = (moveEvent: MouseEvent) => {
|
||||
const deltaY = moveEvent.clientY - startY;
|
||||
const newHeight = Math.max(200, startHeight + deltaY);
|
||||
setUmlCustomHeights(prev => ({ ...prev, [`slot:${slot.name}`]: newHeight }));
|
||||
};
|
||||
|
||||
const handleMouseUp = () => {
|
||||
document.removeEventListener('mousemove', handleMouseMove);
|
||||
document.removeEventListener('mouseup', handleMouseUp);
|
||||
};
|
||||
|
||||
document.addEventListener('mousemove', handleMouseMove);
|
||||
document.addEventListener('mouseup', handleMouseUp);
|
||||
}}
|
||||
title="Drag to resize"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
{expandedSlotUML.has(slot.name) && (!slotExports[slot.name] || !slotImports[slot.name]) &&
|
||||
!loadingSlotExports.has(slot.name) && !loadingSlotImports.has(slot.name) && (
|
||||
<div className="linkml-viewer__uml-content linkml-viewer__uml-content--placeholder">
|
||||
<p>{language === 'nl' ? 'Klik om UML-diagram te laden' : 'Click to load UML diagram'}</p>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* Side-by-side comparison view - only shown when expanded */}
|
||||
{showComparison && hasSlotUsageOverrides && genericSlot && (
|
||||
<div className="linkml-viewer__slot-comparison">
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"generated": "2026-01-24T16:41:07.363Z",
|
||||
"generated": "2026-01-25T11:47:39.065Z",
|
||||
"schemaRoot": "/schemas/20251121/linkml",
|
||||
"totalFiles": 3044,
|
||||
"totalFiles": 3045,
|
||||
"categoryCounts": {
|
||||
"main": 4,
|
||||
"class": 1004,
|
||||
"class": 1026,
|
||||
"enum": 154,
|
||||
"slot": 1878,
|
||||
"slot": 1857,
|
||||
"module": 4
|
||||
},
|
||||
"categories": [
|
||||
|
|
@ -135,6 +135,11 @@
|
|||
"path": "modules/classes/Agent.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Alignment",
|
||||
"path": "modules/classes/Alignment.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "AllocationAgency",
|
||||
"path": "modules/classes/AllocationAgency.yaml",
|
||||
|
|
@ -670,6 +675,16 @@
|
|||
"path": "modules/classes/CateringPlace.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "CateringType",
|
||||
"path": "modules/classes/CateringType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "CateringTypes",
|
||||
"path": "modules/classes/CateringTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "CathedralArchive",
|
||||
"path": "modules/classes/CathedralArchive.yaml",
|
||||
|
|
@ -1395,6 +1410,11 @@
|
|||
"path": "modules/classes/DeceasedStatus.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Deliverable",
|
||||
"path": "modules/classes/Deliverable.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Department",
|
||||
"path": "modules/classes/Department.yaml",
|
||||
|
|
@ -1415,6 +1435,11 @@
|
|||
"path": "modules/classes/DepartmentalArchivesRecordSetTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DeploymentEvent",
|
||||
"path": "modules/classes/DeploymentEvent.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DepositArchive",
|
||||
"path": "modules/classes/DepositArchive.yaml",
|
||||
|
|
@ -1440,6 +1465,31 @@
|
|||
"path": "modules/classes/DetectedEntity.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DetectionLevelType",
|
||||
"path": "modules/classes/DetectionLevelType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DetectionLevelTypes",
|
||||
"path": "modules/classes/DetectionLevelTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DetectionThreshold",
|
||||
"path": "modules/classes/DetectionThreshold.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DeviceType",
|
||||
"path": "modules/classes/DeviceType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DeviceTypes",
|
||||
"path": "modules/classes/DeviceTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "DigitalArchive",
|
||||
"path": "modules/classes/DigitalArchive.yaml",
|
||||
|
|
@ -1700,6 +1750,11 @@
|
|||
"path": "modules/classes/Entity.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "EntityReconstruction",
|
||||
"path": "modules/classes/EntityReconstruction.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "EnvironmentalZone",
|
||||
"path": "modules/classes/EnvironmentalZone.yaml",
|
||||
|
|
@ -2250,6 +2305,11 @@
|
|||
"path": "modules/classes/InvestmentArea.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "IoTDevice",
|
||||
"path": "modules/classes/IoTDevice.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "IsilCodeEntry",
|
||||
"path": "modules/classes/IsilCodeEntry.yaml",
|
||||
|
|
@ -2295,6 +2355,16 @@
|
|||
"path": "modules/classes/Label.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "LabelType",
|
||||
"path": "modules/classes/LabelType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "LabelTypes",
|
||||
"path": "modules/classes/LabelTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Landsarkiv",
|
||||
"path": "modules/classes/Landsarkiv.yaml",
|
||||
|
|
@ -2520,6 +2590,16 @@
|
|||
"path": "modules/classes/MainPart.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Manager",
|
||||
"path": "modules/classes/Manager.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Manufacturer",
|
||||
"path": "modules/classes/Manufacturer.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "MappingType",
|
||||
"path": "modules/classes/MappingType.yaml",
|
||||
|
|
@ -2660,6 +2740,11 @@
|
|||
"path": "modules/classes/MixedCustodianType.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Model",
|
||||
"path": "modules/classes/Model.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "MonasteryArchive",
|
||||
"path": "modules/classes/MonasteryArchive.yaml",
|
||||
|
|
@ -2895,6 +2980,11 @@
|
|||
"path": "modules/classes/OAIPMHEndpoint.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Observation",
|
||||
"path": "modules/classes/Observation.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "OfficialInstitutionType",
|
||||
"path": "modules/classes/OfficialInstitutionType.yaml",
|
||||
|
|
@ -3280,6 +3370,16 @@
|
|||
"path": "modules/classes/PressArchiveRecordSetTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Price",
|
||||
"path": "modules/classes/Price.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "PriceRange",
|
||||
"path": "modules/classes/PriceRange.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "PrimaryDigitalPresenceAssertion",
|
||||
"path": "modules/classes/PrimaryDigitalPresenceAssertion.yaml",
|
||||
|
|
@ -3640,6 +3740,11 @@
|
|||
"path": "modules/classes/ResearchSourceData.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Resolution",
|
||||
"path": "modules/classes/Resolution.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "ResourceType",
|
||||
"path": "modules/classes/ResourceType.yaml",
|
||||
|
|
@ -4075,6 +4180,11 @@
|
|||
"path": "modules/classes/StateRegionalArchiveCzechiaRecordSetTypes.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Status",
|
||||
"path": "modules/classes/Status.yaml",
|
||||
"category": "class"
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"path": "modules/classes/Storage.yaml",
|
||||
|
|
@ -5902,26 +6012,11 @@
|
|||
"path": "modules/slots/begin_of_the_end.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "catering_price_range",
|
||||
"path": "modules/slots/catering_price_range.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "catering_type",
|
||||
"path": "modules/slots/catering_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "cessation_observed_in",
|
||||
"path": "modules/slots/cessation_observed_in.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "change_in_net_asset",
|
||||
"path": "modules/slots/change_in_net_asset.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "change_rationale",
|
||||
"path": "modules/slots/change_rationale.yaml",
|
||||
|
|
@ -6582,106 +6677,11 @@
|
|||
"path": "modules/slots/date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "deduction_percentage",
|
||||
"path": "modules/slots/deduction_percentage.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "default_access_policy",
|
||||
"path": "modules/slots/default_access_policy.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "default_audio_language",
|
||||
"path": "modules/slots/default_audio_language.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "default_language",
|
||||
"path": "modules/slots/default_language.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "default_position",
|
||||
"path": "modules/slots/default_position.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "defined_by_standard",
|
||||
"path": "modules/slots/defined_by_standard.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "definition",
|
||||
"path": "modules/slots/definition.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "degree_name",
|
||||
"path": "modules/slots/degree_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "degree_of_certainty",
|
||||
"path": "modules/slots/degree_of_certainty.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "deliverable",
|
||||
"path": "modules/slots/deliverable.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "departement_code",
|
||||
"path": "modules/slots/departement_code.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "departement_name",
|
||||
"path": "modules/slots/departement_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_code",
|
||||
"path": "modules/slots/department_code.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_description",
|
||||
"path": "modules/slots/department_description.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_head",
|
||||
"path": "modules/slots/department_head.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_id",
|
||||
"path": "modules/slots/department_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "department_name",
|
||||
"path": "modules/slots/department_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "deployment_date",
|
||||
"path": "modules/slots/deployment_date.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "derived_from_entity",
|
||||
"path": "modules/slots/derived_from_entity.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "derived_from_observation",
|
||||
"path": "modules/slots/derived_from_observation.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "derives_or_derived_from",
|
||||
"path": "modules/slots/derives_or_derived_from.yaml",
|
||||
|
|
@ -6692,66 +6692,16 @@
|
|||
"path": "modules/slots/describes_or_described.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "description",
|
||||
"path": "modules/slots/description.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "description_text",
|
||||
"path": "modules/slots/description_text.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "description_type",
|
||||
"path": "modules/slots/description_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "detection_count",
|
||||
"path": "modules/slots/detection_count.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "detection_level",
|
||||
"path": "modules/slots/detection_level.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "detection_threshold",
|
||||
"path": "modules/slots/detection_threshold.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_count",
|
||||
"path": "modules/slots/device_count.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_id",
|
||||
"path": "modules/slots/device_id.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_manufacturer",
|
||||
"path": "modules/slots/device_manufacturer.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_model",
|
||||
"path": "modules/slots/device_model.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_name",
|
||||
"path": "modules/slots/device_name.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "device_type",
|
||||
"path": "modules/slots/device_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "diarization_confidence",
|
||||
"path": "modules/slots/diarization_confidence.yaml",
|
||||
|
|
@ -7712,6 +7662,11 @@
|
|||
"path": "modules/slots/filing_type.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "filters_or_filtered",
|
||||
"path": "modules/slots/filters_or_filtered.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "final_of_the_final",
|
||||
"path": "modules/slots/final_of_the_final.yaml",
|
||||
|
|
@ -8862,6 +8817,11 @@
|
|||
"path": "modules/slots/has_or_had_agent.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_alignment",
|
||||
"path": "modules/slots/has_or_had_alignment.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_alternative_name",
|
||||
"path": "modules/slots/has_or_had_alternative_name.yaml",
|
||||
|
|
@ -9692,6 +9652,11 @@
|
|||
"path": "modules/slots/has_or_had_previous_owner.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_price",
|
||||
"path": "modules/slots/has_or_had_price.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_primary_presence_assertion",
|
||||
"path": "modules/slots/has_or_had_primary_presence_assertion.yaml",
|
||||
|
|
@ -9822,6 +9787,11 @@
|
|||
"path": "modules/slots/has_or_had_research_attempt.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_resolution",
|
||||
"path": "modules/slots/has_or_had_resolution.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_responsibility",
|
||||
"path": "modules/slots/has_or_had_responsibility.yaml",
|
||||
|
|
@ -10102,6 +10072,11 @@
|
|||
"path": "modules/slots/has_or_had_treatment.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_treshold",
|
||||
"path": "modules/slots/has_or_had_treshold.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "has_or_had_type",
|
||||
"path": "modules/slots/has_or_had_type.yaml",
|
||||
|
|
@ -10967,6 +10942,11 @@
|
|||
"path": "modules/slots/is_or_was_collection_of.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_created_by",
|
||||
"path": "modules/slots/is_or_was_created_by.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_created_through",
|
||||
"path": "modules/slots/is_or_was_created_through.yaml",
|
||||
|
|
@ -10977,6 +10957,11 @@
|
|||
"path": "modules/slots/is_or_was_decommissioned_at.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_deployed_at",
|
||||
"path": "modules/slots/is_or_was_deployed_at.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_derived_from",
|
||||
"path": "modules/slots/is_or_was_derived_from.yaml",
|
||||
|
|
@ -11027,6 +11012,11 @@
|
|||
"path": "modules/slots/is_or_was_instance_of.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_instantiated_by",
|
||||
"path": "modules/slots/is_or_was_instantiated_by.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "is_or_was_involved_in",
|
||||
"path": "modules/slots/is_or_was_involved_in.yaml",
|
||||
|
|
@ -12517,6 +12507,11 @@
|
|||
"path": "modules/slots/offers_donation_scheme.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "offers_or_offered",
|
||||
"path": "modules/slots/offers_or_offered.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "offers_or_offered_access",
|
||||
"path": "modules/slots/offers_or_offered_access.yaml",
|
||||
|
|
@ -13787,6 +13782,11 @@
|
|||
"path": "modules/slots/recurrence_pattern.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "refers_or_referred_to",
|
||||
"path": "modules/slots/refers_or_referred_to.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "refers_to_access_policy",
|
||||
"path": "modules/slots/refers_to_access_policy.yaml",
|
||||
|
|
@ -14932,6 +14932,11 @@
|
|||
"path": "modules/slots/specificity_timestamp.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "specifies_or_specified",
|
||||
"path": "modules/slots/specifies_or_specified.yaml",
|
||||
"category": "slot"
|
||||
},
|
||||
{
|
||||
"name": "specimen_count",
|
||||
"path": "modules/slots/specimen_count.yaml",
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue