feat: Migrate capacity_value and cut_count to structured has_or_had_quantity; archive previous slots and update related schemas

This commit is contained in:
kempersc 2026-01-22 22:16:35 +01:00
parent 3c9926956e
commit 4efaef60e4
18 changed files with 795 additions and 45 deletions

View file

@ -1,5 +1,5 @@
{ {
"generated": "2026-01-22T19:41:07.059Z", "generated": "2026-01-22T21:08:05.291Z",
"schemaRoot": "/schemas/20251121/linkml", "schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 3037, "totalFiles": 3037,
"categoryCounts": { "categoryCounts": {

View file

@ -1,5 +1,5 @@
{ {
"generated": "2026-01-22T21:08:05.291Z", "generated": "2026-01-22T21:16:36.017Z",
"schemaRoot": "/schemas/20251121/linkml", "schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 3037, "totalFiles": 3037,
"categoryCounts": { "categoryCounts": {

View file

@ -24,7 +24,9 @@ imports:
- ../slots/has_or_had_status - ../slots/has_or_had_status
- ./BudgetStatus - ./BudgetStatus
- ../slots/has_or_had_type - ../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 - ./BudgetType
- ../slots/digitization_budget - ../slots/digitization_budget
- ../slots/documented_by - ../slots/documented_by
@ -115,7 +117,8 @@ classes:
# - budget_status # - budget_status
- has_or_had_status - has_or_had_status
- has_or_had_type - 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 - digitization_budget
- documented_by - documented_by
- endowment_draw - endowment_draw
@ -258,9 +261,22 @@ classes:
operating_budget: operating_budget:
range: decimal range: decimal
required: false required: false
capital_budget: # MIGRATED 2026-01-22: capital_budget → has_or_had_main_part + MainPart per slot_fixes.yaml revision
range: decimal has_or_had_main_part:
range: MainPart
inlined: true
required: false 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: has_or_had_acquisition_budget:
range: decimal range: decimal
required: false required: false
@ -389,7 +405,11 @@ classes:
has_or_had_label: Euro has_or_had_label: Euro
currency_symbol: currency_symbol:
operating_budget: 38000000.0 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 acquisition_budget: 2000000.0
personnel_budget: 22000000.0 personnel_budget: 22000000.0
preservation_budget: 1500000.0 preservation_budget: 1500000.0
@ -421,7 +441,11 @@ classes:
has_or_had_label: Euro has_or_had_label: Euro
currency_symbol: currency_symbol:
operating_budget: 7500000.0 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 personnel_budget: 5200000.0
digitization_budget: 800000.0 digitization_budget: 800000.0
external_funding: 6000000.0 external_funding: 6000000.0

View file

@ -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."

View file

@ -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"

View file

@ -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.

View file

@ -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."

View file

@ -225,27 +225,30 @@ classes:
Uses Capacity class with capacity_type and has_or_had_measurement_unit. Uses Capacity class with capacity_type and has_or_had_measurement_unit.
examples: examples:
- value: - value:
- capacity_value: 8000.0 - has_or_had_quantity:
capacity_type: SHELF_LENGTH has_or_had_numeric_value: 8000.0
has_or_had_measurement_unit: has_or_had_unit:
has_or_had_type: LINEAR_METER has_or_had_type: LinearMeter
has_or_had_symbol: "m" has_or_had_symbol: "m"
has_or_had_type: ShelfLength
has_or_had_description: Total linear meters of shelving 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: - value:
- capacity_value: 2500.0 - has_or_had_quantity:
capacity_type: VOLUME has_or_had_numeric_value: 2500.0
has_or_had_measurement_unit: has_or_had_unit:
has_or_had_type: CUBIC_METER has_or_had_type: CubicMeter
has_or_had_symbol: "m³" has_or_had_symbol: "m³"
description: Was capacity_cubic_meters has_or_had_type: Volume
description: Was capacity_cubic_meters (capacity_value → has_or_had_quantity)
- value: - value:
- capacity_value: 50000 - has_or_had_quantity:
capacity_type: ITEM_COUNT has_or_had_numeric_value: 50000
has_or_had_measurement_unit: has_or_had_unit:
has_or_had_type: ITEM has_or_had_type: Item
has_or_had_symbol: "archive boxes" has_or_had_symbol: "archive boxes"
description: Was capacity_item has_or_had_type: ItemCount
description: Was capacity_item (capacity_value → has_or_had_quantity)
- value: - value:
- has_or_had_description: "Approximately 5,000 linear meters of shelving across 3 floors" - has_or_had_description: "Approximately 5,000 linear meters of shelving across 3 floors"
is_estimate: true is_estimate: true
@ -376,11 +379,12 @@ classes:
label_text: Rijksmuseum Depot Amersfoort label_text: Rijksmuseum Depot Amersfoort
language: nl language: nl
has_or_had_capacity: # was: capacity_linear_meters - migrated per Rule 53 has_or_had_capacity: # was: capacity_linear_meters - migrated per Rule 53
- capacity_value: 8000.0 - has_or_had_quantity:
capacity_type: SHELF_LENGTH has_or_had_numeric_value: 8000.0
has_or_had_measurement_unit: has_or_had_unit:
has_or_had_type: LINEAR_METER has_or_had_type: LinearMeter
has_or_had_symbol: "m" has_or_had_symbol: "m"
has_or_had_type: ShelfLength
has_or_had_description: Total linear shelf capacity has_or_had_description: Total linear shelf capacity
current_utilization_percent: 78.5 current_utilization_percent: 78.5
standards_applied: standards_applied:

View file

@ -9,7 +9,7 @@ imports:
- ./Methodology - ./Methodology
- ../slots/person_id - ../slots/person_id
- ../slots/has_average_scene_duration_seconds - ../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_face
- ../slots/has_or_had_detected_landmark - ../slots/has_or_had_detected_landmark
- ../slots/has_or_had_detected_logo - ../slots/has_or_had_detected_logo
@ -196,7 +196,7 @@ classes:
- schema:Clip - schema:Clip
slots: slots:
- has_average_scene_duration_seconds - has_average_scene_duration_seconds
- cut_count - has_or_had_quantity # was: cut_count - migrated per Rule 53 (2026-01-22)
- detection_level - detection_level
- dissolve_count - dissolve_count
- fade_count - fade_count
@ -253,13 +253,21 @@ classes:
examples: examples:
- value: '[{has_or_had_label: "CUT"}, {has_or_had_label: "FADE_IN"}]' - value: '[{has_or_had_label: "CUT"}, {has_or_had_label: "FADE_IN"}]'
description: Transition types found in video description: Transition types found in video
cut_count: has_or_had_quantity: # was: cut_count - migrated per Rule 53 (2026-01-22)
range: integer range: Quantity
required: false 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: examples:
- value: 42 - value:
description: 42 cuts detected 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: fade_count:
range: integer range: integer
required: false required: false

View file

@ -306,7 +306,8 @@ classes:
description: Dutch subtitles in VTT format description: Dutch subtitles in VTT format
- value: - value:
is_available: false 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: default_language:
range: string range: string
required: false required: false

View file

@ -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

View file

@ -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."

View file

@ -20,9 +20,8 @@
"has_or_had_notation.yaml", "has_or_had_notation.yaml",
"has_or_had_canonical_form.yaml", "has_or_had_canonical_form.yaml",
"capacity_type.yaml", "capacity_type.yaml",
"capacity_value.yaml", "has_or_had_main_part.yaml",
"capital_budget.yaml", "has_or_had_caption.yaml",
"caption_available.yaml",
"card_image_url.yaml", "card_image_url.yaml",
"card_title.yaml", "card_title.yaml",
"card_title_en.yaml", "card_title_en.yaml",
@ -175,7 +174,7 @@
"custodian_type_related.yaml", "custodian_type_related.yaml",
"custody_history.yaml", "custody_history.yaml",
"custody_received_by.yaml", "custody_received_by.yaml",
"cut_count.yaml", "__ARCHIVED_20260122__cut_count.yaml",
"data_format.yaml", "data_format.yaml",
"data_license_policy.yaml", "data_license_policy.yaml",
"data_repository.yaml", "data_repository.yaml",

View file

@ -8096,7 +8096,8 @@ fixes:
would enhance semantic clarity and allow for richer metadata about each budget amount. would enhance semantic clarity and allow for richer metadata about each budget amount.
This would align with best practices for financial data modeling.' 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 - original_slot_id: https://nde.nl/ontology/hc/slot/caption_available
revision: revision:
- label: has_or_had_caption - label: has_or_had_caption
@ -8133,7 +8134,8 @@ fixes:
would enhance semantic clarity and allow for richer metadata about caption availability. would enhance semantic clarity and allow for richer metadata about caption availability.
This would align with best practices for accessibility data modeling.' 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 - original_slot_id: https://nde.nl/ontology/hc/slot/card_description
revision: revision:
- label: has_or_had_description - label: has_or_had_description
@ -11368,6 +11370,24 @@ fixes:
type: slot type: slot
- label: Unit - label: Unit
type: class 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 - original_slot_id: https://nde.nl/ontology/hc/slot/cut_count
revision: revision:
- label: has_or_had_quantity - label: has_or_had_quantity
@ -11379,6 +11399,25 @@ fixes:
- label: Unit - label: Unit
type: class type: class
value: cut 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 - original_slot_id: https://nde.nl/ontology/hc/slot/data_format
revision: revision:
- label: has_or_had_output - label: has_or_had_output