feat(schema): Migrate temporal slots and introduce new pattern classes

Major slot migrations following slot_fixes.yaml revisions:
- TimeSpan: begin_of_the_begin, begin_of_the_end, end_of_the_begin, end_of_the_end
- Quantity: has_or_had_measurement_unit with MeasureUnit class
- Description: has_or_had_description with Description class
- URL, WikiData, Timestamp, Location, Provenance pattern classes

New slots for RiC-O compliance:
- Temporal: has_or_had_time_interval, calendar_system
- Transfer: is_or_was_transferred, has_or_had_policy
- Location: starts/ends_or_started/ended_at_location
- Provenance: has_or_had_provenance_path, is_or_was_webarchived_at

Archive deprecated slots per Rule 53 workflow.
This commit is contained in:
kempersc 2026-01-14 20:01:55 +01:00
parent 9f9c69f7b8
commit 53c6dbc2d9
203 changed files with 19296 additions and 4504 deletions

View file

@ -1,12 +1,12 @@
{
"generated": "2026-01-14T16:04:58.914Z",
"generated": "2026-01-14T18:57:52.851Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2888,
"totalFiles": 2957,
"categoryCounts": {
"main": 4,
"class": 689,
"enum": 149,
"slot": 2042,
"class": 718,
"enum": 151,
"slot": 2080,
"module": 4
},
"categories": [
@ -125,6 +125,16 @@
"path": "modules/classes/AllocationAgency.yaml",
"category": "class"
},
{
"name": "Alpha2Code",
"path": "modules/classes/Alpha2Code.yaml",
"category": "class"
},
{
"name": "Alpha3Code",
"path": "modules/classes/Alpha3Code.yaml",
"category": "class"
},
{
"name": "AlternativeName",
"path": "modules/classes/AlternativeName.yaml",
@ -260,6 +270,11 @@
"path": "modules/classes/ArchivesRegionalesRecordSetTypes.yaml",
"category": "class"
},
{
"name": "Area",
"path": "modules/classes/Area.yaml",
"category": "class"
},
{
"name": "ArtArchive",
"path": "modules/classes/ArtArchive.yaml",
@ -730,6 +745,21 @@
"path": "modules/classes/ContributingAgency.yaml",
"category": "class"
},
{
"name": "ConversionRate",
"path": "modules/classes/ConversionRate.yaml",
"category": "class"
},
{
"name": "ConversionRateType",
"path": "modules/classes/ConversionRateType.yaml",
"category": "class"
},
{
"name": "ConversionRateTypes",
"path": "modules/classes/ConversionRateTypes.yaml",
"category": "class"
},
{
"name": "CoordinateProvenance",
"path": "modules/classes/CoordinateProvenance.yaml",
@ -765,6 +795,11 @@
"path": "modules/classes/CurationActivity.yaml",
"category": "class"
},
{
"name": "Currency",
"path": "modules/classes/Currency.yaml",
"category": "class"
},
{
"name": "CurrentArchive",
"path": "modules/classes/CurrentArchive.yaml",
@ -935,6 +970,11 @@
"path": "modules/classes/DepositArchiveRecordSetTypes.yaml",
"category": "class"
},
{
"name": "Description",
"path": "modules/classes/Description.yaml",
"category": "class"
},
{
"name": "DetectedEntity",
"path": "modules/classes/DetectedEntity.yaml",
@ -1160,6 +1200,11 @@
"path": "modules/classes/Expenses.yaml",
"category": "class"
},
{
"name": "ExternalWork",
"path": "modules/classes/ExternalWork.yaml",
"category": "class"
},
{
"name": "ExtractionMetadata",
"path": "modules/classes/ExtractionMetadata.yaml",
@ -1450,6 +1495,11 @@
"path": "modules/classes/HouseArchiveRecordSetTypes.yaml",
"category": "class"
},
{
"name": "Hypothesis",
"path": "modules/classes/Hypothesis.yaml",
"category": "class"
},
{
"name": "IconographicArchives",
"path": "modules/classes/IconographicArchives.yaml",
@ -1720,6 +1770,11 @@
"path": "modules/classes/LocalHistoryArchiveRecordSetTypes.yaml",
"category": "class"
},
{
"name": "Location",
"path": "modules/classes/Location.yaml",
"category": "class"
},
{
"name": "LocationLibrary",
"path": "modules/classes/LocationLibrary.yaml",
@ -1760,6 +1815,11 @@
"path": "modules/classes/MatchingSource.yaml",
"category": "class"
},
{
"name": "MeasureUnit",
"path": "modules/classes/MeasureUnit.yaml",
"category": "class"
},
{
"name": "MediaAppearanceEntry",
"path": "modules/classes/MediaAppearanceEntry.yaml",
@ -1795,6 +1855,11 @@
"path": "modules/classes/MergeNote.yaml",
"category": "class"
},
{
"name": "Methodology",
"path": "modules/classes/Methodology.yaml",
"category": "class"
},
{
"name": "METSAPI",
"path": "modules/classes/METSAPI.yaml",
@ -2200,6 +2265,11 @@
"path": "modules/classes/PatternClassification.yaml",
"category": "class"
},
{
"name": "PaymentMethod",
"path": "modules/classes/PaymentMethod.yaml",
"category": "class"
},
{
"name": "PerformingArtsArchive",
"path": "modules/classes/PerformingArtsArchive.yaml",
@ -2295,6 +2365,11 @@
"path": "modules/classes/PhotoMetadata.yaml",
"category": "class"
},
{
"name": "Place",
"path": "modules/classes/Place.yaml",
"category": "class"
},
{
"name": "PlaceFeature",
"path": "modules/classes/PlaceFeature.yaml",
@ -2370,6 +2445,11 @@
"path": "modules/classes/Project.yaml",
"category": "class"
},
{
"name": "Provenance",
"path": "modules/classes/Provenance.yaml",
"category": "class"
},
{
"name": "ProvenanceBlock",
"path": "modules/classes/ProvenanceBlock.yaml",
@ -2695,6 +2775,21 @@
"path": "modules/classes/ScientificArchiveRecordSetTypes.yaml",
"category": "class"
},
{
"name": "Scope",
"path": "modules/classes/Scope.yaml",
"category": "class"
},
{
"name": "ScopeType",
"path": "modules/classes/ScopeType.yaml",
"category": "class"
},
{
"name": "ScopeTypes",
"path": "modules/classes/ScopeTypes.yaml",
"category": "class"
},
{
"name": "SearchAPI",
"path": "modules/classes/SearchAPI.yaml",
@ -3060,6 +3155,11 @@
"path": "modules/classes/TimeEntryType.yaml",
"category": "class"
},
{
"name": "TimeInterval",
"path": "modules/classes/TimeInterval.yaml",
"category": "class"
},
{
"name": "TimeSlot",
"path": "modules/classes/TimeSlot.yaml",
@ -3075,6 +3175,11 @@
"path": "modules/classes/TimespanBlock.yaml",
"category": "class"
},
{
"name": "Timestamp",
"path": "modules/classes/Timestamp.yaml",
"category": "class"
},
{
"name": "TradeRegister",
"path": "modules/classes/TradeRegister.yaml",
@ -3095,6 +3200,16 @@
"path": "modules/classes/TradeUnionArchiveRecordSetTypes.yaml",
"category": "class"
},
{
"name": "TransferEvent",
"path": "modules/classes/TransferEvent.yaml",
"category": "class"
},
{
"name": "TransferPolicy",
"path": "modules/classes/TransferPolicy.yaml",
"category": "class"
},
{
"name": "TransitionType",
"path": "modules/classes/TransitionType.yaml",
@ -3145,6 +3260,16 @@
"path": "modules/classes/UnspecifiedType.yaml",
"category": "class"
},
{
"name": "UpdateFrequency",
"path": "modules/classes/UpdateFrequency.yaml",
"category": "class"
},
{
"name": "URL",
"path": "modules/classes/URL.yaml",
"category": "class"
},
{
"name": "ValidationMetadata",
"path": "modules/classes/ValidationMetadata.yaml",
@ -3230,6 +3355,11 @@
"path": "modules/classes/VideoTranscript.yaml",
"category": "class"
},
{
"name": "VisitingScholar",
"path": "modules/classes/VisitingScholar.yaml",
"category": "class"
},
{
"name": "Warehouse",
"path": "modules/classes/Warehouse.yaml",
@ -3365,6 +3495,16 @@
"path": "modules/classes/WikidataEntity.yaml",
"category": "class"
},
{
"name": "WikiDataEntry",
"path": "modules/classes/WikiDataEntry.yaml",
"category": "class"
},
{
"name": "WikiDataIdentifier",
"path": "modules/classes/WikiDataIdentifier.yaml",
"category": "class"
},
{
"name": "WikidataIdentifiers",
"path": "modules/classes/WikidataIdentifiers.yaml",
@ -3445,6 +3585,11 @@
"path": "modules/classes/WorldHeritageSite.yaml",
"category": "class"
},
{
"name": "XPath",
"path": "modules/classes/XPath.yaml",
"category": "class"
},
{
"name": "YoutubeChannel",
"path": "modules/classes/YoutubeChannel.yaml",
@ -3896,6 +4041,16 @@
"path": "modules/enums/LocationResolutionMethodEnum.yaml",
"category": "enum"
},
{
"name": "MeasureUnitEnum",
"path": "modules/enums/MeasureUnitEnum.yaml",
"category": "enum"
},
{
"name": "MethodologyTypeEnum",
"path": "modules/enums/MethodologyTypeEnum.yaml",
"category": "enum"
},
{
"name": "METSIdentifierTypeEnum",
"path": "modules/enums/METSIdentifierTypeEnum.yaml",
@ -4242,6 +4397,11 @@
"name": "slot",
"displayName": "Slots",
"files": [
{
"name": "accepts_or_accepted",
"path": "modules/slots/accepts_or_accepted.yaml",
"category": "slot"
},
{
"name": "accepts_or_accepted_external_work",
"path": "modules/slots/accepts_or_accepted_external_work.yaml",
@ -4278,13 +4438,8 @@
"category": "slot"
},
{
"name": "annual_participants",
"path": "modules/slots/annual_participants.yaml",
"category": "slot"
},
{
"name": "applies_to_call",
"path": "modules/slots/applies_to_call.yaml",
"name": "applies_or_applied_to_call",
"path": "modules/slots/applies_or_applied_to_call.yaml",
"category": "slot"
},
{
@ -4293,18 +4448,8 @@
"category": "slot"
},
{
"name": "area_hectares",
"path": "modules/slots/area_hectares.yaml",
"category": "slot"
},
{
"name": "arrangement_notes",
"path": "modules/slots/arrangement_notes.yaml",
"category": "slot"
},
{
"name": "available_caption_languages",
"path": "modules/slots/available_caption_languages.yaml",
"name": "asserts_or_asserted",
"path": "modules/slots/asserts_or_asserted.yaml",
"category": "slot"
},
{
@ -4322,11 +4467,6 @@
"path": "modules/slots/begin_of_the_end.yaml",
"category": "slot"
},
{
"name": "beneficiary_group",
"path": "modules/slots/beneficiary_group.yaml",
"category": "slot"
},
{
"name": "benefit",
"path": "modules/slots/benefit.yaml",
@ -4357,21 +4497,6 @@
"path": "modules/slots/bounding_box.yaml",
"category": "slot"
},
{
"name": "branch_head",
"path": "modules/slots/branch_head.yaml",
"category": "slot"
},
{
"name": "budget_currency",
"path": "modules/slots/budget_currency.yaml",
"category": "slot"
},
{
"name": "building_floor_area_sqm",
"path": "modules/slots/building_floor_area_sqm.yaml",
"category": "slot"
},
{
"name": "business_criticality",
"path": "modules/slots/business_criticality.yaml",
@ -4387,6 +4512,11 @@
"path": "modules/slots/cached_token.yaml",
"category": "slot"
},
{
"name": "calendar_system",
"path": "modules/slots/calendar_system.yaml",
"category": "slot"
},
{
"name": "call_description",
"path": "modules/slots/call_description.yaml",
@ -5842,6 +5972,16 @@
"path": "modules/slots/description_section.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",
@ -6292,6 +6432,11 @@
"path": "modules/slots/endowment_draw.yaml",
"category": "slot"
},
{
"name": "ends_or_ended_at_location",
"path": "modules/slots/ends_or_ended_at_location.yaml",
"category": "slot"
},
{
"name": "engagement_rate",
"path": "modules/slots/engagement_rate.yaml",
@ -7557,11 +7702,6 @@
"path": "modules/slots/has_archive_subtype.yaml",
"category": "slot"
},
{
"name": "has_area_in_hectare",
"path": "modules/slots/has_area_in_hectare.yaml",
"category": "slot"
},
{
"name": "has_arrangement",
"path": "modules/slots/has_arrangement.yaml",
@ -8092,6 +8232,11 @@
"path": "modules/slots/has_or_had_archive_scope.yaml",
"category": "slot"
},
{
"name": "has_or_had_area",
"path": "modules/slots/has_or_had_area.yaml",
"category": "slot"
},
{
"name": "has_or_had_area_served",
"path": "modules/slots/has_or_had_area_served.yaml",
@ -8157,6 +8302,11 @@
"path": "modules/slots/has_or_had_based_on_observation.yaml",
"category": "slot"
},
{
"name": "has_or_had_beneficiary",
"path": "modules/slots/has_or_had_beneficiary.yaml",
"category": "slot"
},
{
"name": "has_or_had_category_assessment",
"path": "modules/slots/has_or_had_category_assessment.yaml",
@ -8167,6 +8317,11 @@
"path": "modules/slots/has_or_had_chapter.yaml",
"category": "slot"
},
{
"name": "has_or_had_code",
"path": "modules/slots/has_or_had_code.yaml",
"category": "slot"
},
{
"name": "has_or_had_collection",
"path": "modules/slots/has_or_had_collection.yaml",
@ -8177,6 +8332,11 @@
"path": "modules/slots/has_or_had_collection_narrower_type.yaml",
"category": "slot"
},
{
"name": "has_or_had_comment",
"path": "modules/slots/has_or_had_comment.yaml",
"category": "slot"
},
{
"name": "has_or_had_comment_reply",
"path": "modules/slots/has_or_had_comment_reply.yaml",
@ -8197,11 +8357,21 @@
"path": "modules/slots/has_or_had_conservation_record.yaml",
"category": "slot"
},
{
"name": "has_or_had_conversion_rate",
"path": "modules/slots/has_or_had_conversion_rate.yaml",
"category": "slot"
},
{
"name": "has_or_had_curation_activity",
"path": "modules/slots/has_or_had_curation_activity.yaml",
"category": "slot"
},
{
"name": "has_or_had_currency",
"path": "modules/slots/has_or_had_currency.yaml",
"category": "slot"
},
{
"name": "has_or_had_custodian",
"path": "modules/slots/has_or_had_custodian.yaml",
@ -8342,6 +8512,11 @@
"path": "modules/slots/has_or_had_external_resource.yaml",
"category": "slot"
},
{
"name": "has_or_had_facility",
"path": "modules/slots/has_or_had_facility.yaml",
"category": "slot"
},
{
"name": "has_or_had_featured_item",
"path": "modules/slots/has_or_had_featured_item.yaml",
@ -8362,6 +8537,16 @@
"path": "modules/slots/has_or_had_fond.yaml",
"category": "slot"
},
{
"name": "has_or_had_format",
"path": "modules/slots/has_or_had_format.yaml",
"category": "slot"
},
{
"name": "has_or_had_frequency",
"path": "modules/slots/has_or_had_frequency.yaml",
"category": "slot"
},
{
"name": "has_or_had_function",
"path": "modules/slots/has_or_had_function.yaml",
@ -8372,6 +8557,11 @@
"path": "modules/slots/has_or_had_generate.yaml",
"category": "slot"
},
{
"name": "has_or_had_head",
"path": "modules/slots/has_or_had_head.yaml",
"category": "slot"
},
{
"name": "has_or_had_holds_record_set_type",
"path": "modules/slots/has_or_had_holds_record_set_type.yaml",
@ -8467,6 +8657,11 @@
"path": "modules/slots/has_or_had_manages_collection.yaml",
"category": "slot"
},
{
"name": "has_or_had_measurement_unit",
"path": "modules/slots/has_or_had_measurement_unit.yaml",
"category": "slot"
},
{
"name": "has_or_had_member",
"path": "modules/slots/has_or_had_member.yaml",
@ -8482,6 +8677,11 @@
"path": "modules/slots/has_or_had_membership.yaml",
"category": "slot"
},
{
"name": "has_or_had_methodology",
"path": "modules/slots/has_or_had_methodology.yaml",
"category": "slot"
},
{
"name": "has_or_had_music_segment",
"path": "modules/slots/has_or_had_music_segment.yaml",
@ -8502,6 +8702,11 @@
"path": "modules/slots/has_or_had_open_access_endpoint.yaml",
"category": "slot"
},
{
"name": "has_or_had_opening_hour",
"path": "modules/slots/has_or_had_opening_hour.yaml",
"category": "slot"
},
{
"name": "has_or_had_operate",
"path": "modules/slots/has_or_had_operate.yaml",
@ -8552,6 +8757,11 @@
"path": "modules/slots/has_or_had_place_of_birth.yaml",
"category": "slot"
},
{
"name": "has_or_had_policy",
"path": "modules/slots/has_or_had_policy.yaml",
"category": "slot"
},
{
"name": "has_or_had_portal_data_source",
"path": "modules/slots/has_or_had_portal_data_source.yaml",
@ -8582,6 +8792,11 @@
"path": "modules/slots/has_or_had_product_category.yaml",
"category": "slot"
},
{
"name": "has_or_had_program",
"path": "modules/slots/has_or_had_program.yaml",
"category": "slot"
},
{
"name": "has_or_had_project",
"path": "modules/slots/has_or_had_project.yaml",
@ -8597,11 +8812,21 @@
"path": "modules/slots/has_or_had_provenance_event.yaml",
"category": "slot"
},
{
"name": "has_or_had_provenance_path",
"path": "modules/slots/has_or_had_provenance_path.yaml",
"category": "slot"
},
{
"name": "has_or_had_quantity",
"path": "modules/slots/has_or_had_quantity.yaml",
"category": "slot"
},
{
"name": "has_or_had_rationale",
"path": "modules/slots/has_or_had_rationale.yaml",
"category": "slot"
},
{
"name": "has_or_had_registered_dataset",
"path": "modules/slots/has_or_had_registered_dataset.yaml",
@ -8652,6 +8877,11 @@
"path": "modules/slots/has_or_had_research_attempt.yaml",
"category": "slot"
},
{
"name": "has_or_had_restriction",
"path": "modules/slots/has_or_had_restriction.yaml",
"category": "slot"
},
{
"name": "has_or_had_resulting_unit",
"path": "modules/slots/has_or_had_resulting_unit.yaml",
@ -8667,6 +8897,16 @@
"path": "modules/slots/has_or_had_scene_segment.yaml",
"category": "slot"
},
{
"name": "has_or_had_scope",
"path": "modules/slots/has_or_had_scope.yaml",
"category": "slot"
},
{
"name": "has_or_had_score",
"path": "modules/slots/has_or_had_score.yaml",
"category": "slot"
},
{
"name": "has_or_had_secondary_label",
"path": "modules/slots/has_or_had_secondary_label.yaml",
@ -8682,6 +8922,11 @@
"path": "modules/slots/has_or_had_section_link.yaml",
"category": "slot"
},
{
"name": "has_or_had_security_level",
"path": "modules/slots/has_or_had_security_level.yaml",
"category": "slot"
},
{
"name": "has_or_had_segment",
"path": "modules/slots/has_or_had_segment.yaml",
@ -8692,6 +8937,11 @@
"path": "modules/slots/has_or_had_series.yaml",
"category": "slot"
},
{
"name": "has_or_had_service",
"path": "modules/slots/has_or_had_service.yaml",
"category": "slot"
},
{
"name": "has_or_had_service_area",
"path": "modules/slots/has_or_had_service_area.yaml",
@ -8782,6 +9032,11 @@
"path": "modules/slots/has_or_had_suborganization.yaml",
"category": "slot"
},
{
"name": "has_or_had_text",
"path": "modules/slots/has_or_had_text.yaml",
"category": "slot"
},
{
"name": "has_or_had_text_region",
"path": "modules/slots/has_or_had_text_region.yaml",
@ -8797,6 +9052,11 @@
"path": "modules/slots/has_or_had_thematic_route.yaml",
"category": "slot"
},
{
"name": "has_or_had_time_interval",
"path": "modules/slots/has_or_had_time_interval.yaml",
"category": "slot"
},
{
"name": "has_or_had_tracked_in_cm",
"path": "modules/slots/has_or_had_tracked_in_cm.yaml",
@ -8812,6 +9072,16 @@
"path": "modules/slots/has_or_had_type.yaml",
"category": "slot"
},
{
"name": "has_or_had_unit",
"path": "modules/slots/has_or_had_unit.yaml",
"category": "slot"
},
{
"name": "has_or_had_url",
"path": "modules/slots/has_or_had_url.yaml",
"category": "slot"
},
{
"name": "has_or_had_used_source",
"path": "modules/slots/has_or_had_used_source.yaml",
@ -8822,6 +9092,11 @@
"path": "modules/slots/has_or_had_web_claim.yaml",
"category": "slot"
},
{
"name": "has_or_had_writing_system",
"path": "modules/slots/has_or_had_writing_system.yaml",
"category": "slot"
},
{
"name": "has_outdoor_seating",
"path": "modules/slots/has_outdoor_seating.yaml",
@ -9562,11 +9837,41 @@
"path": "modules/slots/is_or_was_created_through.yaml",
"category": "slot"
},
{
"name": "is_or_was_derived_from",
"path": "modules/slots/is_or_was_derived_from.yaml",
"category": "slot"
},
{
"name": "is_or_was_encompassed_by",
"path": "modules/slots/is_or_was_encompassed_by.yaml",
"category": "slot"
},
{
"name": "is_or_was_equivalent_to",
"path": "modules/slots/is_or_was_equivalent_to.yaml",
"category": "slot"
},
{
"name": "is_or_was_generated_by",
"path": "modules/slots/is_or_was_generated_by.yaml",
"category": "slot"
},
{
"name": "is_or_was_instance_of",
"path": "modules/slots/is_or_was_instance_of.yaml",
"category": "slot"
},
{
"name": "is_or_was_located_within",
"path": "modules/slots/is_or_was_located_within.yaml",
"category": "slot"
},
{
"name": "is_or_was_managed_by",
"path": "modules/slots/is_or_was_managed_by.yaml",
"category": "slot"
},
{
"name": "is_or_was_member_of",
"path": "modules/slots/is_or_was_member_of.yaml",
@ -9592,6 +9897,11 @@
"path": "modules/slots/is_or_was_required.yaml",
"category": "slot"
},
{
"name": "is_or_was_revision_of",
"path": "modules/slots/is_or_was_revision_of.yaml",
"category": "slot"
},
{
"name": "is_or_was_sub_collection_of",
"path": "modules/slots/is_or_was_sub_collection_of.yaml",
@ -9607,6 +9917,16 @@
"path": "modules/slots/is_or_was_succeeded_by.yaml",
"category": "slot"
},
{
"name": "is_or_was_transferred",
"path": "modules/slots/is_or_was_transferred.yaml",
"category": "slot"
},
{
"name": "is_or_was_webarchived_at",
"path": "modules/slots/is_or_was_webarchived_at.yaml",
"category": "slot"
},
{
"name": "is_overlapping",
"path": "modules/slots/is_overlapping.yaml",
@ -10217,6 +10537,11 @@
"path": "modules/slots/location_browse_score.yaml",
"category": "slot"
},
{
"name": "location_name",
"path": "modules/slots/location_name.yaml",
"category": "slot"
},
{
"name": "logo_bbox",
"path": "modules/slots/logo_bbox.yaml",
@ -11507,6 +11832,11 @@
"path": "modules/slots/policy_review_date.yaml",
"category": "slot"
},
{
"name": "policy_text",
"path": "modules/slots/policy_text.yaml",
"category": "slot"
},
{
"name": "portal_description",
"path": "modules/slots/portal_description.yaml",
@ -11987,6 +12317,11 @@
"path": "modules/slots/provides_access_to.yaml",
"category": "slot"
},
{
"name": "provides_or_provided_provenance_to",
"path": "modules/slots/provides_or_provided_provenance_to.yaml",
"category": "slot"
},
{
"name": "public_access",
"path": "modules/slots/public_access.yaml",
@ -13347,6 +13682,11 @@
"path": "modules/slots/started_at_time.yaml",
"category": "slot"
},
{
"name": "starts_or_started_at_location",
"path": "modules/slots/starts_or_started_at_location.yaml",
"category": "slot"
},
{
"name": "statement_currency",
"path": "modules/slots/statement_currency.yaml",
@ -13777,6 +14117,16 @@
"path": "modules/slots/time_of_destruction.yaml",
"category": "slot"
},
{
"name": "timestamp_precision",
"path": "modules/slots/timestamp_precision.yaml",
"category": "slot"
},
{
"name": "timestamp_value",
"path": "modules/slots/timestamp_value.yaml",
"category": "slot"
},
{
"name": "title",
"path": "modules/slots/title.yaml",
@ -14057,16 +14407,6 @@
"path": "modules/slots/uniform_title.yaml",
"category": "slot"
},
{
"name": "unique_face_count",
"path": "modules/slots/unique_face_count.yaml",
"category": "slot"
},
{
"name": "unique_object_count",
"path": "modules/slots/unique_object_count.yaml",
"category": "slot"
},
{
"name": "unit_affiliation",
"path": "modules/slots/unit_affiliation.yaml",
@ -14097,11 +14437,6 @@
"path": "modules/slots/unit_type.yaml",
"category": "slot"
},
{
"name": "update_frequency",
"path": "modules/slots/update_frequency.yaml",
"category": "slot"
},
{
"name": "updated_at",
"path": "modules/slots/updated_at.yaml",
@ -14112,6 +14447,16 @@
"path": "modules/slots/url.yaml",
"category": "slot"
},
{
"name": "url_type",
"path": "modules/slots/url_type.yaml",
"category": "slot"
},
{
"name": "url_value",
"path": "modules/slots/url_value.yaml",
"category": "slot"
},
{
"name": "used",
"path": "modules/slots/used.yaml",
@ -14222,26 +14567,11 @@
"path": "modules/slots/video_id.yaml",
"category": "slot"
},
{
"name": "view_count",
"path": "modules/slots/view_count.yaml",
"category": "slot"
},
{
"name": "visiting_hour",
"path": "modules/slots/visiting_hour.yaml",
"category": "slot"
},
{
"name": "visitor_conversion_rate",
"path": "modules/slots/visitor_conversion_rate.yaml",
"category": "slot"
},
{
"name": "visitor_count",
"path": "modules/slots/visitor_count.yaml",
"category": "slot"
},
{
"name": "visitor_facility",
"path": "modules/slots/visitor_facility.yaml",
@ -14347,6 +14677,11 @@
"path": "modules/slots/wikidata_class.yaml",
"category": "slot"
},
{
"name": "wikidata_description",
"path": "modules/slots/wikidata_description.yaml",
"category": "slot"
},
{
"name": "wikidata_entity",
"path": "modules/slots/wikidata_entity.yaml",
@ -14372,6 +14707,11 @@
"path": "modules/slots/wikidata_id.yaml",
"category": "slot"
},
{
"name": "wikidata_label",
"path": "modules/slots/wikidata_label.yaml",
"category": "slot"
},
{
"name": "wikidata_mapping",
"path": "modules/slots/wikidata_mapping.yaml",
@ -14382,6 +14722,11 @@
"path": "modules/slots/wikidata_mapping_rationale.yaml",
"category": "slot"
},
{
"name": "wikidata_qid",
"path": "modules/slots/wikidata_qid.yaml",
"category": "slot"
},
{
"name": "within_auxiliary_place",
"path": "modules/slots/within_auxiliary_place.yaml",

View file

@ -0,0 +1,68 @@
# Alpha2Code - ISO 3166-1 alpha-2 country code
#
# Created per slot_fixes.yaml migration for: alpha_2
# Creation date: 2026-01-14
# Rule compliance: 50 (ontology mapping)
id: https://nde.nl/ontology/hc/class/Alpha2Code
name: Alpha2Code
title: ISO 3166-1 Alpha-2 Country Code
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_code
classes:
Alpha2Code:
class_uri: skos:Concept
description: |
ISO 3166-1 alpha-2 country code (two-letter code).
**DEFINITION**:
A two-letter country code as defined by ISO 3166-1 alpha-2 standard.
Used for representing countries and dependent territories.
**EXAMPLES**:
- NL = Netherlands
- BE = Belgium
- DE = Germany
- US = United States
**ONTOLOGY ALIGNMENT**:
- SKOS Concept: Codes are concepts in ISO 3166-1 vocabulary
- Schema.org: addressCountry can use alpha-2 codes
slots:
- has_or_had_code
slot_usage:
has_or_had_code:
pattern: "^[A-Z]{2}$"
required: true
description: Two-letter ISO 3166-1 alpha-2 country code
examples:
- value: "NL"
description: Netherlands
- value: "BE"
description: Belgium
exact_mappings:
- skos:Concept
annotations:
specificity_score: "0.30"
specificity_rationale: "Low specificity - standard country codes used broadly."
examples:
- value:
has_or_had_code: "NL"
description: Netherlands country code

View file

@ -0,0 +1,68 @@
# Alpha3Code - ISO 3166-1 alpha-3 country code
#
# Created per slot_fixes.yaml migration for: alpha_3
# Creation date: 2026-01-14
# Rule compliance: 50 (ontology mapping)
id: https://nde.nl/ontology/hc/class/Alpha3Code
name: Alpha3Code
title: ISO 3166-1 Alpha-3 Country Code
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_code
classes:
Alpha3Code:
class_uri: skos:Concept
description: |
ISO 3166-1 alpha-3 country code (three-letter code).
**DEFINITION**:
A three-letter country code as defined by ISO 3166-1 alpha-3 standard.
Used for representing countries and dependent territories with more
recognizable abbreviations.
**EXAMPLES**:
- NLD = Netherlands
- BEL = Belgium
- DEU = Germany
- USA = United States
**ONTOLOGY ALIGNMENT**:
- SKOS Concept: Codes are concepts in ISO 3166-1 vocabulary
slots:
- has_or_had_code
slot_usage:
has_or_had_code:
pattern: "^[A-Z]{3}$"
required: true
description: Three-letter ISO 3166-1 alpha-3 country code
examples:
- value: "NLD"
description: Netherlands
- value: "BEL"
description: Belgium
exact_mappings:
- skos:Concept
annotations:
specificity_score: "0.30"
specificity_rationale: "Low specificity - standard country codes used broadly."
examples:
- value:
has_or_had_code: "NLD"
description: Netherlands country code

View file

@ -0,0 +1,189 @@
# ConversionRate - Structured conversion rate measurement
# Created per slot_fixes.yaml migration for: visitor_conversion_rate
# Creation date: 2026-01-14
#
# REVISION FROM slot_fixes.yaml (lines 1646-1669):
# - label: has_or_had_conversion_rate (slot)
# - label: ConversionRate (class) ← THIS FILE
# - link_branch 1: has_or_had_type → ConversionRateType → ConversionRateTypes
# - link_branch 2: temporal_extent → TimeSpan
id: https://nde.nl/ontology/hc/classes/ConversionRate
name: ConversionRate
title: ConversionRate
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
- ./ConversionRateType
- ./ConversionRateTypes
- ./TimeSpan
- ../slots/has_or_had_type
- ../slots/temporal_extent
default_range: string
classes:
ConversionRate:
description: >-
Structured representation of a conversion rate metric for heritage institutions.
**WHY A DEDICATED CLASS?**
Conversion rates are more than simple floats - they need:
- **Type**: What kind of conversion (visitor-to-purchase, visitor-to-member)
- **Value**: The actual percentage (0.35 = 35%)
- **Time Period**: When this rate was measured
- **Context**: Comparison benchmarks, notes
**SLOT_FIXES.YAML REVISION** (lines 1646-1669):
- Branch 1: has_or_had_type → ConversionRateType/ConversionRateTypes
- Branch 2: temporal_extent → TimeSpan (measurement period)
**USE CASES**:
- Gift shop performance: 35% visitor-to-purchase conversion
- Membership drives: 5% visitor-to-member conversion
- Digital engagement: 3% website-to-visit conversion
**ONTOLOGY MAPPING**:
- class_uri: schema:QuantitativeValue (numeric measurement)
- Uses schema:interactionStatistic for behavioral metrics
class_uri: schema:QuantitativeValue
exact_mappings:
- schema:QuantitativeValue
close_mappings:
- schema:interactionStatistic
slots:
- has_or_had_type
- temporal_extent
attributes:
rate_value:
range: float
required: true
description: >-
The conversion rate as a decimal (0.35 = 35%).
Always expressed as proportion between 0.0 and 1.0.
minimum_value: 0.0
maximum_value: 1.0
rate_percentage:
range: float
description: >-
The conversion rate as a percentage (35 = 35%).
Calculated field: rate_value × 100.
minimum_value: 0.0
maximum_value: 100.0
sample_size:
range: integer
description: >-
The number of observations in the denominator (total visitors, emails sent, etc.).
Required for statistical significance assessment.
converted_count:
range: integer
description: >-
The number of successful conversions (numerator).
Required for statistical significance assessment.
measurement_period_description:
range: string
description: >-
Human-readable description of the measurement period.
Examples: "Q1 2025", "Calendar Year 2024", "Exhibition period"
benchmark_comparison:
range: string
description: >-
How this rate compares to industry benchmarks.
Examples: "Above average", "Top quartile", "Below benchmark"
notes:
range: string
description: >-
Additional context about this conversion rate measurement.
Examples: Special circumstances, data collection methodology.
slot_usage:
has_or_had_type:
range: ConversionRateType
inlined: true
description: >-
The type of conversion being measured.
Use concrete types from ConversionRateTypes (VisitorToPurchaseConversion, etc.)
examples:
- value: |
has_or_had_type:
type_label: "Visitor to Purchase"
source_population: "museum visitors"
target_action: "made gift shop purchase"
description: Visitor to purchase conversion type
temporal_extent:
range: TimeSpan
inlined: true
description: >-
The time period during which this conversion rate was measured.
Use begin/end dates to specify the measurement window.
examples:
- value: |
temporal_extent:
begin_of_the_begin: "2024-01-01"
end_of_the_end: "2024-12-31"
description: Calendar year 2024 measurement period
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Conversion rates applicable to all custodian types with retail or engagement.
custodian_types_primary: "*"
specificity_score: 0.45
specificity_rationale: >-
Moderate specificity - relevant to custodians tracking performance metrics.
examples:
- value: |
ConversionRate:
rate_value: 0.35
rate_percentage: 35.0
sample_size: 500000
converted_count: 175000
has_or_had_type:
type_label: "Visitor to Purchase"
temporal_extent:
begin_of_the_begin: "2024-01-01"
end_of_the_end: "2024-12-31"
measurement_period_description: "Calendar Year 2024"
benchmark_comparison: "Above average (industry avg 15-25%)"
description: Gift shop 35% visitor-to-purchase conversion rate.
- value: |
ConversionRate:
rate_value: 0.05
rate_percentage: 5.0
sample_size: 100000
converted_count: 5000
has_or_had_type:
type_label: "Visitor to Member"
temporal_extent:
begin_of_the_begin: "2024-06-01"
end_of_the_end: "2024-08-31"
measurement_period_description: "Summer membership drive"
benchmark_comparison: "Strong (industry avg 1-3%)"
description: Summer membership campaign with 5% conversion.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces simple float visitor_conversion_rate slot
- Supports multiple conversion types with industry benchmarks
- Temporal extent enables trend analysis over time

View file

@ -0,0 +1,99 @@
# ConversionRateType - Abstract base class for conversion rate types
# Created per slot_fixes.yaml migration for: visitor_conversion_rate
# Creation date: 2026-01-14
#
# NAMING CONVENTION (Rule 0b):
# - ConversionRateType.yaml = Abstract base class (this file)
# - ConversionRateTypes.yaml = Concrete subclasses
id: https://nde.nl/ontology/hc/classes/ConversionRateType
name: ConversionRateType
title: ConversionRateType
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
default_range: string
classes:
ConversionRateType:
abstract: true
description: >-
Abstract base class for types of conversion rates measured in heritage contexts.
**TYPE TAXONOMY**:
Conversion rates measure the percentage of one group that performs a specific action:
- **Visitor to Purchase**: Museum visitors who buy from gift shop
- **Visitor to Member**: Visitors who become members
- **Online to Visit**: Website visitors who visit physically
- **Email to Click**: Email recipients who click links
- **Social to Follower**: Social media viewers who follow
**NAMING CONVENTION** (Rule 0b):
- This file: Abstract `ConversionRateType` base class
- ConversionRateTypes.yaml: Concrete subclasses
**ONTOLOGY MAPPING**:
- class_uri: skos:Concept (type taxonomy concept)
- Part of SKOS-based classification scheme
class_uri: skos:Concept
exact_mappings:
- skos:Concept
attributes:
type_id:
range: uriorcurie
identifier: true
description: Unique identifier for this conversion rate type.
type_label:
range: string
required: true
description: Human-readable label for this conversion rate type.
type_description:
range: string
description: Detailed description of what this conversion rate measures.
source_population:
range: string
description: >-
The group being measured (denominator).
Examples: "museum visitors", "website visitors", "email recipients"
target_action:
range: string
description: >-
The action being measured (numerator).
Examples: "made purchase", "became member", "clicked link"
industry_benchmark_low:
range: float
description: Low end of industry benchmark for this conversion type.
industry_benchmark_high:
range: float
description: High end of industry benchmark for this conversion type.
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Conversion rate types applicable to all custodian types with retail or engagement metrics.
custodian_types_primary: "*"
specificity_score: 0.45
specificity_rationale: >-
Moderate specificity - relevant to custodians tracking performance metrics.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Abstract base class - see ConversionRateTypes.yaml for concrete types
- Used with ConversionRate class for structured metrics

View file

@ -0,0 +1,218 @@
# ConversionRateTypes - Concrete subclasses of ConversionRateType
# Created per slot_fixes.yaml migration for: visitor_conversion_rate
# Creation date: 2026-01-14
#
# NAMING CONVENTION (Rule 0b):
# - ConversionRateType.yaml = Abstract base class
# - ConversionRateTypes.yaml = Concrete subclasses (this file)
id: https://nde.nl/ontology/hc/classes/ConversionRateTypes
name: ConversionRateTypes
title: ConversionRateTypes
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
- ./ConversionRateType
default_range: string
classes:
VisitorToPurchaseConversion:
is_a: ConversionRateType
description: >-
Conversion rate measuring museum/archive visitors who make a gift shop purchase.
**INDUSTRY BENCHMARKS**:
- Average: 15-25%
- High performers: 30-40%
- Blockbuster exhibitions: 40-60%
**CALCULATION**: (Purchasers / Total Visitors) × 100
class_uri: hc:VisitorToPurchaseConversion
attributes:
type_label:
range: string
ifabsent: "string(Visitor to Purchase)"
source_population:
range: string
ifabsent: "string(museum/venue visitors)"
target_action:
range: string
ifabsent: "string(made gift shop purchase)"
industry_benchmark_low:
range: float
ifabsent: "float(0.15)"
industry_benchmark_high:
range: float
ifabsent: "float(0.40)"
VisitorToMemberConversion:
is_a: ConversionRateType
description: >-
Conversion rate measuring visitors who become members/supporters.
**INDUSTRY BENCHMARKS**:
- Average: 1-3%
- Strong programs: 5-8%
**CALCULATION**: (New Members / Total Visitors) × 100
class_uri: hc:VisitorToMemberConversion
attributes:
type_label:
range: string
ifabsent: "string(Visitor to Member)"
source_population:
range: string
ifabsent: "string(museum/venue visitors)"
target_action:
range: string
ifabsent: "string(became member/supporter)"
industry_benchmark_low:
range: float
ifabsent: "float(0.01)"
industry_benchmark_high:
range: float
ifabsent: "float(0.08)"
OnlineToPhysicalConversion:
is_a: ConversionRateType
description: >-
Conversion rate measuring website visitors who subsequently visit physically.
**INDUSTRY BENCHMARKS**:
- Average: 0.5-2%
- Strong digital presence: 3-5%
**CALCULATION**: (Physical Visits from Web / Website Visitors) × 100
class_uri: hc:OnlineToPhysicalConversion
attributes:
type_label:
range: string
ifabsent: "string(Online to Physical Visit)"
source_population:
range: string
ifabsent: "string(website visitors)"
target_action:
range: string
ifabsent: "string(visited venue physically)"
industry_benchmark_low:
range: float
ifabsent: "float(0.005)"
industry_benchmark_high:
range: float
ifabsent: "float(0.05)"
EmailToClickConversion:
is_a: ConversionRateType
description: >-
Conversion rate measuring email recipients who click through.
**INDUSTRY BENCHMARKS** (Museum sector):
- Average: 2-4%
- Well-targeted: 5-10%
**CALCULATION**: (Clicks / Emails Delivered) × 100
class_uri: hc:EmailToClickConversion
attributes:
type_label:
range: string
ifabsent: "string(Email to Click)"
source_population:
range: string
ifabsent: "string(email recipients)"
target_action:
range: string
ifabsent: "string(clicked link in email)"
industry_benchmark_low:
range: float
ifabsent: "float(0.02)"
industry_benchmark_high:
range: float
ifabsent: "float(0.10)"
SocialToFollowerConversion:
is_a: ConversionRateType
description: >-
Conversion rate measuring social media viewers who become followers.
**INDUSTRY BENCHMARKS**:
- Average: 1-3%
- Viral content: 5-15%
**CALCULATION**: (New Followers / Content Views) × 100
class_uri: hc:SocialToFollowerConversion
attributes:
type_label:
range: string
ifabsent: "string(Social to Follower)"
source_population:
range: string
ifabsent: "string(social media content viewers)"
target_action:
range: string
ifabsent: "string(became follower)"
industry_benchmark_low:
range: float
ifabsent: "float(0.01)"
industry_benchmark_high:
range: float
ifabsent: "float(0.15)"
TicketToReturnConversion:
is_a: ConversionRateType
description: >-
Conversion rate measuring ticket buyers who return for another visit.
**INDUSTRY BENCHMARKS**:
- Average: 20-30%
- Strong loyalty programs: 40-60%
**CALCULATION**: (Return Visitors / Total Ticket Buyers) × 100
class_uri: hc:TicketToReturnConversion
attributes:
type_label:
range: string
ifabsent: "string(Ticket to Return Visit)"
source_population:
range: string
ifabsent: "string(ticket buyers)"
target_action:
range: string
ifabsent: "string(made return visit within 12 months)"
industry_benchmark_low:
range: float
ifabsent: "float(0.20)"
industry_benchmark_high:
range: float
ifabsent: "float(0.60)"
OtherConversion:
is_a: ConversionRateType
description: >-
Custom or other conversion rate type not covered by standard types.
Use this when tracking novel metrics or institution-specific conversions.
class_uri: hc:OtherConversion
attributes:
custom_type_name:
range: string
description: Name of the custom conversion type.

View file

@ -0,0 +1,148 @@
# Description class
# Generic class for typed descriptions with language support
#
# Generation date: 2026-01-15
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization), 53 (slot_fixes.yaml authoritative)
# Migration: Supports has_or_had_description slot (replaces binding_description, branch_description, etc.)
#
# This class supports 11 slot migrations per slot_fixes.yaml:
# - binding_description
# - branch_description
# - branch_office_description
# - budget_description
# - zone_description
# - warehouse_description
# - unit_description
# - type_description
# - treatment_description (partial)
# - transfer_location_text (partial)
# - transfer_location (partial)
id: https://nde.nl/ontology/hc/class/Description
name: description_class
title: Description Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
rdfs: http://www.w3.org/2000/01/rdf-schema#
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/description_text
- ../slots/description_type
- ../slots/language
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
Description:
class_uri: dcterms:description
description: |
A typed description with optional language tagging and type metadata.
**Purpose**:
Description provides a reusable class for representing textual descriptions
across the heritage custodian schema. Supports typed descriptions (binding,
branch, budget, zone, etc.) with language tagging.
**Ontological Alignment**:
- **Primary**: `dcterms:description` - Dublin Core description
- **Close**: `skos:definition` - formal definition
- **Related**: `schema:description` - Schema.org description
**Use Cases**:
- Binding descriptions for physical carriers
- Branch/office descriptions for organizational units
- Budget descriptions for financial records
- Zone/warehouse descriptions for storage facilities
- Type descriptions for classification explanations
**Replaces** (per slot_fixes.yaml):
- `binding_description` (string)
- `branch_description` (string)
- `branch_office_description` (string)
- `budget_description` (string)
- `zone_description` (string)
- `warehouse_description` (string)
- `unit_description` (string)
- `type_description` (string)
exact_mappings:
- dcterms:description
close_mappings:
- skos:definition
- rdfs:comment
related_mappings:
- schema:description
slots:
- description_text
- description_type
- language
- specificity_annotation
- template_specificity
slot_usage:
description_text:
description: |
The textual content of the description.
range: string
required: true
description_type:
description: |
The type of description (binding, branch, budget, zone, warehouse, unit, type, general).
This allows distinguishing different kinds of descriptions when multiple
apply to the same entity.
range: string
required: false
examples:
- value: binding
description: Physical binding description
- value: branch
description: Organizational branch description
- value: budget
description: Budget category description
- value: zone
description: Storage zone description
language:
description: |
ISO 639-1 two-letter language code for this description.
Examples: "en", "nl", "de", "fr"
range: string
required: false
pattern: "^[a-z]{2}$"
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Generic description class applicable to all custodian types.
custodian_types_primary: null
specificity_score: 0.2
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."
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."
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."
description_type: branch
language: en
description: "Branch description for organizational unit"

View file

@ -44,38 +44,46 @@ imports:
classes:
EnvironmentalZone:
class_uri: hc:EnvironmentalZone
description: "A climate-controlled area within a storage facility with specific\nenvironmental parameters (temperature,\
\ relative humidity, light levels,\nair quality).\n\n**DEFINITION**:\n\nAn EnvironmentalZone represents a physically\
\ distinct area within a\nstorage facility that maintains specific environmental conditions.\nDifferent collection types\
\ require different zones based on their\nmaterial composition and preservation requirements.\n\nExamples include:\n\
- Climate-controlled archive rooms (18°C, 50% RH)\n- Cold storage vaults for film (-5°C to +4°C)\n- Photographic materials\
\ storage (15°C, 35% RH)\n- Textile storage (stable RH, low light)\n- General collection storage (ambient controlled)\n\
\n**Wikidata Alignment**:\n- Q1759899 (climate control)\n\n**HC Ontology Extension (hc-storage.ttl)**:\n\nPrimary class:\
\ `hc:EnvironmentalZone` (subclass of `crm:E27_Site`)\n\nThe HC ontology provides environmental preset instances:\n\
- `hc:StandardArchiveEnvironment` - 18°C, 50% RH, 50 lux\n- `hc:PhotographicMaterialsEnvironment` - 15°C, 35% RH\n-\
\ `hc:ColdStorageEnvironment` - -5°C, 30% RH\n- `hc:TextileStorageEnvironment` - 18°C, 50% RH, 15000 lux-hours/year\n\
\nKey HC properties for zones:\n- `hc:hasStorageSection` - Links zone to storage units\n- `hc:hasEnvironmentalRequirement`\
\ - Links to climate specs\n- `hc:meetsRequirement` - Indicates compliance\n- `hc:hasEnvironmentalObservation` - Links\
\ to sensor readings\n- `hc:monitoredByPlatform` - Links to sensor systems\n\n**SOSA/SSN Integration**:\n\nEnvironmental\
\ zones can be monitored using sensor networks:\n- Zone is a `sosa:FeatureOfInterest`\n- Observations are `hc:StorageEnvironmentObservation`\n\
- Sensors are hosted on `hc:EnvironmentalSensorPlatform`\n\nSee: `frontend/public/ontology/hc-storage.ttl`\n\n**CIDOC-CRM\
\ Alignment (v7.1.3)**:\n\nBase class: `crm:E27_Site` - Zones are physical locations.\n\nHierarchy:\n```\nStorageFacility\
\ (hc:StorageFacility)\n └── P59 has_section → EnvironmentalZone (hc:EnvironmentalZone)\n ├── hc:hasEnvironmentalRequirement\
\ → EnvironmentalRequirement\n ├── hc:hasEnvironmentalObservation → StorageEnvironmentObservation[]\n \
\ └── P59 has_section → StorageUnit[]\n```\n\n**RELATIONSHIP TO OTHER CLASSES**:\n\n```\nStorage (facility)\n │\n \
\ └── has_section → EnvironmentalZone[] (THIS CLASS)\n │\n ├── has_or_had_type (EnvironmentalZoneType - class\
\ hierarchy)\n ├── environmental_requirement → StorageConditionPolicy\n ├── observations → StorageCondition[]\n\
\ ├── monitoring_platform (sensor system info)\n │\n └── has_section → StorageUnit[]\n \
\ └── stores_objects → HeritageObject[]\n```\n\n**ENVIRONMENTAL STANDARDS REFERENCE**:\n\n| Material Type | Temperature\
\ | RH | Light | Standard |\n|---------------|------------|-----|-------|----------|\n| Paper/archives | 16-20°C | 45-55%\
\ | <50 lux | ISO 11799 |\n| Photographs | 10-18°C | 30-40% | <50 lux | ISO 18934 |\n| Film (B&W) | -5°C | 30% | dark\
\ | ISO 18911 |\n| Film (color) | -20°C | 30% | dark | ISO 18911 |\n| Textiles | 15-20°C | 45-55% | <50 lux | varies\
\ |\n| Metals | 15-25°C | <35% | varies | varies |\n\n**USE CASES**:\n\n1. **Standard Archive Zone**:\n - zone_type:\
\ ARCHIVE_STANDARD\n - target_temperature: 18°C\n - target_humidity: 50%\n - max_light: 50 lux\n - environmental_requirement:\
\ hc:StandardArchiveEnvironment\n \n2. **Cold Storage Vault**:\n - zone_type: COLD_STORAGE\n - target_temperature:\
\ -5°C\n - target_humidity: 30%\n - environmental_requirement: hc:ColdStorageEnvironment\n \n3. **Photographic\
\ Materials Zone**:\n - zone_type: PHOTOGRAPHIC\n - target_temperature: 15°C\n - target_humidity: 35%\n - max_light:\
\ 50 lux\n"
description: >-
A climate-controlled area within a storage facility with specific
environmental parameters (temperature, relative humidity, light levels,
air quality).
DEFINITION:
An EnvironmentalZone represents a physically distinct area within a
storage facility that maintains specific environmental conditions.
Different collection types require different zones based on their
material composition and preservation requirements.
Examples include climate-controlled archive rooms (18C, 50% RH),
cold storage vaults for film (-5C to +4C), photographic materials
storage (15C, 35% RH), textile storage (stable RH, low light),
and general collection storage (ambient controlled).
Wikidata Alignment: Q1759899 (climate control).
HC Ontology Extension (hc-storage.ttl):
Primary class hc:EnvironmentalZone (subclass of crm:E27_Site).
Provides environmental preset instances including
hc:StandardArchiveEnvironment (18C, 50% RH, 50 lux),
hc:PhotographicMaterialsEnvironment (15C, 35% RH),
hc:ColdStorageEnvironment (-5C, 30% RH),
hc:TextileStorageEnvironment (18C, 50% RH, 15000 lux-hours/year).
Key HC properties: hc:hasStorageSection (links zone to storage units),
hc:hasEnvironmentalRequirement (links to climate specs),
hc:meetsRequirement (indicates compliance),
hc:hasEnvironmentalObservation (links to sensor readings),
hc:monitoredByPlatform (links to sensor systems).
SOSA/SSN Integration: Environmental zones can be monitored using
sensor networks where Zone is a sosa:FeatureOfInterest,
Observations are hc:StorageEnvironmentObservation, and
Sensors are hosted on hc:EnvironmentalSensorPlatform.
CIDOC-CRM Alignment (v7.1.3): Base class crm:E27_Site - Zones are
physical locations. StorageFacility has_section EnvironmentalZone
which has_section StorageUnit.
exact_mappings:
- hc:EnvironmentalZone
- crm:E27_Site

View file

@ -45,7 +45,8 @@ imports:
- ../slots/specificity_annotation
- ../slots/template_specificity
- ../slots/traveling_venue
- ../slots/visitor_count
- ../slots/has_or_had_quantity
- ./Quantity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
default_prefix: hc
@ -72,7 +73,7 @@ classes:
\ for CIDOC-CRM\n fuzzy temporal modeling (begin_of_the_begin, end_of_the_end, etc.)\n\n**Example**:\n\nThe \"Vermeer\"\
\ exhibition at Rijksmuseum (Feb 10 - Jun 4, 2023):\n- exhibition_id: https://nde.nl/ontology/hc/exhibition/rijksmuseum-vermeer-2023\n\
- exhibition_name: \"Vermeer\"\n- organized_by: [Rijksmuseum, Mauritshuis] (joint organization)\n- start_date: 2023-02-10\n\
- end_date: 2023-06-04\n- exhibition_type: BLOCKBUSTER\n- visitor_count: 650000\n- featured_objects: [Girl with a Pearl\
- end_date: 2023-06-04\n- exhibition_type: BLOCKBUSTER\n- has_or_had_quantity: (visitor count)\n- featured_objects: [Girl with a Pearl\
\ Earring, The Milkmaid, View of Delft]\n- exhibition_catalogs: [Vermeer (2023) catalog]\n"
exact_mappings:
- schema:ExhibitionEvent
@ -108,7 +109,7 @@ classes:
- start_date
- template_specificity
- traveling_venue
- visitor_count
- has_or_had_quantity
- wikidata_id
slot_usage:
exhibition_id:
@ -213,12 +214,25 @@ classes:
range: EventStatusEnum
examples:
- value: COMPLETED
visitor_count:
has_or_had_quantity:
required: false
range: integer
range: Quantity
inlined: true
description: >-
Visitor count for the exhibition. RULE 53: Replaces deprecated
visitor_count integer slot with structured Quantity class.
examples:
- value: 650000
description: Vermeer exhibition attendance
- value:
quantity_value: 650000
quantity_type: VISITOR_COUNT
has_or_had_measurement_unit:
unit_type: VISITOR
unit_symbol: "visitors"
temporal_extent:
begin_of_the_begin: "2023-02-10T00:00:00Z"
end_of_the_end: "2023-06-04T23:59:59Z"
has_or_had_description: Vermeer exhibition attendance
description: Exhibition visitor count with temporal extent
exhibition_url:
required: false
range: uri
@ -290,7 +304,7 @@ classes:
- Links to ExhibitedObject via featured_objects for typed object references
- Links to ExhibitionCatalog via exhibition_catalogs for publication metadata
- Use exhibition_type to categorize (permanent, temporary, traveling, etc.)
- visitor_count tracks attendance for completed exhibitions
- RULE 53: has_or_had_quantity replaces deprecated visitor_count for attendance
- featured_works (string) retained for backward compatibility; prefer featured_objects
see_also:
- https://schema.org/ExhibitionEvent
@ -324,7 +338,16 @@ classes:
country: NL
exhibition_venue: Philips Wing
exhibition_status: COMPLETED
visitor_count: 650000
has_or_had_quantity:
quantity_value: 650000
quantity_type: VISITOR_COUNT
has_or_had_measurement_unit:
unit_type: VISITOR
unit_symbol: "visitors"
temporal_extent:
begin_of_the_begin: "2023-02-10T00:00:00Z"
end_of_the_end: "2023-06-04T23:59:59Z"
has_or_had_description: Vermeer exhibition attendance
exhibition_url: https://www.rijksmuseum.nl/nl/vermeer
has_or_had_featured_object:
- https://nde.nl/ontology/hc/object/mauritshuis-girl-pearl-earring

View file

@ -0,0 +1,73 @@
# ExternalWork - External work/services accepted by an institution
# Created per slot_fixes.yaml migration for: accepts_or_accepted_external_work
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/ExternalWork
name: ExternalWork
title: ExternalWork
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_range: string
classes:
ExternalWork:
description: >-
External work or services that an institution accepts or commissions.
**EXAMPLES**:
- Conservation work from external specialists
- Digitization services
- Research collaborations
- Restoration projects
Used with `accepts_or_accepted` slot to indicate what types of
external work an institution will accept or commission.
class_uri: schema:Service
close_mappings:
- schema:Offer
attributes:
work_type:
range: string
required: true
description: >-
Type of external work (e.g., "conservation", "digitization", "restoration").
description:
range: string
description: >-
Description of the external work type.
requirements:
range: string
multivalued: true
description: >-
Requirements or qualifications for external work providers.
annotations:
custodian_types: '["M", "A", "L", "G"]'
custodian_types_rationale: >-
External work primarily relevant for museums, archives, libraries, galleries.
custodian_types_primary: "M"
specificity_score: 0.7
specificity_rationale: >-
High specificity - specific to service acceptance policies.
examples:
- value: |
ExternalWork:
work_type: "conservation"
description: "Paper and textile conservation services"
requirements:
- "Certified conservator"
- "Portfolio of previous work"
description: Conservation work accepted by archive.

View file

@ -34,7 +34,10 @@ imports:
- ../slots/temporal_extent
- ../slots/valid_from
- ../slots/valid_to
- ../slots/visitor_conversion_rate
- ../slots/has_or_had_conversion_rate
- ./ConversionRate
- ./ConversionRateType
- ./ConversionRateTypes
- ../slots/was_derived_from
- ../slots/was_generated_by
- ./SpecificityAnnotation
@ -125,7 +128,7 @@ classes:
- temporal_extent
- valid_from
- valid_to
- visitor_conversion_rate
- has_or_had_conversion_rate
- was_derived_from
- was_generated_by
slot_usage:
@ -232,12 +235,22 @@ classes:
examples:
- value: EUR 5,000,000
description: Annual revenue in euros
visitor_conversion_rate:
range: float
has_or_had_conversion_rate:
range: ConversionRate
inlined: true
multivalued: true
required: false
description: Conversion rate metrics for the gift shop (visitor-to-purchase, visitor-to-member, etc.)
examples:
- value: 0.35
description: 35% conversion rate
- value: |
has_or_had_conversion_rate:
- rate_value: 0.35
has_or_had_type:
type_label: "Visitor to Purchase"
temporal_extent:
begin_of_the_begin: "2024-01-01"
end_of_the_end: "2024-12-31"
description: 35% visitor-to-purchase conversion rate for calendar year
staff_count:
range: integer
required: false

View file

@ -0,0 +1,133 @@
# Hypothesis - A hypothesis or assertion about uncertain data (e.g., institution type)
# Created per slot_fixes.yaml migration for: type_hypothesis
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/Hypothesis
name: Hypothesis
title: Hypothesis
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
imports:
- linkml:types
default_range: string
classes:
Hypothesis:
description: >-
A hypothesis or working assertion about uncertain or ambiguous data.
**USE CASE**: Institution Type Hypotheses
When an institution's type cannot be definitively determined, multiple
type hypotheses can be recorded with supporting/contradicting evidence
and confidence levels.
**STRUCTURE**:
- Asserted value (the hypothesis)
- Confidence level
- Supporting evidence
- Contradicting evidence
- Alternative interpretations
**ONTOLOGY MAPPING**:
- class_uri: skos:Concept (the hypothesis is a conceptual assertion)
- Related to prov:Entity (what is being hypothesized about)
class_uri: skos:Concept
close_mappings:
- prov:Entity
- schema:Claim
related_mappings:
- skos:note
attributes:
asserted_value:
range: string
required: true
description: >-
The hypothesized value or assertion.
Example: "MUSEUM", "ARCHIVE", "COLLECTING_SOCIETY"
confidence_level:
range: string
description: >-
Qualitative confidence level for this hypothesis.
Values: "high", "medium", "low", "very_low"
confidence_score:
range: float
minimum_value: 0.0
maximum_value: 1.0
description: >-
Numeric confidence score (0.0 to 1.0) for this hypothesis.
supporting_evidence:
range: string
multivalued: true
description: >-
Evidence supporting this hypothesis.
Example: "Uses term 'exhibitions' in description"
contradicting_evidence:
range: string
multivalued: true
description: >-
Evidence contradicting this hypothesis.
Example: "No physical location mentioned"
alternative_interpretation:
range: string
description: >-
Alternative interpretation of the same evidence.
Example: "Could also be interpreted as gallery based on art focus"
note:
range: string
slot_uri: skos:note
description: >-
General notes about this hypothesis.
annotations:
custodian_types: '["U"]'
custodian_types_rationale: >-
Hypotheses are primarily used for Unknown (U) type institutions
where the type is ambiguous and needs research to resolve.
custodian_types_primary: "U"
specificity_score: 0.8
specificity_rationale: >-
High specificity - only relevant for uncertain/ambiguous data.
examples:
- value: |
Hypothesis:
asserted_value: "MUSEUM"
confidence_level: "medium"
confidence_score: 0.65
supporting_evidence:
- "Website mentions 'exhibitions'"
- "Has physical visitor address"
contradicting_evidence:
- "No collection catalog found"
alternative_interpretation: "Could be a gallery with temporary shows"
description: >-
Type hypothesis suggesting institution is a museum.
- value: |
Hypothesis:
asserted_value: "COLLECTING_SOCIETY"
confidence_level: "high"
confidence_score: 0.85
supporting_evidence:
- "Name contains 'Historische Vereniging'"
- "Membership-based organization"
- "Maintains local archive"
description: >-
High-confidence hypothesis for a collecting society.

View file

@ -33,7 +33,8 @@ imports:
- ../slots/technical_specification
- ../slots/template_specificity
- ../slots/temporal_extent
- ../slots/update_frequency
- ../slots/has_or_had_frequency
- ./UpdateFrequency
- ../slots/was_derived_from
- ../slots/was_generated_by
- ./SpecificityAnnotation
@ -115,7 +116,7 @@ classes:
- technical_specification
- template_specificity
- temporal_extent
- update_frequency
- has_or_had_frequency
- was_derived_from
- was_generated_by
slot_usage:
@ -222,12 +223,26 @@ classes:
examples:
- value: JSON
description: JSON data format
update_frequency:
range: string
has_or_had_frequency:
range: UpdateFrequency
inlined: true
description: >-
How often the device sends data/updates, represented as a structured
UpdateFrequency instance with quantity and time interval components.
examples:
- value: Every 5 minutes
- value: |
has_or_had_frequency:
frequency_description: "Every 5 minutes"
has_or_had_quantity:
numeric_value: 5
has_or_had_time_interval:
duration_value: "PT1M"
description: Climate sensor update frequency
- value: On proximity trigger
- value: |
has_or_had_frequency:
frequency_description: "On proximity trigger"
is_event_driven: true
trigger_type: "proximity"
description: Beacon trigger frequency
installed_at_place:
range: CustodianPlace
@ -321,7 +336,13 @@ classes:
publishes_to: https://dashboard.rijksmuseum.nl/climate
api_endpoint: https://api.rijksmuseum.nl/climate/v1/
data_format: JSON
update_frequency: Every 5 minutes
has_or_had_frequency:
frequency_description: "Every 5 minutes"
has_or_had_quantity:
numeric_value: 5
has_or_had_time_interval:
duration_value: "PT1M"
duration_description: "minute"
installation_date: '2020-01-15'
operational_status: ACTIVE
maintenance_schedule: Quarterly calibration

View file

@ -0,0 +1,98 @@
# Location class
# Generic geographic location representation
#
# Generation date: 2026-01-15
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization)
#
# Generic location class for use by TransferEvent and other location-referencing entities
id: https://nde.nl/ontology/hc/class/Location
name: location_class
title: Location Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
locn: http://www.w3.org/ns/locn#
wgs84: http://www.w3.org/2003/01/geo/wgs84_pos#
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/location_name
- ../slots/latitude
- ../slots/longitude
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
Location:
class_uri: schema:Place
description: |
Generic geographic location representation.
**Purpose**:
Location provides a reusable class for representing geographic
locations with name and optional coordinates.
**Ontological Alignment**:
- **Primary**: `schema:Place` - Schema.org Place
- **Exact**: `locn:Location` - LOCN (W3C Location) location
- **Related**: `wgs84:Point` - WGS84 geo point (for coordinates)
**Use Cases**:
- Transfer event locations (origin/destination)
- Institution physical locations
- Collection storage locations
exact_mappings:
- locn:Location
related_mappings:
- wgs84:Point
slots:
- location_name
- latitude
- longitude
- specificity_annotation
- template_specificity
slot_usage:
location_name:
description: |
Human-readable name of the location.
range: string
required: true
latitude:
description: |
WGS84 latitude coordinate.
range: float
required: false
longitude:
description: |
WGS84 longitude coordinate.
range: float
required: false
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Locations apply to all heritage custodian types.
custodian_types_primary: null
specificity_score: 0.2
specificity_rationale: Generic location class applicable across all contexts.
examples:
- value: |
location_name: "Rijksmuseum Amsterdam"
latitude: 52.3600
longitude: 4.8852
description: "Location with coordinates"
- value: |
location_name: "Noord-Hollands Archief, Haarlem"
description: "Location with name only"

View file

@ -0,0 +1,212 @@
id: https://nde.nl/ontology/hc/class/Methodology
name: methodology_class
title: Methodology Class
description: >-
Defines the methodology or technique used to derive a measurement or observation.
**RULE 53 COMPLIANT**: Created for unique_object_count and unique_face_count
migration per slot_fixes.yaml revision (lines 1951-1994).
**PROV-O ALIGNMENT**:
Maps to `prov:Plan` - "A plan is an entity that represents a set of actions or
steps intended by one or more agents to achieve some goals."
In the PROV-O data model, a Plan describes HOW an activity was performed.
Methodology extends this to describe HOW a measurement was derived.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
imports:
- linkml:types
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
- ../enums/MethodologyTypeEnum
default_prefix: hc
classes:
Methodology:
class_uri: prov:Plan
description: >-
Describes the methodology, technique, or algorithm used to derive a measurement.
**PROV-O ALIGNMENT**:
Maps to `prov:Plan` which represents "a set of actions or steps intended by
one or more agents to achieve some goals." In measurement contexts, this
describes HOW a value was computed or derived.
**WHY METHODOLOGY MATTERS**:
Two measurements of "unique objects" could use different methodologies:
| Methodology | Description | Accuracy |
|-------------|-------------|----------|
| ENTITY_RESOLUTION | Deduplication via feature matching | High |
| TRACKING | Object tracking across frames | Medium |
| MANUAL_COUNT | Human counting | Variable |
| SAMPLING | Statistical sampling | Estimated |
Without methodology, two measurements cannot be meaningfully compared.
**HERITAGE USE CASES**:
- **Video annotation**: How unique faces/objects were counted (entity resolution)
- **Collection inventories**: How item counts were derived (physical vs. digital)
- **Visitor statistics**: How attendance was measured (counters, tickets, samples)
- **Digitization metrics**: How completeness was assessed
**EXAMPLE**:
```yaml
has_or_had_methodology:
methodology_type: ENTITY_RESOLUTION
has_or_had_label: "RetinaFace + ArcFace clustering"
has_or_had_description: >-
Faces detected using RetinaFace model, then clustered
using ArcFace embeddings with cosine similarity threshold 0.6
to identify unique individuals.
```
exact_mappings:
- prov:Plan
close_mappings:
- schema:HowToStep
related_mappings:
- dcterms:methodology
slots:
- has_or_had_identifier
- methodology_type
- has_or_had_label
- has_or_had_description
- algorithm_name
- algorithm_version
- confidence_threshold
- specificity_annotation
- template_specificity
slot_usage:
has_or_had_identifier:
range: uriorcurie
required: false
identifier: true
description: >-
Optional identifier for this methodology specification.
examples:
- value: https://nde.nl/ontology/hc/methodology/retinaface-arcface-v1
description: Face clustering methodology identifier
methodology_type:
range: MethodologyTypeEnum
required: false
description: >-
The type of methodology used.
examples:
- value: ENTITY_RESOLUTION
description: Deduplication via feature matching
- value: OBJECT_TRACKING
description: Multi-object tracking across frames
has_or_had_label:
range: string
required: false
description: >-
Human-readable name for the methodology.
examples:
- value: "RetinaFace + ArcFace clustering"
description: Face detection and clustering pipeline
has_or_had_description:
range: string
required: false
description: >-
Detailed description of the methodology.
examples:
- value: "Faces detected using RetinaFace, clustered using ArcFace embeddings"
description: Algorithm description
algorithm_name:
range: string
required: false
description: >-
Name of the algorithm or model used.
examples:
- value: "YOLOv8"
description: Object detection model
- value: "ArcFace"
description: Face recognition model
algorithm_version:
range: string
required: false
description: >-
Version of the algorithm or model.
examples:
- value: "1.0.0"
- value: "v8n"
confidence_threshold:
range: float
required: false
minimum_value: 0.0
maximum_value: 1.0
description: >-
Confidence threshold used for detection/classification.
examples:
- value: 0.6
description: 60% confidence threshold for face matching
comments:
- Describes HOW a measurement was derived
- Essential for comparing measurements from different sources
- Maps to PROV-O Plan for provenance tracking
- Rule 53 compliant - supports unique_object_count/unique_face_count migration
see_also:
- https://www.w3.org/TR/prov-o/#Plan
examples:
- value:
methodology_type: ENTITY_RESOLUTION
has_or_had_label: "RetinaFace + ArcFace clustering"
has_or_had_description: >-
Faces detected using RetinaFace model, then clustered
using ArcFace embeddings with cosine similarity threshold 0.6.
algorithm_name: "ArcFace"
confidence_threshold: 0.6
description: Face entity resolution methodology
- value:
methodology_type: OBJECT_TRACKING
has_or_had_label: "DeepSORT multi-object tracking"
has_or_had_description: >-
Objects tracked across video frames using DeepSORT algorithm
with Kalman filtering and appearance features.
algorithm_name: "DeepSORT"
algorithm_version: "1.0"
description: Object tracking methodology
slots:
methodology_type:
description: >-
The type of methodology used for measurement derivation.
range: MethodologyTypeEnum
slot_uri: hc:methodologyType
algorithm_name:
description: >-
Name of the algorithm, model, or technique used.
range: string
slot_uri: hc:algorithmName
algorithm_version:
description: >-
Version identifier for the algorithm or model.
range: string
slot_uri: hc:algorithmVersion
confidence_threshold:
description: >-
Confidence threshold used for detection, matching, or classification.
range: float
slot_uri: hc:confidenceThreshold

View file

@ -15,8 +15,8 @@ prefixes:
imports:
- linkml:types
- ../slots/has_or_had_quantity
- ./Quantity
- ./MuseumRegisterProvenance
default_range: string
@ -75,8 +75,13 @@ classes:
range: string
multivalued: true
inlined_as_list: true
visitor_count:
range: integer
has_or_had_quantity:
range: Quantity
inlined: true
description: >-
Visitor count from museum register. RULE 53: Replaces deprecated
visitor_count integer with structured Quantity class supporting
measurement unit (VISITOR) and temporal extent.
accreditation_status:
range: string
manual_correction:

View file

@ -0,0 +1,73 @@
# PaymentMethod - Payment methods accepted by an institution
# Created per slot_fixes.yaml migration for: accepts_or_accepted_payment_method
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/PaymentMethod
name: PaymentMethod
title: PaymentMethod
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_range: string
classes:
PaymentMethod:
description: >-
A payment method accepted by an institution for tickets, services, or purchases.
**EXAMPLES**:
- Credit cards (Visa, Mastercard, Amex)
- Debit cards (Maestro, V-Pay)
- Digital payments (iDEAL, Apple Pay, Google Pay)
- Cash
- Museum passes (Museumkaart, etc.)
Used with `accepts_or_accepted` slot to indicate payment options.
class_uri: schema:PaymentMethod
attributes:
method_type:
range: string
required: true
description: >-
Type of payment method (e.g., "credit_card", "debit_card", "digital", "cash").
provider:
range: string
description: >-
Payment provider or brand (e.g., "Visa", "iDEAL", "Apple Pay").
note:
range: string
description: >-
Additional notes about this payment method.
annotations:
custodian_types: '["M", "G", "B", "H"]'
custodian_types_rationale: >-
Payment methods primarily relevant for visitor-facing institutions.
custodian_types_primary: "M"
specificity_score: 0.6
specificity_rationale: >-
Moderate-high specificity - specific to ticketing/commerce.
examples:
- value: |
PaymentMethod:
method_type: "credit_card"
provider: "Visa"
description: Visa credit card payment.
- value: |
PaymentMethod:
method_type: "digital"
provider: "iDEAL"
note: "Dutch bank transfer system"
description: iDEAL digital payment method.

View file

@ -0,0 +1,107 @@
# Place - A geographic or administrative place for containment relationships
# Created per slot_fixes.yaml migration for: within_place, within_auxiliary_place
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/Place
name: Place
title: Place
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
gn: http://www.geonames.org/ontology#
locn: http://www.w3.org/ns/locn#
imports:
- linkml:types
default_range: string
classes:
Place:
description: >-
A geographic or administrative place used for containment relationships.
**DISTINCTION FROM Location**:
- `Location` is for precise physical locations (address, coordinates)
- `Place` is for administrative/geographic containment (city within province)
**USE CASES**:
- `within_place`: Institution is within a city/region
- `within_auxiliary_place`: Secondary location containment
- Administrative hierarchies: settlement → region → country
**ONTOLOGY MAPPING**:
- class_uri: schema:Place (generic place concept)
- Supports GeoNames integration for standardized place references
class_uri: schema:Place
close_mappings:
- gn:Feature
- locn:Location
related_mappings:
- schema:AdministrativeArea
attributes:
place_name:
range: string
required: true
description: >-
Name of the place (e.g., "Amsterdam", "Noord-Holland", "Netherlands").
place_type:
range: string
description: >-
Type of place (e.g., "settlement", "region", "country", "district").
geonames_id:
range: integer
description: >-
GeoNames identifier for standardized place reference.
Example: 2759794 for Amsterdam.
iso_code:
range: string
description: >-
ISO code for administrative areas.
Examples: "NL" (country), "NL-NH" (region), "AMS" (settlement code).
parent_place:
range: Place
inlined: true
description: >-
Parent place in the administrative hierarchy.
Example: Amsterdam's parent is Noord-Holland.
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Place references applicable to all custodian types.
custodian_types_primary: "*"
specificity_score: 0.2
specificity_rationale: >-
Low specificity - universal geographic concept.
examples:
- value: |
Place:
place_name: "Amsterdam"
place_type: "settlement"
geonames_id: 2759794
iso_code: "AMS"
parent_place:
place_name: "Noord-Holland"
place_type: "region"
iso_code: "NL-NH"
description: Amsterdam as a settlement within Noord-Holland.
- value: |
Place:
place_name: "Netherlands"
place_type: "country"
iso_code: "NL"
geonames_id: 2750405
description: Country-level place reference.

View file

@ -0,0 +1,118 @@
# Provenance - A single provenance statement tracking the origin and lineage of data
# Distinct from ProvenanceBlock which bundles multiple provenance sources
# Created per slot_fixes.yaml migration for: binding_provenance, xpath, type_hypothesis
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/Provenance
name: Provenance
title: Provenance
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
dct: http://purl.org/dc/terms/
schema: http://schema.org/
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
- ../slots/has_or_had_agent
- ../slots/temporal_extent
default_range: string
classes:
Provenance:
description: >-
A single provenance statement describing the origin, lineage, or derivation
of a piece of data.
**DISTINCTION FROM ProvenanceBlock**:
- `Provenance` represents a SINGLE provenance statement (one source, one activity)
- `ProvenanceBlock` bundles MULTIPLE provenance sources together
Use `Provenance` when:
- Tracking provenance of individual data elements
- Recording specific extraction or transformation activities
- Linking data to its source agent/entity
**ONTOLOGY MAPPING**:
- class_uri: prov:Activity (the extraction/derivation activity)
- Links to prov:Agent via has_or_had_agent
- Links to prov:Entity via used (source) and generated (result)
class_uri: prov:Activity
close_mappings:
- dct:ProvenanceStatement
- schema:Action
related_mappings:
- prov:Entity
- prov:Derivation
slots:
- has_or_had_agent
- temporal_extent
attributes:
source_entity:
range: uriorcurie
description: >-
URI of the source entity from which data was derived (prov:used).
slot_uri: prov:used
generated_entity:
range: uriorcurie
description: >-
URI of the entity generated by this provenance activity (prov:generated).
slot_uri: prov:generated
extraction_method:
range: string
description: >-
Method or process used to extract/derive the data.
Examples: "xpath_extraction", "api_query", "manual_entry"
confidence_score:
range: float
minimum_value: 0.0
maximum_value: 1.0
description: >-
Confidence score (0.0 to 1.0) indicating reliability of this provenance.
note:
range: string
description: >-
Human-readable note about this provenance statement.
slot_uri: prov:value
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Provenance tracking is universal across all custodian types.
custodian_types_primary: "*"
specificity_score: 0.15
specificity_rationale: >-
Very low specificity - provenance metadata applies universally.
examples:
- value: |
Provenance:
extraction_method: "xpath_extraction"
source_entity: "https://example.org/webpage/12345"
confidence_score: 0.95
note: "Extracted from archived HTML using XPath"
description: >-
Provenance for an XPath-extracted value from an archived webpage.
- value: |
Provenance:
has_or_had_agent:
agent_type: "software"
name: "glam-extractor-v2.1"
extraction_method: "api_scraping"
confidence_score: 0.85
description: >-
Provenance for API-scraped data with agent identification.

View file

@ -13,8 +13,14 @@ imports:
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/has_or_had_measurement_unit
- ../slots/has_or_had_methodology
- ../slots/temporal_extent
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./MeasureUnit
- ./Methodology
- ./TimeSpan
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
default_prefix: hc
@ -65,10 +71,18 @@ classes:
quantity_id: https://nde.nl/ontology/hc/quantity/nha-zaanstreek-staff-2025
quantity_value: 3
quantity_type: STAFF_COUNT
quantity_unit: FTE
quantity_description: Staff assigned to Zaanstreek-Waterland branch
quantity_date: 2025-01-01
has_or_had_measurement_unit:
unit_type: VISITOR
unit_symbol: "visitors"
temporal_extent:
begin_of_the_begin: "2024-01-01T00:00:00Z"
end_of_the_end: "2024-12-31T23:59:59Z"
has_or_had_description: Staff assigned to Zaanstreek-Waterland branch
```
**RULE 53 COMPLIANT**: Updated with link_branch slots (has_or_had_measurement_unit,
temporal_extent, has_or_had_methodology) per slot_fixes.yaml revision for
visitor_count, view_count, unique_object_count, and unique_face_count migrations.
exact_mappings:
- qudt:Quantity
close_mappings:
@ -82,6 +96,9 @@ classes:
- quantity_value
- quantity_type
- quantity_unit
- has_or_had_measurement_unit
- has_or_had_methodology
- temporal_extent
- has_or_had_description
- quantity_date
- is_estimate
@ -121,8 +138,12 @@ classes:
quantity_unit:
range: string
required: false
deprecated: >-
Use has_or_had_measurement_unit with MeasureUnit class instead.
Retained for backward compatibility with existing data.
description: >-
The unit of measurement (if applicable).
DEPRECATED: The unit of measurement as a simple string.
Prefer has_or_had_measurement_unit for structured unit data.
examples:
- value: FTE
description: Full-time equivalent employees
@ -136,6 +157,54 @@ classes:
description: Budget in euros
- value:
description: Floor area
has_or_had_measurement_unit:
range: MeasureUnit
required: false
inlined: true
description: >-
The structured unit of measurement for this quantity.
Provides richer semantics than the deprecated quantity_unit string.
RULE 53: Branch 1 slot from visitor_count migration.
examples:
- value:
unit_type: VISITOR
unit_symbol: "visitors"
description: Visitor count unit
- value:
unit_type: SQUARE_METER
unit_symbol: "m²"
description: Area unit
temporal_extent:
range: TimeSpan
required: false
inlined: true
description: >-
The time period over which this quantity was measured.
CIDOC-CRM temporal modeling with fuzzy boundaries.
RULE 53: Branch 2 slot from visitor_count migration.
examples:
- value:
begin_of_the_begin: "2024-01-01T00:00:00Z"
end_of_the_end: "2024-12-31T23:59:59Z"
description: Annual measurement period
has_or_had_methodology:
range: Methodology
required: false
inlined: true
description: >-
The methodology used to derive this quantity.
Essential for unique counts derived via entity resolution.
RULE 53: Branch 2 slot from unique_object_count/unique_face_count migration.
examples:
- value:
methodology_type: ENTITY_RESOLUTION
has_or_had_label: "ArcFace clustering"
confidence_threshold: 0.6
description: Face entity resolution methodology
- value:
methodology_type: OBJECT_TRACKING
has_or_had_label: "DeepSORT"
description: Multi-object tracking methodology
has_or_had_description:
range: string
required: false
@ -175,18 +244,58 @@ classes:
has_or_had_identifier: https://nde.nl/ontology/hc/quantity/nha-zaanstreek-staff-2025
quantity_value: 3
quantity_type: STAFF_COUNT
quantity_unit: FTE
has_or_had_measurement_unit:
unit_type: FTE
unit_symbol: "FTE"
has_or_had_label: "full-time equivalent"
has_or_had_description: Staff assigned to Zaanstreek-Waterland branch
quantity_date: '2025-01-01'
is_estimate: false
description: Branch staff count
description: Branch staff count (preferred pattern with structured unit)
- value:
quantity_value: 650000
quantity_type: VISITOR_COUNT
has_or_had_measurement_unit:
unit_type: VISITOR
unit_symbol: "visitors"
temporal_extent:
begin_of_the_begin: "2023-02-10T00:00:00Z"
end_of_the_end: "2023-06-04T23:59:59Z"
has_or_had_description: Vermeer exhibition attendance
is_estimate: false
description: Exhibition visitor count with temporal extent (Rule 53 pattern)
- value:
quantity_value: 15
quantity_type: OBJECT_COUNT
has_or_had_measurement_unit:
unit_type: FACE
unit_symbol: "faces"
has_or_had_methodology:
methodology_type: ENTITY_RESOLUTION
has_or_had_label: "ArcFace clustering"
confidence_threshold: 0.6
has_or_had_description: Unique faces detected via entity resolution
is_estimate: false
description: Unique face count with methodology (Rule 53 pattern for unique_face_count)
- value:
quantity_value: 47
quantity_type: OBJECT_COUNT
has_or_had_measurement_unit:
unit_type: OBJECT
unit_symbol: "objects"
has_or_had_methodology:
methodology_type: OBJECT_TRACKING
has_or_had_label: "DeepSORT"
has_or_had_description: Unique objects tracked across video frames
is_estimate: false
description: Unique object count with methodology (Rule 53 pattern for unique_object_count)
- value:
quantity_value: 1200000
quantity_type: COLLECTION_SIZE
quantity_unit: items
has_or_had_description: Total collection size including artworks, documents, and photographs
is_estimate: true
description: Estimated collection size
description: Estimated collection size (deprecated string unit - backward compatible)
- value:
quantity_value: 2500000
quantity_type: VISITOR_COUNT
@ -194,7 +303,7 @@ classes:
has_or_had_description: Annual visitor count for 2024
quantity_date: '2024-12-31'
is_estimate: false
description: Annual visitor count
description: Annual visitor count (deprecated string unit - backward compatible)
slots:
quantity_value:
description: >-

View file

@ -0,0 +1,89 @@
# Scope - Coverage/scope information for collections, services, or institutions
# Created per slot_fixes.yaml migration for: typical_scope, type_scope
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/Scope
name: Scope
title: Scope
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dct: http://purl.org/dc/terms/
schema: http://schema.org/
imports:
- linkml:types
- ../slots/has_or_had_type
default_range: string
classes:
Scope:
description: >-
Coverage or scope information for a collection, service, or institution.
**SCOPE DIMENSIONS**:
- **Temporal**: Time period covered (e.g., "1600-1900")
- **Spatial**: Geographic coverage (e.g., "Netherlands", "Amsterdam")
- **Subject**: Topic/subject areas (e.g., "Dutch Golden Age painting")
- **Material**: Types of materials (e.g., "photographs", "manuscripts")
**ONTOLOGY MAPPING**:
- class_uri: dct:Coverage (Dublin Core coverage concept)
class_uri: dct:Coverage
close_mappings:
- schema:Thing
slots:
- has_or_had_type
attributes:
scope_description:
range: string
description: >-
Human-readable description of the scope.
temporal_coverage:
range: string
description: >-
Time period covered (e.g., "1600-1900", "Medieval period").
spatial_coverage:
range: string
description: >-
Geographic coverage (e.g., "Netherlands", "Europe").
subject_coverage:
range: string
multivalued: true
description: >-
Subject areas covered.
material_coverage:
range: string
multivalued: true
description: >-
Types of materials covered.
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Scope information applicable to all custodian types.
custodian_types_primary: "*"
specificity_score: 0.3
specificity_rationale: >-
Low-moderate specificity - common metadata concept.
examples:
- value: |
Scope:
scope_description: "Dutch art from the Golden Age"
temporal_coverage: "1600-1700"
spatial_coverage: "Netherlands"
subject_coverage:
- "Painting"
- "Dutch Golden Age"
description: Scope for a Dutch Golden Age art collection.

View file

@ -0,0 +1,165 @@
# ScopeType - Abstract base class for scope type classifications
#
# Following the Type/Types naming convention (Rule 0b):
# - ScopeType.yaml: Abstract base class defining the type taxonomy
# - ScopeTypes.yaml: File containing all concrete subclasses
#
# Created per slot_fixes.yaml migration for: typical_scope, type_scope
# Creation date: 2026-01-14
# Rule compliance: 0b (Type/Types naming), 37 (specificity scores), 50 (ontology mapping)
id: https://nde.nl/ontology/hc/class/ScopeType
name: ScopeType
title: Scope Type Classification
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
dct: http://purl.org/dc/terms/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/type_description
- ../slots/type_id
- ../slots/type_label
- ../slots/wikidata_entity
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
ScopeType:
class_uri: skos:Concept
description: |
Abstract base class for scope type classifications in the heritage domain.
**DEFINITION**:
ScopeType represents CATEGORIES of scope/coverage dimensions, not individual
scope instances. Each subclass defines characteristics of a scope category
(temporal, spatial, subject, material, etc.).
**CRITICAL: TYPE vs INSTANCE**
| Aspect | ScopeType (This Class) | Scope (Instance Class) |
|--------|------------------------|------------------------|
| **Nature** | Classification/category | Individual scope |
| **Examples** | TEMPORAL, SPATIAL, SUBJECT | "1600-1700 Dutch painting" |
| **Properties** | Category metadata | Actual coverage values |
| **Cardinality** | ~5-10 types | Thousands of instances |
**SCOPE DIMENSIONS**:
1. **TEMPORAL**: Time-based coverage
- Century, Decade, Date Range, Era, Period
- Historical Period, Epoch
2. **SPATIAL**: Geographic coverage
- Country, Region, City, Continent
- Administrative Division, Geographic Feature
3. **SUBJECT**: Topic/domain coverage
- Art Movement, Historical Theme, Scientific Domain
- Cultural Topic, Social Issue
4. **MATERIAL**: Material type coverage
- Photographs, Manuscripts, Prints, Maps
- Audio Recordings, Video, 3D Objects
5. **LINGUISTIC**: Language coverage
- Script, Language Family, Dialect Region
6. **INSTITUTIONAL**: Organizational coverage
- Sector, Industry, Government Level
- International, National, Regional, Local
**ONTOLOGY ALIGNMENT**:
- **SKOS Concept**: Scope types are concepts in a controlled vocabulary
- **Dublin Core Coverage**: dct:Coverage for scope semantics
- **MODS Subject**: Library of Congress subject coverage model
**SUBCLASSES**:
See ScopeTypes.yaml for concrete scope type subclasses organized
by dimension: TEMPORAL, SPATIAL, SUBJECT, MATERIAL, LINGUISTIC, and
INSTITUTIONAL.
abstract: true
exact_mappings:
- skos:Concept
close_mappings:
- dct:Coverage
- schema:DefinedTerm
slots:
- specificity_annotation
- template_specificity
- type_description
- type_id
- type_label
- wikidata_entity
slot_usage:
type_id:
range: uriorcurie
required: true
identifier: true
pattern: "^https://nde\\.nl/ontology/hc/scope-type/[a-z-]+$"
examples:
- value: https://nde.nl/ontology/hc/scope-type/temporal
description: Temporal scope type
- value: https://nde.nl/ontology/hc/scope-type/spatial
description: Spatial scope type
type_label:
range: string
required: true
multivalued: true
examples:
- value: ["Temporal@en", "temporeel@nl", "zeitlich@de"]
description: Multilingual labels for temporal scope type
type_description:
range: string
required: false
examples:
- value: "Time-based scope dimension covering date ranges and historical periods"
description: Description of temporal scope type
wikidata_entity:
range: string
required: false
pattern: "^Q[0-9]+$"
annotations:
specificity_score: "0.35"
specificity_rationale: "Moderately low specificity - scope types are generic classification concepts."
template_specificity: '{"collection_discovery": 0.50, "archive_search": 0.45, "general_heritage": 0.35}'
comments:
- "Abstract base class - use specific subclasses (TemporalScope, SpatialScope, etc.)"
- "Represents SCOPE TYPES, not scope instances"
- "Scope.has_or_had_type references these type classes"
- "Follows Type/Types naming convention (Rule 0b)"
- "Organized by dimension: temporal, spatial, subject, material"
see_also:
- https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#section-7
- https://www.w3.org/2004/02/skos/
examples:
- value:
type_id: https://nde.nl/ontology/hc/scope-type/temporal
type_label:
- Temporal@en
- temporeel@nl
type_description: "Time-based scope dimension"
description: "Temporal scope type with multilingual labels"

View file

@ -0,0 +1,262 @@
# ScopeTypes - Concrete scope type subclasses
#
# Following the Type/Types naming convention (Rule 0b):
# - ScopeType.yaml: Abstract base class defining the type taxonomy
# - ScopeTypes.yaml: File containing all concrete subclasses
#
# Created per slot_fixes.yaml migration for: typical_scope, type_scope
# Creation date: 2026-01-14
# Rule compliance: 0b (Type/Types naming), 37 (specificity scores), 50 (ontology mapping)
id: https://nde.nl/ontology/hc/class/ScopeTypes
name: ScopeTypes
title: Scope Type Subclasses
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
dct: http://purl.org/dc/terms/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ./ScopeType
classes:
# =============================================================================
# TEMPORAL SCOPE TYPES
# =============================================================================
TemporalScope:
is_a: ScopeType
class_uri: dct:PeriodOfTime
description: |
Time-based scope dimension covering date ranges, historical periods, and eras.
**Examples**:
- "1600-1700" (date range)
- "Medieval period" (historical period)
- "19th century" (century scope)
exact_mappings:
- dct:PeriodOfTime
annotations:
specificity_score: "0.40"
specificity_rationale: "Moderately specific - temporal scoping is common across domains."
examples:
- value:
type_id: https://nde.nl/ontology/hc/scope-type/temporal
type_label: ["Temporal@en", "temporeel@nl"]
description: Temporal scope type instance
# =============================================================================
# SPATIAL SCOPE TYPES
# =============================================================================
SpatialScope:
is_a: ScopeType
class_uri: dct:Location
description: |
Geographic scope dimension covering countries, regions, cities, and areas.
**Examples**:
- "Netherlands" (country)
- "Noord-Holland" (region/province)
- "Amsterdam" (city)
- "Europe" (continent)
exact_mappings:
- dct:Location
close_mappings:
- schema:Place
annotations:
specificity_score: "0.40"
specificity_rationale: "Moderately specific - geographic scoping is common across domains."
examples:
- value:
type_id: https://nde.nl/ontology/hc/scope-type/spatial
type_label: ["Spatial@en", "ruimtelijk@nl"]
description: Spatial scope type instance
# =============================================================================
# SUBJECT SCOPE TYPES
# =============================================================================
SubjectScope:
is_a: ScopeType
class_uri: dct:subject
description: |
Topic/domain scope dimension covering subjects, themes, and disciplines.
**Examples**:
- "Dutch Golden Age painting" (art historical subject)
- "World War II" (historical theme)
- "Maritime history" (subject area)
exact_mappings:
- dct:subject
close_mappings:
- skos:Concept
annotations:
specificity_score: "0.45"
specificity_rationale: "Moderately specific - subject classification is domain-dependent."
examples:
- value:
type_id: https://nde.nl/ontology/hc/scope-type/subject
type_label: ["Subject@en", "onderwerp@nl"]
description: Subject scope type instance
# =============================================================================
# MATERIAL SCOPE TYPES
# =============================================================================
MaterialScope:
is_a: ScopeType
class_uri: dct:DCMIType
description: |
Material type scope dimension covering media types and object categories.
**Examples**:
- "Photographs" (visual material)
- "Manuscripts" (documentary material)
- "Audio recordings" (sound material)
- "3D objects" (physical objects)
exact_mappings:
- dct:DCMIType
close_mappings:
- schema:CreativeWork
annotations:
specificity_score: "0.50"
specificity_rationale: "More specific - material types are heritage-domain focused."
examples:
- value:
type_id: https://nde.nl/ontology/hc/scope-type/material
type_label: ["Material@en", "materiaal@nl"]
description: Material scope type instance
# =============================================================================
# LINGUISTIC SCOPE TYPES
# =============================================================================
LinguisticScope:
is_a: ScopeType
class_uri: dct:language
description: |
Language scope dimension covering languages, scripts, and dialects.
**Examples**:
- "Dutch" (language)
- "Arabic script" (writing system)
- "Low Saxon" (dialect/regional language)
exact_mappings:
- dct:language
annotations:
specificity_score: "0.40"
specificity_rationale: "Moderately specific - linguistic scoping is common."
examples:
- value:
type_id: https://nde.nl/ontology/hc/scope-type/linguistic
type_label: ["Linguistic@en", "taalkundig@nl"]
description: Linguistic scope type instance
# =============================================================================
# INSTITUTIONAL SCOPE TYPES
# =============================================================================
InstitutionalScope:
is_a: ScopeType
class_uri: schema:Organization
description: |
Organizational/sectoral scope dimension covering sectors and governance levels.
**Examples**:
- "Cultural heritage sector" (sector)
- "National level" (governance level)
- "Academic institutions" (institutional type)
close_mappings:
- schema:Organization
annotations:
specificity_score: "0.45"
specificity_rationale: "Moderately specific - institutional classification is heritage-relevant."
examples:
- value:
type_id: https://nde.nl/ontology/hc/scope-type/institutional
type_label: ["Institutional@en", "institutioneel@nl"]
description: Institutional scope type instance
# =============================================================================
# COLLECTION SCOPE TYPES
# =============================================================================
CollectionScope:
is_a: ScopeType
class_uri: schema:Collection
description: |
Collection-based scope dimension covering collection types and sizes.
**Examples**:
- "Small collection (<1000 items)" (size scope)
- "Research collection" (function scope)
- "Public access collection" (access scope)
close_mappings:
- schema:Collection
annotations:
specificity_score: "0.55"
specificity_rationale: "More specific - collection scoping is heritage-domain focused."
examples:
- value:
type_id: https://nde.nl/ontology/hc/scope-type/collection
type_label: ["Collection@en", "collectie@nl"]
description: Collection scope type instance
# =============================================================================
# FORMAT SCOPE TYPES
# =============================================================================
FormatScope:
is_a: ScopeType
class_uri: dct:format
description: |
Format scope dimension covering file formats and data standards.
**Examples**:
- "JPEG/TIFF" (image formats)
- "Dublin Core" (metadata standard)
- "EAD" (archival encoding)
exact_mappings:
- dct:format
annotations:
specificity_score: "0.50"
specificity_rationale: "More specific - format scoping is technical/domain focused."
examples:
- value:
type_id: https://nde.nl/ontology/hc/scope-type/format
type_label: ["Format@en", "formaat@nl"]
description: Format scope type instance

View file

@ -0,0 +1,112 @@
# TimeInterval - A duration or interval of time
# Created per slot_fixes.yaml migration for: update_frequency, typical_approval_time, total_revenue
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/TimeInterval
name: TimeInterval
title: TimeInterval
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
time: http://www.w3.org/2006/time#
schema: http://schema.org/
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
default_range: string
classes:
TimeInterval:
description: >-
A duration or interval of time, representing a period rather than a point.
**DISTINCTION FROM TimeSpan**:
- `TimeSpan` represents a bounded period with begin/end points (CIDOC-CRM E52)
- `TimeInterval` represents a duration/interval (e.g., "2 weeks", "quarterly")
**USE CASES**:
- Update frequency: "updated weekly"
- Approval time: "typically 2-3 business days"
- Reporting period: "annual revenue for fiscal year"
**ONTOLOGY MAPPING**:
- class_uri: time:Duration (W3C Time Ontology)
- Supports ISO 8601 duration format (P1Y, P2M, P3D, PT4H)
class_uri: time:Duration
close_mappings:
- schema:Duration
related_mappings:
- time:Interval
- time:TemporalDuration
attributes:
duration_value:
range: string
description: >-
ISO 8601 duration string (e.g., P1Y, P2M, P7D, PT24H).
P = period, Y = years, M = months, D = days, T = time separator, H = hours
duration_description:
range: string
description: >-
Human-readable description of the duration.
Examples: "weekly", "monthly", "annual", "2-3 business days"
years:
range: integer
description: Number of years in the interval.
minimum_value: 0
months:
range: integer
description: Number of months in the interval.
minimum_value: 0
days:
range: integer
description: Number of days in the interval.
minimum_value: 0
hours:
range: integer
description: Number of hours in the interval.
minimum_value: 0
minutes:
range: integer
description: Number of minutes in the interval.
minimum_value: 0
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Time intervals applicable to all custodian types for various purposes.
custodian_types_primary: "*"
specificity_score: 0.25
specificity_rationale: >-
Low specificity - universal temporal concept.
examples:
- value: |
TimeInterval:
duration_value: "P7D"
duration_description: "weekly"
description: A one-week interval for update frequency.
- value: |
TimeInterval:
duration_value: "P1Y"
duration_description: "annual"
description: A one-year interval for revenue reporting.
- value: |
TimeInterval:
days: 3
duration_description: "2-3 business days"
description: Typical approval time interval.

View file

@ -18,6 +18,7 @@ imports:
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
- ./Timestamp
default_range: string
classes:
TimeSpan:

View file

@ -0,0 +1,151 @@
# Timestamp class
# A point in time with optional precision and calendar metadata
#
# Generation date: 2026-01-15
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization), 53 (slot_fixes.yaml)
#
# This class supports 6 slot migrations per slot_fixes.yaml:
# - valid_to_geo
# - valid_to
# - valid_from_geo
# - valid_from
# - updated_at
# - unesco_inscription_year
#
# Ontological basis: OWL Time Instant (time:Instant)
id: https://nde.nl/ontology/hc/class/Timestamp
name: timestamp_class
title: Timestamp Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
time: http://www.w3.org/2006/time#
xsd: http://www.w3.org/2001/XMLSchema#
crm: http://www.cidoc-crm.org/cidoc-crm/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/timestamp_value
- ../slots/timestamp_precision
- ../slots/calendar_system
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
Timestamp:
class_uri: time:Instant
description: |
A point in time with optional precision and calendar metadata.
**Purpose**:
Timestamp provides a reusable class for representing temporal instants
with explicit precision indicators. This supports EDTF-style partial
dates (year-only, year-month, full date, datetime) and calendar system
annotation for non-Gregorian dates.
**Ontological Alignment**:
- **Primary**: `time:Instant` - OWL Time instant
- **Close**: `crm:E61_Time_Primitive` - CIDOC-CRM time primitive
- **Related**: `xsd:dateTime` - XML Schema dateTime
**Use Cases**:
- Beginning/ending of time spans (TimeSpan.begin_of_the_begin, etc.)
- Validity dates (valid_from, valid_to)
- Update timestamps (updated_at, created_at)
- Historical dates with varying precision
**Precision Levels**:
- year: "1995" (EDTF: "1995")
- month: "1995-06" (EDTF: "1995-06")
- day: "1995-06-15" (EDTF: "1995-06-15")
- datetime: "1995-06-15T10:30:00" (full precision)
**Replaces** (per slot_fixes.yaml):
- `valid_to_geo` → TimeSpan.end_of_the_end: Timestamp
- `valid_to` → TimeSpan.end_of_the_end: Timestamp
- `valid_from_geo` → TimeSpan.begin_of_the_begin: Timestamp
- `valid_from` → TimeSpan.begin_of_the_begin: Timestamp
- `updated_at` → was_last_updated_at: TimeSpan
- `unesco_inscription_year` → TimeSpan.begin_of_the_begin: Timestamp
exact_mappings:
- time:Instant
close_mappings:
- crm:E61_Time_Primitive
related_mappings:
- xsd:dateTime
- schema:DateTime
slots:
- timestamp_value
- timestamp_precision
- calendar_system
- specificity_annotation
- template_specificity
slot_usage:
timestamp_value:
description: |
The timestamp value as ISO 8601 string.
Precision determined by string format:
- "1995" = year precision
- "1995-06" = month precision
- "1995-06-15" = day precision
- "1995-06-15T10:30:00Z" = full datetime
range: string
required: true
pattern: "^-?\\d{4}(-\\d{2})?(-\\d{2})?(T\\d{2}:\\d{2}(:\\d{2})?(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?)?$"
timestamp_precision:
description: |
Explicit precision level. Auto-derived from timestamp_value if not provided.
Values: year, month, day, hour, minute, second, millisecond
range: string
required: false
examples:
- value: year
- value: day
- value: second
calendar_system:
description: |
Calendar system for the timestamp. Default is Gregorian.
For historical or non-Western dates, specify the calendar.
range: string
required: false
examples:
- value: gregorian
- value: julian
- value: hebrew
- value: islamic
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Generic timestamp class applicable to all types.
custodian_types_primary: null
specificity_score: 0.15
specificity_rationale: Very broadly applicable generic class for temporal points.
examples:
- value: |
timestamp_value: "1995"
timestamp_precision: year
description: "Year-only timestamp (e.g., founding year)"
- value: |
timestamp_value: "2024-06-15"
timestamp_precision: day
calendar_system: gregorian
description: "Full date timestamp"
- value: |
timestamp_value: "2024-06-15T14:30:00Z"
timestamp_precision: second
calendar_system: gregorian
description: "Full datetime timestamp"

View file

@ -0,0 +1,144 @@
# TransferEvent class
# Custody or ownership transfer event
#
# Generation date: 2026-01-15
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization), 53 (slot_fixes.yaml)
#
# This class supports 4 slot migrations per slot_fixes.yaml:
# - transfer_to_collection_date → is_or_was_transferred + TransferEvent
# - transfer_policy → is_or_was_transferred + TransferEvent
# - transfer_location_text → is_or_was_transferred + TransferEvent
# - transfer_location → is_or_was_transferred + TransferEvent
id: https://nde.nl/ontology/hc/class/TransferEvent
name: transfer_event_class
title: TransferEvent Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
rico: https://www.ica.org/standards/RiC/ontology#
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/temporal_extent
- ../slots/starts_or_started_at_location
- ../slots/ends_or_ended_at_location
- ../slots/has_or_had_description
- ../slots/has_or_had_policy
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./TimeSpan
- ./Location
- ./TransferPolicy
- ./Description
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
TransferEvent:
class_uri: crm:E10_Transfer_of_Custody
description: |
Event representing transfer of custody, ownership, or physical location.
**Purpose**:
TransferEvent models significant transfers in heritage contexts:
- Collection transfers between institutions
- Relocation of holdings
- Custody changes (legal guardianship)
- Ownership changes
**Ontological Alignment**:
- **Primary**: `crm:E10_Transfer_of_Custody` - CIDOC-CRM custody transfer
- **Close**: `rico:TransferEvent` - RiC-O transfer event
- **Related**: `prov:Activity` - PROV-O activity (general activity)
**Key Components**:
- `temporal_extent`: When the transfer occurred (TimeSpan)
- `starts_or_started_at_location`: Origin location
- `ends_or_ended_at_location`: Destination location
- `has_or_had_policy`: Transfer policy governing the transfer
- `has_or_had_description`: Narrative description
**Replaces** (per slot_fixes.yaml):
- `transfer_to_collection_date` (simple date)
- `transfer_policy` (simple string)
- `transfer_location` (simple string)
- `transfer_location_text` (simple string)
exact_mappings:
- crm:E10_Transfer_of_Custody
close_mappings:
- rico:TransferEvent
related_mappings:
- prov:Activity
- schema:TransferAction
slots:
- temporal_extent
- starts_or_started_at_location
- ends_or_ended_at_location
- has_or_had_description
- has_or_had_policy
- specificity_annotation
- template_specificity
slot_usage:
temporal_extent:
description: |
When the transfer occurred. Can be a single date or date range.
range: TimeSpan
required: false
inlined: true
starts_or_started_at_location:
description: |
Origin location - where the transferred items came from.
range: Location
required: false
inlined: true
ends_or_ended_at_location:
description: |
Destination location - where the transferred items went to.
range: Location
required: false
inlined: true
has_or_had_description:
description: |
Narrative description of the transfer event.
range: Description
required: false
inlined: true
has_or_had_policy:
description: |
Policy that governed this transfer.
range: TransferPolicy
required: false
inlined: true
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Transfer events apply to all heritage custodian types.
custodian_types_primary: null
specificity_score: 0.5
specificity_rationale: Specialized event type for custody/ownership changes.
examples:
- value: |
temporal_extent:
begin_of_the_begin:
timestamp_value: "2020-01-15T00:00:00Z"
starts_or_started_at_location:
location_name: "Old Storage Facility"
ends_or_ended_at_location:
location_name: "New Archive Building"
has_or_had_description:
description_text: "Transfer of historical photographs to new climate-controlled facility"
description: "Collection relocation transfer"

View file

@ -0,0 +1,101 @@
# TransferPolicy class
# Policy governing custody or ownership transfers
#
# Generation date: 2026-01-15
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization), 53 (slot_fixes.yaml)
#
# Supports migration: transfer_policy → is_or_was_transferred + TransferEvent + has_or_had_policy + TransferPolicy
id: https://nde.nl/ontology/hc/class/TransferPolicy
name: transfer_policy_class
title: TransferPolicy Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
rico: https://www.ica.org/standards/RiC/ontology#
dcterms: http://purl.org/dc/terms/
odrl: http://www.w3.org/ns/odrl/2/
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/policy_name
- ../slots/policy_text
- ../slots/has_or_had_description
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./Description
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
TransferPolicy:
class_uri: odrl:Policy
description: |
Policy governing custody or ownership transfers.
**Purpose**:
TransferPolicy captures the rules and conditions under which
heritage materials may be transferred between institutions,
including donor restrictions and legal requirements.
**Ontological Alignment**:
- **Primary**: `odrl:Policy` - ODRL policy (rights/rules)
- **Close**: `rico:RecordResourceTransferRule` - RiC-O transfer rule
- **Related**: `dcterms:RightsStatement` - rights/access statement
**Use Cases**:
- Donor restrictions on collection transfers
- Deaccessioning policies
- Inter-institutional loan agreements
- Government archive transfer regulations
exact_mappings:
- odrl:Policy
close_mappings:
- rico:RecordResourceTransferRule
related_mappings:
- dcterms:RightsStatement
slots:
- policy_name
- policy_text
- has_or_had_description
- specificity_annotation
- template_specificity
slot_usage:
policy_name:
description: |
Name or title of the transfer policy.
range: string
required: false
policy_text:
description: |
Full text of the policy.
range: string
required: false
has_or_had_description:
description: |
Summary description of the policy.
range: Description
required: false
inlined: true
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Transfer policies apply to all heritage types.
custodian_types_primary: null
specificity_score: 0.55
specificity_rationale: Specialized policy type for transfer governance.
examples:
- value: |
policy_name: "Donor Transfer Restriction"
policy_text: "Materials may not be transferred to institutions outside the Netherlands without donor consent."
description: "Donor-imposed transfer restriction"

View file

@ -0,0 +1,121 @@
# URL class
# Structured URL representation with type and metadata
#
# Generation date: 2026-01-15
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization), 53 (slot_fixes.yaml)
#
# This class supports 4 slot migrations per slot_fixes.yaml:
# - website → has_or_had_url + URL
# - url → has_or_had_url + URL
# - vendor_url → has_or_had_url + URL
# - was_archived_at → is_or_was_webarchived_at + URL
id: https://nde.nl/ontology/hc/class/URL
name: url_class
title: URL Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/url_value
- ../slots/url_type
- ../slots/language
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
URL:
class_uri: schema:URL
description: |
Structured representation of a URL with type classification and metadata.
**Purpose**:
URL provides a reusable class for representing web addresses with
additional context about what type of URL it is (website, API, archive, etc.)
and optional language/locale information.
**Ontological Alignment**:
- **Primary**: `schema:URL` - Schema.org URL datatype
- **Close**: `dcterms:URI` - Dublin Core URI
- **Related**: `prov:Entity` - Provenance entity (for archived URLs)
**Use Cases**:
- Institution websites: `has_or_had_url` with type "website"
- API endpoints: `has_or_had_url` with type "api"
- Web archive snapshots: `is_or_was_webarchived_at` with archive URL
- Vendor/supplier sites: `has_or_had_url` with type "vendor"
**Replaces** (per slot_fixes.yaml):
- `website` (simple string URL)
- `url` (simple string URL)
- `vendor_url` (simple string URL)
- `was_archived_at` (simple string URL)
exact_mappings:
- schema:URL
close_mappings:
- dcterms:URI
related_mappings:
- prov:Entity
slots:
- url_value
- url_type
- language
- specificity_annotation
- template_specificity
slot_usage:
url_value:
description: |
The actual URL string (e.g., https://example.org/).
range: uri
required: true
url_type:
description: |
Classification of the URL type (website, api, archive, etc.).
range: string
required: false
language:
description: |
Language/locale of the content at this URL.
ISO 639-1 code, optionally with region (e.g., "en", "nl-NL").
range: string
required: false
pattern: "^[a-z]{2}(-[A-Z]{2})?$"
annotations:
custodian_types: '["*"]'
custodian_types_rationale: URLs apply to all heritage custodian types.
custodian_types_primary: null
specificity_score: 0.15
specificity_rationale: Generic URL class applicable across all contexts.
examples:
- value: |
url_value: "https://www.rijksmuseum.nl/"
url_type: website
language: nl
description: "Official website URL for Rijksmuseum"
- value: |
url_value: "https://api.rijksmuseum.nl/api/nl/collection"
url_type: api
language: nl
description: "API endpoint for Rijksmuseum collection"
- value: |
url_value: "https://web.archive.org/web/20240101/https://example.org/"
url_type: webarchive
description: "Web archive snapshot URL"

View file

@ -0,0 +1,175 @@
# UpdateFrequency - Structured frequency/periodicity for data updates
# Created per slot_fixes.yaml migration for: update_frequency
# Creation date: 2026-01-14
#
# REVISION FROM slot_fixes.yaml (lines 1893-1910):
# - label: has_or_had_frequency (slot)
# - label: UpdateFrequency (class) ← THIS FILE
# - link_branch 1: has_or_had_quantity → Quantity
# - link_branch 2: has_or_had_time_interval → TimeInterval
id: https://nde.nl/ontology/hc/classes/UpdateFrequency
name: UpdateFrequency
title: UpdateFrequency
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
dcat: http://www.w3.org/ns/dcat#
schema: http://schema.org/
time: http://www.w3.org/2006/time#
imports:
- linkml:types
- ./Quantity
- ./TimeInterval
- ../slots/has_or_had_quantity
- ../slots/has_or_had_time_interval
default_range: string
classes:
UpdateFrequency:
description: >-
Structured representation of how often a device, system, or data source
sends updates or refreshes data.
**WHY A DEDICATED CLASS?**
Update frequency is more than a simple string - it has:
- **Quantity**: How many updates (e.g., "5" in "every 5 minutes")
- **Time Interval**: The period (e.g., "minutes" in "every 5 minutes")
- **Trigger-based**: Some updates are event-driven, not time-based
**SLOT_FIXES.YAML REVISION** (lines 1893-1910):
- Branch 1: has_or_had_quantity → Quantity (numeric value)
- Branch 2: has_or_had_time_interval → TimeInterval (duration)
**ONTOLOGY MAPPING**:
- class_uri: dcterms:Frequency (Dublin Core)
- Dublin Core `accrualPeriodicity` uses Frequency for collection update rates
**USE CASES**:
- IoT sensors: "Every 5 minutes", "Hourly", "Real-time"
- Data feeds: "Daily", "Weekly", "Monthly"
- Event-driven: "On proximity trigger", "On change"
**EXAMPLES**:
- Climate sensor: 5 updates per minute
- Beacon: On proximity trigger (no time interval)
- Database sync: Daily at midnight
class_uri: dcterms:Frequency
exact_mappings:
- dcterms:Frequency
- dcat:frequency
close_mappings:
- schema:Schedule
related_mappings:
- time:TemporalEntity
slots:
- has_or_had_quantity
- has_or_had_time_interval
attributes:
frequency_description:
range: string
description: >-
Human-readable description of the update frequency.
Examples: "Every 5 minutes", "Hourly", "Real-time", "On proximity trigger"
is_event_driven:
range: boolean
description: >-
True if updates are triggered by events rather than time intervals.
Examples: beacon proximity triggers, change detection, user actions.
ifabsent: "false"
trigger_type:
range: string
description: >-
Type of event that triggers updates (when is_event_driven is true).
Examples: "proximity", "change", "request", "threshold"
slot_usage:
has_or_had_quantity:
range: Quantity
inlined: true
description: >-
The numeric quantity component of the frequency.
For "every 5 minutes", this would be a Quantity with value 5.
examples:
- value: |
has_or_had_quantity:
numeric_value: 5
has_or_had_measurement_unit:
unit_symbol: "updates"
description: 5 updates per interval
has_or_had_time_interval:
range: TimeInterval
inlined: true
description: >-
The time interval/period component of the frequency.
For "every 5 minutes", this would be a TimeInterval representing minutes.
examples:
- value: |
has_or_had_time_interval:
duration_value: "PT1M"
duration_description: "per minute"
description: Per-minute interval
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Update frequency applicable to all custodian types with IoT or data systems.
custodian_types_primary: "*"
specificity_score: 0.35
specificity_rationale: >-
Moderate specificity - relevant to custodians with digital/IoT infrastructure.
examples:
- value: |
UpdateFrequency:
frequency_description: "Every 5 minutes"
has_or_had_quantity:
numeric_value: 5
has_or_had_time_interval:
duration_value: "PT1M"
duration_description: "minute"
description: Climate sensor updating every 5 minutes.
- value: |
UpdateFrequency:
frequency_description: "Hourly"
has_or_had_quantity:
numeric_value: 1
has_or_had_time_interval:
duration_value: "PT1H"
duration_description: "hour"
description: Hourly update frequency.
- value: |
UpdateFrequency:
frequency_description: "On proximity trigger"
is_event_driven: true
trigger_type: "proximity"
description: Event-driven beacon updates (no time interval).
- value: |
UpdateFrequency:
frequency_description: "Real-time"
is_event_driven: true
trigger_type: "continuous"
description: Real-time streaming updates.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces simple string update_frequency slot
- Supports both time-based and event-driven frequencies
- Uses Dublin Core Frequency class for semantic alignment

View file

@ -5,6 +5,8 @@ imports:
- linkml:types
- ./VideoAnnotation
- ./VideoTimeSegment
- ./Quantity
- ./Methodology
- ../slots/person_id
- ../slots/has_average_scene_duration_seconds
- ../slots/cut_count
@ -12,6 +14,7 @@ imports:
- ../slots/has_or_had_detected_landmark
- ../slots/has_or_had_detected_logo
- ../slots/has_or_had_detected_object
- ../slots/has_or_had_quantity
- ../slots/detection_level
- ../slots/dissolve_count
- ../slots/face_bbox
@ -60,8 +63,6 @@ imports:
- ../slots/total_characters_extracted
- ../slots/tracking_ids_assigned
- ../slots/transition_types_detected
- ../slots/unique_face_count
- ../slots/unique_object_count
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
- ../enums/DetectionLevelEnum
@ -299,14 +300,13 @@ classes:
- has_or_had_detected_landmark
- has_or_had_detected_logo
- has_or_had_detected_object
- has_or_had_quantity
- includes_object_tracking
- linked_to_collection
- object_classes_detected
- specificity_annotation
- template_specificity
- tracking_ids_assigned
- unique_face_count
- unique_object_count
slot_usage:
has_or_had_detected_object:
range: DetectedObject
@ -340,20 +340,34 @@ classes:
examples:
- value: '[{label: ''Rijksmuseum building'', wikidata_id: ''Q190804''}]'
description: Detected landmark with Wikidata link
unique_object_count:
range: integer
has_or_had_quantity:
range: Quantity
multivalued: true
required: false
minimum_value: 0
inlined_as_list: true
description: >-
Quantities for unique object/face counts with methodology tracking.
RULE 53: Replaces unique_object_count and unique_face_count slots.
Use has_or_had_measurement_unit to specify OBJECT or FACE unit type.
Use has_or_had_methodology to document entity resolution approach.
examples:
- value: 15
description: 15 unique objects identified
unique_face_count:
range: integer
required: false
minimum_value: 0
examples:
- value: 3
description: 3 unique people identified
- value:
quantity_value: 15
has_or_had_measurement_unit:
unit_type: OBJECT
has_or_had_methodology:
methodology_type: ENTITY_RESOLUTION
has_or_had_label: "DeepSORT tracking + embedding clustering"
description: 15 unique objects identified via entity resolution
- value:
quantity_value: 3
has_or_had_measurement_unit:
unit_type: FACE
has_or_had_methodology:
methodology_type: ENTITY_RESOLUTION
has_or_had_label: "ArcFace clustering"
confidence_threshold: 0.6
description: 3 unique people identified via face clustering
object_classes_detected:
range: string
multivalued: true

View file

@ -36,7 +36,9 @@ imports:
- ../slots/template_specificity
- ../slots/video_category_id
- ../slots/video_comment
- ../slots/view_count
- ../slots/has_or_had_quantity
- ./Quantity
# MIGRATED 2026-01-15: ../slots/view_count → ../slots/has_or_had_quantity per Rule 53
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
- ../slots/definition
@ -103,7 +105,7 @@ classes:
| caption | - | schema:caption |
| view_count | - | schema:interactionStatistic |
| view_count | - | schema:interactionStatistic (via Quantity) |
**PLATFORM SUPPORT**:
@ -214,7 +216,7 @@ classes:
- template_specificity
- video_category_id
- video_comment
- view_count
- has_or_had_quantity
slot_usage:
duration:
range: string
@ -275,12 +277,19 @@ classes:
- en
- de
description: Captions available in Dutch, English, German
view_count:
range: integer
required: false
minimum_value: 0
has_or_had_quantity:
range: Quantity
inlined: true
description: >-
View count for video. RULE 53: Replaces deprecated view_count with
structured Quantity class supporting measurement unit (VIEW) and
temporal extent for point-in-time observation.
examples:
- value: 132
- value:
numeric_value: 132
has_or_had_measurement_unit: VIEW
temporal_extent:
begin_of_the_begin: "2025-12-01T23:16:22Z"
description: 132 views at observation time
like_count:
range: integer

View file

@ -0,0 +1,94 @@
# VisitingScholar - Visiting scholar/researcher programs accepted by institution
# Created per slot_fixes.yaml migration for: accepts_or_accepted_visiting_scholar
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/VisitingScholar
name: VisitingScholar
title: VisitingScholar
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_range: string
classes:
VisitingScholar:
description: >-
Information about visiting scholar or researcher programs accepted by an institution.
**CONTEXT**:
Many heritage institutions accept visiting researchers who need access to
collections, archives, or special materials for academic research.
**PROGRAM TYPES**:
- Short-term research visits
- Fellowship programs
- Residencies
- Affiliated researcher positions
Used with `accepts_or_accepted` slot to indicate researcher access programs.
class_uri: schema:ResearchProject
close_mappings:
- schema:ScholarlyArticle
attributes:
program_type:
range: string
required: true
description: >-
Type of visiting program (e.g., "fellowship", "residency", "short_term_visit").
duration:
range: string
description: >-
Typical duration of visits (e.g., "1-4 weeks", "3-12 months").
eligibility:
range: string
multivalued: true
description: >-
Eligibility requirements (e.g., "PhD candidates", "University affiliates").
application_process:
range: string
description: >-
Description of the application process.
stipend_available:
range: boolean
description: >-
Whether financial support/stipend is available.
annotations:
custodian_types: '["A", "L", "R", "M"]'
custodian_types_rationale: >-
Visiting scholar programs primarily at archives, libraries, research centers, museums.
custodian_types_primary: "A"
specificity_score: 0.75
specificity_rationale: >-
High specificity - specific to research access programs.
examples:
- value: |
VisitingScholar:
program_type: "fellowship"
duration: "3-6 months"
eligibility:
- "PhD candidates"
- "Post-doctoral researchers"
stipend_available: true
description: Fellowship program for researchers.
- value: |
VisitingScholar:
program_type: "short_term_visit"
duration: "1-4 weeks"
application_process: "Submit research proposal via email"
description: Short-term research visit program.

View file

@ -0,0 +1,134 @@
# WikiDataEntry class
# Reference to a Wikidata entity for alignments and equivalences
#
# Generation date: 2026-01-15
# Rule compliance: 0 (LinkML single source of truth), 38 (slot centralization), 53 (slot_fixes.yaml)
#
# This class supports 5 slot migrations per slot_fixes.yaml:
# - wikidata_mapping
# - wikidata_equivalent
# - wikidata_class
# - wikidata_alignment
# - wikidata
#
# NOTE: Similar to WikidataEntity but designed as migration target for slot_fixes.yaml
id: https://nde.nl/ontology/hc/class/WikiDataEntry
name: wikidata_entry_class
title: WikiDataEntry Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
wikibase: http://wikiba.se/ontology#
wd: http://www.wikidata.org/entity/
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/wikidata_qid
- ../slots/wikidata_label
- ../slots/wikidata_description
- ../slots/language
- ../slots/specificity_annotation
- ../slots/template_specificity
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
classes:
WikiDataEntry:
class_uri: wikibase:Item
description: |
Reference to a Wikidata entity (Q-item) for alignments and equivalences.
**Purpose**:
WikiDataEntry provides a reusable class for representing Wikidata entity
references with Q-number identifier, label, and description.
Used for ontology alignments, equivalence mappings, and classification.
**Ontological Alignment**:
- **Primary**: `wikibase:Item` - Wikibase item class
- **Close**: `schema:Thing` - general web entity
- **Related**: `skos:Concept` - controlled vocabulary concept
**Use Cases**:
- Ontology alignment: `wikidata_alignment` → relates schema class to Wikidata Q
- Equivalence: `wikidata_equivalent` → marks semantic equivalence
- Classification: `wikidata_class` → instance_of relationship
- General mapping: `wikidata_mapping` → related concept
**Replaces** (per slot_fixes.yaml):
- `wikidata_mapping` (string Q-number)
- `wikidata_equivalent` (string Q-number)
- `wikidata_class` (string Q-number)
- `wikidata_alignment` (string Q-number)
- `wikidata` (string Q-number)
exact_mappings:
- wikibase:Item
close_mappings:
- schema:Thing
related_mappings:
- skos:Concept
- prov:Entity
slots:
- wikidata_qid
- wikidata_label
- wikidata_description
- language
- specificity_annotation
- template_specificity
slot_usage:
wikidata_qid:
description: |
The Wikidata Q-number identifier (e.g., Q12345).
range: string
required: true
pattern: "^Q[0-9]+$"
wikidata_label:
description: |
Human-readable label from Wikidata.
range: string
required: false
wikidata_description:
description: |
Description from Wikidata.
range: string
required: false
language:
description: |
Language code for the label and description.
Default: "en"
range: string
required: false
pattern: "^[a-z]{2}(-[A-Z]{2})?$"
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Generic Wikidata reference class applicable to all types.
custodian_types_primary: null
specificity_score: 0.2
specificity_rationale: Broadly applicable generic class for Wikidata links.
examples:
- value: |
wikidata_qid: "Q33506"
wikidata_label: "museum"
wikidata_description: "institution that holds and displays collections"
language: en
description: "Wikidata reference for 'museum' concept"
- value: |
wikidata_qid: "Q190804"
wikidata_label: "Rijksmuseum"
wikidata_description: "Dutch national museum in Amsterdam"
language: en
description: "Wikidata reference for specific institution"

View file

@ -0,0 +1,91 @@
# WikiDataIdentifier - A Wikidata Q-number identifier
# Created per slot_fixes.yaml migration for: wikidata_id, wikidata_entity_id, wikidata_entity
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/WikiDataIdentifier
name: WikiDataIdentifier
title: WikiDataIdentifier
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
wikidata: http://www.wikidata.org/entity/
schema: http://schema.org/
dct: http://purl.org/dc/terms/
imports:
- linkml:types
default_range: string
classes:
WikiDataIdentifier:
description: >-
A Wikidata entity identifier (Q-number) that uniquely identifies an entity
in the Wikidata knowledge base.
**DISTINCTION FROM WikiDataEntry**:
- `WikiDataIdentifier` is for simple Q-number storage (identifier only)
- `WikiDataEntry` includes full entity data (label, description, claims)
Use `WikiDataIdentifier` when:
- Only storing the Q-number reference
- Linking to Wikidata without caching entity data
**FORMAT**: Q followed by digits (e.g., Q190804 for Rijksmuseum)
**URL PATTERN**: https://www.wikidata.org/wiki/Q{number}
class_uri: dct:Identifier
close_mappings:
- schema:PropertyValue
- wikidata:Q43649390 # Wikidata identifier
attributes:
qid:
range: string
required: true
pattern: "^Q[0-9]+$"
description: >-
The Wikidata Q-number (e.g., Q190804).
Must start with 'Q' followed by one or more digits.
url:
range: uri
description: >-
Full URL to the Wikidata entity page.
Auto-derivable from qid: https://www.wikidata.org/wiki/{qid}
label:
range: string
description: >-
Human-readable label for the entity (optional cache).
May be language-specific.
retrieved_at:
range: datetime
description: >-
Timestamp when this identifier was retrieved/verified.
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Wikidata identifiers applicable to all custodian types.
custodian_types_primary: "*"
specificity_score: 0.3
specificity_rationale: >-
Low specificity - universal identifier type.
examples:
- value: |
WikiDataIdentifier:
qid: "Q190804"
url: "https://www.wikidata.org/wiki/Q190804"
label: "Rijksmuseum"
description: Wikidata identifier for the Rijksmuseum.
- value: |
WikiDataIdentifier:
qid: "Q1526131"
label: "Biblioteca Nacional do Brasil"
description: Wikidata identifier for the National Library of Brazil.

View file

@ -0,0 +1,101 @@
# XPath - An XPath expression for locating elements in HTML/XML documents
# Created per slot_fixes.yaml migration for: xpath
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/classes/XPath
name: XPath
title: XPath
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
default_range: string
classes:
XPath:
description: >-
An XPath expression used to locate a specific element within an HTML or XML document.
**CRITICAL PROVENANCE FIELD**:
XPath expressions provide the essential link between extracted data values and their
original source location in archived documents. Without an XPath, a claim extracted
from a webpage is unverifiable.
**FORMAT**: Standard XPath 1.0 expressions
**EXAMPLE**: `/html[1]/body[1]/div[6]/div[1]/table[3]/tbody[1]/tr[1]/td[1]/p[6]`
**USAGE CONTEXT**:
Used with `has_or_had_provenance_path` slot to link provenance records to
specific locations in source documents.
class_uri: prov:Location
close_mappings:
- schema:xpath
related_mappings:
- prov:atLocation
attributes:
expression:
range: string
required: true
description: >-
The XPath expression string.
Example: /html[1]/body[1]/div[6]/div[1]/table[3]/tbody[1]/tr[1]/td[1]/p[6]
pattern: "^/.*"
matched_text:
range: string
description: >-
The text content found at this XPath location.
Used for verification and debugging.
match_score:
range: float
minimum_value: 0.0
maximum_value: 1.0
description: >-
Confidence score (0.0 to 1.0) for the XPath match.
1.0 = exact match, <1.0 = fuzzy match.
source_document:
range: uriorcurie
description: >-
URI or path to the source document where this XPath applies.
Example: web/GHCID/example.org/rendered.html
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
XPath provenance is relevant for any custodian type where web content
is extracted and archived.
custodian_types_primary: "*"
specificity_score: 0.7
specificity_rationale: >-
High specificity - only relevant for web-extracted data with HTML archival.
examples:
- value: |
XPath:
expression: "/html[1]/body[1]/div[6]/div[1]/table[3]/tbody[1]/tr[1]/td[1]/p[6]"
matched_text: "Historische Vereniging Nijeveen"
match_score: 1.0
source_document: "web/0021/historischeverenigingnijeveen.nl/rendered.html"
description: >-
XPath extraction pointing to an institution name in archived HTML.
- value: |
XPath:
expression: "//meta[@property='og:title']/@content"
matched_text: "Amsterdam Museum - Official Website"
match_score: 0.95
description: >-
XPath to OpenGraph metadata in a webpage header.

View file

@ -111,6 +111,57 @@ enums:
unit_type: length
usage_context: storage_capacity
# Count units (Rule 53: link_branch migration for visitor_count, view_count)
VISITOR:
description: Visitor count unit - for attendance metrics
meaning: hc:VisitorUnit
annotations:
ucum_code: "1"
unit_type: count
usage_context: visitor_metrics
VIEW:
description: View count unit - for digital content metrics (videos, pages)
meaning: hc:ViewUnit
annotations:
ucum_code: "1"
unit_type: count
usage_context: digital_metrics
ITEM:
description: Item count unit - for collection object counts
meaning: hc:ItemUnit
annotations:
ucum_code: "1"
unit_type: count
usage_context: collection_metrics
FTE:
description: Full-time equivalent - for staff measurement
meaning: hc:FTEUnit
annotations:
ucum_code: "1"
unit_type: count
usage_context: staff_metrics
HEADCOUNT:
description: Headcount - total number of individuals
meaning: hc:HeadcountUnit
annotations:
ucum_code: "1"
unit_type: count
usage_context: staff_metrics
OBJECT:
description: Object count unit - for museum/archive object counts
meaning: hc:ObjectUnit
annotations:
ucum_code: "1"
unit_type: count
usage_context: collection_metrics
FACE:
description: Face count unit - for unique faces in photo collections
meaning: hc:FaceUnit
annotations:
ucum_code: "1"
unit_type: count
usage_context: digital_metrics
# Unknown/unspecified
UNKNOWN:
description: Unit not specified or unknown

View file

@ -0,0 +1,82 @@
id: https://nde.nl/ontology/hc/enum/MethodologyTypeEnum
name: methodology_type_enum
title: Methodology Type Enum
description: >-
Enumeration of methodology types for measurement derivation.
**RULE 53 COMPLIANT**: Created for unique_object_count and unique_face_count
migration per slot_fixes.yaml revision (lines 1951-1994).
**SLOT_FIXES.YAML REFERENCE**:
The revision specifies `value: entity_resolution` for both unique_object_count
and unique_face_count, indicating these counts are derived via entity resolution
(deduplication) methodologies.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
imports:
- linkml:types
default_prefix: hc
enums:
MethodologyTypeEnum:
description: >-
Types of methodologies used to derive measurements or observations.
**PRIMARY USE CASE**: Video annotation unique counts
When counting unique objects or faces in video, different methodologies
produce different results. This enum captures the approach used.
permissible_values:
ENTITY_RESOLUTION:
description: >-
Deduplication via feature matching and clustering.
Used to count unique entities across multiple observations.
Example: Counting unique faces by clustering face embeddings.
annotations:
slot_fixes_value: entity_resolution
typical_use: unique_object_count, unique_face_count
OBJECT_TRACKING:
description: >-
Multi-object tracking across video frames.
Maintains identity of objects as they move through scenes.
Example: DeepSORT, ByteTrack tracking algorithms.
annotations:
typical_use: video_object_annotation
MANUAL_COUNT:
description: >-
Human manual counting or annotation.
May involve multiple reviewers for accuracy.
annotations:
typical_use: ground_truth_annotation
STATISTICAL_SAMPLING:
description: >-
Count derived from statistical sampling methodology.
Extrapolated from sample to estimate total population.
annotations:
typical_use: visitor_estimates, large_collection_counts
AUTOMATED_DETECTION:
description: >-
Automated detection without deduplication.
Raw detection counts that may include duplicates.
annotations:
typical_use: raw_detection_counts
HYBRID:
description: >-
Combination of automated and manual methodologies.
Automated detection with manual verification/correction.
annotations:
typical_use: quality_assured_annotation
UNKNOWN:
description: >-
Methodology not specified or unknown.

View file

@ -0,0 +1,67 @@
# accepts_or_accepted - Generic slot for things an institution accepts
# Created per slot_fixes.yaml migration for: accepts_or_accepted_external_work,
# accepts_or_accepted_payment_method, accepts_or_accepted_visiting_scholar
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/accepts_or_accepted
name: accepts_or_accepted_slot
title: Accepts Or Accepted Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
accepts_or_accepted:
description: >-
Generic slot for things an institution accepts or has accepted.
**TEMPORAL SEMANTICS** (RiC-O style):
The "accepts_or_accepted" naming indicates policies can change:
- Payment methods may be added/removed
- External work acceptance policies change
- Visiting scholar programs may start/end
**USE CASES**:
- Payment methods accepted (credit cards, cash, digital)
- External work (conservation, digitization contracts)
- Visiting scholars (research programs)
**RANGE**:
This is a generic slot - use slot_usage in classes to constrain
the range to specific types (ExternalWork, PaymentMethod, VisitingScholar).
range: string
slot_uri: schema:acceptedPaymentMethod
multivalued: true
close_mappings:
- schema:acceptedPaymentMethod
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Acceptance policies applicable to various custodian types.
custodian_types_primary: "*"
specificity_score: 0.5
specificity_rationale: >-
Moderate specificity - depends on context of what is accepted.
examples:
- value: |
accepts_or_accepted:
- "credit_card"
- "debit_card"
- "cash"
description: Payment methods accepted by institution.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Generic slot for acceptance-related relationships
- Constrain range via slot_usage in specific classes

View file

@ -0,0 +1,70 @@
# asserts_or_asserted - Links provenance to a hypothesis or assertion
# Created per slot_fixes.yaml migration for: type_hypothesis
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/asserts_or_asserted
name: asserts_or_asserted_slot
title: Asserts Or Asserted Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
asserts_or_asserted:
description: >-
Links a provenance record to a hypothesis or assertion that it supports.
**TEMPORAL SEMANTICS** (RiC-O style):
The "asserts_or_asserted" naming indicates that assertions can change:
- New evidence may modify or invalidate hypotheses
- Historical assertions preserved for audit trail
- Confidence levels may be updated over time
**USAGE**:
Used within a Provenance class to link the provenance activity
to a specific Hypothesis about uncertain data.
**EXAMPLE**:
A provenance record from web scraping asserts a hypothesis about
institution type based on evidence found on the website.
range: Hypothesis
slot_uri: prov:generated
inlined: true
exact_mappings:
- prov:generated
close_mappings:
- schema:mainEntity
annotations:
custodian_types: '["U"]'
custodian_types_rationale: >-
Assertions/hypotheses primarily relevant for Unknown type institutions.
custodian_types_primary: "U"
specificity_score: 0.8
specificity_rationale: >-
High specificity - only relevant for hypothesis tracking.
examples:
- value: |
asserts_or_asserted:
asserted_value: "MUSEUM"
confidence_level: "medium"
supporting_evidence:
- "Website mentions 'permanent collection'"
description: Provenance asserting a museum type hypothesis.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces direct type_hypothesis slot usage
- Links Provenance class to Hypothesis class

View file

@ -1,13 +1,70 @@
# begin_of_the_begin slot
# Earliest possible start time of a temporal extent (CIDOC-CRM pattern)
#
# Generation date: 2026-01-15
# Updated from datetime to Timestamp class per slot_fixes.yaml
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
id: https://nde.nl/ontology/hc/slot/begin_of_the_begin
name: begin_of_the_begin_slot
title: Begin of the Begin Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
time: http://www.w3.org/2006/time#
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ./classes/Timestamp
slots:
begin_of_the_begin:
slot_uri: crm:P82a_begin_of_the_begin
range: datetime
description: Earliest possible start time of temporal extent (CIDOC-CRM E52_Time-Span)
description: |
Earliest possible start time of temporal extent (CIDOC-CRM E52_Time-Span).
**CIDOC-CRM Pattern**:
P82a defines the earliest possible time the time span could have started.
Used with P81a (end_of_the_begin) to express uncertainty about start time.
**Example**: "Founded between 1800-1805"
- begin_of_the_begin: 1800-01-01 (earliest possible founding)
- end_of_the_begin: 1805-12-31 (latest possible founding)
**Ontological Alignment**:
- **Primary** (`slot_uri`): `crm:P82a_begin_of_the_begin`
- **Related**: `prov:startedAtTime` - PROV-O activity start
- **Narrow**: `schema:startDate` - Schema.org start date
**Range**: Timestamp class (per slot_fixes.yaml revision spec)
range: Timestamp
inlined: true
required: false
multivalued: false
exact_mappings:
- crm:P82a_begin_of_the_begin
related_mappings:
- prov:startedAtTime
narrow_mappings:
- schema:startDate
broad_mappings:
- dcterms:relation
annotations:
slot_fixes_compliance: "Range changed from datetime to Timestamp class per slot_fixes.yaml"
migration_date: "2026-01-15"
replaces_slots: "valid_from, valid_from_geo"
examples:
- value: |
timestamp_value: "1800-01-01"
timestamp_precision: day
description: "Earliest possible founding date"

View file

@ -1,11 +1,59 @@
# begin_of_the_end slot
# Earliest possible end time of a temporal extent (CIDOC-CRM pattern)
#
# Generation date: 2026-01-15
# Updated from datetime to Timestamp class for consistency with other boundary slots
# Rule compliance: 38 (slot centralization + semantic URI), 53 (slot_fixes.yaml)
id: https://nde.nl/ontology/hc/slot/begin_of_the_end
name: begin_of_the_end_slot
title: Begin of the End Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
time: http://www.w3.org/2006/time#
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
- ./classes/Timestamp
slots:
begin_of_the_end:
slot_uri: crm:P81b_begin_of_the_end
range: datetime
description: Earliest possible end time of temporal extent (CIDOC-CRM E52_Time-Span)
description: |
Earliest possible end time of temporal extent (CIDOC-CRM E52_Time-Span).
**CIDOC-CRM Pattern**:
P81b defines the earliest possible time the time span could have ended.
Used with P82b (end_of_the_end) to express uncertainty about end time.
**Example**: "Closed between 1950-1955"
- begin_of_the_end: 1950-01-01 (earliest possible closure)
- end_of_the_end: 1955-12-31 (latest possible closure)
**Range**: Timestamp class for precision tracking
range: Timestamp
inlined: true
required: false
multivalued: false
exact_mappings:
- crm:P81b_begin_of_the_end
related_mappings:
- prov:endedAtTime
broad_mappings:
- dcterms:relation
annotations:
migration_date: "2026-01-15"
examples:
- value: |
timestamp_value: "1950-01-01"
timestamp_precision: day
description: "Earliest possible closure date"

View file

@ -0,0 +1,60 @@
# calendar_system slot
# The calendar system used for a timestamp
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 42 (no prefix), 43 (singular noun)
id: https://nde.nl/ontology/hc/slot/calendar_system
name: calendar_system_slot
title: Calendar System Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
time: http://www.w3.org/2006/time#
default_prefix: hc
imports:
- linkml:types
slots:
calendar_system:
slot_uri: time:hasTRS
description: |
The calendar system for the timestamp.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `time:hasTRS` - OWL Time temporal reference system
**Common Values**:
- gregorian: Standard Gregorian calendar (default)
- julian: Julian calendar (historical dates before 1582)
- hebrew: Hebrew calendar
- islamic: Islamic (Hijri) calendar
- chinese: Chinese calendar
- japanese: Japanese imperial calendar
**Usage**:
Defaults to Gregorian if not specified. Important for:
- Historical documents dated before Gregorian adoption
- Non-Western heritage institutions
- Religious calendar dates
range: string
required: false
multivalued: false
exact_mappings:
- time:hasTRS
annotations:
migration_date: "2026-01-15"
examples:
- value: "gregorian"
description: "Standard Gregorian calendar"
- value: "julian"
description: "Julian calendar for pre-1582 dates"
- value: "islamic"
description: "Islamic/Hijri calendar"

View file

@ -0,0 +1,54 @@
# description_text slot
# The textual content of a description
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 42 (no prefix), 43 (singular noun)
id: https://nde.nl/ontology/hc/slot/description_text
name: description_text_slot
title: Description Text Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs: http://www.w3.org/2000/01/rdf-schema#
default_prefix: hc
imports:
- linkml:types
slots:
description_text:
slot_uri: rdf:value
description: |
The textual content of a description.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `rdf:value` - the principal value of a resource
- **Close**: `rdfs:label` - human-readable label
**Usage**:
This slot holds the actual text of a Description instance.
The Description class provides structure (type, language) while
this slot holds the content.
range: string
required: true
multivalued: false
exact_mappings:
- rdf:value
close_mappings:
- rdfs:label
annotations:
replaces_slots: "binding_description, branch_description, etc. (text content)"
migration_date: "2026-01-15"
examples:
- value: "Climate-controlled storage zone with dedicated HVAC."
description: "Zone description text"

View file

@ -0,0 +1,59 @@
# description_type slot
# The type/category of a description
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 42 (no prefix), 43 (singular noun)
id: https://nde.nl/ontology/hc/slot/description_type
name: description_type_slot
title: Description Type Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
default_prefix: hc
imports:
- linkml:types
slots:
description_type:
slot_uri: dcterms:type
description: |
The type or category of description.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `dcterms:type` - nature or genre of resource
**Usage**:
Categorizes descriptions by their purpose:
- binding: Physical binding description
- branch: Organizational branch description
- budget: Budget/financial description
- zone: Storage zone description
- warehouse: Warehouse description
- unit: Organizational unit description
- type: Type/category definition
- general: General purpose description
range: string
required: false
multivalued: false
exact_mappings:
- dcterms:type
annotations:
replaces_slots: "implicitly from slot names like binding_description -> type=binding"
migration_date: "2026-01-15"
examples:
- value: "binding"
description: "Physical binding description type"
- value: "zone"
description: "Storage zone description type"
- value: "branch"
description: "Organizational branch description type"

View file

@ -1,11 +1,59 @@
# end_of_the_begin slot
# Latest possible start time of a temporal extent (CIDOC-CRM pattern)
#
# Generation date: 2026-01-15
# Updated from datetime to Timestamp class for consistency with other boundary slots
# Rule compliance: 38 (slot centralization + semantic URI), 53 (slot_fixes.yaml)
id: https://nde.nl/ontology/hc/slot/end_of_the_begin
name: end_of_the_begin_slot
title: End of the Begin Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
time: http://www.w3.org/2006/time#
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
- ./classes/Timestamp
slots:
end_of_the_begin:
slot_uri: crm:P81a_end_of_the_begin
range: datetime
description: Latest possible start time of temporal extent (CIDOC-CRM E52_Time-Span)
description: |
Latest possible start time of temporal extent (CIDOC-CRM E52_Time-Span).
**CIDOC-CRM Pattern**:
P81a defines the latest possible time the time span could have started.
Used with P82a (begin_of_the_begin) to express uncertainty about start time.
**Example**: "Founded between 1800-1805"
- begin_of_the_begin: 1800-01-01 (earliest possible founding)
- end_of_the_begin: 1805-12-31 (latest possible founding)
**Range**: Timestamp class for precision tracking
range: Timestamp
inlined: true
required: false
multivalued: false
exact_mappings:
- crm:P81a_end_of_the_begin
related_mappings:
- prov:startedAtTime
broad_mappings:
- dcterms:relation
annotations:
migration_date: "2026-01-15"
examples:
- value: |
timestamp_value: "1805-12-31"
timestamp_precision: day
description: "Latest possible founding date"

View file

@ -1,13 +1,70 @@
# end_of_the_end slot
# Latest possible end time of a temporal extent (CIDOC-CRM pattern)
#
# Generation date: 2026-01-15
# Updated from datetime to Timestamp class per slot_fixes.yaml
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
id: https://nde.nl/ontology/hc/slot/end_of_the_end
name: end_of_the_end_slot
title: End of the End Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
time: http://www.w3.org/2006/time#
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ./classes/Timestamp
slots:
end_of_the_end:
slot_uri: crm:P82b_end_of_the_end
range: datetime
description: Latest possible end time of temporal extent (CIDOC-CRM E52_Time-Span)
description: |
Latest possible end time of temporal extent (CIDOC-CRM E52_Time-Span).
**CIDOC-CRM Pattern**:
P82b defines the latest possible time the time span could have ended.
Used with P81b (begin_of_the_end) to express uncertainty about end time.
**Example**: "Closed between 1950-1955"
- begin_of_the_end: 1950-01-01 (earliest possible closure)
- end_of_the_end: 1955-12-31 (latest possible closure)
**Ontological Alignment**:
- **Primary** (`slot_uri`): `crm:P82b_end_of_the_end`
- **Related**: `prov:endedAtTime` - PROV-O activity end
- **Narrow**: `schema:endDate` - Schema.org end date
**Range**: Timestamp class (per slot_fixes.yaml revision spec)
range: Timestamp
inlined: true
required: false
multivalued: false
exact_mappings:
- crm:P82b_end_of_the_end
related_mappings:
- prov:endedAtTime
narrow_mappings:
- schema:endDate
broad_mappings:
- dcterms:relation
annotations:
slot_fixes_compliance: "Range changed from datetime to Timestamp class per slot_fixes.yaml"
migration_date: "2026-01-15"
replaces_slots: "valid_to, valid_to_geo"
examples:
- value: |
timestamp_value: "1955-12-31"
timestamp_precision: day
description: "Latest possible closure date"

View file

@ -0,0 +1,73 @@
# ends_or_ended_at_location slot
# Destination location relationship following RiC-O naming pattern
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming)
#
# Used by TransferEvent class for destination location
id: https://nde.nl/ontology/hc/slot/ends_or_ended_at_location
name: ends_or_ended_at_location_slot
title: Ends Or Ended At Location Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
crm: http://www.cidoc-crm.org/cidoc-crm/
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
slots:
ends_or_ended_at_location:
slot_uri: prov:atLocation
description: |
Destination location where an event or process ended.
**Temporal Semantics** (RiC-O Pattern):
The "endsOrEnded" naming follows RiC-O convention indicating
the location may be historical (where something concluded).
**Ontological Alignment**:
- **Primary** (`slot_uri`): `prov:atLocation` - PROV-O location
- **Related**: `crm:P26_moved_to` - CIDOC-CRM moved to
- **Related**: `schema:toLocation` - Schema.org destination
**Use Cases**:
- Transfer event destination (where materials went to)
- Journey/movement end location
- Process completion location
**Range**: Location class (structured location with name and coordinates)
range: Location
required: false
multivalued: false
inlined: true
related_mappings:
- crm:P26_moved_to
- schema:toLocation
annotations:
rico_naming_convention: |
Follows RiC-O "endsOrEnded" pattern for temporal location predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
custodian_types: '["*"]'
custodian_types_rationale: Location relationships apply to all heritage types.
specificity_score: 0.4
specificity_rationale: Specialized slot for event/process locations.
comments:
- "Destination location for events/processes"
- "Maps to prov:atLocation with end semantics"
- "RiC-O naming: endsOrEnded indicates temporal aspect"
examples:
- value:
location_name: "New Archive Building, Haarlem"
description: "Destination location for collection transfer"

View file

@ -0,0 +1,55 @@
# has_or_had_code - Generic code/identifier slot
#
# Created per slot_fixes.yaml migration for: alpha_2, alpha_3
# Creation date: 2026-01-14
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping)
id: https://nde.nl/ontology/hc/slot/has_or_had_code
name: has_or_had_code
title: Has or Had Code
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
dct: http://purl.org/dc/terms/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_code:
slot_uri: skos:notation
description: |
A code or notation value associated with an entity.
**USAGE**:
Used for standardized codes such as:
- ISO 3166-1 alpha-2 country codes (e.g., "NL", "BE")
- ISO 3166-1 alpha-3 country codes (e.g., "NLD", "BEL")
- ISO 639-1/3 language codes
- Classification codes
**ONTOLOGY ALIGNMENT**:
- slot_uri: skos:notation (SKOS notation for concepts)
range: string
exact_mappings:
- skos:notation
close_mappings:
- dct:identifier
- schema:identifier
examples:
- value: "NL"
description: ISO 3166-1 alpha-2 code for Netherlands
- value: "NLD"
description: ISO 3166-1 alpha-3 code for Netherlands
- value: "nld"
description: ISO 639-3 language code for Dutch
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Codes applicable to all custodian types."

View file

@ -0,0 +1,39 @@
# has_or_had_comment - Comment association slot
#
# Created per slot_fixes.yaml migration for: video_comment
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_comment
name: has_or_had_comment
title: Has or Had Comment
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_comment:
slot_uri: schema:comment
description: |
A comment associated with an entity.
**USAGE**:
Used for:
- Video comments
- Review comments
- Annotation notes
range: Comment
multivalued: true
exact_mappings:
- schema:comment
examples:
- value:
comment_text: "Great video about the collection!"
comment_author: "Visitor123"
description: User comment on video

View file

@ -0,0 +1,98 @@
# has_or_had_conversion_rate - Links to a ConversionRate instance
# Created per slot_fixes.yaml migration for: visitor_conversion_rate
# Creation date: 2026-01-14
#
# REVISION FROM slot_fixes.yaml (lines 1646-1669):
# - label: has_or_had_conversion_rate (slot) ← THIS FILE
# - label: ConversionRate (class)
# - link_branch 1: has_or_had_type → ConversionRateType
# - link_branch 2: temporal_extent → TimeSpan
id: https://nde.nl/ontology/hc/slot/has_or_had_conversion_rate
name: has_or_had_conversion_rate_slot
title: Has Or Had Conversion Rate Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_conversion_rate:
description: >-
Links to a ConversionRate instance representing a behavioral conversion metric.
**TEMPORAL SEMANTICS** (RiC-O style):
The "has_or_had" naming indicates that conversion rates change over time:
- Rates vary by season (summer vs. winter)
- Rates change with exhibitions (blockbuster vs. permanent)
- Rates evolve with strategy (before/after membership drives)
**REPLACES**: `visitor_conversion_rate` (float slot)
**IMPROVEMENT OVER FLOAT**:
- Typed conversions (visitor-to-purchase, visitor-to-member, etc.)
- Temporal context (measurement period)
- Sample size for statistical validity
- Industry benchmark comparisons
**USE CASES**:
- Gift shop performance tracking
- Membership conversion analytics
- Digital engagement metrics
- Marketing campaign effectiveness
range: ConversionRate
slot_uri: schema:interactionStatistic
inlined: true
multivalued: true
exact_mappings:
- schema:interactionStatistic
close_mappings:
- schema:QuantitativeValue
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Conversion rate metrics applicable to all custodian types with retail or engagement.
custodian_types_primary: "*"
specificity_score: 0.45
specificity_rationale: >-
Moderate specificity - relevant to custodians tracking performance metrics.
examples:
- value: |
has_or_had_conversion_rate:
- rate_value: 0.35
rate_percentage: 35.0
has_or_had_type:
type_label: "Visitor to Purchase"
temporal_extent:
begin_of_the_begin: "2024-01-01"
end_of_the_end: "2024-12-31"
measurement_period_description: "Calendar Year 2024"
description: Gift shop with 35% visitor-to-purchase conversion.
- value: |
has_or_had_conversion_rate:
- rate_value: 0.05
has_or_had_type:
type_label: "Visitor to Member"
temporal_extent:
begin_of_the_begin: "2024-06-01"
end_of_the_end: "2024-08-31"
measurement_period_description: "Summer membership drive"
description: 5% visitor-to-member conversion during summer campaign.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces simple float visitor_conversion_rate slot
- Supports multiple conversion types and time periods
- Multivalued to track different conversion types simultaneously

View file

@ -5,7 +5,8 @@
# for temporal relationships in heritage domain.
#
# Generation date: 2026-01-13
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 42 (no prefix)
# Updated: 2026-01-15 - Changed range from string to Description class per slot_fixes.yaml
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 42 (no prefix), 53 (slot_fixes.yaml)
id: https://nde.nl/ontology/hc/slot/has_or_had_description
name: has_or_had_description_slot
@ -22,6 +23,7 @@ default_prefix: hc
imports:
- linkml:types
- ./classes/Description
slots:
has_or_had_description:
@ -43,9 +45,13 @@ slots:
For Type classes, this provides a formal definition of the type.
For instance classes, this provides a description of the specific entity.
range: string
**Range**: Description class (per slot_fixes.yaml revision spec)
The Description class provides typed descriptions with language support.
range: Description
inlined: true
required: false
multivalued: false
multivalued: true
exact_mappings:
- skos:definition
@ -60,18 +66,28 @@ slots:
rico_naming_convention: |
Follows RiC-O "hasOrHad" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
replaces_slots: "storage_type_description"
migration_date: "2026-01-13"
replaces_slots: >-
binding_description, branch_description, branch_office_description,
budget_description, zone_description, warehouse_description,
unit_description, type_description, storage_type_description
migration_date: "2026-01-15"
slot_fixes_compliance: "Range changed from string to Description class per slot_fixes.yaml"
comments:
- "Generic description slot for type classes and entities"
- "Maps to skos:definition for formal type definitions"
- "Maps to dcterms:description for instance descriptions"
- "RiC-O naming: hasOrHad indicates potentially historical relationship"
- "Range: Description class with type, text, and language fields"
examples:
- value: |
Specialized climate-controlled facility for archival documents,
manuscripts, and records. Maintains stable temperature and
humidity optimal for paper and parchment preservation.
description: "Description of archive depot storage type"
description_text: "Specialized climate-controlled facility for archival documents."
description_type: zone
language: en
description: "Zone description using Description class"
- value: |
description_text: "Quarter leather binding with marbled boards."
description_type: binding
language: en
description: "Binding description using Description class"

View file

@ -0,0 +1,39 @@
# has_or_had_facility - Facility association slot
#
# Created per slot_fixes.yaml migration for: visitor_facility
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_facility
name: has_or_had_facility
title: Has or Had Facility
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_facility:
slot_uri: schema:amenityFeature
description: |
A facility or amenity associated with an entity.
**USAGE**:
Used for:
- Visitor facilities (café, shop, parking)
- Research facilities (reading room, lab)
- Accessibility facilities (wheelchair access)
range: Facility
multivalued: true
exact_mappings:
- schema:amenityFeature
examples:
- value:
facility_name: "Museum Café"
facility_type: FOOD_SERVICE
description: On-site café facility

View file

@ -0,0 +1,54 @@
# has_or_had_format - Format specification slot
#
# Created per slot_fixes.yaml migration for: typical_response_formats, transcript_format
# Creation date: 2026-01-14
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping)
id: https://nde.nl/ontology/hc/slot/has_or_had_format
name: has_or_had_format
title: Has or Had Format
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dct: http://purl.org/dc/terms/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_format:
slot_uri: dct:format
description: |
The format or file type of a resource or service response.
**USAGE**:
Used for:
- Response formats from APIs (JSON, XML, RDF)
- File formats for documents (PDF, DOCX, TXT)
- Media formats (JPEG, MP3, MP4)
- Transcript formats (VTT, SRT, plain text)
**ONTOLOGY ALIGNMENT**:
- slot_uri: dct:format (Dublin Core format)
range: string
multivalued: true
exact_mappings:
- dct:format
close_mappings:
- schema:encodingFormat
examples:
- value: "application/json"
description: JSON MIME type for API responses
- value: "text/vtt"
description: WebVTT subtitle/transcript format
- value: "image/jpeg"
description: JPEG image format
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Format specifications applicable to all custodian types."

View file

@ -0,0 +1,103 @@
# has_or_had_frequency - Links to an UpdateFrequency instance
# Created per slot_fixes.yaml migration for: update_frequency
# Creation date: 2026-01-14
#
# REVISION FROM slot_fixes.yaml (lines 1893-1910):
# - label: has_or_had_frequency (slot) ← THIS FILE
# - label: UpdateFrequency (class)
# - link_branch 1: has_or_had_quantity → Quantity
# - link_branch 2: has_or_had_time_interval → TimeInterval
id: https://nde.nl/ontology/hc/slot/has_or_had_frequency
name: has_or_had_frequency_slot
title: Has Or Had Frequency Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
dcat: http://www.w3.org/ns/dcat#
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_frequency:
description: >-
Links to an UpdateFrequency instance representing how often updates occur.
**TEMPORAL SEMANTICS** (RiC-O style):
The "has_or_had" naming indicates that frequency can change over time:
- IoT sensors may be reconfigured to different update rates
- Data feeds may change from hourly to real-time
- Systems may be optimized to reduce update frequency
**REPLACES**: `update_frequency` (string slot)
**IMPROVEMENT OVER STRING**:
- Structured quantity (numeric value)
- Structured time interval (ISO 8601 duration)
- Event-driven vs time-based distinction
- Machine-readable for analytics
**USE CASES**:
- IoT devices: Sensor update rates
- Data feeds: Sync frequencies
- APIs: Rate limiting and polling intervals
range: UpdateFrequency
slot_uri: dcterms:accrualPeriodicity
inlined: true
exact_mappings:
- dcterms:accrualPeriodicity
close_mappings:
- dcat:frequency
- schema:repeatFrequency
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Frequency associations applicable to all custodian types with digital systems.
custodian_types_primary: "*"
specificity_score: 0.35
specificity_rationale: >-
Moderate specificity - relevant to custodians with IoT/data infrastructure.
examples:
- value: |
has_or_had_frequency:
frequency_description: "Every 5 minutes"
has_or_had_quantity:
numeric_value: 5
has_or_had_time_interval:
duration_value: "PT1M"
duration_description: "minute"
description: Climate sensor with 5-minute update frequency.
- value: |
has_or_had_frequency:
frequency_description: "On proximity trigger"
is_event_driven: true
trigger_type: "proximity"
description: Event-driven beacon updates.
- value: |
has_or_had_frequency:
frequency_description: "Daily"
has_or_had_quantity:
numeric_value: 1
has_or_had_time_interval:
duration_value: "P1D"
duration_description: "daily"
description: Daily data synchronization.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces string-based update_frequency slot
- Uses Dublin Core accrualPeriodicity for semantic alignment
- Supports structured frequency representation

View file

@ -0,0 +1,55 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_measurement_unit
name: has_or_had_measurement_unit_slot
title: Has Or Had Measurement Unit Slot
description: >-
Slot file for has_or_had_measurement_unit following Rule 53 (slot_fixes.yaml).
**RULE 53 COMPLIANT**: Created as part of link_branch migration for visitor_count,
view_count, and similar quantity-based slots.
**ONTOLOGY ALIGNMENT**:
- QUDT: qudt:unit - "The unit of measure used to express the value of a Quantity"
- Schema.org: schema:unitCode (close mapping)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
qudt: http://qudt.org/schema/qudt/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_measurement_unit:
description: >-
The unit of measurement for a quantity value. Uses RiC-O temporal
naming pattern to indicate the unit may be current or historical
(e.g., if measurement standards changed over time).
**QUDT**: qudt:unit - "The unit of measure used to express the value
of a Quantity."
**USE CASES**:
- Visitor counts: unit = "visitors", "visitors/year"
- View counts: unit = "views", "views/day"
- Collection sizes: unit = "items", "objects", "linear meters"
- Area: unit = "m²", "ha", "km²"
- Currency: unit = "EUR", "USD", "GBP"
range: MeasureUnit
slot_uri: qudt:unit
exact_mappings:
- qudt:unit
close_mappings:
- schema:unitCode
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Measurement units applicable to all heritage custodian types.
custodian_types_primary: M
specificity_score: 0.25
specificity_rationale: >-
Foundational slot for measurement data - highly reusable across
many quantity types (visitors, views, items, area, currency).

View file

@ -0,0 +1,59 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_methodology
name: has_or_had_methodology_slot
title: Has Or Had Methodology Slot
description: >-
RiC-O style slot for linking to methodology specifications.
**RULE 53 COMPLIANT**: Created for unique_object_count and unique_face_count
migration per slot_fixes.yaml revision (lines 1951-1994).
**RULE 39 COMPLIANT**: RiC-O style temporal naming (has_or_had_*).
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_methodology:
description: >-
The methodology used to derive a measurement or observation.
**PROV-O ALIGNMENT**:
Maps to `prov:hadPlan` which indicates "The optional Plan adopted by an Agent
in Association with some Activity."
**WHY THIS MATTERS**:
A "unique face count" of 15 has different meanings depending on methodology:
- ENTITY_RESOLUTION: 15 distinct individuals identified via face clustering
- OBJECT_TRACKING: 15 tracked face instances (may include same person)
- MANUAL_COUNT: 15 faces counted by human annotator
**EXAMPLE USAGE**:
```yaml
has_or_had_quantity:
quantity_value: 15
quantity_type: OBJECT_COUNT
has_or_had_measurement_unit:
unit_type: FACE
has_or_had_methodology:
methodology_type: ENTITY_RESOLUTION
has_or_had_label: "ArcFace clustering"
confidence_threshold: 0.6
```
range: Methodology
slot_uri: prov:hadPlan
exact_mappings:
- prov:hadPlan
annotations:
rule_53_compliant: true
link_branch: 2
migration_source: unique_object_count, unique_face_count

View file

@ -0,0 +1,40 @@
# has_or_had_opening_hour - Opening hours slot
#
# Created per slot_fixes.yaml migration for: visiting_hour
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_opening_hour
name: has_or_had_opening_hour
title: Has or Had Opening Hour
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_opening_hour:
slot_uri: schema:openingHoursSpecification
description: |
Opening hours specification for an entity.
**USAGE**:
Used for:
- Visiting hours
- Research room hours
- Service availability
range: OpeningHour
multivalued: true
exact_mappings:
- schema:openingHoursSpecification
examples:
- value:
day_of_week: "Monday"
opens: "10:00"
closes: "17:00"
description: Monday opening hours

View file

@ -0,0 +1,77 @@
# has_or_had_policy slot
# Policy association following RiC-O naming pattern
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
#
# Used by TransferEvent class for governing policy
id: https://nde.nl/ontology/hc/slot/has_or_had_policy
name: has_or_had_policy_slot
title: Has Or Had Policy Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
odrl: http://www.w3.org/ns/odrl/2/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
slots:
has_or_had_policy:
slot_uri: odrl:hasPolicy
description: |
Policy that governs or governed an activity or entity.
**Temporal Semantics** (RiC-O Pattern):
The "hasOrHad" naming follows RiC-O convention indicating
the policy association may be historical.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `odrl:hasPolicy` - ODRL policy association
- **Related**: `dcterms:accessRights` - Dublin Core access rights
**Use Cases**:
- Transfer policies governing custody changes
- Access policies for collections
- Retention policies for archives
**Range**: TransferPolicy (or other policy classes)
**Cardinality**:
Multivalued - entities may be governed by multiple policies.
range: TransferPolicy
required: false
multivalued: true
inlined: true
inlined_as_list: true
related_mappings:
- dcterms:accessRights
annotations:
rico_naming_convention: |
Follows RiC-O "hasOrHad" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
replaces_slots: "transfer_policy"
migration_date: "2026-01-15"
custodian_types: '["*"]'
custodian_types_rationale: Policy associations apply to all heritage types.
specificity_score: 0.45
specificity_rationale: Specialized slot for policy governance.
comments:
- "Links entities to governing policies"
- "Maps to odrl:hasPolicy for rights/rules"
- "RiC-O naming: hasOrHad indicates potentially historical"
examples:
- value:
policy_name: "Donor Transfer Restriction"
policy_text: "Materials may not be transferred without donor consent."
description: "Transfer policy for collection"

View file

@ -0,0 +1,39 @@
# has_or_had_program - Program association slot
#
# Created per slot_fixes.yaml migration for: volunteer_program
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_program
name: has_or_had_program
title: Has or Had Program
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_program:
slot_uri: schema:event
description: |
A program or initiative associated with an entity.
**USAGE**:
Used for:
- Volunteer programs
- Educational programs
- Outreach initiatives
range: Program
multivalued: true
close_mappings:
- schema:event
examples:
- value:
program_name: "Heritage Volunteer Program"
program_type: VOLUNTEER
description: Volunteer program at institution

View file

@ -0,0 +1,67 @@
# has_or_had_provenance_path - Links provenance to a specific location path (XPath, JSONPath, etc.)
# Created per slot_fixes.yaml migration for: xpath
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_provenance_path
name: has_or_had_provenance_path_slot
title: Has Or Had Provenance Path Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_provenance_path:
description: >-
Links a provenance record to a specific path expression that identifies
the location of the source data within a document.
**TEMPORAL SEMANTICS** (RiC-O style):
The "has_or_had" naming indicates that path associations can change:
- Document structure may change, invalidating old paths
- Multiple paths may point to same data over time
- Historical paths preserved for audit trail
**PATH TYPES**:
- XPath: For HTML/XML documents
- JSONPath: For JSON documents
- CSS Selector: For web scraping
**USAGE**:
Typically used within a Provenance class to link the provenance activity
to the specific document location from which data was extracted.
range: XPath
slot_uri: prov:atLocation
inlined: true
exact_mappings:
- prov:atLocation
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Provenance path tracking applicable wherever document extraction occurs.
custodian_types_primary: "*"
specificity_score: 0.7
specificity_rationale: >-
High specificity - only relevant for document-based provenance tracking.
examples:
- value: |
has_or_had_provenance_path:
expression: "/html[1]/body[1]/div[3]/h1"
matched_text: "Museum Name"
match_score: 1.0
description: Provenance path pointing to an H1 element in HTML.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces direct xpath slot usage with structured path object
- Links Provenance class to XPath class

View file

@ -0,0 +1,40 @@
# has_or_had_rationale - Rationale/explanation slot
#
# Created per slot_fixes.yaml migration for: wikidata_mapping_rationale
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_rationale
name: has_or_had_rationale
title: Has or Had Rationale
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
prov: http://www.w3.org/ns/prov#
default_prefix: hc
slots:
has_or_had_rationale:
slot_uri: skos:note
description: |
The rationale or justification for a decision or mapping.
**USAGE**:
Used for:
- Mapping rationale (why an entity was mapped to Wikidata)
- Decision justifications
- Explanation notes
range: string
exact_mappings:
- skos:note
close_mappings:
- prov:wasInfluencedBy
examples:
- value: "Mapped to Q123456 based on exact name match and location verification"
description: Wikidata mapping rationale

View file

@ -0,0 +1,40 @@
# has_or_had_restriction - Restriction information slot
#
# Created per slot_fixes.yaml migration for: years_restricted
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_restriction
name: has_or_had_restriction
title: Has or Had Restriction
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dct: http://purl.org/dc/terms/
default_prefix: hc
slots:
has_or_had_restriction:
slot_uri: schema:accessibilityControl
description: |
Access or use restrictions associated with an entity.
**USAGE**:
Used for:
- Years restricted (embargo periods)
- Access restrictions
- Use limitations
range: Restriction
multivalued: true
close_mappings:
- dct:accessRights
examples:
- value:
restriction_type: EMBARGO
years: 25
description: 25-year embargo restriction

View file

@ -0,0 +1,67 @@
# has_or_had_scope - Links to scope/coverage information
# Created per slot_fixes.yaml migration for: typical_scope, type_scope
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_scope
name: has_or_had_scope_slot
title: Has Or Had Scope Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dct: http://purl.org/dc/terms/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_scope:
description: >-
Links to scope or coverage information for a collection, service, or institution.
**TEMPORAL SEMANTICS** (RiC-O style):
The "has_or_had" naming indicates scope can change:
- Collections grow or shrink over time
- Service coverage may expand or contract
- Geographic scope may shift
**USE CASES**:
- Collection scope (subject areas, time periods, geographic coverage)
- Service scope (types of materials handled)
- Institutional scope (mandate, mission coverage)
range: Scope
slot_uri: dct:coverage
inlined: true
exact_mappings:
- dct:coverage
close_mappings:
- schema:spatialCoverage
- schema:temporalCoverage
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Scope information applicable to all custodian types.
custodian_types_primary: "*"
specificity_score: 0.3
specificity_rationale: >-
Low-moderate specificity - common metadata concept.
examples:
- value: |
has_or_had_scope:
scope_description: "Dutch heritage from 1600-1900"
has_or_had_type:
type_name: "temporal"
description: Temporal scope for a collection.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces typical_scope and type_scope slots
- Uses Dublin Core coverage semantics

View file

@ -0,0 +1,39 @@
# has_or_had_score - Numeric score slot
#
# Created per slot_fixes.yaml migration for: xpath_match_score
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_score
name: has_or_had_score
title: Has or Had Score
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_score:
slot_uri: schema:ratingValue
description: |
A numeric score or rating value.
**USAGE**:
Used for:
- XPath match confidence scores (0.0-1.0)
- Relevance scores
- Quality ratings
- Similarity scores
range: float
close_mappings:
- schema:ratingValue
examples:
- value: 0.95
description: XPath match confidence score
- value: 4.5
description: Rating score

View file

@ -0,0 +1,38 @@
# has_or_had_security_level - Security level slot
#
# Created per slot_fixes.yaml migration for: warehouse_security_level
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_security_level
name: has_or_had_security_level
title: Has or Had Security Level
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_security_level:
slot_uri: schema:securityScreening
description: |
Security classification or level of a resource or location.
**USAGE**:
Used for:
- Warehouse security levels
- Document classification levels
- Access control tiers
range: SecurityLevel
close_mappings:
- schema:securityScreening
examples:
- value:
level_code: "HIGH"
level_name: "High Security"
description: High security level designation

View file

@ -0,0 +1,39 @@
# has_or_had_service - Service association slot
#
# Created per slot_fixes.yaml migration for: visitor_service
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_service
name: has_or_had_service
title: Has or Had Service
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_service:
slot_uri: schema:availableService
description: |
A service offered by an entity.
**USAGE**:
Used for:
- Visitor services (guided tours, audio guides)
- Research services
- Conservation services
range: Service
multivalued: true
exact_mappings:
- schema:availableService
examples:
- value:
service_name: "Guided Tours"
service_type: VISITOR
description: Guided tour service

View file

@ -0,0 +1,36 @@
# has_or_had_text - Text content slot
#
# Created per slot_fixes.yaml migration for: xpath_matched_text
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_text
name: has_or_had_text
title: Has or Had Text
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_text:
slot_uri: schema:text
description: |
Text content associated with an entity.
**USAGE**:
Used for:
- Matched text segments from XPath queries
- Text content of elements
- Extracted text strings
range: string
exact_mappings:
- schema:text
examples:
- value: "The museum collection includes..."
description: Text extracted from webpage

View file

@ -0,0 +1,71 @@
# has_or_had_time_interval - Links to a time interval/duration
# Created per slot_fixes.yaml migration for: update_frequency, typical_approval_time, total_revenue
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_time_interval
name: has_or_had_time_interval_slot
title: Has Or Had Time Interval Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
time: http://www.w3.org/2006/time#
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_time_interval:
description: >-
Links to a time interval or duration associated with this entity.
**TEMPORAL SEMANTICS** (RiC-O style):
The "has_or_had" naming indicates that time interval associations can change:
- Update frequencies may be revised
- Approval times may change with policy updates
- Reporting periods may vary
**USE CASES**:
- Update frequency: How often data is refreshed
- Approval time: Expected processing duration
- Reporting period: Time period for metrics/revenue
range: TimeInterval
slot_uri: time:hasDuration
inlined: true
exact_mappings:
- time:hasDuration
close_mappings:
- schema:duration
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Time interval associations applicable to all custodian types.
custodian_types_primary: "*"
specificity_score: 0.25
specificity_rationale: >-
Low specificity - universal temporal relationship.
examples:
- value: |
has_or_had_time_interval:
duration_value: "P7D"
duration_description: "weekly"
description: Weekly update interval.
- value: |
has_or_had_time_interval:
duration_value: "P1Y"
duration_description: "annual reporting period"
description: Annual time interval for revenue reporting.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces string-based duration fields with structured TimeInterval
- Uses W3C Time Ontology for duration semantics

View file

@ -0,0 +1,83 @@
# has_or_had_url slot
# URL association following RiC-O naming pattern
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
#
# Supports migrations per slot_fixes.yaml:
# - website → has_or_had_url + URL
# - url → has_or_had_url + URL
# - vendor_url → has_or_had_url + URL
id: https://nde.nl/ontology/hc/slot/has_or_had_url
name: has_or_had_url_slot
title: Has Or Had URL Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
foaf: http://xmlns.com/foaf/0.1/
default_prefix: hc
imports:
- linkml:types
slots:
has_or_had_url:
slot_uri: schema:url
description: |
URL associated with this entity.
**Temporal Semantics** (RiC-O Pattern):
The "hasOrHad" naming follows RiC-O convention indicating this
URL may be historical - websites change over time.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `schema:url` - Schema.org URL
- **Exact**: `foaf:homepage` - FOAF homepage (for main websites)
**Use Cases**:
- Institution websites (type: website)
- API endpoints (type: api)
- Vendor/supplier websites (type: vendor)
- Documentation links (type: documentation)
**Range**: URL class (structured URL with type and metadata)
**Cardinality**:
Multivalued - entities may have multiple URLs (different types).
range: URL
required: false
multivalued: true
inlined: true
inlined_as_list: true
exact_mappings:
- foaf:homepage
annotations:
rico_naming_convention: |
Follows RiC-O "hasOrHad" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
replaces_slots: "website, url, vendor_url"
migration_date: "2026-01-15"
custodian_types: '["*"]'
custodian_types_rationale: URLs apply to all heritage custodian types.
specificity_score: 0.15
specificity_rationale: Generic URL slot applicable across all contexts.
comments:
- "Generic URL association slot"
- "Maps to schema:url for web addresses"
- "Temporal: URLs may change over time"
- "RiC-O naming: hasOrHad indicates potentially historical"
- "Replaces website, url, vendor_url per slot_fixes.yaml"
examples:
- value:
url_value: "https://www.rijksmuseum.nl/"
url_type: website
description: "Official website for Rijksmuseum"

View file

@ -0,0 +1,38 @@
# has_or_had_writing_system - Writing system slot
#
# Created per slot_fixes.yaml migration for: writing_system
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/has_or_had_writing_system
name: has_or_had_writing_system
title: Has or Had Writing System
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
slots:
has_or_had_writing_system:
slot_uri: schema:inLanguage
description: |
The writing system or script used.
**USAGE**:
Used for:
- Script type (Latin, Cyrillic, Arabic, etc.)
- Writing direction (LTR, RTL)
- Historical scripts (Cuneiform, Hieroglyphics)
range: WritingSystem
close_mappings:
- schema:inLanguage
examples:
- value:
script_code: "Latn"
script_name: "Latin"
description: Latin writing system

View file

@ -0,0 +1,39 @@
# is_or_was_derived_from - Derivation relationship slot
#
# Created per slot_fixes.yaml migration for: was_derived_from
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/is_or_was_derived_from
name: is_or_was_derived_from
title: Is or Was Derived From
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
default_prefix: hc
slots:
is_or_was_derived_from:
slot_uri: prov:wasDerivedFrom
description: |
Links an entity to another entity from which it was derived.
**USAGE**:
Used for:
- Linking derived datasets to source datasets
- Tracking data transformations
- Establishing provenance chains
**ONTOLOGY ALIGNMENT**:
- slot_uri: prov:wasDerivedFrom (PROV-O derivation relationship)
range: uriorcurie
exact_mappings:
- prov:wasDerivedFrom
examples:
- value: https://nde.nl/dataset/source-123
description: Source dataset this was derived from

View file

@ -0,0 +1,88 @@
# is_or_was_equivalent_to slot
# Semantic equivalence relationship following RiC-O naming pattern
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
#
# Supports migration: wikidata_equivalent → is_or_was_equivalent_to + WikiDataEntry
id: https://nde.nl/ontology/hc/slot/is_or_was_equivalent_to
name: is_or_was_equivalent_to_slot
title: Is Or Was Equivalent To Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
owl: http://www.w3.org/2002/07/owl#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
slots:
is_or_was_equivalent_to:
slot_uri: skos:exactMatch
description: |
Semantic equivalence with another entity (typically Wikidata).
**Temporal Semantics** (RiC-O Pattern):
The "isOrWas" naming follows RiC-O convention indicating this
equivalence may be historical - concepts may diverge over time.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `skos:exactMatch` - SKOS exact match
for semantic equivalence between concepts
- **Related**: `owl:sameAs` - OWL identity (stronger claim)
- **Related**: `schema:sameAs` - Schema.org identity
**Distinction from is_or_was_related_to**:
- `is_or_was_equivalent_to`: Semantic identity (same concept)
- `is_or_was_related_to`: Associative (related but distinct)
**Use Case**:
Links a heritage custodian type or concept to its Wikidata equivalent.
Example: Our "Museum" type is equivalent to Wikidata Q33506.
**Cardinality**:
Multivalued - an entity may have equivalences in multiple systems.
range: string
required: false
multivalued: true
inlined_as_list: true
exact_mappings:
- skos:exactMatch
related_mappings:
- owl:sameAs
- schema:sameAs
annotations:
rico_naming_convention: |
Follows RiC-O "isOrWas" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
replaces_slots: "wikidata_equivalent"
migration_date: "2026-01-15"
custodian_types: '["*"]'
custodian_types_rationale: Equivalence mappings apply to all heritage types.
specificity_score: 0.25
specificity_rationale: Generic alignment slot for ontology interoperability.
comments:
- "Maps to skos:exactMatch for semantic equivalence"
- "Stronger than is_or_was_related_to (associative)"
- "Weaker than owl:sameAs (doesn't claim absolute identity)"
- "RiC-O naming: isOrWas indicates potentially historical relationship"
- "Replaces wikidata_equivalent per slot_fixes.yaml"
examples:
- value:
- "Q33506"
description: "Wikidata equivalence for museum concept"
- value:
- "Q166118"
description: "Wikidata equivalence for archive concept"

View file

@ -0,0 +1,39 @@
# is_or_was_generated_by - Generation relationship slot
#
# Created per slot_fixes.yaml migration for: was_generated_by
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/is_or_was_generated_by
name: is_or_was_generated_by
title: Is or Was Generated By
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
default_prefix: hc
slots:
is_or_was_generated_by:
slot_uri: prov:wasGeneratedBy
description: |
Links an entity to the activity that generated it.
**USAGE**:
Used for:
- Linking records to generation activities
- Tracking automated processing
- Provenance chains
**ONTOLOGY ALIGNMENT**:
- slot_uri: prov:wasGeneratedBy (PROV-O generation relationship)
range: uriorcurie
exact_mappings:
- prov:wasGeneratedBy
examples:
- value: https://nde.nl/activity/import-2024
description: Activity that generated this record

View file

@ -0,0 +1,96 @@
# is_or_was_instance_of slot
# Instance/type classification relationship following RiC-O naming pattern
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
#
# Supports migrations:
# - wikidata_class → is_or_was_instance_of + WikiDataEntry
# - wikidata → is_or_was_instance_of + WikiDataEntry
id: https://nde.nl/ontology/hc/slot/is_or_was_instance_of
name: is_or_was_instance_of_slot
title: Is Or Was Instance Of Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
wdt: http://www.wikidata.org/prop/direct/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
slots:
is_or_was_instance_of:
slot_uri: rdf:type
description: |
Classification indicating entity is an instance of a type/class.
**Temporal Semantics** (RiC-O Pattern):
The "isOrWas" naming follows RiC-O convention indicating this
classification may be historical - entities may change type over time.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `rdf:type` - RDF type assertion
- **Exact**: `wdt:P31` - Wikidata "instance of" property
- **Related**: `schema:additionalType` - Schema.org additional type
**Distinction from other relationships**:
- `is_or_was_instance_of`: This entity IS A [type] (classification)
- `is_or_was_equivalent_to`: This entity EQUALS [concept] (equivalence)
- `is_or_was_related_to`: This entity RELATES TO [concept] (association)
**Use Cases**:
- Heritage custodian classified as Wikidata type (Q33506 museum)
- Building classified as architectural type
- Collection classified as collection type
**Heritage Example**:
Rijksmuseum (Q190804) is_or_was_instance_of museum (Q33506)
**Cardinality**:
Multivalued - entities may have multiple classifications.
range: string
required: false
multivalued: true
inlined_as_list: true
exact_mappings:
- wdt:P31
related_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: "wikidata_class, wikidata"
migration_date: "2026-01-15"
custodian_types: '["*"]'
custodian_types_rationale: Type classification applies to all heritage types.
specificity_score: 0.2
specificity_rationale: Generic classification slot used across all contexts.
comments:
- "Maps to rdf:type for type/class assertion"
- "Wikidata equivalent: P31 (instance of)"
- "Temporal: institutions may change classification over time"
- "RiC-O naming: isOrWas indicates potentially historical relationship"
- "Replaces wikidata_class and wikidata per slot_fixes.yaml"
examples:
- value:
- "Q33506"
description: "Instance of museum (Wikidata class)"
- value:
- "Q7075"
description: "Instance of library (Wikidata class)"
- value:
- "Q166118"
description: "Instance of archive (Wikidata class)"

View file

@ -0,0 +1,81 @@
# is_or_was_located_within - Links an entity to a containing place
# Created per slot_fixes.yaml migration for: within_place, within_auxiliary_place
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/is_or_was_located_within
name: is_or_was_located_within_slot
title: Is Or Was Located Within Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
gn: http://www.geonames.org/ontology#
imports:
- linkml:types
default_prefix: hc
slots:
is_or_was_located_within:
description: >-
Links an entity to a place that contains or contained it.
**TEMPORAL SEMANTICS** (RiC-O style):
The "is_or_was" naming indicates that containment can change:
- Institutions may relocate to different cities
- Administrative boundaries may be redrawn
- Historical locations preserved for provenance
**USE CASES**:
- Institution within a city/region
- Collection within a building/room
- Archive within an administrative area
**REPLACES**:
- `within_place` (primary location containment)
- `within_auxiliary_place` (secondary location containment)
range: Place
slot_uri: schema:containedInPlace
inlined: true
multivalued: true
exact_mappings:
- schema:containedInPlace
close_mappings:
- gn:parentFeature
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Location containment applicable to all custodian types.
custodian_types_primary: "*"
specificity_score: 0.2
specificity_rationale: >-
Low specificity - universal geographic relationship.
examples:
- value: |
is_or_was_located_within:
- place_name: "Amsterdam"
place_type: "settlement"
geonames_id: 2759794
description: Institution located within Amsterdam.
- value: |
is_or_was_located_within:
- place_name: "Noord-Holland"
place_type: "region"
iso_code: "NL-NH"
- place_name: "Netherlands"
place_type: "country"
iso_code: "NL"
description: Multiple containment levels for an institution.
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces within_place and within_auxiliary_place slots
- Supports multiple containment relationships (multivalued)

View file

@ -0,0 +1,38 @@
# is_or_was_managed_by - Management relationship slot
#
# Created per slot_fixes.yaml migration for: warehouse_managed_by
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/is_or_was_managed_by
name: is_or_was_managed_by
title: Is or Was Managed By
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
org: http://www.w3.org/ns/org#
schema: http://schema.org/
default_prefix: hc
slots:
is_or_was_managed_by:
slot_uri: org:hasMember
description: |
Links an entity to the group or organization that manages it.
**USAGE**:
Used for:
- Warehouse management groups
- Team assignments
- Organizational responsibility
range: uriorcurie
close_mappings:
- org:hasMember
- schema:member
examples:
- value: https://nde.nl/group/storage-team
description: Group managing a warehouse

View file

@ -4,8 +4,12 @@
# Following RiC-O naming convention (Rule 39): "isOrWas..." pattern
# for temporal relationships in heritage domain.
#
# Generation date: 2026-01-13
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 42 (no prefix)
# Generation date: 2026-01-13 (updated 2026-01-15)
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 42 (no prefix), 53 (slot_fixes.yaml)
#
# Supports migrations per slot_fixes.yaml:
# - wikidata_mapping → is_or_was_related_to + WikiDataEntry
# - wikidata_alignment → is_or_was_related_to + WikiDataEntry
id: https://nde.nl/ontology/hc/slot/is_or_was_related_to
name: is_or_was_related_to_slot
@ -68,8 +72,12 @@ slots:
rico_naming_convention: |
Follows RiC-O "isOrWas" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
replaces_slots: "storage_type_related"
migration_date: "2026-01-13"
replaces_slots: "storage_type_related, wikidata_mapping, wikidata_alignment"
migration_date: "2026-01-15"
custodian_types: '["*"]'
custodian_types_rationale: Associative relationships apply to all heritage types.
specificity_score: 0.25
specificity_rationale: Generic relationship slot for non-hierarchical associations.
comments:
- "Generic association slot for non-hierarchical relationships"

View file

@ -0,0 +1,39 @@
# is_or_was_revision_of - Revision relationship slot
#
# Created per slot_fixes.yaml migration for: was_revision_of
# Creation date: 2026-01-14
id: https://nde.nl/ontology/hc/slot/is_or_was_revision_of
name: is_or_was_revision_of
title: Is or Was Revision Of
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
default_prefix: hc
slots:
is_or_was_revision_of:
slot_uri: prov:wasRevisionOf
description: |
Links an entity to a previous version it revises.
**USAGE**:
Used for:
- Document revisions
- Record updates
- Version chains
**ONTOLOGY ALIGNMENT**:
- slot_uri: prov:wasRevisionOf (PROV-O revision relationship)
range: uriorcurie
exact_mappings:
- prov:wasRevisionOf
examples:
- value: https://nde.nl/record/123/v1
description: Previous version of record

View file

@ -0,0 +1,90 @@
# is_or_was_transferred slot
# Transfer event relationship following RiC-O naming pattern
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
#
# Supports migrations per slot_fixes.yaml:
# - transfer_to_collection_date → is_or_was_transferred + TransferEvent
# - transfer_policy → is_or_was_transferred + TransferEvent
# - transfer_location_text → is_or_was_transferred + TransferEvent
# - transfer_location → is_or_was_transferred + TransferEvent
id: https://nde.nl/ontology/hc/slot/is_or_was_transferred
name: is_or_was_transferred_slot
title: Is Or Was Transferred Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
rico: https://www.ica.org/standards/RiC/ontology#
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
slots:
is_or_was_transferred:
slot_uri: rico:isOrWasAffectedBy
description: |
Links an entity to a transfer event that affected it.
**Temporal Semantics** (RiC-O Pattern):
The "isOrWas" naming follows RiC-O convention indicating this
transfer may be historical.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `rico:isOrWasAffectedBy` - RiC-O affected by
(entity affected by an event)
- **Related**: `crm:P30_transferred_custody_of` - CIDOC-CRM custody transfer
- **Related**: `prov:wasInfluencedBy` - PROV-O influence
**Use Cases**:
- Collection items transferred between institutions
- Archive holdings relocated to new facility
- Custody transfer of heritage materials
**Range**: TransferEvent class (structured transfer with dates, locations, policy)
**Cardinality**:
Multivalued - entities may have been transferred multiple times.
range: TransferEvent
required: false
multivalued: true
inlined: true
inlined_as_list: true
related_mappings:
- crm:P30_transferred_custody_of
- prov:wasInfluencedBy
annotations:
rico_naming_convention: |
Follows RiC-O "isOrWas" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
replaces_slots: "transfer_to_collection_date, transfer_policy, transfer_location_text, transfer_location"
migration_date: "2026-01-15"
custodian_types: '["*"]'
custodian_types_rationale: Transfer events apply to all heritage custodian types.
specificity_score: 0.5
specificity_rationale: Specialized event relationship for custody/ownership changes.
comments:
- "Links entity to transfer events"
- "Maps to rico:isOrWasAffectedBy for event-entity relationship"
- "Temporal: transfers are historical events"
- "RiC-O naming: isOrWas indicates historical relationship"
- "Replaces transfer_* slots per slot_fixes.yaml"
examples:
- value:
temporal_extent:
begin_of_the_begin:
timestamp_value: "2020-01-15T00:00:00Z"
ends_or_ended_at_location:
location_name: "New Archive Building"
description: "Collection transfer to new facility"

View file

@ -0,0 +1,86 @@
# is_or_was_webarchived_at slot
# Web archive URL following RiC-O naming pattern
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
#
# Supports migration per slot_fixes.yaml:
# - was_archived_at → is_or_was_webarchived_at + URL
id: https://nde.nl/ontology/hc/slot/is_or_was_webarchived_at
name: is_or_was_webarchived_at_slot
title: Is Or Was Webarchived 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_webarchived_at:
slot_uri: prov:alternateOf
description: |
URL to a web archive snapshot of this entity's content.
**Temporal Semantics** (RiC-O Pattern):
The "isOrWas" naming follows RiC-O convention. Web archives
capture content at a specific point in time.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `prov:alternateOf` - PROV-O alternate
representation (archived version of original)
- **Related**: `schema:archivedAt` - Schema.org archived location
**Web Archive Services**:
- Internet Archive Wayback Machine: web.archive.org
- Archive.today: archive.ph
- UK Web Archive: webarchive.org.uk
- National library web archives
**Range**: URL class (structured URL with type and metadata)
**Provenance Value**:
Essential for data verification - archived snapshots prove
content existed at extraction time.
**Cardinality**:
Multivalued - content may be archived at multiple services/times.
range: URL
required: false
multivalued: true
inlined: true
inlined_as_list: true
related_mappings:
- schema:archivedAt
annotations:
rico_naming_convention: |
Follows RiC-O "isOrWas" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
replaces_slots: "was_archived_at"
migration_date: "2026-01-15"
custodian_types: '["*"]'
custodian_types_rationale: Web archiving applies to all heritage types.
specificity_score: 0.3
specificity_rationale: Specialized for provenance/archival contexts.
comments:
- "Links to web archive snapshots"
- "Maps to prov:alternateOf for archived representation"
- "Essential for data provenance verification"
- "RiC-O naming: isOrWas indicates temporal snapshot"
- "Replaces was_archived_at per slot_fixes.yaml"
examples:
- value:
url_value: "https://web.archive.org/web/20240101120000/https://www.rijksmuseum.nl/"
url_type: webarchive
description: "Wayback Machine snapshot of Rijksmuseum website"

View file

@ -0,0 +1,63 @@
# location_name slot
# Human-readable name for a geographic location
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 51 (no hallucinated refs)
id: https://nde.nl/ontology/hc/slot/location_name
name: location_name_slot
title: Location Name Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
rdfs: http://www.w3.org/2000/01/rdf-schema#
locn: http://www.w3.org/ns/locn#
default_prefix: hc
imports:
- linkml:types
slots:
location_name:
slot_uri: schema:name
description: |
Human-readable name for a geographic location.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `schema:name` - Schema.org name
- **Exact**: `rdfs:label` - RDF Schema label
- **Related**: `locn:geographicName` - LOCN geographic name
**Usage**:
Primary identifier for Location instances. Should be
human-readable and unambiguous where possible.
**Examples**:
- "Rijksmuseum Amsterdam"
- "Noord-Hollands Archief, Haarlem"
- "Depot Boerhaave, Leiden"
range: string
required: true
multivalued: false
exact_mappings:
- rdfs:label
related_mappings:
- locn:geographicName
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Location names apply to all heritage types.
specificity_score: 0.2
specificity_rationale: Generic name slot for locations.
examples:
- value: "Rijksmuseum Amsterdam"
description: "Museum location"
- value: "Noord-Hollands Archief, Haarlem"
description: "Archive location with city"

View file

@ -1,13 +1,12 @@
{
"files": [
"accepts_or_accepted.yaml",
"accepts_or_accepted_external_work.yaml",
"accepts_or_accepted_payment_method.yaml",
"accepts_or_accepted_visiting_scholar.yaml",
"activity_id.yaml",
"affects_or_affected.yaml",
"aggregates_or_aggregated_from.yaml",
"is_or_was_real.yaml",
"allocates_or_allocated.yaml",
"allows_or_allowed.yaml",
"api_available.yaml",
@ -18,21 +17,19 @@
"archive_branches.yaml",
"archive_series.yaml",
"archived_at.yaml",
"asserted_by.yaml",
"asserts_or_asserted.yaml",
"audio_event_segments.yaml",
"authors.yaml",
"auto_generated.yaml",
"auxiliary_places.yaml",
"auxiliary_platform_id.yaml",
"auxiliary_platforms.yaml",
"backup_status.yaml",
"base_surname.yaml",
"bay_number.yaml",
"begin_of_the_begin.yaml",
"begin_of_the_end.yaml",
"has_or_had_beneficiary.yaml",
"benefit.yaml",
"bibframe_equivalent.yaml",
"binding.yaml",
@ -48,7 +45,6 @@
"bounding_box.yaml",
"box_number.yaml",
"branch_description.yaml",
"has_or_had_head.yaml",
"branch_id.yaml",
"branch_name.yaml",
"branch_office_description.yaml",
@ -66,6 +62,7 @@
"business_model.yaml",
"cached_token.yaml",
"cadastral_id.yaml",
"calendar_system.yaml",
"call_description.yaml",
"call_id.yaml",
"call_identifier.yaml",
@ -357,6 +354,8 @@
"derived_from_observation.yaml",
"description.yaml",
"description_section.yaml",
"description_text.yaml",
"description_type.yaml",
"detection_count.yaml",
"detection_level.yaml",
"detection_threshold.yaml",
@ -447,6 +446,7 @@
"ended_at_time.yaml",
"endorsement_source.yaml",
"endowment_draw.yaml",
"ends_or_ended_at_location.yaml",
"engagement_rate.yaml",
"enriched_date.yaml",
"enrichment_metadata_whatsapp.yaml",
@ -674,7 +674,6 @@
"has_agent_type.yaml",
"has_agreement_signed_date.yaml",
"has_air_changes_per_hour.yaml",
"has_allocation_date.yaml",
"has_alpha_2_code.yaml",
"has_alpha_3_code.yaml",
@ -797,7 +796,6 @@
"has_or_had_activity_or_society_membership.yaml",
"has_or_had_address.yaml",
"has_or_had_admin_staff_count.yaml",
"has_or_had_function.yaml",
"has_or_had_admission_fee.yaml",
"has_or_had_affected_territory.yaml",
"has_or_had_affected_unit.yaml",
@ -827,8 +825,10 @@
"has_or_had_audience_size.yaml",
"has_or_had_audit_status.yaml",
"has_or_had_based_on_observation.yaml",
"has_or_had_beneficiary.yaml",
"has_or_had_category_assessment.yaml",
"has_or_had_chapter.yaml",
"has_or_had_code.yaml",
"has_or_had_collection.yaml",
"has_or_had_collection_narrower_type.yaml",
"has_or_had_comment_reply.yaml",
@ -865,7 +865,10 @@
"has_or_had_featured_object.yaml",
"has_or_had_finding_aid.yaml",
"has_or_had_fond.yaml",
"has_or_had_format.yaml",
"has_or_had_function.yaml",
"has_or_had_generate.yaml",
"has_or_had_head.yaml",
"has_or_had_holds_record_set_type.yaml",
"has_or_had_ich_safeguarding_measure.yaml",
"has_or_had_identify.yaml",
@ -895,6 +898,7 @@
"has_or_had_participated_in_event.yaml",
"has_or_had_participated_in_project.yaml",
"has_or_had_period.yaml",
"has_or_had_policy.yaml",
"has_or_had_portal_data_source.yaml",
"has_or_had_post_type.yaml",
"has_or_had_powered_by_cm.yaml",
@ -903,6 +907,7 @@
"has_or_had_product_category.yaml",
"has_or_had_project.yaml",
"has_or_had_provenance_event.yaml",
"has_or_had_provenance_path.yaml",
"has_or_had_registered_dataset.yaml",
"has_or_had_registration_number.yaml",
"has_or_had_related_activity.yaml",
@ -916,6 +921,7 @@
"has_or_had_resulting_unit.yaml",
"has_or_had_safeguard.yaml",
"has_or_had_scene_segment.yaml",
"has_or_had_scope.yaml",
"has_or_had_secondary_label.yaml",
"has_or_had_secondary_system.yaml",
"has_or_had_section_link.yaml",
@ -939,9 +945,11 @@
"has_or_had_text_region.yaml",
"has_or_had_text_segment.yaml",
"has_or_had_thematic_route.yaml",
"has_or_had_time_interval.yaml",
"has_or_had_tracked_in_cm.yaml",
"has_or_had_transmission_method.yaml",
"has_or_had_unit.yaml",
"has_or_had_url.yaml",
"has_or_had_used_source.yaml",
"has_or_had_web_claim.yaml",
"has_outdoor_seating.yaml",
@ -1021,11 +1029,11 @@
"implements_auxiliary_platform.yaml",
"implements_digital_platform.yaml",
"inbound_from.yaml",
"includes_or_included.yaml",
"includes_bounding_box.yaml",
"includes_handwriting.yaml",
"includes_music_description.yaml",
"includes_object_tracking.yaml",
"includes_or_included.yaml",
"includes_segmentation_mask.yaml",
"includes_sound_description.yaml",
"includes_speaker.yaml",
@ -1087,11 +1095,17 @@
"is_or_was_associated_with.yaml",
"is_or_was_collection_of.yaml",
"is_or_was_encompassed_by.yaml",
"is_or_was_equivalent_to.yaml",
"is_or_was_instance_of.yaml",
"is_or_was_located_within.yaml",
"is_or_was_member_of.yaml",
"is_or_was_part_of_archive_series.yaml",
"is_or_was_platform_of.yaml",
"is_or_was_real.yaml",
"is_or_was_sub_collection_of.yaml",
"is_or_was_suborganization_of.yaml",
"is_or_was_transferred.yaml",
"is_or_was_webarchived_at.yaml",
"is_overlapping.yaml",
"is_part_of_complex.yaml",
"is_permanent.yaml",
@ -1214,6 +1228,7 @@
"located_at.yaml",
"location.yaml",
"location_browse_score.yaml",
"location_name.yaml",
"logo_bbox.yaml",
"logo_confidence.yaml",
"logo_label.yaml",
@ -1473,6 +1488,7 @@
"policy_id.yaml",
"policy_name.yaml",
"policy_review_date.yaml",
"policy_text.yaml",
"portal_description.yaml",
"portal_id.yaml",
"portal_language.yaml",
@ -1569,6 +1585,7 @@
"provenance_text.yaml",
"provider.yaml",
"provides_access_to.yaml",
"provides_or_provided_provenance_to.yaml",
"public_access.yaml",
"public_education.yaml",
"publication_activity.yaml",
@ -1840,6 +1857,7 @@
"start_seconds.yaml",
"start_time.yaml",
"started_at_time.yaml",
"starts_or_started_at_location.yaml",
"statement_currency.yaml",
"statement_description.yaml",
"statement_id.yaml",
@ -1928,6 +1946,8 @@
"threat.yaml",
"thumbnail_url.yaml",
"time_of_destruction.yaml",
"timestamp_precision.yaml",
"timestamp_value.yaml",
"title.yaml",
"title_en.yaml",
"title_nl.yaml",
@ -1996,6 +2016,8 @@
"update_frequency.yaml",
"updated_at.yaml",
"url.yaml",
"url_type.yaml",
"url_value.yaml",
"used.yaml",
"used_by.yaml",
"used_by_custodian.yaml",
@ -2045,14 +2067,17 @@
"wikidata.yaml",
"wikidata_alignment.yaml",
"wikidata_class.yaml",
"wikidata_description.yaml",
"wikidata_entity.yaml",
"wikidata_entity_id.yaml",
"wikidata_entity_label.yaml",
"wikidata_equivalent.yaml",
"wikidata_id.yaml",
"wikidata_label.yaml",
"wikidata_mapping.yaml",
"wikidata_mapping_rationale.yaml",
"wikidata_mapping_type.yaml",
"wikidata_qid.yaml",
"within_auxiliary_place.yaml",
"within_place.yaml",
"word_count.yaml",
@ -2068,5 +2093,6 @@
"zone_id.yaml",
"zone_name.yaml",
"zone_type.yaml"
]
],
"total_count": 2093
}

View file

@ -0,0 +1,51 @@
# policy_text slot
# Full text content of a policy document
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 51 (no hallucinated refs)
id: https://nde.nl/ontology/hc/slot/policy_text
name: policy_text_slot
title: Policy Text Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
slots:
policy_text:
slot_uri: schema:text
description: |
Full text content of a policy document.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `schema:text` - Schema.org text content
- **Related**: `dcterms:description` - Dublin Core description
**Usage**:
Contains the complete policy text. For very long policies,
this may contain a summary with reference to full document.
range: string
required: false
multivalued: false
related_mappings:
- dcterms:description
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Policy text applies to all heritage types.
specificity_score: 0.4
specificity_rationale: Specialized slot for policy documentation.
examples:
- value: "Materials may not be transferred to institutions outside the Netherlands without donor consent."
description: "Transfer restriction policy text"

View file

@ -0,0 +1,48 @@
# provides_or_provided_provenance_to - Provenance relationship slot
#
# Created per slot_fixes.yaml migration for: used_by, used
# Creation date: 2026-01-14
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping)
id: https://nde.nl/ontology/hc/slot/provides_or_provided_provenance_to
name: provides_or_provided_provenance_to
title: Provides or Provided Provenance To
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
default_prefix: hc
slots:
provides_or_provided_provenance_to:
slot_uri: prov:wasUsedBy
description: |
Links an entity to activities or other entities that used it.
**USAGE**:
Used to express provenance relationships:
- "This dataset was used by this research project"
- "This tool was used by this digitization activity"
**ONTOLOGY ALIGNMENT**:
- slot_uri: prov:wasUsedBy (PROV-O usage relationship)
- Inverse of prov:used
range: uriorcurie
multivalued: true
exact_mappings:
- prov:wasUsedBy
close_mappings:
- prov:wasGeneratedBy
examples:
- value: https://nde.nl/activity/digitization-2024
description: Entity used by a digitization activity
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Provenance relationships applicable to all types."

View file

@ -1632,6 +1632,17 @@ fixes:
- label: TimeSpan
type: class
link_branch: 2
processed:
status: true
date: "2025-01-14"
notes: |
Migrated to has_or_had_quantity with Quantity class.
Branch 1: has_or_had_measurement_unit → MeasureUnit (enum: VISITOR)
Branch 2: temporal_extent → TimeSpan
Consuming classes updated: Exhibition.yaml, MuseumRegisterEnrichment.yaml
Archived slot: modules/slots/archive/visitor_count_archived_20260115.yaml
Created slot: modules/slots/has_or_had_measurement_unit.yaml
Updated enum: MeasureUnitEnum.yaml (added VISITOR, VIEW, ITEM, FTE, etc.)
- original_slot_id: https://nde.nl/ontology/hc/slot/visitor_conversion_rate
revision:
- label: has_or_had_conversion_rate
@ -1656,6 +1667,16 @@ fixes:
- label: TimeSpan
type: class
link_branch: 2
processed:
status: true
date: "2026-01-14"
notes: |
Migration completed for visitor_conversion_rate slot.
Created: ConversionRate class, ConversionRateType class, ConversionRateTypes class, has_or_had_conversion_rate slot
Branch 1: has_or_had_type → ConversionRateType/ConversionRateTypes
Branch 2: temporal_extent → TimeSpan (reused existing)
Consuming classes updated: GiftShop.yaml
Archived slot: modules/slots/archive/visitor_conversion_rate_archived_20260114.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/visiting_hour
revision:
- label: has_or_had_opening_hour
@ -1682,6 +1703,17 @@ fixes:
- label: TimeSpan
type: class
link_branch: 2
processed:
status: true
date: "2025-01-14"
notes: |
Migrated to has_or_had_quantity with Quantity class.
Branch 1: has_or_had_measurement_unit → MeasureUnit (enum: VIEW)
Branch 2: temporal_extent → TimeSpan
Consuming slot-based class updated: VideoPost.yaml
NOTE: YoutubeVideo, YoutubeEnrichment, YoutubeChannel use inline attributes
(raw API response capture) - evaluated but not migrated per data pattern.
Archived slot: modules/slots/archive/view_count_archived_20260115.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/video_id
revision:
- label: has_or_had_identifier
@ -1886,6 +1918,16 @@ fixes:
- label: TimeInterval
type: class
link_branch: 2
processed:
status: true
date: "2026-01-14"
notes: |
Migration completed for update_frequency slot.
Created: UpdateFrequency class, has_or_had_frequency slot
Branch 1: has_or_had_quantity → Quantity (reused existing)
Branch 2: has_or_had_time_interval → TimeInterval (reused existing)
Consuming classes updated: InternetOfThings.yaml
Archived slot: modules/slots/archive/update_frequency_archived_20260114.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/unit_type
revision:
- label: has_or_had_type
@ -1948,6 +1990,19 @@ fixes:
value:
- entity_resolution
link_branch: 2
processed:
status: true
date: "2026-01-14"
notes: >-
Migrated unique_object_count to has_or_had_quantity with Quantity class.
Branch 1: has_or_had_measurement_unit → MeasureUnit (OBJECT unit type).
Branch 2: has_or_had_methodology → Methodology (ENTITY_RESOLUTION type).
Updated VideoAnnotationTypes.yaml (VideoObjectAnnotation class).
Created Methodology.yaml class with prov:Plan mapping.
Created MethodologyTypeEnum.yaml enum.
Created has_or_had_methodology.yaml slot.
Updated Quantity.yaml with has_or_had_methodology slot.
Archived: modules/slots/archive/unique_object_count_archived_20260114.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/unique_face_count
revision:
- label: has_or_had_quantity
@ -1970,6 +2025,16 @@ fixes:
value:
- entity_resolution
link_branch: 2
processed:
status: true
date: "2026-01-14"
notes: >-
Migrated unique_face_count to has_or_had_quantity with Quantity class.
Branch 1: has_or_had_measurement_unit → MeasureUnit (FACE unit type).
Branch 2: has_or_had_methodology → Methodology (ENTITY_RESOLUTION type).
Updated VideoAnnotationTypes.yaml (VideoObjectAnnotation class).
Shares Methodology infrastructure with unique_object_count migration.
Archived: modules/slots/archive/unique_face_count_archived_20260114.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/uniform_title
revision:
- label: has_or_had_label
@ -2302,3 +2367,74 @@ fixes:
type: slot
- label: Description
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/transcript_format
revision:
- label: has_or_had_format
type: slot
- label: TranscriptFormat
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/traditional_product
revision:
- label: has_or_had_type
type: slot
- label: TraditionalProductType
type: class
- label: includes_or_included
type: slot
- label: TraditionalProductTypes
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/tracking_ids_assigned
revision:
- label: has_or_had_identifier
type: slot
- label: Identifier
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/track_name
revision:
- label: has_or_had_label
type: slot
- label: Label
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/track_id
revision:
- label: has_or_had_identifier
type: slot
- label: TrackIdentifier
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/total_token
revision:
- label: consumes_or_consumed
type: slot
- label: Token
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/total_revenue
revision:
- label: has_or_had_revenue
type: slot
- label: Revenue
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- label: has_or_had_currency
type: slot
link_branch: 1
- label: Currency
type: class
link_branch: 1
- label: has_or_had_time_interval
type: slot
link_branch: 2
- label: TimeInterval
type: class
link_branch: 2
- original_slot_id: https://nde.nl/ontology/hc/slot/total_runtime

View file

@ -0,0 +1,73 @@
# starts_or_started_at_location slot
# Origin location relationship following RiC-O naming pattern
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
#
# Used by TransferEvent class for origin location
id: https://nde.nl/ontology/hc/slot/starts_or_started_at_location
name: starts_or_started_at_location_slot
title: Starts Or Started At Location Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
crm: http://www.cidoc-crm.org/cidoc-crm/
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
slots:
starts_or_started_at_location:
slot_uri: prov:atLocation
description: |
Origin location where an event or process started.
**Temporal Semantics** (RiC-O Pattern):
The "startsOrStarted" naming follows RiC-O convention indicating
the location may be historical (where something began).
**Ontological Alignment**:
- **Primary** (`slot_uri`): `prov:atLocation` - PROV-O location
- **Related**: `crm:P27_moved_from` - CIDOC-CRM moved from
- **Related**: `schema:fromLocation` - Schema.org origin
**Use Cases**:
- Transfer event origin (where materials came from)
- Journey/movement start location
- Process initiation location
**Range**: Location class (structured location with name and coordinates)
range: Location
required: false
multivalued: false
inlined: true
related_mappings:
- crm:P27_moved_from
- schema:fromLocation
annotations:
rico_naming_convention: |
Follows RiC-O "startsOrStarted" pattern for temporal location predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
custodian_types: '["*"]'
custodian_types_rationale: Location relationships apply to all heritage types.
specificity_score: 0.4
specificity_rationale: Specialized slot for event/process locations.
comments:
- "Origin location for events/processes"
- "Maps to prov:atLocation with start semantics"
- "RiC-O naming: startsOrStarted indicates temporal aspect"
examples:
- value:
location_name: "Old Storage Facility, Amsterdam"
description: "Origin location for collection transfer"

View file

@ -0,0 +1,58 @@
# timestamp_precision slot
# The precision level of a timestamp
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 42 (no prefix), 43 (singular noun)
id: https://nde.nl/ontology/hc/slot/timestamp_precision
name: timestamp_precision_slot
title: Timestamp Precision Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
time: http://www.w3.org/2006/time#
default_prefix: hc
imports:
- linkml:types
slots:
timestamp_precision:
slot_uri: time:unitType
description: |
The precision level of the timestamp.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `time:unitType` - OWL Time unit type
**Values**:
- year: Precision to the year
- month: Precision to the month
- day: Precision to the day
- hour: Precision to the hour
- minute: Precision to the minute
- second: Precision to the second
- millisecond: Precision to the millisecond
**Usage**:
Can be auto-derived from timestamp_value format if not explicitly provided.
range: string
required: false
multivalued: false
exact_mappings:
- time:unitType
annotations:
migration_date: "2026-01-15"
examples:
- value: "year"
description: "Year precision (e.g., '1995')"
- value: "day"
description: "Day precision (e.g., '1995-06-15')"
- value: "second"
description: "Second precision (e.g., '1995-06-15T10:30:00Z')"

View file

@ -0,0 +1,58 @@
# timestamp_value slot
# The datetime value of a timestamp
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 42 (no prefix), 43 (singular noun)
id: https://nde.nl/ontology/hc/slot/timestamp_value
name: timestamp_value_slot
title: Timestamp Value Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
time: http://www.w3.org/2006/time#
xsd: http://www.w3.org/2001/XMLSchema#
default_prefix: hc
imports:
- linkml:types
slots:
timestamp_value:
slot_uri: time:inXSDDateTimeStamp
description: |
The datetime value as ISO 8601 string.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `time:inXSDDateTimeStamp` - OWL Time position
**Precision by Format**:
- "1995" = year precision
- "1995-06" = month precision
- "1995-06-15" = day precision
- "1995-06-15T10:30:00Z" = full datetime
range: string
required: true
multivalued: false
pattern: "^-?\\d{4}(-\\d{2})?(-\\d{2})?(T\\d{2}:\\d{2}(:\\d{2})?(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?)?$"
exact_mappings:
- time:inXSDDateTimeStamp
close_mappings:
- time:inXSDDate
- time:inXSDgYear
annotations:
migration_date: "2026-01-15"
examples:
- value: "1995"
description: "Year-only precision"
- value: "1995-06-15"
description: "Day precision"
- value: "2024-06-15T14:30:00Z"
description: "Full datetime with timezone"

View file

@ -0,0 +1,69 @@
# url_type slot
# Classification of URL type (website, api, archive, vendor, etc.)
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 51 (no hallucinated refs)
#
# Part of URL class supporting 4 migrations per slot_fixes.yaml
id: https://nde.nl/ontology/hc/slot/url_type
name: url_type_slot
title: URL Type Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
slots:
url_type:
slot_uri: dcterms:type
description: |
Classification of the URL type.
**Common Values**:
- `website` - Main institutional website
- `api` - API endpoint
- `webarchive` - Web archive snapshot (e.g., Wayback Machine)
- `vendor` - Vendor/supplier website
- `catalog` - Online catalog
- `collection` - Collection portal
- `social_media` - Social media profile
- `documentation` - Technical documentation
**Ontological Alignment**:
- **Primary** (`slot_uri`): `dcterms:type` - Dublin Core type
- **Related**: `schema:additionalType` - Schema.org type
**Usage**:
Optional classification to distinguish different types of URLs
associated with the same entity.
range: string
required: false
multivalued: false
related_mappings:
- schema:additionalType
annotations:
custodian_types: '["*"]'
custodian_types_rationale: URL types apply to all heritage types.
specificity_score: 0.2
specificity_rationale: Generic classification applicable across all contexts.
examples:
- value: "website"
description: "Main institutional website"
- value: "api"
description: "API endpoint"
- value: "webarchive"
description: "Web archive snapshot"
- value: "vendor"
description: "Vendor/supplier website"

View file

@ -0,0 +1,60 @@
# url_value slot
# The actual URL/URI string value
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 51 (no hallucinated refs)
#
# Part of URL class supporting 4 migrations per slot_fixes.yaml
id: https://nde.nl/ontology/hc/slot/url_value
name: url_value_slot
title: URL Value Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
slots:
url_value:
slot_uri: schema:url
description: |
The actual URL/URI string value.
**Format**:
Valid URI following RFC 3986. Typically starts with http:// or https://.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `schema:url` - Schema.org URL
- **Exact**: `dcterms:URI` - Dublin Core URI
**Usage**:
Primary value slot within URL class. Contains the actual web address.
Required field for URL instances.
range: uri
required: true
multivalued: false
exact_mappings:
- dcterms:URI
annotations:
custodian_types: '["*"]'
custodian_types_rationale: URL values apply to all heritage types.
specificity_score: 0.15
specificity_rationale: Generic URL value applicable across all contexts.
examples:
- value: "https://www.rijksmuseum.nl/"
description: "Official website URL"
- value: "https://api.example.org/v1/collection"
description: "API endpoint URL"
- value: "https://web.archive.org/web/20240101/https://example.org/"
description: "Web archive snapshot URL"

View file

@ -0,0 +1,70 @@
# wikidata_description slot
# Description text from Wikidata entity
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 51 (no hallucinated refs)
#
# Part of WikiDataEntry class supporting 5 migrations per slot_fixes.yaml
id: https://nde.nl/ontology/hc/slot/wikidata_description
name: wikidata_description_slot
title: Wikidata Description Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
slots:
wikidata_description:
slot_uri: schema:description
description: |
Description text from the Wikidata entity.
**Purpose**:
Provides a brief explanation of the Wikidata entity without
requiring a lookup to Wikidata. Language should match the
`language` field in the containing WikiDataEntry.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `schema:description` - Schema.org description
- **Exact**: `dcterms:description` - Dublin Core description
- **Close**: `skos:definition` - SKOS definition
**Usage**:
Optional. Provides human-readable context explaining what the
Wikidata entity represents. Typically a single sentence.
**Multilingual**:
Description language determined by `language` slot in WikiDataEntry.
range: string
required: false
multivalued: false
exact_mappings:
- dcterms:description
close_mappings:
- skos:definition
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Descriptions apply to all heritage types.
specificity_score: 0.2
specificity_rationale: Generic description slot applicable across all contexts.
examples:
- value: "institution that holds and displays collections"
description: "English description for Q33506 (museum)"
- value: "Dutch national museum in Amsterdam"
description: "Description for Q190804 (Rijksmuseum)"
- value: "collection of books and other media"
description: "Description for Q7075 (library)"

View file

@ -0,0 +1,71 @@
# wikidata_label slot
# Human-readable label from Wikidata entity
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 51 (no hallucinated refs)
#
# Part of WikiDataEntry class supporting 5 migrations per slot_fixes.yaml
id: https://nde.nl/ontology/hc/slot/wikidata_label
name: wikidata_label_slot
title: Wikidata Label Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
rdfs: http://www.w3.org/2000/01/rdf-schema#
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
slots:
wikidata_label:
slot_uri: rdfs:label
description: |
Human-readable label from the Wikidata entity.
**Purpose**:
Provides a display name for the Wikidata entity without requiring
a lookup to Wikidata. Language of label should match the `language`
field in the containing WikiDataEntry.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `rdfs:label` - RDF Schema label
- **Exact**: `skos:prefLabel` - SKOS preferred label
- **Close**: `schema:name` - Schema.org name
**Usage**:
Optional but recommended. Provides human-readable context for
the Q-number identifier. Should be populated when available
from Wikidata API responses.
**Multilingual**:
Label language determined by `language` slot in WikiDataEntry.
range: string
required: false
multivalued: false
exact_mappings:
- skos:prefLabel
close_mappings:
- schema:name
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Labels apply to all heritage types.
specificity_score: 0.2
specificity_rationale: Generic label slot applicable across all contexts.
examples:
- value: "museum"
description: "English label for Q33506"
- value: "Rijksmuseum"
description: "Label for Q190804"
- value: "bibliotheek"
description: "Dutch label for Q7075 (library)"

View file

@ -0,0 +1,72 @@
# wikidata_qid slot
# Wikidata Q-number identifier (e.g., Q12345)
#
# Generation date: 2026-01-15
# Rule compliance: 38 (slot centralization + semantic URI), 51 (no hallucinated refs)
#
# Part of WikiDataEntry class supporting 5 migrations per slot_fixes.yaml
id: https://nde.nl/ontology/hc/slot/wikidata_qid
name: wikidata_qid_slot
title: Wikidata QID Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
wdt: http://www.wikidata.org/prop/direct/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
slots:
wikidata_qid:
slot_uri: wdt:P31
description: |
Wikidata Q-number identifier for the referenced entity.
**Format**:
Q followed by one or more digits (e.g., Q12345, Q190804).
Pattern: `^Q[0-9]+$`
**Ontological Alignment**:
- **Primary** (`slot_uri`): `wdt:P31` - Wikidata direct property
- **Close**: `schema:identifier` - Schema.org identifier
- **Related**: `dcterms:identifier` - Dublin Core identifier
**Usage**:
Primary identifier within WikiDataEntry class. Required field
for identifying the Wikidata entity being referenced.
**Examples**:
- Q33506 - museum (concept)
- Q190804 - Rijksmuseum (institution)
- Q7075 - library (concept)
range: string
required: true
multivalued: false
pattern: "^Q[0-9]+$"
exact_mappings:
- schema:identifier
close_mappings:
- dcterms:identifier
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Wikidata identifiers apply to all heritage types.
specificity_score: 0.2
specificity_rationale: Generic identifier applicable across all contexts.
examples:
- value: "Q33506"
description: "Wikidata Q-number for 'museum' concept"
- value: "Q190804"
description: "Wikidata Q-number for Rijksmuseum"
- value: "Q7075"
description: "Wikidata Q-number for 'library' concept"

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