From 4efaef60e4eded48dcbc9789fb7bf6c8d8782374 Mon Sep 17 00:00:00 2001 From: kempersc Date: Thu, 22 Jan 2026 22:16:35 +0100 Subject: [PATCH] feat: Migrate capacity_value and cut_count to structured has_or_had_quantity; archive previous slots and update related schemas --- .../schemas/20251121/linkml/manifest.json | 2 +- schemas/20251121/linkml/manifest.json | 2 +- .../linkml/modules/classes/Budget.yaml | 36 ++- .../linkml/modules/classes/DataFormat.yaml | 153 ++++++++++++ .../modules/classes/DataFormatTypes.yaml | 217 ++++++++++++++++++ .../linkml/modules/classes/MainPart.yaml | 80 +++++++ .../linkml/modules/classes/OutputData.yaml | 124 ++++++++++ .../linkml/modules/classes/Storage.yaml | 50 ++-- .../modules/classes/VideoAnnotationTypes.yaml | 22 +- .../linkml/modules/classes/VideoPost.yaml | 3 +- .../capacity_value_archived_20260122.yaml} | 0 .../capital_budget_archived_20260122.yaml} | 0 .../caption_available_archived_20260122.yaml} | 0 .../cut_count_archived_20260122.yaml} | 0 .../modules/slots/has_or_had_main_part.yaml | 35 +++ .../modules/slots/has_or_had_output.yaml | 66 ++++++ .../linkml/modules/slots/manifest.json | 7 +- .../linkml/modules/slots/slot_fixes.yaml | 43 +++- 18 files changed, 795 insertions(+), 45 deletions(-) create mode 100644 schemas/20251121/linkml/modules/classes/DataFormat.yaml create mode 100644 schemas/20251121/linkml/modules/classes/DataFormatTypes.yaml create mode 100644 schemas/20251121/linkml/modules/classes/MainPart.yaml create mode 100644 schemas/20251121/linkml/modules/classes/OutputData.yaml rename schemas/20251121/linkml/modules/slots/{capacity_value.yaml => archive/capacity_value_archived_20260122.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{capital_budget.yaml => archive/capital_budget_archived_20260122.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{caption_available.yaml => archive/caption_available_archived_20260122.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{cut_count.yaml => archive/cut_count_archived_20260122.yaml} (100%) create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_main_part.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_output.yaml diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json index 70b3e4fb54..b75b210dbb 100644 --- a/frontend/public/schemas/20251121/linkml/manifest.json +++ b/frontend/public/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-22T19:41:07.059Z", + "generated": "2026-01-22T21:08:05.291Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 3037, "categoryCounts": { diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json index b75b210dbb..b27b20b12c 100644 --- a/schemas/20251121/linkml/manifest.json +++ b/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-22T21:08:05.291Z", + "generated": "2026-01-22T21:16:36.017Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 3037, "categoryCounts": { diff --git a/schemas/20251121/linkml/modules/classes/Budget.yaml b/schemas/20251121/linkml/modules/classes/Budget.yaml index 3caec4d6d7..c81d2d0644 100644 --- a/schemas/20251121/linkml/modules/classes/Budget.yaml +++ b/schemas/20251121/linkml/modules/classes/Budget.yaml @@ -24,7 +24,9 @@ imports: - ../slots/has_or_had_status - ./BudgetStatus - ../slots/has_or_had_type - - ../slots/capital_budget + # MIGRATED 2026-01-22: capital_budget → has_or_had_main_part + MainPart per slot_fixes.yaml revision + - ../slots/has_or_had_main_part + - ./MainPart - ./BudgetType - ../slots/digitization_budget - ../slots/documented_by @@ -115,7 +117,8 @@ classes: # - budget_status - has_or_had_status - has_or_had_type - - capital_budget + # MIGRATED 2026-01-22: capital_budget → has_or_had_main_part + MainPart per slot_fixes.yaml revision + - has_or_had_main_part - digitization_budget - documented_by - endowment_draw @@ -258,9 +261,22 @@ classes: operating_budget: range: decimal required: false - capital_budget: - range: decimal + # MIGRATED 2026-01-22: capital_budget → has_or_had_main_part + MainPart per slot_fixes.yaml revision + has_or_had_main_part: + range: MainPart + inlined: true required: false + description: | + Capital budget allocation (infrastructure, equipment, major purchases). + MIGRATED from capital_budget per slot_fixes.yaml (Rule 53, 2026-01-22). + MainPart provides structured representation with Quantity for amount and currency metadata. + examples: + - value: + has_or_had_quantity: + quantity_value: 3000000.0 + part_type: capital_budget + currency_code: EUR + description: Capital budget of 3 million EUR has_or_had_acquisition_budget: range: decimal required: false @@ -389,7 +405,11 @@ classes: has_or_had_label: Euro currency_symbol: € operating_budget: 38000000.0 - capital_budget: 3000000.0 + has_or_had_main_part: + has_or_had_quantity: + quantity_value: 3000000.0 + part_type: capital_budget + currency_code: EUR acquisition_budget: 2000000.0 personnel_budget: 22000000.0 preservation_budget: 1500000.0 @@ -421,7 +441,11 @@ classes: has_or_had_label: Euro currency_symbol: € operating_budget: 7500000.0 - capital_budget: 500000.0 + has_or_had_main_part: + has_or_had_quantity: + quantity_value: 500000.0 + part_type: capital_budget + currency_code: EUR personnel_budget: 5200000.0 digitization_budget: 800000.0 external_funding: 6000000.0 diff --git a/schemas/20251121/linkml/modules/classes/DataFormat.yaml b/schemas/20251121/linkml/modules/classes/DataFormat.yaml new file mode 100644 index 0000000000..b98ed68628 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/DataFormat.yaml @@ -0,0 +1,153 @@ +# DataFormat - Class for data format specifications +# +# Created per slot_fixes.yaml migration for: data_format +# Creation date: 2026-01-22 +# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (generic slot reuse), 0b (Type/Types) + +id: https://nde.nl/ontology/hc/class/DataFormat +name: data_format_class +title: Data Format + +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 + +imports: + - linkml:types + - ../slots/has_or_had_type + - ../slots/has_or_had_label + - ../slots/has_or_had_description + +classes: + DataFormat: + class_uri: hc:DataFormat + description: | + Specification of a data format for files, APIs, or data streams. + + **DEFINITION**: + DataFormat captures format characteristics including type, media type, + schema references, and encoding specifications. + + **USAGE**: + - API response formats (JSON, XML, RDF) + - File formats (CSV, Excel, PDF, TIFF) + - Streaming protocols (MQTT, WebSocket payloads) + - Archival formats (METS, EAD, MARC) + + **ONTOLOGY ALIGNMENT**: + - **Primary** (`class_uri`): `hc:DataFormat` - Heritage Custodian class + - **Close**: `dct:MediaTypeOrExtent` - Dublin Core media type + - **Close**: `schema:encodingFormat` - Schema.org encoding + + **Common Format Types**: + | Type | Media Type | Use Case | + |------|------------|----------| + | JSON | application/json | API responses, config | + | XML | application/xml | Legacy APIs, metadata | + | CSV | text/csv | Data exports, tabular | + | RDF | application/rdf+xml | Linked data | + | SensorML | application/xml | Sensor metadata | + + **Example**: + ```yaml + has_or_had_format: + has_or_had_type: JsonFormat + has_or_had_media_type: "application/json" + has_or_had_encoding: "UTF-8" + ``` + + close_mappings: + - dct:MediaTypeOrExtent + - schema:encodingFormat + + slots: + - has_or_had_type + - has_or_had_label + - has_or_had_description + - has_or_had_media_type + - has_or_had_encoding + - has_or_had_schema_url + + slot_usage: + has_or_had_type: + range: DataFormatType + description: | + The format type classification. + Links to DataFormatType taxonomy (JSON, XML, CSV, etc.). + examples: + - value: JsonFormat + description: JSON format type + - value: CsvFormat + description: CSV format type + has_or_had_label: + range: Label + inlined: true + description: Human-readable name for the format. + examples: + - value: + label_text: "JSON" + description: Format label + has_or_had_media_type: + range: string + description: | + IANA media type (MIME type) for the format. + See: https://www.iana.org/assignments/media-types/ + examples: + - value: "application/json" + description: JSON media type + - value: "text/csv" + description: CSV media type + has_or_had_encoding: + range: string + description: Character encoding used (e.g., UTF-8, ISO-8859-1). + examples: + - value: "UTF-8" + description: Unicode encoding + has_or_had_schema_url: + range: uri + description: URL to schema definition (JSON Schema, XSD, etc.). + examples: + - value: "https://api.museum.nl/schemas/v1/climate.json" + description: JSON Schema URL + + attributes: + has_or_had_media_type: + range: string + description: IANA media type (MIME type). + has_or_had_encoding: + range: string + description: Character encoding (e.g., UTF-8). + has_or_had_schema_url: + range: uri + description: URL to schema definition. + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: "Data format specifications apply to all custodian types with digital systems." + specificity_score: 0.55 + specificity_rationale: "Moderately specific to digital platform and API contexts." + + # Type class for format taxonomy (Rule 0b: Type/Types pattern) + DataFormatType: + class_uri: hc:DataFormatType + abstract: true + description: | + Abstract base class for data format type taxonomy. + + **Type/Types Pattern** (Rule 0b): + - `DataFormatType` (this file): Abstract base class + - `DataFormatTypes.yaml`: Concrete subclasses (JsonFormat, XmlFormat, etc.) + + Subclasses define specific format types used in heritage data systems. + + slots: + - has_or_had_label + - has_or_had_description + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: "Format types applicable universally." diff --git a/schemas/20251121/linkml/modules/classes/DataFormatTypes.yaml b/schemas/20251121/linkml/modules/classes/DataFormatTypes.yaml new file mode 100644 index 0000000000..4546674756 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/DataFormatTypes.yaml @@ -0,0 +1,217 @@ +# DataFormatTypes - Concrete subclasses for data format taxonomy +# +# Created per slot_fixes.yaml migration for: data_format +# Creation date: 2026-01-22 +# Rule compliance: 0b (Type/Types pattern), 39 (RiC-O naming) + +id: https://nde.nl/ontology/hc/class/DataFormatTypes +name: data_format_types +title: Data Format Types + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + - ./DataFormat + +classes: + # ===== Common Data Interchange Formats ===== + + JsonFormat: + is_a: DataFormatType + class_uri: hc:JsonFormat + description: | + JavaScript Object Notation (JSON) format. + Media type: application/json + Common for APIs, configuration, and data exchange. + annotations: + media_type: "application/json" + + XmlFormat: + is_a: DataFormatType + class_uri: hc:XmlFormat + description: | + Extensible Markup Language (XML) format. + Media type: application/xml + Common for legacy APIs, metadata standards. + annotations: + media_type: "application/xml" + + CsvFormat: + is_a: DataFormatType + class_uri: hc:CsvFormat + description: | + Comma-Separated Values (CSV) format. + Media type: text/csv + Common for tabular data exports. + annotations: + media_type: "text/csv" + + # ===== Linked Data Formats ===== + + RdfXmlFormat: + is_a: DataFormatType + class_uri: hc:RdfXmlFormat + description: | + RDF/XML serialization format. + Media type: application/rdf+xml + W3C standard for RDF serialization. + annotations: + media_type: "application/rdf+xml" + + TurtleFormat: + is_a: DataFormatType + class_uri: hc:TurtleFormat + description: | + Turtle (Terse RDF Triple Language) format. + Media type: text/turtle + Human-readable RDF serialization. + annotations: + media_type: "text/turtle" + + JsonLdFormat: + is_a: DataFormatType + class_uri: hc:JsonLdFormat + description: | + JSON for Linked Data (JSON-LD) format. + Media type: application/ld+json + JSON-based linked data serialization. + annotations: + media_type: "application/ld+json" + + NTriplesFormat: + is_a: DataFormatType + class_uri: hc:NTriplesFormat + description: | + N-Triples format for RDF. + Media type: application/n-triples + Line-based RDF serialization. + annotations: + media_type: "application/n-triples" + + # ===== Sensor/IoT Formats ===== + + SensorMlFormat: + is_a: DataFormatType + class_uri: hc:SensorMlFormat + description: | + Sensor Model Language (SensorML) format. + OGC standard for sensor metadata and processes. + annotations: + media_type: "application/xml" + standard: "OGC SensorML" + + MqttPayloadFormat: + is_a: DataFormatType + class_uri: hc:MqttPayloadFormat + description: | + MQTT message payload format. + Used for IoT device communication. + Actual payload typically JSON or binary. + annotations: + protocol: "MQTT" + + # ===== Heritage Metadata Formats ===== + + EadFormat: + is_a: DataFormatType + class_uri: hc:EadFormat + description: | + Encoded Archival Description (EAD) format. + Media type: application/xml + Standard for archival finding aids. + annotations: + media_type: "application/xml" + standard: "EAD3" + + MarcXmlFormat: + is_a: DataFormatType + class_uri: hc:MarcXmlFormat + description: | + MARC 21 XML format. + Media type: application/marcxml+xml + Library bibliographic record format. + annotations: + media_type: "application/marcxml+xml" + standard: "MARC21" + + MetsFormat: + is_a: DataFormatType + class_uri: hc:MetsFormat + description: | + Metadata Encoding and Transmission Standard (METS). + Media type: application/xml + Digital library object packaging. + annotations: + media_type: "application/xml" + standard: "METS" + + LidoFormat: + is_a: DataFormatType + class_uri: hc:LidoFormat + description: | + Lightweight Information Describing Objects (LIDO). + Media type: application/xml + Museum object description harvesting. + annotations: + media_type: "application/xml" + standard: "LIDO" + + DublinCoreFormat: + is_a: DataFormatType + class_uri: hc:DublinCoreFormat + description: | + Dublin Core metadata format (DC or qualified DC). + Media type: application/xml + General-purpose metadata standard. + annotations: + media_type: "application/xml" + standard: "Dublin Core" + + # ===== Document Formats ===== + + PdfFormat: + is_a: DataFormatType + class_uri: hc:PdfFormat + description: | + Portable Document Format (PDF). + Media type: application/pdf + Document distribution and archival. + annotations: + media_type: "application/pdf" + + HtmlFormat: + is_a: DataFormatType + class_uri: hc:HtmlFormat + description: | + HyperText Markup Language (HTML). + Media type: text/html + Web page content. + annotations: + media_type: "text/html" + + PlainTextFormat: + is_a: DataFormatType + class_uri: hc:PlainTextFormat + description: | + Plain text format. + Media type: text/plain + Unformatted text content. + annotations: + media_type: "text/plain" + + # ===== Binary/Media Formats ===== + + BinaryFormat: + is_a: DataFormatType + class_uri: hc:BinaryFormat + description: | + Generic binary data format. + Media type: application/octet-stream + Raw binary data streams. + annotations: + media_type: "application/octet-stream" diff --git a/schemas/20251121/linkml/modules/classes/MainPart.yaml b/schemas/20251121/linkml/modules/classes/MainPart.yaml new file mode 100644 index 0000000000..ffd06896bb --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/MainPart.yaml @@ -0,0 +1,80 @@ +id: https://nde.nl/ontology/hc/class/MainPart +name: main_part_class +title: Main Part Class +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + dcterms: http://purl.org/dc/terms/ +imports: + - linkml:types + - ../slots/has_or_had_quantity + - ./Quantity +default_prefix: hc + +classes: + MainPart: + class_uri: schema:QuantitativeValue + description: >- + Represents a principal/primary portion of something with quantified value. + + **PURPOSE**: + + MainPart provides structured representation for primary allocations such as: + - Capital budget (principal budget for infrastructure/equipment) + - Primary funding amount + - Main portion of a larger whole + + **ONTOLOGY ALIGNMENT**: + + | Ontology | Mapping | Rationale | + |----------|---------|-----------| + | Schema.org | schema:QuantitativeValue | Quantified value | + + **USE CASES**: + - Capital budget allocation in institutional budgets + - Primary collection value + - Main funding allocation + + MIGRATED 2026-01-22: Created per slot_fixes.yaml revision for capital_budget. + Replaces simple decimal capital_budget with structured class. + exact_mappings: + - schema:QuantitativeValue + slots: + - has_or_had_quantity + slot_usage: + has_or_had_quantity: + range: Quantity + required: true + inlined: true + description: >- + The quantified value of this main part. + For capital budget: Quantity.quantity_value = amount, currency in metadata. + attributes: + part_type: + range: string + required: false + description: >- + Type of main part (e.g., "capital_budget", "primary_allocation", "main_funding"). + currency_code: + range: string + required: false + description: >- + ISO 4217 currency code for financial values (e.g., "EUR", "USD", "GBP"). + examples: + - value: + has_or_had_quantity: + quantity_value: 3000000.0 + part_type: capital_budget + currency_code: EUR + description: Capital budget of 3 million EUR + - value: + has_or_had_quantity: + quantity_value: 500000.0 + part_type: capital_budget + currency_code: USD + description: Capital budget of 500,000 USD + annotations: + specificity_score: 0.40 + specificity_rationale: >- + Main parts are moderately specific, relevant for budget and allocation queries. diff --git a/schemas/20251121/linkml/modules/classes/OutputData.yaml b/schemas/20251121/linkml/modules/classes/OutputData.yaml new file mode 100644 index 0000000000..9b77bdd054 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/OutputData.yaml @@ -0,0 +1,124 @@ +# OutputData - Class for device/service output specifications +# +# Created per slot_fixes.yaml migration for: data_format +# Creation date: 2026-01-22 +# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (generic slot reuse) + +id: https://nde.nl/ontology/hc/class/OutputData +name: output_data +title: Output Data + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + sosa: http://www.w3.org/ns/sosa/ + dct: http://purl.org/dc/terms/ + +default_prefix: hc + +imports: + - linkml:types + - ./DataFormat + - ../slots/has_or_had_format + - ../slots/has_or_had_description + - ../slots/has_or_had_identifier + +classes: + OutputData: + class_uri: hc:OutputData + description: | + Specification of output produced by a device, service, or process. + + **DEFINITION**: + OutputData captures the characteristics of data or signals emitted by + systems, including format, structure, destination, and metadata. + + **USAGE**: + - IoT device data (sensor readings, beacon signals) + - API responses (JSON, XML, RDF) + - Export files (CSV, Excel, PDF) + - Streaming data (MQTT, WebSocket) + + **ONTOLOGY ALIGNMENT**: + - **Primary** (`class_uri`): `hc:OutputData` - Heritage Custodian class + - **Close**: `sosa:Result` - SOSA observation result + - **Close**: `schema:DataDownload` - Schema.org data download + + **Example**: + ```yaml + has_or_had_output: + - has_or_had_format: + has_or_had_type: JsonFormat + has_or_had_media_type: "application/json" + has_or_had_description: "Climate sensor readings" + destination_url: "https://analytics.museum.nl/climate" + ``` + + close_mappings: + - sosa:Result + - schema:DataDownload + + slots: + - has_or_had_format + - has_or_had_description + - has_or_had_identifier + - destination_url + - schema_url + - is_streaming + + slot_usage: + has_or_had_format: + range: DataFormat + inlined: true + description: | + The format specification for this output. + Uses DataFormat class to capture format type, media type, and schema. + examples: + - value: + has_or_had_type: JsonFormat + has_or_had_media_type: "application/json" + description: JSON output format + has_or_had_description: + range: string + description: Human-readable description of the output data. + examples: + - value: "Temperature and humidity readings from conservation sensors" + description: Sensor data description + destination_url: + range: uri + description: URL where output is sent or published. + examples: + - value: "https://analytics.museum.nl/data" + description: Analytics platform destination + schema_url: + range: uri + description: URL to schema definition for the output data structure. + examples: + - value: "https://api.museum.nl/schemas/climate-v1.json" + description: JSON Schema for climate data + is_streaming: + range: boolean + description: Whether this output is continuous/streaming vs batch/discrete. + examples: + - value: true + description: Real-time streaming data + - value: false + description: Batch data export + + attributes: + destination_url: + range: uri + description: URL where output is sent or published. + schema_url: + range: uri + description: URL to schema definition for the output data. + is_streaming: + range: boolean + description: Whether this output is streaming vs batch. + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: "Output data specifications apply to all custodian types with digital systems." + specificity_score: 0.65 + specificity_rationale: "Fairly specific to IoT and digital platform contexts." diff --git a/schemas/20251121/linkml/modules/classes/Storage.yaml b/schemas/20251121/linkml/modules/classes/Storage.yaml index a11d001da8..d1cf0b5cf3 100644 --- a/schemas/20251121/linkml/modules/classes/Storage.yaml +++ b/schemas/20251121/linkml/modules/classes/Storage.yaml @@ -225,27 +225,30 @@ classes: Uses Capacity class with capacity_type and has_or_had_measurement_unit. examples: - value: - - capacity_value: 8000.0 - capacity_type: SHELF_LENGTH - has_or_had_measurement_unit: - has_or_had_type: LINEAR_METER - has_or_had_symbol: "m" + - has_or_had_quantity: + has_or_had_numeric_value: 8000.0 + has_or_had_unit: + has_or_had_type: LinearMeter + has_or_had_symbol: "m" + has_or_had_type: ShelfLength has_or_had_description: Total linear meters of shelving - description: Was capacity_linear_meters + description: Was capacity_linear_meters (capacity_value → has_or_had_quantity) - value: - - capacity_value: 2500.0 - capacity_type: VOLUME - has_or_had_measurement_unit: - has_or_had_type: CUBIC_METER - has_or_had_symbol: "m³" - description: Was capacity_cubic_meters + - has_or_had_quantity: + has_or_had_numeric_value: 2500.0 + has_or_had_unit: + has_or_had_type: CubicMeter + has_or_had_symbol: "m³" + has_or_had_type: Volume + description: Was capacity_cubic_meters (capacity_value → has_or_had_quantity) - value: - - capacity_value: 50000 - capacity_type: ITEM_COUNT - has_or_had_measurement_unit: - has_or_had_type: ITEM - has_or_had_symbol: "archive boxes" - description: Was capacity_item + - has_or_had_quantity: + has_or_had_numeric_value: 50000 + has_or_had_unit: + has_or_had_type: Item + has_or_had_symbol: "archive boxes" + has_or_had_type: ItemCount + description: Was capacity_item (capacity_value → has_or_had_quantity) - value: - has_or_had_description: "Approximately 5,000 linear meters of shelving across 3 floors" is_estimate: true @@ -376,11 +379,12 @@ classes: label_text: Rijksmuseum Depot Amersfoort language: nl has_or_had_capacity: # was: capacity_linear_meters - migrated per Rule 53 - - capacity_value: 8000.0 - capacity_type: SHELF_LENGTH - has_or_had_measurement_unit: - has_or_had_type: LINEAR_METER - has_or_had_symbol: "m" + - has_or_had_quantity: + has_or_had_numeric_value: 8000.0 + has_or_had_unit: + has_or_had_type: LinearMeter + has_or_had_symbol: "m" + has_or_had_type: ShelfLength has_or_had_description: Total linear shelf capacity current_utilization_percent: 78.5 standards_applied: diff --git a/schemas/20251121/linkml/modules/classes/VideoAnnotationTypes.yaml b/schemas/20251121/linkml/modules/classes/VideoAnnotationTypes.yaml index 52e9d648b6..d0fa2b1027 100644 --- a/schemas/20251121/linkml/modules/classes/VideoAnnotationTypes.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoAnnotationTypes.yaml @@ -9,7 +9,7 @@ imports: - ./Methodology - ../slots/person_id - ../slots/has_average_scene_duration_seconds - - ../slots/cut_count + # REMOVED 2026-01-22: cut_count migrated to has_or_had_quantity + Quantity (Rule 53) - ../slots/has_or_had_detected_face - ../slots/has_or_had_detected_landmark - ../slots/has_or_had_detected_logo @@ -196,7 +196,7 @@ classes: - schema:Clip slots: - has_average_scene_duration_seconds - - cut_count + - has_or_had_quantity # was: cut_count - migrated per Rule 53 (2026-01-22) - detection_level - dissolve_count - fade_count @@ -253,13 +253,21 @@ classes: examples: - value: '[{has_or_had_label: "CUT"}, {has_or_had_label: "FADE_IN"}]' description: Transition types found in video - cut_count: - range: integer + has_or_had_quantity: # was: cut_count - migrated per Rule 53 (2026-01-22) + range: Quantity required: false - minimum_value: 0 + inlined: true + description: | + Number of hard cuts (instantaneous transitions) as a Quantity. + MIGRATED from cut_count per slot_fixes.yaml (Rule 53). + Uses Quantity class with Unit type "Cut". examples: - - value: 42 - description: 42 cuts detected + - value: + has_or_had_numeric_value: 42 + has_or_had_unit: + has_or_had_type: Cut + has_or_had_symbol: "cuts" + description: 42 cuts detected (was cut_count) fade_count: range: integer required: false diff --git a/schemas/20251121/linkml/modules/classes/VideoPost.yaml b/schemas/20251121/linkml/modules/classes/VideoPost.yaml index 1f585e7763..13f6bc5268 100644 --- a/schemas/20251121/linkml/modules/classes/VideoPost.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoPost.yaml @@ -306,7 +306,8 @@ classes: description: Dutch subtitles in VTT format - value: is_available: false - description: No captions available (migrated from caption_available: false) + language: null + description: No captions available (migrated from caption_available false) default_language: range: string required: false diff --git a/schemas/20251121/linkml/modules/slots/capacity_value.yaml b/schemas/20251121/linkml/modules/slots/archive/capacity_value_archived_20260122.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/capacity_value.yaml rename to schemas/20251121/linkml/modules/slots/archive/capacity_value_archived_20260122.yaml diff --git a/schemas/20251121/linkml/modules/slots/capital_budget.yaml b/schemas/20251121/linkml/modules/slots/archive/capital_budget_archived_20260122.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/capital_budget.yaml rename to schemas/20251121/linkml/modules/slots/archive/capital_budget_archived_20260122.yaml diff --git a/schemas/20251121/linkml/modules/slots/caption_available.yaml b/schemas/20251121/linkml/modules/slots/archive/caption_available_archived_20260122.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/caption_available.yaml rename to schemas/20251121/linkml/modules/slots/archive/caption_available_archived_20260122.yaml diff --git a/schemas/20251121/linkml/modules/slots/cut_count.yaml b/schemas/20251121/linkml/modules/slots/archive/cut_count_archived_20260122.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/cut_count.yaml rename to schemas/20251121/linkml/modules/slots/archive/cut_count_archived_20260122.yaml diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_main_part.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_main_part.yaml new file mode 100644 index 0000000000..0273419692 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_main_part.yaml @@ -0,0 +1,35 @@ +id: https://nde.nl/ontology/hc/slot/has_or_had_main_part +name: has_or_had_main_part_slot +title: Has or Had Main Part Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + dcterms: http://purl.org/dc/terms/ +imports: + - linkml:types +default_range: string + +slots: + has_or_had_main_part: + slot_uri: schema:hasPart + description: >- + Links to a MainPart representing the principal/primary portion of something. + + **USE CASES**: + - Capital budget (primary budget allocation for infrastructure/equipment) + - Primary collection holdings + - Main organizational unit + + **ONTOLOGY ALIGNMENT**: + - slot_uri: schema:hasPart (primary) + - Represents a significant/main portion of a larger whole + + MIGRATED 2026-01-22: Created per slot_fixes.yaml revision for capital_budget. + range: MainPart + inlined: true + exact_mappings: + - schema:hasPart + annotations: + custodian_types: '["*"]' + custodian_types_rationale: Main parts are universal across organizational contexts diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_output.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_output.yaml new file mode 100644 index 0000000000..78d81cff06 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_output.yaml @@ -0,0 +1,66 @@ +# has_or_had_output - Output/emission slot for devices and services +# +# Created per slot_fixes.yaml migration for: data_format +# Creation date: 2026-01-22 +# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (generic slot reuse) + +id: https://nde.nl/ontology/hc/slot/has_or_had_output +name: has_or_had_output +title: Has or Had Output + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + sosa: http://www.w3.org/ns/sosa/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + has_or_had_output: + slot_uri: hc:hasOrHadOutput + description: | + Output produced by a device, service, or process. + + **USAGE**: + Represents data, signals, or artifacts emitted by: + - IoT devices (sensor readings, beacon signals) + - APIs and services (data responses) + - Processing pipelines (transformed data) + - Software systems (reports, exports) + + **ONTOLOGY ALIGNMENT**: + - **Primary** (`slot_uri`): `hc:hasOrHadOutput` - Heritage Custodian property + - **Close**: `sosa:hasResult` - SOSA observation result + - **Close**: `schema:produces` - Schema.org production relationship + + **RANGE**: `OutputData` class + The OutputData class captures output specifications including format, + frequency, destination, and data characteristics. + + range: OutputData + multivalued: true + inlined_as_list: true + + close_mappings: + - sosa:hasResult + - schema:produces + + examples: + - value: + has_or_had_format: + has_or_had_type: JsonFormat + has_or_had_description: "Climate sensor readings in JSON format" + description: IoT device output specification + - value: + has_or_had_format: + has_or_had_type: CsvFormat + destination_url: "https://analytics.museum.nl/data" + description: Data export output + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: "Output specifications applicable to all custodian types with digital systems." diff --git a/schemas/20251121/linkml/modules/slots/manifest.json b/schemas/20251121/linkml/modules/slots/manifest.json index 81d2a12402..ec913b8001 100644 --- a/schemas/20251121/linkml/modules/slots/manifest.json +++ b/schemas/20251121/linkml/modules/slots/manifest.json @@ -20,9 +20,8 @@ "has_or_had_notation.yaml", "has_or_had_canonical_form.yaml", "capacity_type.yaml", - "capacity_value.yaml", - "capital_budget.yaml", - "caption_available.yaml", + "has_or_had_main_part.yaml", + "has_or_had_caption.yaml", "card_image_url.yaml", "card_title.yaml", "card_title_en.yaml", @@ -175,7 +174,7 @@ "custodian_type_related.yaml", "custody_history.yaml", "custody_received_by.yaml", - "cut_count.yaml", + "__ARCHIVED_20260122__cut_count.yaml", "data_format.yaml", "data_license_policy.yaml", "data_repository.yaml", diff --git a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml index aff69c5123..c1315a105a 100644 --- a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml +++ b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml @@ -8096,7 +8096,8 @@ fixes: would enhance semantic clarity and allow for richer metadata about each budget amount. This would align with best practices for financial data modeling.' - done: false + done: true + response: "Completed 2026-01-22 by claude-sonnet-4. Per revision: created has_or_had_main_part slot and MainPart class. Migrated Budget.yaml to use MainPart with Quantity for capital budget amount. MainPart.part_type='capital_budget' and currency_code attribute. Archived capital_budget.yaml." - original_slot_id: https://nde.nl/ontology/hc/slot/caption_available revision: - label: has_or_had_caption @@ -8133,7 +8134,8 @@ fixes: would enhance semantic clarity and allow for richer metadata about caption availability. This would align with best practices for accessibility data modeling.' - done: false + done: true + response: "Completed 2026-01-22 by claude-sonnet-4. Created has_or_had_caption slot and Caption class. Migrated VideoPost.yaml to use structured Caption with is_available, language, caption_format, caption_url attributes. Archived caption_available.yaml." - original_slot_id: https://nde.nl/ontology/hc/slot/card_description revision: - label: has_or_had_description @@ -11368,6 +11370,24 @@ fixes: type: slot - label: Unit type: class + processed: + status: true + date: '2026-01-22' + agent: claude-claude-sonnet-4-20250514 + notes: | + **Migration #60: capacity_value** ✅ COMPLETE + + **Pattern**: capacity_value → has_or_had_quantity + Quantity + has_or_had_unit + Unit + + **Files Used** (pre-existing): + - has_or_had_quantity.yaml, Quantity.yaml + - has_or_had_unit.yaml, Unit.yaml + + **Files Modified**: + - Capacity.yaml: Replaced capacity_value with has_or_had_quantity (required field) + - Storage.yaml: Updated examples to use has_or_had_quantity pattern + + **Archived**: modules/slots/archive/capacity_value_archived_20260122.yaml - original_slot_id: https://nde.nl/ontology/hc/slot/cut_count revision: - label: has_or_had_quantity @@ -11379,6 +11399,25 @@ fixes: - label: Unit type: class value: cut + processed: + status: true + date: '2026-01-22' + agent: claude-claude-sonnet-4-20250514 + notes: | + **Migration #61: cut_count** ✅ COMPLETE + + **Pattern**: cut_count → has_or_had_quantity + Quantity + has_or_had_unit + Unit (value: cut) + + **Files Used** (pre-existing): + - has_or_had_quantity.yaml, Quantity.yaml + - has_or_had_unit.yaml, Unit.yaml + + **Files Modified**: + - VideoAnnotationTypes.yaml: Replaced cut_count with has_or_had_quantity in VideoSceneAnnotation class + - Updated imports, slots list, and slot_usage section + - Unit type set to "Cut" per revision value specification + + **Archived**: modules/slots/archive/cut_count_archived_20260122.yaml - original_slot_id: https://nde.nl/ontology/hc/slot/data_format revision: - label: has_or_had_output