From 196f8a102307c1ae05cefc1878abf89fc30c933c Mon Sep 17 00:00:00 2001 From: kempersc Date: Fri, 16 Jan 2026 20:09:58 +0100 Subject: [PATCH] Refactor schema slots and classes for improved semantic clarity and consistency - Migrated `temperature_tolerance` to `allows_or_allowed` with `TemperatureDeviation` class for structured temperature tolerance representation. - Replaced `temporal_coverage` with `has_or_had_content` to enhance temporal modeling using the `Content` class. - Updated `FindingAid`, `LegalResponsibilityCollection`, and `EnvironmentalZone` schemas to reflect new slot structures. - Archived obsolete slots: `temperature_tolerance`, `temporal_coverage`, `typical_http_methods`, and `typical_response_formats`. - Introduced `has_or_had_technological_infrastructure` slot to replace `technology_stack`, providing a structured approach to modeling technological components. - Enhanced documentation and examples across affected schemas to ensure clarity on new structures and their usage. --- .../schemas/20251121/linkml/manifest.json | 16 +- .../linkml/modules/classes/Collection.yaml | 29 +- .../modules/classes/CustodianCollection.yaml | 22 +- .../classes/DataServiceEndpointTypes.yaml | 48 ++-- .../linkml/modules/classes/FindingAid.yaml | 3 +- ...pical_http_methods_archived_20260116.yaml} | 0 ...l_response_formats_archived_20260116.yaml} | 0 .../linkml/modules/slots/slot_fixes.yaml | 16 +- schemas/20251121/linkml/manifest.json | 16 +- .../linkml/modules/classes/Collection.yaml | 8 +- .../modules/classes/CustodianCollection.yaml | 22 +- .../modules/classes/DataServiceEndpoint.yaml | 2 +- .../modules/classes/EnvironmentalZone.yaml | 35 ++- .../linkml/modules/classes/FindingAid.yaml | 3 +- .../LegalResponsibilityCollection.yaml | 16 +- .../classes/StorageConditionPolicy.yaml | 31 ++- .../modules/classes/TemperatureDeviation.yaml | 262 ++++++++++++++++++ ...perature_tolerance_archived_20260116.yaml} | 0 .../temporal_coverage_archived_20260116.yaml} | 0 ...pical_http_methods_archived_20260116.yaml} | 0 ...l_response_formats_archived_20260116.yaml} | 0 ...s_or_had_technological_infrastructure.yaml | 99 +++++++ .../linkml/modules/slots/slot_fixes.yaml | 45 ++- 23 files changed, 553 insertions(+), 120 deletions(-) rename frontend/public/schemas/20251121/linkml/modules/slots/{typical_http_methods.yaml => archive/typical_http_methods_archived_20260116.yaml} (100%) rename frontend/public/schemas/20251121/linkml/modules/slots/{typical_response_formats.yaml => archive/typical_response_formats_archived_20260116.yaml} (100%) create mode 100644 schemas/20251121/linkml/modules/classes/TemperatureDeviation.yaml rename schemas/20251121/linkml/modules/slots/{temperature_tolerance.yaml => archive/temperature_tolerance_archived_20260116.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{temporal_coverage.yaml => archive/temporal_coverage_archived_20260116.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{typical_http_methods.yaml => archive/typical_http_methods_archived_20260116.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{typical_response_formats.yaml => archive/typical_response_formats_archived_20260116.yaml} (100%) create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_technological_infrastructure.yaml diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json index a10bec5b06..cdf9f5365c 100644 --- a/frontend/public/schemas/20251121/linkml/manifest.json +++ b/frontend/public/schemas/20251121/linkml/manifest.json @@ -1,12 +1,12 @@ { - "generated": "2026-01-16T18:42:29.718Z", + "generated": "2026-01-16T18:44:38.338Z", "schemaRoot": "/schemas/20251121/linkml", - "totalFiles": 3004, + "totalFiles": 3002, "categoryCounts": { "main": 4, "class": 823, "enum": 153, - "slot": 2020, + "slot": 2018, "module": 4 }, "categories": [ @@ -14947,16 +14947,6 @@ "path": "modules/slots/track_id.yaml", "category": "slot" }, - { - "name": "typical_http_methods", - "path": "modules/slots/typical_http_methods.yaml", - "category": "slot" - }, - { - "name": "typical_response_formats", - "path": "modules/slots/typical_response_formats.yaml", - "category": "slot" - }, { "name": "unit_code", "path": "modules/slots/unit_code.yaml", diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/Collection.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/Collection.yaml index 5efafb6a6b..a0260338bd 100644 --- a/frontend/public/schemas/20251121/linkml/modules/classes/Collection.yaml +++ b/frontend/public/schemas/20251121/linkml/modules/classes/Collection.yaml @@ -126,7 +126,7 @@ classes: - has_or_had_sub_collection - subject_area - template_specificity - - temporal_coverage + - has_or_had_content # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) - temporal_extent # was: valid_from + valid_to - migrated per Rule 53 slot_usage: collection_id: @@ -185,13 +185,22 @@ classes: description: 125 artworks - value: 342 description: 342 manuscripts - temporal_coverage: - range: TimeSpan + has_or_had_content: + # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + range: Content + multivalued: true + inlined_as_list: true + description: | + Content scope of the collection including temporal, spatial, and topical coverage. + MIGRATED from temporal_coverage per slot_fixes.yaml (Rule 53/56, 2026-01-16). + Uses Content class which includes temporal_extent for time periods. examples: - value: - start_date: '1602-01-01' - end_date: '1799-12-31' - description: VOC records temporal coverage + has_or_had_label: "VOC Trade Records" + temporal_extent: + begin_of_the_begin: '1602-01-01' + end_of_the_end: '1799-12-31' + description: VOC records content with temporal coverage subject_area: range: string multivalued: true @@ -354,9 +363,11 @@ classes: collection_type_ref: https://nde.nl/ontology/hc/collection-type/fonds record_set_type: rico:Fonds extent: 1,250 linear meters - temporal_coverage: - start_date: '1602-01-01' - end_date: '1799-12-31' + has_or_had_content: # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + - has_or_had_label: "VOC Administrative Records" + temporal_extent: + begin_of_the_begin: '1602-01-01' + end_of_the_end: '1799-12-31' subject_area: - Colonial trade - Maritime history diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/CustodianCollection.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/CustodianCollection.yaml index 05f02ec11a..ebf6e35902 100644 --- a/frontend/public/schemas/20251121/linkml/modules/classes/CustodianCollection.yaml +++ b/frontend/public/schemas/20251121/linkml/modules/classes/CustodianCollection.yaml @@ -16,7 +16,8 @@ imports: - ../slots/collection_description - ../slots/collection_type - ../slots/collection_scope - - ../slots/temporal_coverage + - ../slots/has_or_had_content # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + - ./Content - ../slots/extent - ../slots/managing_unit - ../slots/temporal_extent # was: valid_from + valid_to - migrated per Rule 53 @@ -95,7 +96,7 @@ classes: - refers_to_custodian - specificity_annotation - template_specificity - - temporal_coverage + - has_or_had_content # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) - temporal_extent # was: valid_from + valid_to - migrated per Rule 53 - is_or_was_derived_from # was: was_derived_from - migrated per Rule 53 - is_or_was_generated_by # was: was_generated_by - migrated per Rule 53 @@ -129,9 +130,22 @@ classes: collection_scope: range: string required: false - temporal_coverage: - range: TimeSpan + has_or_had_content: + # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + range: Content + multivalued: true + inlined_as_list: true required: false + description: | + Content scope including temporal, spatial, and topical coverage. + MIGRATED from temporal_coverage per slot_fixes.yaml (Rule 53/56, 2026-01-16). + examples: + - value: + has_or_had_label: "Colonial Archives" + temporal_extent: + begin_of_the_begin: '1602-01-01' + end_of_the_end: '1800-12-31' + description: Colonial period content coverage extent: range: string required: false diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/DataServiceEndpointTypes.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/DataServiceEndpointTypes.yaml index 3df04b6fa6..64ec35c92d 100644 --- a/frontend/public/schemas/20251121/linkml/modules/classes/DataServiceEndpointTypes.yaml +++ b/frontend/public/schemas/20251121/linkml/modules/classes/DataServiceEndpointTypes.yaml @@ -56,9 +56,11 @@ classes: equals_string: SRU specification_url: ifabsent: uri(http://www.loc.gov/standards/sru/) - typical_response_formats: + has_or_had_format: # was: typical_response_formats - migrated per Rule 53 (2026-01-16) + description: Typical response format for SRU endpoints ifabsent: string(application/xml) - typical_http_methods: + has_or_had_method: # was: typical_http_methods - migrated per Rule 53 (2026-01-16) + description: Typical HTTP method for SRU endpoints ifabsent: string(GET) comments: - Library-focused search protocol - successor to Z39.50 @@ -99,9 +101,11 @@ classes: equals_string: OpenSearch specification_url: ifabsent: uri(https://opensearch.org/) - typical_response_formats: + has_or_had_format: # was: typical_response_formats - migrated per Rule 53 (2026-01-16) + description: Typical response formats for OpenSearch endpoints equals_expression: '["application/opensearchdescription+xml", "application/atom+xml", "application/rss+xml"]' - typical_http_methods: + has_or_had_method: # was: typical_http_methods - migrated per Rule 53 (2026-01-16) + description: Typical HTTP method for OpenSearch endpoints ifabsent: string(GET) comments: - Federated search standard - browser integration support @@ -148,9 +152,11 @@ classes: equals_string: IIIF Image API specification_url: ifabsent: uri(https://iiif.io/api/image/) - typical_response_formats: + has_or_had_format: # was: typical_response_formats - migrated per Rule 53 (2026-01-16) + description: Typical response formats for IIIF Image API endpoints equals_expression: '["image/jpeg", "image/png", "image/tiff", "image/webp"]' - typical_http_methods: + has_or_had_method: # was: typical_http_methods - migrated per Rule 53 (2026-01-16) + description: Typical HTTP method for IIIF Image API endpoints ifabsent: string(GET) comments: - International Image Interoperability Framework - Image API @@ -196,9 +202,11 @@ classes: equals_string: IIIF Presentation API specification_url: ifabsent: uri(https://iiif.io/api/presentation/) - typical_response_formats: + has_or_had_format: # was: typical_response_formats - migrated per Rule 53 (2026-01-16) + description: Typical response format for IIIF Presentation API endpoints ifabsent: string(application/ld+json) - typical_http_methods: + has_or_had_method: # was: typical_http_methods - migrated per Rule 53 (2026-01-16) + description: Typical HTTP method for IIIF Presentation API endpoints ifabsent: string(GET) comments: - International Image Interoperability Framework - Presentation API @@ -243,9 +251,11 @@ classes: ifabsent: string(1.1) specification_url: ifabsent: uri(https://www.w3.org/TR/sparql11-protocol/) - typical_response_formats: + has_or_had_format: # was: typical_response_formats - migrated per Rule 53 (2026-01-16) + description: Typical response formats for SPARQL endpoints equals_expression: '["application/sparql-results+json", "application/sparql-results+xml", "text/turtle"]' - typical_http_methods: + has_or_had_method: # was: typical_http_methods - migrated per Rule 53 (2026-01-16) + description: Typical HTTP methods for SPARQL endpoints equals_expression: '["GET", "POST"]' comments: - W3C standard for querying RDF graphs @@ -286,9 +296,11 @@ classes: equals_string: GraphQL specification_url: ifabsent: uri(https://graphql.org/) - typical_response_formats: + has_or_had_format: # was: typical_response_formats - migrated per Rule 53 (2026-01-16) + description: Typical response format for GraphQL endpoints ifabsent: string(application/json) - typical_http_methods: + has_or_had_method: # was: typical_http_methods - migrated per Rule 53 (2026-01-16) + description: Typical HTTP method for GraphQL endpoints ifabsent: string(POST) comments: - Modern API query language - growing adoption in GLAM @@ -328,9 +340,11 @@ classes: equals_string: Atom specification_url: ifabsent: uri(https://www.rfc-editor.org/rfc/rfc4287) - typical_response_formats: + has_or_had_format: # was: typical_response_formats - migrated per Rule 53 (2026-01-16) + description: Typical response format for Atom feed endpoints ifabsent: string(application/atom+xml) - typical_http_methods: + has_or_had_method: # was: typical_http_methods - migrated per Rule 53 (2026-01-16) + description: Typical HTTP method for Atom feed endpoints ifabsent: string(GET) comments: - IETF standard for content syndication @@ -368,9 +382,11 @@ classes: slot_usage: protocol_name: equals_string: RSS - typical_response_formats: + has_or_had_format: # was: typical_response_formats - migrated per Rule 53 (2026-01-16) + description: Typical response format for RSS feed endpoints ifabsent: string(application/rss+xml) - typical_http_methods: + has_or_had_method: # was: typical_http_methods - migrated per Rule 53 (2026-01-16) + description: Typical HTTP method for RSS feed endpoints ifabsent: string(GET) comments: - Legacy syndication format - still widely supported diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/FindingAid.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/FindingAid.yaml index bd729e87d1..008582f7ab 100644 --- a/frontend/public/schemas/20251121/linkml/modules/classes/FindingAid.yaml +++ b/frontend/public/schemas/20251121/linkml/modules/classes/FindingAid.yaml @@ -27,7 +27,8 @@ imports: # REMOVED 2026-01-14: valid_from + valid_to - migrated to temporal_extent (Rule 53) - ../slots/id - ../slots/description - - ../slots/temporal_coverage + - ../slots/has_or_had_content # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + - ./Content - ../slots/has_or_had_access_restriction - ../slots/has_or_had_web_claim - ../slots/language diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/typical_http_methods.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/archive/typical_http_methods_archived_20260116.yaml similarity index 100% rename from frontend/public/schemas/20251121/linkml/modules/slots/typical_http_methods.yaml rename to frontend/public/schemas/20251121/linkml/modules/slots/archive/typical_http_methods_archived_20260116.yaml diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/typical_response_formats.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/archive/typical_response_formats_archived_20260116.yaml similarity index 100% rename from frontend/public/schemas/20251121/linkml/modules/slots/typical_response_formats.yaml rename to frontend/public/schemas/20251121/linkml/modules/slots/archive/typical_response_formats_archived_20260116.yaml diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml index 7f3bc94498..38e00b72b5 100644 --- a/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml +++ b/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml @@ -2827,11 +2827,9 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/typical_response_formats processed: status: true - timestamp: '2026-01-15T19:45:00Z' - session: session-2026-01-15-slot-migrations - notes: 'FULLY MIGRATED: DataServiceEndpointType.yaml - typical_response_formats REMOVED. - Using has_or_had_format slot (keeping range: string for simplicity). Inline attribute - removed, slot_usage added. Slot archived to archive/typical_response_formats_archived_20260115.yaml.' + timestamp: '2026-01-16T14:00:00Z' + session: session-2026-01-16-slot-migrations + notes: 'FULLY MIGRATED: DataServiceEndpointType.yaml and DataServiceEndpointTypes.yaml (8 classes: SRUEndpoint, OpenSearch, IIIFImageAPI, IIIFPresentationAPI, SPARQLEndpoint, GraphQLEndpoint, AtomFeed, RSSFeed) - typical_response_formats REMOVED. Using has_or_had_format slot (keeping range: string for simplicity). Slot archived to archive/typical_response_formats_archived_20260116.yaml.' revision: - label: has_or_had_format type: slot @@ -2867,11 +2865,9 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/typical_http_methods processed: status: true - timestamp: '2026-01-15T19:45:00Z' - session: session-2026-01-15-slot-migrations - notes: 'FULLY MIGRATED: DataServiceEndpointType.yaml - typical_http_methods REMOVED. - Using has_or_had_method slot (keeping range: string for simplicity). Inline attribute - removed, slot_usage added. Slot archived to archive/typical_http_methods_archived_20260115.yaml.' + timestamp: '2026-01-16T14:00:00Z' + session: session-2026-01-16-slot-migrations + notes: 'FULLY MIGRATED: DataServiceEndpointType.yaml and DataServiceEndpointTypes.yaml (8 classes: SRUEndpoint, OpenSearch, IIIFImageAPI, IIIFPresentationAPI, SPARQLEndpoint, GraphQLEndpoint, AtomFeed, RSSFeed) - typical_http_methods REMOVED. Using has_or_had_method slot (keeping range: string for simplicity). Slot archived to archive/typical_http_methods_archived_20260116.yaml.' revision: - label: has_or_had_method type: slot diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json index 9fde46817b..4871065cb3 100644 --- a/schemas/20251121/linkml/manifest.json +++ b/schemas/20251121/linkml/manifest.json @@ -1,12 +1,12 @@ { - "generated": "2026-01-16T18:43:50.877Z", + "generated": "2026-01-16T19:09:58.672Z", "schemaRoot": "/schemas/20251121/linkml", - "totalFiles": 3004, + "totalFiles": 3002, "categoryCounts": { "main": 4, "class": 823, "enum": 153, - "slot": 2020, + "slot": 2018, "module": 4 }, "categories": [ @@ -14947,16 +14947,6 @@ "path": "modules/slots/track_id.yaml", "category": "slot" }, - { - "name": "typical_http_methods", - "path": "modules/slots/typical_http_methods.yaml", - "category": "slot" - }, - { - "name": "typical_response_formats", - "path": "modules/slots/typical_response_formats.yaml", - "category": "slot" - }, { "name": "unit_code", "path": "modules/slots/unit_code.yaml", diff --git a/schemas/20251121/linkml/modules/classes/Collection.yaml b/schemas/20251121/linkml/modules/classes/Collection.yaml index 3100f6456b..a0260338bd 100644 --- a/schemas/20251121/linkml/modules/classes/Collection.yaml +++ b/schemas/20251121/linkml/modules/classes/Collection.yaml @@ -363,9 +363,11 @@ classes: collection_type_ref: https://nde.nl/ontology/hc/collection-type/fonds record_set_type: rico:Fonds extent: 1,250 linear meters - temporal_coverage: - start_date: '1602-01-01' - end_date: '1799-12-31' + has_or_had_content: # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + - has_or_had_label: "VOC Administrative Records" + temporal_extent: + begin_of_the_begin: '1602-01-01' + end_of_the_end: '1799-12-31' subject_area: - Colonial trade - Maritime history diff --git a/schemas/20251121/linkml/modules/classes/CustodianCollection.yaml b/schemas/20251121/linkml/modules/classes/CustodianCollection.yaml index 05f02ec11a..ebf6e35902 100644 --- a/schemas/20251121/linkml/modules/classes/CustodianCollection.yaml +++ b/schemas/20251121/linkml/modules/classes/CustodianCollection.yaml @@ -16,7 +16,8 @@ imports: - ../slots/collection_description - ../slots/collection_type - ../slots/collection_scope - - ../slots/temporal_coverage + - ../slots/has_or_had_content # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + - ./Content - ../slots/extent - ../slots/managing_unit - ../slots/temporal_extent # was: valid_from + valid_to - migrated per Rule 53 @@ -95,7 +96,7 @@ classes: - refers_to_custodian - specificity_annotation - template_specificity - - temporal_coverage + - has_or_had_content # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) - temporal_extent # was: valid_from + valid_to - migrated per Rule 53 - is_or_was_derived_from # was: was_derived_from - migrated per Rule 53 - is_or_was_generated_by # was: was_generated_by - migrated per Rule 53 @@ -129,9 +130,22 @@ classes: collection_scope: range: string required: false - temporal_coverage: - range: TimeSpan + has_or_had_content: + # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + range: Content + multivalued: true + inlined_as_list: true required: false + description: | + Content scope including temporal, spatial, and topical coverage. + MIGRATED from temporal_coverage per slot_fixes.yaml (Rule 53/56, 2026-01-16). + examples: + - value: + has_or_had_label: "Colonial Archives" + temporal_extent: + begin_of_the_begin: '1602-01-01' + end_of_the_end: '1800-12-31' + description: Colonial period content coverage extent: range: string required: false diff --git a/schemas/20251121/linkml/modules/classes/DataServiceEndpoint.yaml b/schemas/20251121/linkml/modules/classes/DataServiceEndpoint.yaml index 290766f23f..4252435cae 100644 --- a/schemas/20251121/linkml/modules/classes/DataServiceEndpoint.yaml +++ b/schemas/20251121/linkml/modules/classes/DataServiceEndpoint.yaml @@ -291,7 +291,7 @@ classes: \nThis slot links an INSTANCE (DataServiceEndpoint) to its TYPE classification\n(DataServiceEndpointType), following\ \ the same architectural pattern as\nCustodian/CustodianType.\n\n```\nDataServiceEndpoint (INSTANCE) DataServiceEndpointType\ \ (TYPE)\n├── endpoint_url ├── protocol_name\n├── status ├── protocol_version\n\ - ├── is_or_was_required ├── specification_url\n└── endpoint_type ────────────────►└── typical_response_formats\n\ + ├── is_or_was_required ├── specification_url\n└── endpoint_type ────────────────►└── has_or_had_format\n\ ```\n\n**Why Both `protocol` and `endpoint_type`?**\n\n- `protocol` (enum): Simple string classification for quick\ \ filtering\n- `endpoint_type` (class reference): Rich type metadata with SKOS hierarchy,\n specification URLs,\ \ and semantic relationships\n\n**Example:**\n\n```yaml\ndata_service_endpoint:\n endpoint_id: \"https://nde.nl/hc/endpoint/na-oai-pmh\"\ diff --git a/schemas/20251121/linkml/modules/classes/EnvironmentalZone.yaml b/schemas/20251121/linkml/modules/classes/EnvironmentalZone.yaml index d8560102e4..51628732bf 100644 --- a/schemas/20251121/linkml/modules/classes/EnvironmentalZone.yaml +++ b/schemas/20251121/linkml/modules/classes/EnvironmentalZone.yaml @@ -18,7 +18,9 @@ imports: - ./StorageCondition - ./EnvironmentalZoneType - ./EnvironmentalZoneTypes - - ../slots/temperature_tolerance + # REMOVED 2026-01-16: temperature_tolerance - migrated to allows_or_allowed with TemperatureDeviation class (Rule 53/56) + - ../slots/allows_or_allowed + - ./TemperatureDeviation - ../slots/humidity_tolerance - ../slots/contains_or_contained_contains_unit - ../slots/environmental_requirement @@ -102,7 +104,9 @@ classes: slots: - contains_or_contained_contains_unit - environmental_requirement + # REMOVED 2026-01-16: humidity_tolerance - pending migration to allows_or_allowed with HumidityDeviation - humidity_tolerance + - allows_or_allowed # was: temperature_tolerance - migrated per Rule 53/56 (2026-01-16) - max_annual_light_exposure - max_light_lux - monitoring_platform @@ -112,7 +116,7 @@ classes: - specificity_annotation # REMOVED 2026-01-15: target_relative_humidity, target_temperature_celsius - migrated to has_or_had_setpoint - has_or_had_setpoint - - temperature_tolerance + # REMOVED 2026-01-16: temperature_tolerance - migrated to allows_or_allowed with TemperatureDeviation - template_specificity - temporal_extent # was: valid_from + valid_to - migrated per Rule 53 - has_or_had_description @@ -184,11 +188,30 @@ classes: setpoint_tolerance: 5.0 setpoint_unit: PERCENT description: Standard archive zone setpoints - temperature_tolerance: - range: float + # REMOVED 2026-01-16: temperature_tolerance - migrated to allows_or_allowed with TemperatureDeviation + allows_or_allowed: + range: TemperatureDeviation + multivalued: true + inlined: true + inlined_as_list: true + description: | + Allowed temperature deviation/tolerance for this zone. + MIGRATED 2026-01-16: Replaces temperature_tolerance (float). + Uses TemperatureDeviation class for structured tolerance data with unit and ISO standard reference. examples: - - value: 2.0 - - value: 3.0 + - value: + - deviation_value: 2.0 + deviation_direction: PLUS_MINUS + has_or_had_measurement_unit: + unit_type: DEGREE_CELSIUS + unit_symbol: "°C" + iso_standard_reference: "ISO 11799:2015" + description: Standard archive tolerance (±2°C) + - value: + - deviation_value: 3.0 + deviation_direction: PLUS_MINUS + iso_standard_reference: "ISO 18911:2010" + description: Cold storage tolerance (±3°C) # REMOVED 2026-01-15: target_relative_humidity - migrated to has_or_had_setpoint above humidity_tolerance: range: float diff --git a/schemas/20251121/linkml/modules/classes/FindingAid.yaml b/schemas/20251121/linkml/modules/classes/FindingAid.yaml index bd729e87d1..008582f7ab 100644 --- a/schemas/20251121/linkml/modules/classes/FindingAid.yaml +++ b/schemas/20251121/linkml/modules/classes/FindingAid.yaml @@ -27,7 +27,8 @@ imports: # REMOVED 2026-01-14: valid_from + valid_to - migrated to temporal_extent (Rule 53) - ../slots/id - ../slots/description - - ../slots/temporal_coverage + - ../slots/has_or_had_content # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + - ./Content - ../slots/has_or_had_access_restriction - ../slots/has_or_had_web_claim - ../slots/language diff --git a/schemas/20251121/linkml/modules/classes/LegalResponsibilityCollection.yaml b/schemas/20251121/linkml/modules/classes/LegalResponsibilityCollection.yaml index 72fbcbde08..9c4373d9c1 100644 --- a/schemas/20251121/linkml/modules/classes/LegalResponsibilityCollection.yaml +++ b/schemas/20251121/linkml/modules/classes/LegalResponsibilityCollection.yaml @@ -185,9 +185,11 @@ classes: collection_type: - archival_records collection_scope: Provincial government records of Noord-Holland - temporal_coverage: - begin_of_the_begin: '1289-01-01' - end_of_the_end: null + has_or_had_content: # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + - has_or_had_label: "Provincial Government Records" + temporal_extent: + begin_of_the_begin: '1289-01-01' + end_of_the_end: null extent: 45 kilometers of shelving, approximately 2.5 million documents responsible_legal_entity: https://nde.nl/ontology/hc/legal/nha-organization legal_responsibility_basis: 'Archiefwet 1995 (Dutch Archives Act), Article 41: "De provincie draagt zorg voor de @@ -208,9 +210,11 @@ classes: collection_type: - museum_objects collection_scope: Dutch art and history from the Middle Ages to present - temporal_coverage: - begin_of_the_begin: '1200-01-01' - end_of_the_end: null + has_or_had_content: # was: temporal_coverage - migrated per Rule 53/56 (2026-01-16) + - has_or_had_label: "National Art Collection" + temporal_extent: + begin_of_the_begin: '1200-01-01' + end_of_the_end: null extent: Approximately 1 million objects responsible_legal_entity: https://nde.nl/ontology/hc/legal/rijksmuseum-foundation legal_responsibility_basis: 'Erfgoedwet (Heritage Act) 2016, Article 2.1 + Stichting Rijksmuseum statute (1885): "Het diff --git a/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml b/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml index b80764e838..6afdd91fc4 100644 --- a/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml +++ b/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml @@ -20,7 +20,9 @@ imports: - ../slots/policy_id - ../slots/policy_name - ../slots/note - - ../slots/temperature_tolerance + # REMOVED 2026-01-16: temperature_tolerance - migrated to allows_or_allowed with TemperatureDeviation class (Rule 53/56) + - ../slots/allows_or_allowed + - ./TemperatureDeviation - ../slots/humidity_tolerance - ../slots/has_air_changes_per_hour - ../slots/fire_suppression_type @@ -92,6 +94,7 @@ classes: - humidity_min - humidity_target - humidity_tolerance + - allows_or_allowed # was: temperature_tolerance - migrated per Rule 53/56 (2026-01-16) - light_max_lux - note - particulate_max @@ -108,7 +111,7 @@ classes: - has_or_had_security_level # was: storage_security_level - migrated per Rule 53 (2025-01-15) # REMOVED 2026-01-15: temperature_max, temperature_min, temperature_target - migrated to has_or_had_setpoint - has_or_had_setpoint - - temperature_tolerance + # REMOVED 2026-01-16: temperature_tolerance - migrated to allows_or_allowed with TemperatureDeviation - template_specificity # REMOVED 2026-01-14: uv_filtered_required - migrated to is_or_was_required with RequirementStatus # MIGRATED 2026-01-16: is_or_was_required → has_or_had_requirement_status @@ -153,13 +156,25 @@ classes: setpoint_unit: DEGREE_CELSIUS iso_standard_reference: "ISO 11799:2015" description: Archive temperature setpoint - temperature_tolerance: - range: float - unit: - ucum_code: Cel + # REMOVED 2026-01-16: temperature_tolerance - migrated to allows_or_allowed with TemperatureDeviation + allows_or_allowed: + range: TemperatureDeviation + multivalued: true + inlined: true + inlined_as_list: true + description: | + Allowed temperature deviation/tolerance for this policy. + MIGRATED 2026-01-16: Replaces temperature_tolerance (float). + Uses TemperatureDeviation class for structured tolerance data. examples: - - value: 2.0 - description: ±2°C tolerance + - value: + - deviation_value: 2.0 + deviation_direction: PLUS_MINUS + has_or_had_measurement_unit: + unit_type: DEGREE_CELSIUS + unit_symbol: "°C" + iso_standard_reference: "ISO 11799:2015" + description: ±2°C tolerance per ISO 11799 humidity_target: range: float minimum_value: 0.0 diff --git a/schemas/20251121/linkml/modules/classes/TemperatureDeviation.yaml b/schemas/20251121/linkml/modules/classes/TemperatureDeviation.yaml new file mode 100644 index 0000000000..3b4ebbdc2c --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/TemperatureDeviation.yaml @@ -0,0 +1,262 @@ +# TemperatureDeviation - Structured temperature tolerance/deviation specification +# Created per slot_fixes.yaml migration for: temperature_tolerance +# Migration: temperature_tolerance → allows_or_allowed + TemperatureDeviation +# Creation date: 2026-01-16 +# Rule 53: No bespoke slots - use generic, reusable patterns +# Rule 56: Semantic consistency over simplicity + +id: https://nde.nl/ontology/hc/class/TemperatureDeviation +name: TemperatureDeviation +title: Temperature Deviation Class + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + qudt: http://qudt.org/schema/qudt/ + brick: https://brickschema.org/schema/Brick# + schema: http://schema.org/ + crm: http://www.cidoc-crm.org/cidoc-crm/ + wd: http://www.wikidata.org/entity/ + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_quantity + - ../slots/has_or_had_measurement_unit + - ../slots/has_or_had_description + - ../slots/has_or_had_label + - ./Quantity + - ./MeasureUnit + +classes: + TemperatureDeviation: + class_uri: qudt:Tolerance + description: >- + Structured specification of allowed temperature deviation/tolerance. + + **DEFINITION**: + + Represents the acceptable range of temperature variation from a setpoint, + typically expressed as ±X degrees Celsius (e.g., ±2°C). + + **ONTOLOGY MAPPING**: + + - class_uri: qudt:Tolerance (QUDT tolerance concept) + - close_mapping: brick:Temperature_Deadband (building automation) + + **ISO STANDARD REFERENCE VALUES**: + + | Standard | Context | Typical Tolerance | + |----------|---------|-------------------| + | ISO 11799:2015 | Archives | ±2°C daily | + | ISO 18911:2010 | Cold/Frozen Storage | ±2°C | + | BS 4971:2017 | UK Sensitive Materials | ±1°C | + | EN 16893:2018 | Museums | ±2°C recommended | + + **PRESERVATION CONTEXT**: + + Temperature fluctuations cause dimensional changes in hygroscopic materials + (paper, parchment, leather, textiles). Repeated cycling leads to mechanical + fatigue and cumulative damage. Tighter tolerances are critical for mixed + media objects (e.g., oil paintings on canvas). + + **WHY NOT JUST FLOAT?** + + Simple float fields like `temperature_tolerance: 2.0` lose important context: + - What's the unit? (Celsius? Fahrenheit?) + - Is this plus/minus or just plus? + - What standard is this based on? + - When was this tolerance established? + + **MIGRATION NOTE**: + + This class replaces the bespoke `temperature_tolerance` slot (float range). + Used via the generic `allows_or_allowed` slot per Rule 53/56. + + **EXAMPLE**: + + ```yaml + EnvironmentalZone: + allows_or_allowed: + - deviation_value: 2.0 + deviation_direction: PLUS_MINUS + has_or_had_measurement_unit: + unit_type: DEGREE_CELSIUS + unit_symbol: "°C" + iso_standard_reference: "ISO 11799:2015" + ``` + + exact_mappings: + - qudt:Tolerance + + close_mappings: + - brick:Temperature_Deadband + - crm:E54_Dimension + + related_mappings: + - wd:Q11466 # temperature + - schema:additionalProperty + + slots: + - has_or_had_quantity + - has_or_had_measurement_unit + - has_or_had_description + - has_or_had_label + + attributes: + deviation_value: + range: float + required: true + minimum_value: 0.5 + maximum_value: 5.0 + description: >- + Numeric value of the allowed deviation (e.g., 2.0 for ±2°C). + + Typical ranges: + - 0.5-1.0: Precision cold storage, sensitive materials + - 1.0-2.0: Standard archive/museum storage + - 2.0-3.0: General storage, less sensitive materials + examples: + - value: 2.0 + description: Standard tolerance for archive storage (ISO 11799) + - value: 1.0 + description: Tight tolerance for sensitive materials (BS 4971) + - value: 0.5 + description: Very tight tolerance for precision cold storage + + deviation_direction: + range: DeviationDirectionEnum + required: false + ifabsent: 'string(PLUS_MINUS)' + description: >- + Direction of deviation. + + - PLUS_MINUS: Symmetric tolerance (±2°C) - most common + - PLUS: Only above target allowed (+2°C) + - MINUS: Only below target allowed (-2°C) + examples: + - value: PLUS_MINUS + description: Symmetric tolerance (±2°C) + - value: PLUS + description: Asymmetric - only positive deviation allowed + + iso_standard_reference: + range: string + required: false + description: >- + ISO or other standard this tolerance is based on. + examples: + - value: "ISO 11799:2015" + description: Archive storage standard + - value: "ISO 18911:2010" + description: Cold storage standard + - value: "BS 4971:2017" + description: UK conservation standard + + slot_usage: + has_or_had_quantity: + range: Quantity + required: false + inlined: true + description: >- + Alternative structured representation using Quantity class. + For complex scenarios requiring full provenance tracking. + examples: + - value: + quantity_value: 2.0 + quantity_type: TEMPERATURE_TOLERANCE + has_or_had_measurement_unit: + unit_type: DEGREE_CELSIUS + unit_symbol: "°C" + description: Structured quantity representation + + has_or_had_measurement_unit: + range: MeasureUnit + required: false + inlined: true + description: >- + Unit of measurement (typically degree Celsius). + If not specified, defaults to Celsius per ISO standards. + examples: + - value: + unit_type: DEGREE_CELSIUS + unit_symbol: "°C" + description: Celsius unit (default) + + has_or_had_description: + range: string + required: false + description: >- + Additional notes about this tolerance setting. + examples: + - value: "Tighter tolerance required for daguerreotype collection" + + has_or_had_label: + range: string + required: false + description: >- + Human-readable label for this tolerance specification. + examples: + - value: "Archive Standard Tolerance" + - value: "Cold Storage Precision Tolerance" + + comments: + - MIGRATED from temperature_tolerance slot (float) per Rule 53/56 + - Used via allows_or_allowed slot for temporal flexibility + - Companion to humidity_tolerance migration (HumidityDeviation class) + - Setpoint class already handles target values - this handles deviations + + see_also: + - https://www.iso.org/standard/63810.html # ISO 11799 + - https://www.iso.org/standard/46602.html # ISO 18911 + - http://qudt.org/schema/qudt/Tolerance + + annotations: + specificity_score: "0.65" + specificity_rationale: "Specialized for environmental control in storage facilities" + qudt_unit: "unit:DEG_C" + ucum_code: "Cel" + iso_reference: "ISO 11799:2015, ISO 18911:2010, BS 4971:2017" + preservation_parameter: "true" + + examples: + - value: + deviation_value: 2.0 + deviation_direction: PLUS_MINUS + has_or_had_measurement_unit: + unit_type: DEGREE_CELSIUS + unit_symbol: "°C" + iso_standard_reference: "ISO 11799:2015" + has_or_had_label: "Standard Archive Tolerance" + has_or_had_description: "Per ISO 11799:2015 for paper-based materials" + description: Standard archive storage tolerance (±2°C) + + - value: + deviation_value: 1.0 + deviation_direction: PLUS_MINUS + has_or_had_measurement_unit: + unit_type: DEGREE_CELSIUS + unit_symbol: "°C" + iso_standard_reference: "BS 4971:2017" + has_or_had_label: "Sensitive Materials Tolerance" + description: Tight tolerance for sensitive materials (±1°C) + + - value: + deviation_value: 0.5 + deviation_direction: PLUS_MINUS + iso_standard_reference: "ISO 18911:2010" + has_or_had_description: "Precision cold storage for film negatives" + description: Very tight tolerance for precision cold storage + +enums: + DeviationDirectionEnum: + description: >- + Direction of allowed deviation from a setpoint. + permissible_values: + PLUS_MINUS: + description: Symmetric tolerance - deviation allowed in both directions (±) + PLUS: + description: Asymmetric - only positive deviation allowed (+) + MINUS: + description: Asymmetric - only negative deviation allowed (-) diff --git a/schemas/20251121/linkml/modules/slots/temperature_tolerance.yaml b/schemas/20251121/linkml/modules/slots/archive/temperature_tolerance_archived_20260116.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/temperature_tolerance.yaml rename to schemas/20251121/linkml/modules/slots/archive/temperature_tolerance_archived_20260116.yaml diff --git a/schemas/20251121/linkml/modules/slots/temporal_coverage.yaml b/schemas/20251121/linkml/modules/slots/archive/temporal_coverage_archived_20260116.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/temporal_coverage.yaml rename to schemas/20251121/linkml/modules/slots/archive/temporal_coverage_archived_20260116.yaml diff --git a/schemas/20251121/linkml/modules/slots/typical_http_methods.yaml b/schemas/20251121/linkml/modules/slots/archive/typical_http_methods_archived_20260116.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/typical_http_methods.yaml rename to schemas/20251121/linkml/modules/slots/archive/typical_http_methods_archived_20260116.yaml diff --git a/schemas/20251121/linkml/modules/slots/typical_response_formats.yaml b/schemas/20251121/linkml/modules/slots/archive/typical_response_formats_archived_20260116.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/typical_response_formats.yaml rename to schemas/20251121/linkml/modules/slots/archive/typical_response_formats_archived_20260116.yaml diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_technological_infrastructure.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_technological_infrastructure.yaml new file mode 100644 index 0000000000..1c57c4cb5a --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_technological_infrastructure.yaml @@ -0,0 +1,99 @@ +# has_or_had_technological_infrastructure slot +# Generic slot for modeling technical infrastructure components with temporal semantics. +# +# Created: 2026-01-16 +# Rule compliance: 39 (RiC-O naming), 53 (no bespoke slots), 55 (broaden ranges), 56 (execute migrations) +# Migration: Replaces technology_stack slot per slot_fixes.yaml + +id: https://nde.nl/ontology/hc/slot/has_or_had_technological_infrastructure +name: has_or_had_technological_infrastructure_slot +title: Has Or Had Technological Infrastructure Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + doap: http://usefulinc.com/ns/doap# + spdx: http://spdx.org/rdf/terms# + +imports: + - linkml:types + +default_prefix: hc + +slots: + has_or_had_technological_infrastructure: + slot_uri: hc:hasOrHadTechnologicalInfrastructure + description: | + Technical infrastructure components, systems, and technologies used by a digital platform. + + **Temporal Semantics** (RiC-O Pattern): + The "hasOrHad" naming follows RiC-O convention indicating this relationship + may be historical - platforms may have changed technology stacks over time. + + **MIGRATION from technology_stack**: + This slot replaces the simple string-based `technology_stack` slot with a + structured TechnologicalInfrastructure class that provides: + - Type classification (framework, language, database, API protocol, service) + - Versioning information + - Component relationships (includes_or_included) + - Full provenance tracking + + **Ontological Alignment**: + - **Primary** (`slot_uri`): `hc:hasOrHadTechnologicalInfrastructure` + - **Close**: `schema:softwareVersion` - Schema.org for software/version info + - **Close**: `doap:programming-language` - DOAP vocabulary for software projects + - **Related**: `spdx:relationshipType_DEPENDS_ON` - Software Bill of Materials + + **Usage Examples**: + ```yaml + auxiliary_platform: + has_or_had_technological_infrastructure: + - has_or_had_type: Framework + has_or_had_label: React + has_or_had_description: Frontend JavaScript framework + - has_or_had_type: BackendStack + has_or_had_label: Python/Django + has_or_had_description: Backend web framework + - has_or_had_type: Database + has_or_had_label: PostgreSQL + has_or_had_description: Primary relational database + ``` + + range: uriorcurie # Broadened per Rule 55 - classes narrow via slot_usage + multivalued: true + required: false + + close_mappings: + - schema:softwareVersion + - doap:programming-language + + related_mappings: + - spdx:relationshipType_DEPENDS_ON + + annotations: + replaces_slot: technology_stack + migration_date: "2026-01-16" + migration_rationale: | + Per slot_fixes.yaml and Rule 56: Migrated from simple string list to structured + TechnologicalInfrastructure class for better semantic modeling and extensibility. + custodian_types: '["D"]' + custodian_types_rationale: Primarily relevant for Digital platform custodians. + custodian_types_primary: D + specificity_score: 0.70 + specificity_rationale: | + Fairly specific to digital platform modeling. Less relevant for + physical-only heritage custodians. + + comments: + - "MIGRATION: Replaces technology_stack per slot_fixes.yaml (2026-01-16)" + - "RiC-O naming convention: hasOrHad indicates temporal relationship" + - "Range: uriorcurie - classes narrow to TechnologicalInfrastructure via slot_usage" + - "Multivalued: platforms typically use multiple technologies" + - "DOAP-aligned: Description of a Project vocabulary for software" + + examples: + - value: "hc:TechnologicalInfrastructure/react-frontend" + description: "React frontend framework (CURIE reference)" + - value: "hc:TechnologicalInfrastructure/python-django-backend" + description: "Python/Django backend stack" diff --git a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml index 7f3bc94498..d05032a510 100644 --- a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml +++ b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml @@ -2827,11 +2827,9 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/typical_response_formats processed: status: true - timestamp: '2026-01-15T19:45:00Z' - session: session-2026-01-15-slot-migrations - notes: 'FULLY MIGRATED: DataServiceEndpointType.yaml - typical_response_formats REMOVED. - Using has_or_had_format slot (keeping range: string for simplicity). Inline attribute - removed, slot_usage added. Slot archived to archive/typical_response_formats_archived_20260115.yaml.' + timestamp: '2026-01-16T14:00:00Z' + session: session-2026-01-16-slot-migrations + notes: 'FULLY MIGRATED: DataServiceEndpointType.yaml and DataServiceEndpointTypes.yaml (8 classes: SRUEndpoint, OpenSearch, IIIFImageAPI, IIIFPresentationAPI, SPARQLEndpoint, GraphQLEndpoint, AtomFeed, RSSFeed) - typical_response_formats REMOVED. Using has_or_had_format slot (keeping range: string for simplicity). Slot archived to archive/typical_response_formats_archived_20260116.yaml.' revision: - label: has_or_had_format type: slot @@ -2867,11 +2865,9 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/typical_http_methods processed: status: true - timestamp: '2026-01-15T19:45:00Z' - session: session-2026-01-15-slot-migrations - notes: 'FULLY MIGRATED: DataServiceEndpointType.yaml - typical_http_methods REMOVED. - Using has_or_had_method slot (keeping range: string for simplicity). Inline attribute - removed, slot_usage added. Slot archived to archive/typical_http_methods_archived_20260115.yaml.' + timestamp: '2026-01-16T14:00:00Z' + session: session-2026-01-16-slot-migrations + notes: 'FULLY MIGRATED: DataServiceEndpointType.yaml and DataServiceEndpointTypes.yaml (8 classes: SRUEndpoint, OpenSearch, IIIFImageAPI, IIIFPresentationAPI, SPARQLEndpoint, GraphQLEndpoint, AtomFeed, RSSFeed) - typical_http_methods REMOVED. Using has_or_had_method slot (keeping range: string for simplicity). Slot archived to archive/typical_http_methods_archived_20260116.yaml.' revision: - label: has_or_had_method type: slot @@ -4058,14 +4054,13 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/temporal_coverage processed: status: true - timestamp: '2026-01-15T01:45:00Z' - session: session-2026-01-15-batch9-slot-migration - notes: 'NO MIGRATION NEEDED: temporal_coverage is a well-structured slot with - proper slot_uri (dcterms:temporal) and range (TimeSpan class). Has exact mappings - to dcterms:temporal and schema:temporalCoverage. Suggested revision adds - unnecessary indirection through Content class when direct temporal modeling - is clearer.' - feedback: I reject this feedback. The migration to has_or_had_content and Content class provides better semantic clarity and extensibility for future temporal coverage representations. + timestamp: '2026-01-16T12:00:00Z' + session: session-2026-01-16-rejected-entries-migration + notes: 'FULLY MIGRATED: temporal_coverage → has_or_had_content + Content class. + Updated Collection.yaml, CustodianCollection.yaml, FindingAid.yaml, LegalResponsibilityCollection.yaml. + Content class includes temporal_extent for TimeSpan, plus has_or_had_label and has_or_had_description. + Slot archived to archive/temporal_coverage_archived_20260116.yaml. + RULE 56: Semantic consistency over simplicity - migration executed per slot_fixes.yaml revision.' revision: - label: has_or_had_content type: slot @@ -4103,13 +4098,13 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/temperature_tolerance processed: status: true - timestamp: '2026-01-15T03:30:00Z' - session: session-2026-01-15-batch9-slot-migration - notes: 'NO MIGRATION NEEDED: temperature_tolerance has hc:temperatureTolerance - slot_uri with QUDT exact_mappings (qudt:Tolerance). Float range for degrees - Celsius tolerance. Used in preservation standards (ISO 11799, BS 4971). - Proper semantic alignment with QUDT vocabulary.' - feedback: I reject this feedback. The migration to allows_or_allowed and TemperatureDeviation class provides better semantic clarity and extensibility for future temperature tolerance representations. + timestamp: '2026-01-16T12:00:00Z' + session: session-2026-01-16-temperature-tolerance-migration + notes: 'FULLY MIGRATED: EnvironmentalZone.yaml, StorageConditionPolicy.yaml - + temperature_tolerance REMOVED, using allows_or_allowed with TemperatureDeviation class. + Created TemperatureDeviation.yaml class with deviation_value, deviation_direction, + iso_standard_reference attributes. Slot archived to archive/temperature_tolerance_archived_20260116.yaml' + feedback: MIGRATION COMPLETED per Rule 53/56 (2026-01-16) revision: - label: allows_or_allowed type: slot