feat: Update canonical value handling by migrating to structured CanonicalForm and archiving previous slot
This commit is contained in:
parent
2a75ddf7cc
commit
3c9926956e
18 changed files with 635 additions and 92 deletions
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"generated": "2026-01-22T19:40:49.649Z",
|
||||
"generated": "2026-01-22T19:41:07.059Z",
|
||||
"schemaRoot": "/schemas/20251121/linkml",
|
||||
"totalFiles": 3037,
|
||||
"categoryCounts": {
|
||||
|
|
|
|||
|
|
@ -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": {
|
||||
|
|
|
|||
99
schemas/20251121/linkml/modules/classes/CanonicalForm.yaml
Normal file
99
schemas/20251121/linkml/modules/classes/CanonicalForm.yaml
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
id: https://nde.nl/ontology/hc/class/CanonicalForm
|
||||
name: canonical_form_class
|
||||
title: Canonical Form Class
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ./Label
|
||||
default_prefix: hc
|
||||
|
||||
classes:
|
||||
CanonicalForm:
|
||||
class_uri: skos:Concept
|
||||
description: >-
|
||||
Represents the canonical/normalized form of an identifier or value.
|
||||
|
||||
**PURPOSE**:
|
||||
|
||||
While original values may vary in format (spaces, prefixes, case),
|
||||
CanonicalForm provides a standardized representation for:
|
||||
- Consistent storage
|
||||
- Deduplication and matching
|
||||
- Database joins and lookups
|
||||
- Cross-system interoperability
|
||||
|
||||
**NORMALIZATION RULES BY STANDARD**:
|
||||
|
||||
| Standard | Original | Canonical |
|
||||
|----------|----------|-----------|
|
||||
| ISNI | "0000 0001 2146 5765" | "0000000121465765" |
|
||||
| Wikidata | "http://wikidata.org/entity/Q190804" | "Q190804" |
|
||||
| VIAF | "viaf.org/viaf/148691498" | "148691498" |
|
||||
| DOI | "https://doi.org/10.1234/Ex" | "10.1234/ex" |
|
||||
| ISIL | "NL-AmRMA" | "NL-AmRMA" (already canonical) |
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
| Ontology | Mapping | Rationale |
|
||||
|----------|---------|-----------|
|
||||
| SKOS | skos:Concept | Conceptual representation |
|
||||
| Schema.org | schema:PropertyValue | Name-value pair |
|
||||
|
||||
MIGRATED 2026-01-22: Created per slot_fixes.yaml feedback to replace
|
||||
simple canonical_value string with structured class.
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
- schema:PropertyValue
|
||||
slots:
|
||||
- has_or_had_label
|
||||
slot_usage:
|
||||
has_or_had_label:
|
||||
range: Label
|
||||
required: true
|
||||
inlined: true
|
||||
description: >-
|
||||
The canonical/normalized value as a Label.
|
||||
Label.has_or_had_text contains the actual normalized string.
|
||||
attributes:
|
||||
normalization_rule:
|
||||
range: string
|
||||
required: false
|
||||
description: >-
|
||||
The rule or standard used to normalize this value.
|
||||
E.g., "ISNI_REMOVE_SPACES", "WIKIDATA_EXTRACT_QID", "DOI_LOWERCASE"
|
||||
source_format:
|
||||
range: string
|
||||
required: false
|
||||
description: >-
|
||||
The original format/scheme before normalization.
|
||||
E.g., "ISNI_DISPLAY", "WIKIDATA_URI", "DOI_URL"
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label:
|
||||
has_or_had_text: "0000000121465765"
|
||||
normalization_rule: "ISNI_REMOVE_SPACES"
|
||||
source_format: "ISNI_DISPLAY"
|
||||
description: ISNI canonical form (spaces removed)
|
||||
- value:
|
||||
has_or_had_label:
|
||||
has_or_had_text: "Q190804"
|
||||
normalization_rule: "WIKIDATA_EXTRACT_QID"
|
||||
source_format: "WIKIDATA_URI"
|
||||
description: Wikidata canonical form (Q-number extracted)
|
||||
- value:
|
||||
has_or_had_label:
|
||||
has_or_had_text: "10.1234/example"
|
||||
normalization_rule: "DOI_LOWERCASE_NO_PREFIX"
|
||||
source_format: "DOI_URL"
|
||||
description: DOI canonical form (lowercase, no resolver prefix)
|
||||
annotations:
|
||||
specificity_score: 0.30
|
||||
specificity_rationale: >-
|
||||
Canonical forms are relevant for identifier lookup across all heritage sectors.
|
||||
|
|
@ -9,7 +9,7 @@ prefixes:
|
|||
dcterms: http://purl.org/dc/terms/
|
||||
imports:
|
||||
- linkml:types
|
||||
# Enums
|
||||
# Enums (kept for backward compatibility)
|
||||
- ../enums/CapacityTypeEnum
|
||||
# RiC-O style generic slots
|
||||
- ../slots/has_or_had_identifier
|
||||
|
|
@ -20,9 +20,12 @@ imports:
|
|||
- ../slots/temporal_extent
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
# Capacity-specific slots
|
||||
- ../slots/capacity_value
|
||||
- ../slots/capacity_type
|
||||
# MIGRATED 2026-01-22: capacity_type → has_or_had_type + CapacityType (Rule 53)
|
||||
- ../slots/has_or_had_type
|
||||
# MIGRATED 2026-01-22: capacity_value → has_or_had_quantity + Quantity (Rule 53)
|
||||
- ../slots/has_or_had_unit
|
||||
- ./Unit
|
||||
# Capacity-specific slots (capacity_value removed - use has_or_had_quantity)
|
||||
- ../slots/is_estimate
|
||||
# Class imports
|
||||
- ./MeasureUnit
|
||||
|
|
@ -30,10 +33,11 @@ imports:
|
|||
- ./TimeSpan
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
# MIGRATED 2026-01-22: capacity_type → has_or_had_type + CapacityType (Rule 53)
|
||||
- ./CapacityType
|
||||
- ./CapacityTypes
|
||||
default_prefix: hc
|
||||
classes:
|
||||
Capacity:
|
||||
|
|
@ -66,37 +70,37 @@ classes:
|
|||
| WEIGHT | Weight capacity | kg, tons |
|
||||
| SEATING | Seating capacity | seats, persons |
|
||||
|
||||
**EXAMPLES**:
|
||||
**EXAMPLES** (MIGRATED 2026-01-22: capacity_value → has_or_had_quantity):
|
||||
|
||||
Archive depot (linear meters):
|
||||
```yaml
|
||||
has_or_had_capacity:
|
||||
- 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:
|
||||
quantity_value: 8000.0
|
||||
has_or_had_unit:
|
||||
unit_value: "linear_meter"
|
||||
has_or_had_type: ShelfLengthCapacity
|
||||
has_or_had_description: Total linear meters of shelving capacity
|
||||
```
|
||||
|
||||
Cold storage (volume):
|
||||
```yaml
|
||||
has_or_had_capacity:
|
||||
- capacity_value: 2500.0
|
||||
capacity_type: VOLUME
|
||||
has_or_had_measurement_unit:
|
||||
has_or_had_type: CUBIC_METER
|
||||
has_or_had_symbol: "m³"
|
||||
- has_or_had_quantity:
|
||||
quantity_value: 2500.0
|
||||
has_or_had_unit:
|
||||
unit_value: "cubic_meter"
|
||||
has_or_had_type: VolumeCapacity
|
||||
```
|
||||
|
||||
Archive box storage (items):
|
||||
```yaml
|
||||
has_or_had_capacity:
|
||||
- capacity_value: 50000
|
||||
capacity_type: ITEM_COUNT
|
||||
has_or_had_measurement_unit:
|
||||
has_or_had_type: ITEM
|
||||
has_or_had_symbol: "archive boxes"
|
||||
- has_or_had_quantity:
|
||||
quantity_value: 50000
|
||||
has_or_had_unit:
|
||||
unit_value: "item"
|
||||
has_or_had_type: ItemCountCapacity
|
||||
```
|
||||
exact_mappings:
|
||||
- hc:Capacity
|
||||
|
|
@ -109,10 +113,12 @@ classes:
|
|||
- premis:StorageLocation
|
||||
slots:
|
||||
- has_or_had_identifier
|
||||
- capacity_value
|
||||
- capacity_type
|
||||
- has_or_had_measurement_unit
|
||||
# MIGRATED 2026-01-22: capacity_value → has_or_had_quantity + Quantity (Rule 53)
|
||||
- has_or_had_quantity
|
||||
# MIGRATED 2026-01-22: capacity_type → has_or_had_type + CapacityType (Rule 53)
|
||||
- has_or_had_type
|
||||
- has_or_had_measurement_unit
|
||||
- has_or_had_unit
|
||||
- has_or_had_description
|
||||
- temporal_extent
|
||||
- is_estimate
|
||||
|
|
@ -127,30 +133,25 @@ classes:
|
|||
examples:
|
||||
- value: https://nde.nl/ontology/hc/capacity/na-depot-b-shelving
|
||||
description: National Archives depot B shelf capacity
|
||||
capacity_value:
|
||||
range: float
|
||||
required: true
|
||||
description: >-
|
||||
The numeric value of the capacity.
|
||||
MIGRATED from capacity_cubic_meters, capacity_linear_meters,
|
||||
capacity_item per slot_fixes.yaml (Rule 53).
|
||||
examples:
|
||||
- value: 8000.0
|
||||
description: 8,000 linear meters
|
||||
- value: 2500.0
|
||||
description: 2,500 cubic meters
|
||||
- value: 50000
|
||||
description: 50,000 archive boxes
|
||||
capacity_type:
|
||||
range: CapacityTypeEnum
|
||||
# MIGRATED 2026-01-22: capacity_value → has_or_had_quantity + Quantity (Rule 53)
|
||||
# capacity_value slot removed - use has_or_had_quantity with quantity_value inside
|
||||
# MIGRATED 2026-01-22: capacity_type → has_or_had_type + CapacityType (Rule 53)
|
||||
has_or_had_type:
|
||||
range: CapacityType
|
||||
required: false
|
||||
description: >-
|
||||
The type of capacity measurement (volume, length, count, etc.).
|
||||
MIGRATED from capacity_type per slot_fixes.yaml (Rule 53, 2026-01-22).
|
||||
Uses CapacityType class hierarchy instead of CapacityTypeEnum.
|
||||
examples:
|
||||
- value: SHELF_LENGTH
|
||||
- value: VOLUME
|
||||
- value: ITEM_COUNT
|
||||
- value: FLOOR_AREA
|
||||
- value: ShelfLengthCapacity
|
||||
description: Linear shelf capacity
|
||||
- value: VolumeCapacity
|
||||
description: Cubic volume capacity
|
||||
- value: ItemCountCapacity
|
||||
description: Item count capacity
|
||||
- value: FloorAreaCapacity
|
||||
description: Floor area capacity
|
||||
has_or_had_measurement_unit:
|
||||
range: MeasureUnit
|
||||
required: false
|
||||
|
|
@ -171,18 +172,31 @@ classes:
|
|||
has_or_had_type: ITEM
|
||||
has_or_had_symbol: "archive boxes"
|
||||
description: Item count
|
||||
# MIGRATED 2026-01-22: capacity_value → has_or_had_quantity + Quantity (Rule 53)
|
||||
has_or_had_quantity:
|
||||
range: Quantity
|
||||
required: false
|
||||
required: true
|
||||
inlined: true
|
||||
description: >-
|
||||
Alternative structured quantity representation.
|
||||
Use for complex measurements requiring full Quantity semantics.
|
||||
The capacity measurement as a structured Quantity.
|
||||
MIGRATED from capacity_value per slot_fixes.yaml (Rule 53, 2026-01-22).
|
||||
Contains quantity_value (numeric), and can include unit via has_or_had_unit.
|
||||
examples:
|
||||
- value:
|
||||
quantity_value: 8000.0
|
||||
quantity_type: CAPACITY
|
||||
quantity_unit: "linear meters"
|
||||
has_or_had_unit:
|
||||
unit_value: "linear_meter"
|
||||
description: 8,000 linear meters of shelving
|
||||
- value:
|
||||
quantity_value: 2500.0
|
||||
has_or_had_unit:
|
||||
unit_value: "cubic_meter"
|
||||
description: 2,500 cubic meters of storage
|
||||
- value:
|
||||
quantity_value: 50000
|
||||
has_or_had_unit:
|
||||
unit_value: "item"
|
||||
description: 50,000 archive boxes
|
||||
has_or_had_description:
|
||||
range: string
|
||||
required: false
|
||||
|
|
@ -218,29 +232,31 @@ classes:
|
|||
- http://qudt.org/schema/qudt/Quantity
|
||||
- https://schema.org/QuantitativeValue
|
||||
examples:
|
||||
# MIGRATED 2026-01-22: capacity_value → has_or_had_quantity + Quantity (Rule 53)
|
||||
# MIGRATED 2026-01-22: capacity_type → has_or_had_type + CapacityType class (Rule 53)
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/capacity/rijksmuseum-depot-shelving
|
||||
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:
|
||||
quantity_value: 8000.0
|
||||
has_or_had_unit:
|
||||
unit_value: "linear_meter"
|
||||
has_or_had_type: ShelfLengthCapacity
|
||||
has_or_had_description: Total linear shelf capacity in Depot Amersfoort
|
||||
is_estimate: false
|
||||
description: Archive depot shelf capacity (was capacity_linear_meters)
|
||||
- value:
|
||||
capacity_value: 2500.0
|
||||
capacity_type: VOLUME
|
||||
has_or_had_measurement_unit:
|
||||
has_or_had_type: CUBIC_METER
|
||||
has_or_had_symbol: "m³"
|
||||
has_or_had_quantity:
|
||||
quantity_value: 2500.0
|
||||
has_or_had_unit:
|
||||
unit_value: "cubic_meter"
|
||||
has_or_had_type: VolumeCapacity
|
||||
description: Cold storage volume capacity (was capacity_cubic_meters)
|
||||
- value:
|
||||
capacity_value: 50000
|
||||
capacity_type: ITEM_COUNT
|
||||
has_or_had_measurement_unit:
|
||||
has_or_had_type: ITEM
|
||||
has_or_had_symbol: "archive boxes"
|
||||
has_or_had_quantity:
|
||||
quantity_value: 50000
|
||||
has_or_had_unit:
|
||||
unit_value: "item"
|
||||
has_or_had_type: ItemCountCapacity
|
||||
has_or_had_description: Capacity for 50,000 standard archive boxes
|
||||
description: Archive box storage capacity (was capacity_item)
|
||||
- value:
|
||||
|
|
|
|||
80
schemas/20251121/linkml/modules/classes/CapacityType.yaml
Normal file
80
schemas/20251121/linkml/modules/classes/CapacityType.yaml
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
# CapacityType class (abstract base)
|
||||
# Created 2026-01-22 per slot_fixes.yaml revision for capacity_type (Rule 53)
|
||||
# Following Rule 0b: Type/Types naming convention
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/CapacityType
|
||||
name: capacity_type_class
|
||||
title: Capacity Type Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
qudt: http://qudt.org/schema/qudt/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
|
||||
classes:
|
||||
CapacityType:
|
||||
class_uri: skos:Concept
|
||||
abstract: true
|
||||
description: |
|
||||
Abstract base class for capacity measurement types.
|
||||
|
||||
**RULE 0b COMPLIANT**:
|
||||
|
||||
This is the ABSTRACT BASE CLASS (singular "Type") defining the taxonomy.
|
||||
Concrete subclasses are defined in `CapacityTypes.yaml` (plural).
|
||||
|
||||
**CAPACITY TYPE HIERARCHY**:
|
||||
|
||||
| Type | Description | Unit Examples |
|
||||
|------|-------------|---------------|
|
||||
| VOLUME | Cubic capacity | m³, ft³ |
|
||||
| SHELF_LENGTH | Linear shelf meters | m, ft |
|
||||
| FLOOR_AREA | Floor space | m², ft² |
|
||||
| ITEM_COUNT | Number of items | boxes, folders |
|
||||
| WEIGHT | Weight capacity | kg, tons |
|
||||
| SEATING | Seating capacity | seats, persons |
|
||||
| DISPLAY_AREA | Exhibition space | m² |
|
||||
| RACK_SLOTS | Rack/shelf slots | count |
|
||||
| DRAWER_UNITS | Drawer units | count |
|
||||
| CABINET_UNITS | Cabinet/storage units | count |
|
||||
|
||||
**QUDT ALIGNMENT**:
|
||||
|
||||
Capacity types align with QUDT quantity kinds for interoperability
|
||||
with scientific measurement systems.
|
||||
|
||||
Created as part of capacity_type migration per slot_fixes.yaml (Rule 53).
|
||||
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
- qudt:QuantityKind
|
||||
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
|
||||
slot_usage:
|
||||
has_or_had_label:
|
||||
description: Human-readable label for this capacity type.
|
||||
has_or_had_description:
|
||||
description: Description of what this capacity type measures.
|
||||
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Capacity types apply to all storage facilities.
|
||||
specificity_score: 0.55
|
||||
specificity_rationale: Specialized taxonomy for storage capacity measurements.
|
||||
|
||||
comments:
|
||||
- "Abstract base class - see CapacityTypes.yaml for concrete subclasses"
|
||||
- "Per Rule 0b: Type (singular) = abstract base, Types (plural) = concrete"
|
||||
- "Created 2026-01-22 per slot_fixes.yaml capacity_type migration"
|
||||
140
schemas/20251121/linkml/modules/classes/CapacityTypes.yaml
Normal file
140
schemas/20251121/linkml/modules/classes/CapacityTypes.yaml
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
# CapacityTypes class (concrete subclasses)
|
||||
# Created 2026-01-22 per slot_fixes.yaml revision for capacity_type (Rule 53)
|
||||
# Following Rule 0b: Type/Types naming convention
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/CapacityTypes
|
||||
name: capacity_types_class
|
||||
title: Capacity Types Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
qudt: http://qudt.org/schema/qudt/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./CapacityType
|
||||
|
||||
classes:
|
||||
VolumeCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:VolumeCapacity
|
||||
description: |
|
||||
Cubic volume capacity measurement (e.g., cubic meters).
|
||||
Used for storage depots, vaults, and enclosed spaces.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Volume"
|
||||
typical_units: "m³, ft³, liters"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.VOLUME"
|
||||
|
||||
ShelfLengthCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:ShelfLengthCapacity
|
||||
description: |
|
||||
Linear shelf or storage length capacity (e.g., linear meters).
|
||||
Standard measurement for archive depots.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Length"
|
||||
typical_units: "m, ft, km"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.SHELF_LENGTH"
|
||||
- "Primary metric for archival storage"
|
||||
|
||||
FloorAreaCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:FloorAreaCapacity
|
||||
description: |
|
||||
Floor space area capacity (e.g., square meters).
|
||||
Used for storage rooms, galleries, and exhibition spaces.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Area"
|
||||
typical_units: "m², ft²"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.FLOOR_AREA"
|
||||
|
||||
ItemCountCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:ItemCountCapacity
|
||||
description: |
|
||||
Number of items that can be stored.
|
||||
Used for boxes, folders, objects, artworks.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Dimensionless"
|
||||
typical_units: "boxes, folders, objects, items"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.ITEM_COUNT"
|
||||
|
||||
WeightCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:WeightCapacity
|
||||
description: |
|
||||
Weight or mass capacity (e.g., kilograms, tons).
|
||||
Important for floor load limits and transport.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Mass"
|
||||
typical_units: "kg, tons, lbs"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.WEIGHT"
|
||||
|
||||
SeatingCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:SeatingCapacity
|
||||
description: |
|
||||
Seating capacity for venues and event spaces.
|
||||
Number of seats or persons allowed.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Dimensionless"
|
||||
typical_units: "seats, persons"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.SEATING"
|
||||
|
||||
DisplayAreaCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:DisplayAreaCapacity
|
||||
description: |
|
||||
Exhibition or display area capacity.
|
||||
Used for galleries and exhibition halls.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Area"
|
||||
typical_units: "m², ft²"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.DISPLAY_AREA"
|
||||
|
||||
RackSlotCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:RackSlotCapacity
|
||||
description: |
|
||||
Number of rack or shelf slots available.
|
||||
Used for modular storage systems.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Dimensionless"
|
||||
typical_units: "slots, positions"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.RACK_SLOTS"
|
||||
|
||||
DrawerUnitCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:DrawerUnitCapacity
|
||||
description: |
|
||||
Number of drawer units available.
|
||||
Used for flat file storage and specimen collections.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Dimensionless"
|
||||
typical_units: "drawers, units"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.DRAWER_UNITS"
|
||||
|
||||
CabinetUnitCapacity:
|
||||
is_a: CapacityType
|
||||
class_uri: hc:CabinetUnitCapacity
|
||||
description: |
|
||||
Number of cabinet or storage units available.
|
||||
Used for modular cabinet systems.
|
||||
annotations:
|
||||
qudt_kind: "qudt:Dimensionless"
|
||||
typical_units: "cabinets, units"
|
||||
comments:
|
||||
- "Replaces CapacityTypeEnum.CABINET_UNITS"
|
||||
97
schemas/20251121/linkml/modules/classes/Caption.yaml
Normal file
97
schemas/20251121/linkml/modules/classes/Caption.yaml
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
id: https://nde.nl/ontology/hc/class/Caption
|
||||
name: caption_class
|
||||
title: Caption 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_label
|
||||
- ../slots/language
|
||||
- ./Label
|
||||
default_prefix: hc
|
||||
|
||||
classes:
|
||||
Caption:
|
||||
class_uri: schema:caption
|
||||
description: >-
|
||||
Represents accessibility caption/subtitle information for media content.
|
||||
|
||||
**PURPOSE**:
|
||||
|
||||
Caption provides structured representation of video/audio captions for:
|
||||
- WCAG accessibility compliance
|
||||
- Multilingual subtitle support
|
||||
- Caption metadata (language, format, availability)
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
| Ontology | Mapping | Rationale |
|
||||
|----------|---------|-----------|
|
||||
| Schema.org | schema:caption | Media caption/subtitle |
|
||||
|
||||
**USE CASES**:
|
||||
- Video captions for hearing accessibility
|
||||
- Subtitles for multilingual content
|
||||
- Closed captions vs. open captions distinction
|
||||
|
||||
MIGRATED 2026-01-22: Created per slot_fixes.yaml feedback to replace
|
||||
simple caption_available string with structured class.
|
||||
exact_mappings:
|
||||
- schema:caption
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- language
|
||||
slot_usage:
|
||||
has_or_had_label:
|
||||
range: Label
|
||||
required: false
|
||||
inlined: true
|
||||
description: >-
|
||||
Caption text content. Label.has_or_had_text contains the actual caption.
|
||||
language:
|
||||
range: string
|
||||
required: false
|
||||
description: >-
|
||||
ISO 639-1 language code for the caption (e.g., "en", "nl", "de").
|
||||
attributes:
|
||||
caption_format:
|
||||
range: string
|
||||
required: false
|
||||
description: >-
|
||||
Caption format (e.g., "SRT", "VTT", "TTML", "closed_caption", "open_caption").
|
||||
is_available:
|
||||
range: boolean
|
||||
required: false
|
||||
description: >-
|
||||
Whether captions are available for this media.
|
||||
Replaces simple caption_available boolean/string.
|
||||
caption_url:
|
||||
range: uri
|
||||
required: false
|
||||
description: >-
|
||||
URL to external caption file (for SRT, VTT, etc.).
|
||||
examples:
|
||||
- value:
|
||||
is_available: true
|
||||
language: en
|
||||
caption_format: closed_caption
|
||||
description: English closed captions available
|
||||
- value:
|
||||
is_available: true
|
||||
language: nl
|
||||
caption_format: SRT
|
||||
caption_url: https://example.org/video/captions_nl.srt
|
||||
description: Dutch subtitles in SRT format
|
||||
- value:
|
||||
has_or_had_label:
|
||||
has_or_had_text: "Video beschrijving voor slechthorenden"
|
||||
language: nl
|
||||
is_available: true
|
||||
description: Dutch caption with descriptive text
|
||||
annotations:
|
||||
specificity_score: 0.60
|
||||
specificity_rationale: >-
|
||||
Captions are specific to media content, moderately relevant for digital heritage.
|
||||
|
|
@ -70,8 +70,7 @@ imports:
|
|||
- ../slots/has_or_had_access_condition
|
||||
- ../slots/is_or_was_access_restricted
|
||||
- ../slots/has_or_had_comprehensive_overview
|
||||
- ../slots/card_description
|
||||
- ../slots/card_description_en
|
||||
# REMOVED 2026-01-22: card_description, card_description_en → has_or_had_description + Description (with language tag) per slot_fixes.yaml
|
||||
- ../slots/card_image_url
|
||||
- ../slots/card_title
|
||||
- ../slots/card_title_en
|
||||
|
|
@ -1027,8 +1026,8 @@ classes:
|
|||
|
||||
'
|
||||
slots:
|
||||
- card_description
|
||||
- card_description_en
|
||||
# MIGRATED 2026-01-22: card_description, card_description_en → has_or_had_description + Description (multivalued with language tag)
|
||||
- has_or_had_description
|
||||
- card_image_url
|
||||
- card_title
|
||||
- card_title_en
|
||||
|
|
@ -1037,6 +1036,25 @@ classes:
|
|||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- has_or_had_provenance_path # was: xpath - migrated per Rule 53 (2026-01-15)
|
||||
slot_usage:
|
||||
has_or_had_description:
|
||||
range: Description
|
||||
multivalued: true
|
||||
inlined: true
|
||||
description: |
|
||||
Card description(s) with language tagging.
|
||||
MIGRATED 2026-01-22: Replaces card_description and card_description_en.
|
||||
Use description_type: "card" and language: "nl"/"en" to distinguish.
|
||||
examples:
|
||||
- value:
|
||||
description_text: "Kaart beschrijving in het Nederlands"
|
||||
description_type: card
|
||||
language: nl
|
||||
description: Dutch card description
|
||||
- value:
|
||||
description_text: "Card description in English"
|
||||
description_type: card
|
||||
language: en
|
||||
description: English card description
|
||||
card_title:
|
||||
required: true
|
||||
card_url:
|
||||
|
|
|
|||
|
|
@ -19,7 +19,9 @@ imports:
|
|||
- ../slots/defined_by_standard
|
||||
- ../slots/is_or_was_allocated_by
|
||||
- ../slots/identifier_format_used
|
||||
- ../slots/canonical_value
|
||||
# MIGRATED 2026-01-22: canonical_value → has_or_had_canonical_form + CanonicalForm per slot_fixes.yaml feedback
|
||||
- ../slots/has_or_had_canonical_form
|
||||
- ./CanonicalForm
|
||||
- ../slots/has_or_had_secondary_label
|
||||
- ../slots/has_allocation_date
|
||||
- ../slots/specificity_annotation
|
||||
|
|
@ -160,7 +162,7 @@ classes:
|
|||
- defined_by_standard: Which Standard defines this identifier type (ISIL → ISO 15511)
|
||||
- allocated_by: Which AllocationAgency assigned this specific identifier
|
||||
- identifier_format_used: Which format variant is used in identifier_value
|
||||
- canonical_value: Normalized form for deduplication and matching
|
||||
- has_or_had_canonical_form: Normalized form (CanonicalForm) for deduplication and matching
|
||||
- allocation_date: When the identifier was assigned
|
||||
|
||||
**Dual-Purpose Identifiers**:
|
||||
|
|
@ -187,7 +189,8 @@ classes:
|
|||
- is_or_was_allocated_by
|
||||
- has_allocation_date
|
||||
- has_or_had_secondary_label
|
||||
- canonical_value
|
||||
# MIGRATED 2026-01-22: canonical_value → has_or_had_canonical_form + CanonicalForm
|
||||
- has_or_had_canonical_form
|
||||
- defined_by_standard
|
||||
- identifier_format_used
|
||||
- identifies_custodian
|
||||
|
|
@ -203,8 +206,19 @@ classes:
|
|||
required: false
|
||||
identifier_format_used:
|
||||
required: false
|
||||
canonical_value:
|
||||
has_or_had_canonical_form:
|
||||
range: CanonicalForm
|
||||
required: false
|
||||
inlined: true
|
||||
description: >-
|
||||
Canonical/normalized form for deduplication and matching.
|
||||
MIGRATED 2026-01-22: Replaces canonical_value with structured CanonicalForm.
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label:
|
||||
has_or_had_text: "0000000121465765"
|
||||
normalization_rule: "ISNI_REMOVE_SPACES"
|
||||
description: ISNI canonical form
|
||||
has_or_had_secondary_label:
|
||||
description: |
|
||||
For dual-purpose identifiers (ISNI, VIAF), links to the name authority
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@ imports:
|
|||
- ../slots/language
|
||||
- ../slots/has_aspect_ratio
|
||||
# REMOVED 2026-01-15: ../slots/available_caption_languages - migrated to has_available_caption_language
|
||||
- ../slots/caption_available
|
||||
# MIGRATED 2026-01-22: caption_available → has_or_had_caption + Caption per slot_fixes.yaml feedback
|
||||
- ../slots/has_or_had_caption
|
||||
- ./Caption
|
||||
# REMOVED 2026-01-18: ../slots/comment_author - migrated to has_or_had_author + Author (Rule 53)
|
||||
- ../slots/has_or_had_author
|
||||
- ./Author
|
||||
|
|
@ -223,7 +225,8 @@ classes:
|
|||
slots:
|
||||
- has_aspect_ratio
|
||||
- has_available_caption_language
|
||||
- caption_available
|
||||
# MIGRATED 2026-01-22: caption_available → has_or_had_caption + Caption per slot_fixes.yaml feedback
|
||||
- has_or_had_caption
|
||||
# REMOVED 2026-01-18: comment_count - migrated to has_or_had_quantity + Quantity (Rule 53)
|
||||
# REMOVED 2026-01-22: comments_fetched - migrated to was_fetched_at + is_or_was_part_of_total + SourceCommentCount (Rule 53)
|
||||
- was_fetched_at
|
||||
|
|
@ -279,14 +282,31 @@ classes:
|
|||
# examples:
|
||||
# - value: 30.0
|
||||
# description: 30 frames per second
|
||||
caption_available:
|
||||
range: boolean
|
||||
# MIGRATED 2026-01-22: caption_available → has_or_had_caption + Caption per slot_fixes.yaml feedback
|
||||
has_or_had_caption:
|
||||
range: Caption
|
||||
multivalued: true
|
||||
inlined: true
|
||||
required: false
|
||||
description: |
|
||||
Structured caption/subtitle information for this video.
|
||||
MIGRATED from caption_available per slot_fixes.yaml (Rule 53, 2026-01-22).
|
||||
Caption class provides language, format, and availability metadata.
|
||||
examples:
|
||||
- value: true
|
||||
description: Video has captions available
|
||||
- value: false
|
||||
description: No captions available
|
||||
- value:
|
||||
is_available: true
|
||||
language: en
|
||||
caption_format: closed_caption
|
||||
description: English closed captions available
|
||||
- value:
|
||||
is_available: true
|
||||
language: nl
|
||||
caption_format: VTT
|
||||
caption_url: https://example.org/video/captions_nl.vtt
|
||||
description: Dutch subtitles in VTT format
|
||||
- value:
|
||||
is_available: false
|
||||
description: No captions available (migrated from caption_available: false)
|
||||
default_language:
|
||||
range: string
|
||||
required: false
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_caption
|
||||
name: has_or_had_caption_slot
|
||||
title: Has or Had Caption 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_caption:
|
||||
slot_uri: schema:caption
|
||||
description: >-
|
||||
Links to a Caption providing accessibility text for media content.
|
||||
|
||||
**PURPOSE**:
|
||||
- Accessibility compliance (WCAG)
|
||||
- Video/audio content description
|
||||
- Multilingual caption support
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
- slot_uri: schema:caption (primary)
|
||||
- Supports Schema.org media accessibility patterns
|
||||
|
||||
MIGRATED 2026-01-22: Replaces caption_available slot per slot_fixes.yaml feedback.
|
||||
range: Caption
|
||||
inlined: true
|
||||
multivalued: true
|
||||
exact_mappings:
|
||||
- schema:caption
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Captions are universal for media accessibility
|
||||
|
|
@ -18,14 +18,11 @@
|
|||
"begin_of_the_begin.yaml",
|
||||
"begin_of_the_end.yaml",
|
||||
"has_or_had_notation.yaml",
|
||||
"canonical_value.yaml",
|
||||
"capacity.yaml",
|
||||
"has_or_had_canonical_form.yaml",
|
||||
"capacity_type.yaml",
|
||||
"capacity_value.yaml",
|
||||
"capital_budget.yaml",
|
||||
"caption_available.yaml",
|
||||
"card_description.yaml",
|
||||
"card_description_en.yaml",
|
||||
"card_image_url.yaml",
|
||||
"card_title.yaml",
|
||||
"card_title_en.yaml",
|
||||
|
|
@ -69,7 +66,7 @@
|
|||
"confidence_value.yaml",
|
||||
"__ARCHIVED_20260122__conflict_status.yaml",
|
||||
"__ARCHIVED_20260122__connection.yaml",
|
||||
"connection_degree.yaml",
|
||||
"__ARCHIVED_20260122__connection_degree.yaml",
|
||||
"connection_heritage_relevant.yaml",
|
||||
"connection_heritage_type.yaml",
|
||||
"connection_id.yaml",
|
||||
|
|
|
|||
|
|
@ -7956,7 +7956,8 @@ fixes:
|
|||
would enhance semantic clarity and allow for richer metadata about each canonical value.
|
||||
|
||||
This would align with best practices for data normalization.'
|
||||
done: false
|
||||
done: true
|
||||
response: "Completed 2026-01-22 by claude-sonnet-4. Created has_or_had_canonical_form slot and CanonicalForm class. Migrated Identifier.yaml (CustodianIdentifier) to use new pattern. CanonicalForm has has_or_had_label → Label for normalized value, plus normalization_rule and source_format attributes. Archived canonical_value.yaml."
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/capacity
|
||||
revision:
|
||||
- label: has_or_had_capacity
|
||||
|
|
@ -7991,7 +7992,8 @@ fixes:
|
|||
and align with best practices for modeling dimensional data.
|
||||
|
||||
This would facilitate better integration with other dimension-related data.'
|
||||
done: false
|
||||
done: true
|
||||
response: "Completed 2026-01-22 by claude-sonnet-4. ARCHIVED (unused): capacity slot not imported by any class file. Archived to archive/capacity_archived_20260122.yaml. No migration needed as slot was never used."
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/capacity_cubic_meters
|
||||
revision:
|
||||
- label: has_or_had_capacity
|
||||
|
|
@ -8166,7 +8168,8 @@ fixes:
|
|||
would enhance semantic clarity and allow for richer metadata about each description.
|
||||
|
||||
This would align with best practices for descriptive data modeling.'
|
||||
done: false
|
||||
done: true
|
||||
response: "Completed 2026-01-22 by claude-sonnet-4. Migrated FindingAid.yaml Card class to use has_or_had_description + Description (multivalued with language tag). Description.description_type='card' and Description.language='nl' distinguishes from English. Archived card_description.yaml."
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/card_description_en
|
||||
revision:
|
||||
- label: has_or_had_description
|
||||
|
|
@ -8209,7 +8212,8 @@ fixes:
|
|||
would enhance semantic clarity and allow for richer metadata about each description.
|
||||
|
||||
This would align with best practices for multilingual data modeling.'
|
||||
done: false
|
||||
done: true
|
||||
response: "Completed 2026-01-22 by claude-sonnet-4. Same migration as card_description - FindingAid.yaml Card class uses has_or_had_description + Description with language='en'. Archived card_description_en.yaml."
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/card_image_url
|
||||
revision:
|
||||
- label: has_or_had_image
|
||||
|
|
@ -11332,6 +11336,28 @@ fixes:
|
|||
type: slot
|
||||
- label: CapacityTypes
|
||||
type: class
|
||||
processed:
|
||||
status: true
|
||||
date: '2026-01-22'
|
||||
agent: claude-claude-sonnet-4-20250514
|
||||
notes: |
|
||||
**Migration #59: capacity_type** ✅ COMPLETE
|
||||
|
||||
**Pattern**: capacity_type → has_or_had_type + CapacityType/CapacityTypes hierarchy
|
||||
|
||||
**Files Created**:
|
||||
- CapacityType.yaml: Abstract base class for capacity types
|
||||
- CapacityTypes.yaml: 10 concrete subclasses (Volume, ShelfLength, FloorArea, etc.)
|
||||
|
||||
**Files Modified**:
|
||||
- Capacity.yaml: Migrated capacity_type to has_or_had_type + CapacityType
|
||||
- Updated imports
|
||||
- Updated slots list
|
||||
- Updated slot_usage with CapacityType range
|
||||
- Updated description examples
|
||||
- Updated class examples
|
||||
|
||||
**Archived**: modules/slots/archive/capacity_type_archived_20260122.yaml
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/capacity_value
|
||||
revision:
|
||||
- label: has_or_had_quantity
|
||||
|
|
|
|||
Loading…
Reference in a new issue