diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json
index f71dc78aad..17515d8d8b 100644
--- a/frontend/public/schemas/20251121/linkml/manifest.json
+++ b/frontend/public/schemas/20251121/linkml/manifest.json
@@ -1,12 +1,12 @@
{
- "generated": "2026-01-14T14:13:07.428Z",
+ "generated": "2026-01-14T14:15:37.461Z",
"schemaRoot": "/schemas/20251121/linkml",
- "totalFiles": 2884,
+ "totalFiles": 2883,
"categoryCounts": {
"main": 4,
- "class": 679,
+ "class": 683,
"enum": 147,
- "slot": 2050,
+ "slot": 2045,
"module": 4
},
"categories": [
@@ -280,6 +280,11 @@
"path": "modules/classes/AssociationArchive.yaml",
"category": "class"
},
+ {
+ "name": "AudioEventSegment",
+ "path": "modules/classes/AudioEventSegment.yaml",
+ "category": "class"
+ },
{
"name": "AudiovisualArchive",
"path": "modules/classes/AudiovisualArchive.yaml",
@@ -345,6 +350,11 @@
"path": "modules/classes/BankArchiveRecordSetTypes.yaml",
"category": "class"
},
+ {
+ "name": "BayNumber",
+ "path": "modules/classes/BayNumber.yaml",
+ "category": "class"
+ },
{
"name": "Bildstelle",
"path": "modules/classes/Bildstelle.yaml",
@@ -380,6 +390,11 @@
"path": "modules/classes/Bookplate.yaml",
"category": "class"
},
+ {
+ "name": "BoxNumber",
+ "path": "modules/classes/BoxNumber.yaml",
+ "category": "class"
+ },
{
"name": "BranchOffice",
"path": "modules/classes/BranchOffice.yaml",
@@ -400,6 +415,11 @@
"path": "modules/classes/Budget.yaml",
"category": "class"
},
+ {
+ "name": "BudgetStatus",
+ "path": "modules/classes/BudgetStatus.yaml",
+ "category": "class"
+ },
{
"name": "BudgetType",
"path": "modules/classes/BudgetType.yaml",
@@ -4227,11 +4247,6 @@
"path": "modules/slots/applies_to_call.yaml",
"category": "slot"
},
- {
- "name": "approved_by",
- "path": "modules/slots/approved_by.yaml",
- "category": "slot"
- },
{
"name": "approximate",
"path": "modules/slots/approximate.yaml",
@@ -4252,11 +4267,6 @@
"path": "modules/slots/asserted_by.yaml",
"category": "slot"
},
- {
- "name": "audio_event_segments",
- "path": "modules/slots/audio_event_segments.yaml",
- "category": "slot"
- },
{
"name": "authors",
"path": "modules/slots/authors.yaml",
@@ -4282,11 +4292,6 @@
"path": "modules/slots/base_surname.yaml",
"category": "slot"
},
- {
- "name": "bay_number",
- "path": "modules/slots/bay_number.yaml",
- "category": "slot"
- },
{
"name": "begin_of_the_begin",
"path": "modules/slots/begin_of_the_begin.yaml",
@@ -4342,11 +4347,6 @@
"path": "modules/slots/bounding_box.yaml",
"category": "slot"
},
- {
- "name": "box_number",
- "path": "modules/slots/box_number.yaml",
- "category": "slot"
- },
{
"name": "branch_head",
"path": "modules/slots/branch_head.yaml",
@@ -4367,11 +4367,6 @@
"path": "modules/slots/budget_currency.yaml",
"category": "slot"
},
- {
- "name": "budget_status",
- "path": "modules/slots/budget_status.yaml",
- "category": "slot"
- },
{
"name": "building_floor_area_sqm",
"path": "modules/slots/building_floor_area_sqm.yaml",
diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/AudioEventSegment.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/AudioEventSegment.yaml
new file mode 100644
index 0000000000..fdb9cf924b
--- /dev/null
+++ b/frontend/public/schemas/20251121/linkml/modules/classes/AudioEventSegment.yaml
@@ -0,0 +1,172 @@
+id: https://nde.nl/ontology/hc/class/AudioEventSegment
+name: audio_event_segment_class
+title: Audio Event Segment Class
+description: |
+ A temporal segment of audio containing a detected audio event (speech, music, silence, etc.).
+
+ MIGRATED from audio_event_segments slot (Rule 53).
+ Uses generic has_or_had_segment slot with range narrowed to AudioEventSegment.
+imports:
+ - linkml:types
+ - ../slots/start_seconds
+ - ../slots/end_seconds
+ - ../slots/start_time
+ - ../slots/end_time
+ - ../slots/segment_index
+ - ../slots/segment_text
+ - ../slots/confidence
+ - ../slots/specificity_annotation
+ - ../slots/template_specificity
+ - ./SpecificityAnnotation
+ - ./TemplateSpecificityScores
+ - ../enums/AudioEventTypeEnum
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ schema: http://schema.org/
+ dcterms: http://purl.org/dc/terms/
+ crm: http://www.cidoc-crm.org/cidoc-crm/
+ oa: http://www.w3.org/ns/oa#
+ ma: http://www.w3.org/ns/ma-ont#
+default_prefix: hc
+
+classes:
+ AudioEventSegment:
+ class_uri: hc:AudioEventSegment
+ description: |
+ A temporal segment of audio containing a detected audio event.
+
+ **DEFINITION**:
+
+ AudioEventSegment represents a bounded temporal portion of audio content
+ where a specific type of audio event has been detected. This includes:
+ - Speech segments (with optional speaker/language info)
+ - Music segments (with optional genre/type info)
+ - Silence segments (gaps between audio)
+ - Sound event segments (applause, laughter, ambient sounds)
+ - Noise segments (for quality assessment)
+
+ **RELATIONSHIP TO VideoTimeSegment**:
+
+ AudioEventSegment is a specialized sibling of VideoTimeSegment:
+ - Both extend CIDOC-CRM E52_Time-Span concept
+ - VideoTimeSegment: general video temporal segments
+ - AudioEventSegment: audio-specific event segments
+
+ **AUDIO EVENT TYPES**:
+
+ | Event Type | Description | Example |
+ |------------|-------------|---------|
+ | SPEECH | Human speech detected | Interview segment |
+ | MUSIC | Music detected | Background soundtrack |
+ | SILENCE | Very low or no audio | Gap between segments |
+ | SOUND_EVENT | Non-speech/music sounds | Applause, footsteps |
+ | NOISE | Noise/interference | Quality issue marker |
+ | MIXED | Multiple event types | Overlapping audio |
+
+ **HERITAGE USE CASES**:
+
+ | Content Type | Application |
+ |--------------|-------------|
+ | Oral histories | Speech segment identification |
+ | Virtual tours | Background music detection |
+ | Lecture recordings | Audience reaction segments |
+ | Conservation videos | Narration vs ambient sound |
+ | Archival footage | Audio quality assessment |
+
+ **PROVENANCE**:
+
+ Created as part of slot migration (Rule 53) from deprecated
+ `audio_event_segments` slot to generic `has_or_had_segment` pattern.
+ exact_mappings:
+ - hc:AudioEventSegment
+ close_mappings:
+ - crm:E52_Time-Span
+ - ma:MediaFragment
+ related_mappings:
+ - oa:FragmentSelector
+ slots:
+ - start_seconds
+ - end_seconds
+ - start_time
+ - end_time
+ - segment_index
+ - segment_text
+ - confidence
+ - specificity_annotation
+ - template_specificity
+ attributes:
+ audio_event_type:
+ range: AudioEventTypeEnum
+ required: true
+ description: The type of audio event detected in this segment.
+ examples:
+ - value: SPEECH
+ description: Speech detected in this segment
+ - value: MUSIC
+ description: Music detected in this segment
+ slot_usage:
+ start_seconds:
+ range: float
+ required: true
+ minimum_value: 0.0
+ description: Start time in seconds for this audio event segment.
+ examples:
+ - value: 0.0
+ description: Audio event starts at beginning
+ - value: 45.5
+ description: Audio event starts at 45.5 seconds
+ end_seconds:
+ range: float
+ required: true
+ minimum_value: 0.0
+ description: End time in seconds for this audio event segment.
+ examples:
+ - value: 15.0
+ description: Audio event ends at 15 seconds
+ - value: 60.0
+ description: Audio event ends at 1 minute
+ start_time:
+ range: string
+ required: false
+ pattern: "^PT(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?$"
+ description: Start time in ISO 8601 duration format.
+ examples:
+ - value: PT0M30S
+ description: 30 seconds from start
+ end_time:
+ range: string
+ required: false
+ pattern: "^PT(\\d+H)?(\\d+M)?(\\d+(\\.\\d+)?S)?$"
+ description: End time in ISO 8601 duration format.
+ examples:
+ - value: PT0M45S
+ description: 45 seconds from start
+ segment_text:
+ range: string
+ required: false
+ description: Text content for this segment (e.g., speech transcript, music description).
+ examples:
+ - value: "Welcome to the Rijksmuseum"
+ description: Speech transcript text
+ - value: "Classical background music"
+ description: Music segment description
+ confidence:
+ range: float
+ required: false
+ minimum_value: 0.0
+ maximum_value: 1.0
+ description: Confidence score (0.0-1.0) for the audio event detection.
+ examples:
+ - value: 0.95
+ description: High confidence detection
+ - value: 0.72
+ description: Medium confidence detection
+ comments:
+ - Audio event segment for speech, music, silence, sound event detection
+ - Temporal boundaries with start/end seconds (primary) and ISO 8601 (secondary)
+ - Confidence scoring for AI-generated detections
+ - Part of Rule 53 slot migration from audio_event_segments
+ see_also:
+ - https://www.w3.org/TR/media-frags/
+ - https://www.w3.org/ns/ma-ont
diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/BayNumber.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/BayNumber.yaml
new file mode 100644
index 0000000000..fde8859b81
--- /dev/null
+++ b/frontend/public/schemas/20251121/linkml/modules/classes/BayNumber.yaml
@@ -0,0 +1,92 @@
+id: https://nde.nl/ontology/hc/class/BayNumber
+name: bay_number_class
+title: Bay Number Class
+description: |
+ A storage bay or section identifier within a storage row.
+
+ MIGRATED from bay_number slot (Rule 53).
+ Uses generic has_or_had_identifier slot with range narrowed to BayNumber.
+imports:
+ - linkml:types
+ - ../slots/identifier_value
+ - ../slots/specificity_annotation
+ - ../slots/template_specificity
+ - ./SpecificityAnnotation
+ - ./TemplateSpecificityScores
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ schema: http://schema.org/
+ dcterms: http://purl.org/dc/terms/
+ crm: http://www.cidoc-crm.org/cidoc-crm/
+default_prefix: hc
+
+classes:
+ BayNumber:
+ class_uri: hc:BayNumber
+ description: |
+ An identifier for a storage bay or section within a row/aisle of a storage facility.
+
+ **DEFINITION**:
+
+ BayNumber represents a discrete location identifier within a storage system.
+ In heritage storage facilities, storage is typically organized hierarchically:
+
+ ```
+ Storage Facility
+ └── Zone (environmental control)
+ └── Row/Aisle (physical corridor)
+ └── Bay/Section (THIS CLASS - vertical unit in row)
+ └── Shelf (horizontal level within bay)
+ └── Storage Unit (box, drawer, etc.)
+ ```
+
+ **TYPICAL VALUES**:
+
+ | Format | Example | Description |
+ |--------|---------|-------------|
+ | Numeric | "3", "12" | Sequential bay numbers |
+ | Alphabetic | "A", "C", "AA" | Lettered bays |
+ | Mixed | "3A", "B2" | Combined formats |
+ | Descriptive | "North-3" | Location-based |
+
+ **HERITAGE USE CASES**:
+
+ | Institution Type | Bay Naming Convention |
+ |------------------|----------------------|
+ | Archives | Sequential numeric (1, 2, 3...) |
+ | Museums | Alphanumeric by collection area |
+ | Libraries | By call number range |
+ | Natural history | By specimen type |
+
+ **PROVENANCE**:
+
+ Created as part of slot migration (Rule 53) from deprecated
+ `bay_number` slot to generic `has_or_had_identifier` pattern.
+ exact_mappings:
+ - hc:BayNumber
+ close_mappings:
+ - crm:E42_Identifier
+ related_mappings:
+ - schema:identifier
+ slots:
+ - specificity_annotation
+ - template_specificity
+ attributes:
+ value:
+ range: string
+ required: true
+ description: The bay number/identifier value.
+ examples:
+ - value: "3"
+ description: Numeric bay number
+ - value: "C"
+ description: Alphabetic bay identifier
+ - value: "North-3"
+ description: Location-descriptive bay
+ comments:
+ - Storage bay identifier within a row/aisle
+ - Part of hierarchical storage location addressing
+ - Part of Rule 53 slot migration from bay_number
+ see_also:
+ - https://nde.nl/ontology/hc/StorageUnit
diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/BoxNumber.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/BoxNumber.yaml
new file mode 100644
index 0000000000..91e6d1867a
--- /dev/null
+++ b/frontend/public/schemas/20251121/linkml/modules/classes/BoxNumber.yaml
@@ -0,0 +1,97 @@
+id: https://nde.nl/ontology/hc/class/BoxNumber
+name: box_number_class
+title: Box Number Class
+description: |
+ A storage box number or position identifier on a shelf.
+
+ MIGRATED from box_number slot (Rule 53).
+ Uses generic has_or_had_identifier slot with range narrowed to BoxNumber.
+imports:
+ - linkml:types
+ - ../slots/identifier_value
+ - ../slots/specificity_annotation
+ - ../slots/template_specificity
+ - ./SpecificityAnnotation
+ - ./TemplateSpecificityScores
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ schema: http://schema.org/
+ dcterms: http://purl.org/dc/terms/
+ crm: http://www.cidoc-crm.org/cidoc-crm/
+default_prefix: hc
+
+classes:
+ BoxNumber:
+ class_uri: hc:BoxNumber
+ description: |
+ An identifier for a storage box or its position on a shelf.
+
+ **DEFINITION**:
+
+ BoxNumber represents the position or identifier of a storage box within
+ a storage unit hierarchy. Archive boxes are the most common physical
+ containers for heritage materials, particularly in archives.
+
+ ```
+ Shelf
+ └── Box 1 (THIS CLASS - position on shelf)
+ └── Box 2
+ └── Box 3
+ ...
+ ```
+
+ **TYPICAL VALUES**:
+
+ | Type | Example | Description |
+ |------|---------|-------------|
+ | Sequential | 1, 2, 3, 12 | Position on shelf left-to-right |
+ | Inventory | 145, 2024-0042 | Unique box inventory number |
+ | Combined | 12.3 | Bay 12, Box 3 |
+
+ **ARCHIVE BOX STANDARDS**:
+
+ Heritage institutions typically use acid-free archive boxes conforming to:
+ - ISO 16245 (Boxes for documents)
+ - ANSI/NISO Z39.77 (Guidelines for materials in archives)
+
+ **HERITAGE USE CASES**:
+
+ | Material Type | Box Format |
+ |---------------|------------|
+ | Documents | Standard archive box (legal/letter) |
+ | Photographs | Photo storage boxes |
+ | Oversized | Flat boxes, tubes |
+ | Fragile | Custom padded boxes |
+
+ **PROVENANCE**:
+
+ Created as part of slot migration (Rule 53) from deprecated
+ `box_number` slot to generic `has_or_had_identifier` pattern.
+ exact_mappings:
+ - hc:BoxNumber
+ close_mappings:
+ - crm:E42_Identifier
+ related_mappings:
+ - schema:identifier
+ slots:
+ - specificity_annotation
+ - template_specificity
+ attributes:
+ value:
+ range: integer
+ required: true
+ minimum_value: 1
+ description: The box number (position on shelf or inventory number).
+ examples:
+ - value: 12
+ description: Box at position 12 on shelf
+ - value: 145
+ description: Archive box inventory number 145
+ comments:
+ - Storage box position identifier
+ - Typically integer representing shelf position or inventory number
+ - Part of Rule 53 slot migration from box_number
+ see_also:
+ - https://nde.nl/ontology/hc/StorageUnit
+ - https://www.wikidata.org/wiki/Q854619
diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/Budget.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/Budget.yaml
index 6ce70c552b..68e29d853b 100644
--- a/frontend/public/schemas/20251121/linkml/modules/classes/Budget.yaml
+++ b/frontend/public/schemas/20251121/linkml/modules/classes/Budget.yaml
@@ -16,7 +16,10 @@ imports:
- ../slots/budget_currency
- ../slots/has_or_had_description
- ../slots/has_or_had_label
-- ../slots/budget_status
+# REMOVED - migrated to has_or_had_status with range BudgetStatus (Rule 53)
+# - ../slots/budget_status
+- ../slots/has_or_had_status
+- ./BudgetStatus
- ../slots/has_or_had_type
- ../slots/capital_budget
- ./BudgetType
@@ -97,7 +100,9 @@ classes:
- budget_currency
- has_or_had_description
- has_or_had_label
- - budget_status
+ # MIGRATED from budget_status to has_or_had_status (Rule 53)
+ # - budget_status
+ - has_or_had_status
- has_or_had_type
- capital_budget
- digitization_budget
@@ -249,12 +254,25 @@ classes:
description: Agent (person/organization) that approved this budget
range: string
required: false
- budget_status:
- range: string
+ # MIGRATED from budget_status to has_or_had_status (Rule 53)
+ # budget_status:
+ # range: string
+ # required: true
+ # examples:
+ # - value: ACTIVE
+ # description: Current fiscal year budget in effect
+ has_or_had_status:
+ description: |
+ MIGRATED from budget_status (Rule 53).
+ Current status of this budget in its lifecycle.
+ Uses BudgetStatus class for structured status tracking.
+ range: BudgetStatus
required: true
examples:
- - value: ACTIVE
- description: Current fiscal year budget in effect
+ - value: '{value: "ACTIVE", effective_date: "2024-01-01"}'
+ description: Budget currently in effect
+ - value: '{value: "DRAFT", effective_date: "2023-10-01"}'
+ description: Budget under development
revision_number:
range: integer
required: false
@@ -319,7 +337,9 @@ classes:
endowment_draw: 5000000.0
approval_date: '2023-11-15'
is_or_was_approved_by: Board of Directors
- budget_status: ACTIVE
+ has_or_had_status:
+ value: ACTIVE
+ effective_date: '2024-01-01'
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
description: Major museum annual operating budget
- value:
@@ -341,6 +361,8 @@ classes:
internal_funding: 2500000.0
approval_date: '2024-03-01'
is_or_was_approved_by: Province of Noord-Holland
- budget_status: ACTIVE
+ has_or_had_status:
+ value: ACTIVE
+ effective_date: '2024-04-01'
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-haa-a-nha
description: Regional archive government-funded budget
diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/BudgetStatus.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/BudgetStatus.yaml
new file mode 100644
index 0000000000..94761f3d60
--- /dev/null
+++ b/frontend/public/schemas/20251121/linkml/modules/classes/BudgetStatus.yaml
@@ -0,0 +1,105 @@
+id: https://nde.nl/ontology/hc/class/BudgetStatus
+name: budget_status_class
+title: Budget Status Class
+description: |
+ Status of a heritage custodian budget throughout its lifecycle.
+
+ MIGRATED from budget_status slot (Rule 53).
+ Uses generic has_or_had_status slot with range narrowed to BudgetStatus.
+imports:
+ - linkml:types
+ - ../slots/specificity_annotation
+ - ../slots/template_specificity
+ - ./SpecificityAnnotation
+ - ./TemplateSpecificityScores
+prefixes:
+ linkml: https://w3id.org/linkml/
+ hc: https://nde.nl/ontology/hc/
+ schema: http://schema.org/
+ dcterms: http://purl.org/dc/terms/
+ frapo: http://purl.org/cerif/frapo/
+default_prefix: hc
+
+classes:
+ BudgetStatus:
+ class_uri: hc:BudgetStatus
+ description: |
+ Status of a budget document throughout its lifecycle.
+
+ **DEFINITION**:
+
+ BudgetStatus represents the current state of a budget document
+ as it moves through the approval and execution lifecycle.
+
+ **BUDGET LIFECYCLE STAGES**:
+
+ ```
+ DRAFT → PROPOSED → APPROVED → ACTIVE → REVISED → CLOSED
+ ↓ ↓
+ REJECTED SUPERSEDED
+ ```
+
+ **STATUS VALUES**:
+
+ | Status | Description | Typical Duration |
+ |--------|-------------|------------------|
+ | DRAFT | Under development | Weeks/months |
+ | PROPOSED | Submitted for approval | Days/weeks |
+ | APPROVED | Officially approved | Until fiscal start |
+ | ACTIVE | Currently in effect | Fiscal year |
+ | REVISED | Modified after approval | Variable |
+ | CLOSED | Fiscal period ended | Permanent |
+ | REJECTED | Not approved | Terminal |
+ | SUPERSEDED | Replaced by revision | Terminal |
+
+ **HERITAGE INSTITUTION CONTEXT**:
+
+ Heritage institution budgets typically follow these approval paths:
+
+ | Institution Type | Approval Authority |
+ |------------------|-------------------|
+ | Museum (stichting) | Board of Directors |
+ | Regional Archive | Provincial Government |
+ | National Library | Ministry of Culture |
+ | University Collection | University Board |
+
+ **PROVENANCE**:
+
+ Created as part of slot migration (Rule 53) from deprecated
+ `budget_status` slot to generic `has_or_had_status` pattern.
+ exact_mappings:
+ - hc:BudgetStatus
+ close_mappings:
+ - schema:status
+ related_mappings:
+ - dcterms:status
+ slots:
+ - specificity_annotation
+ - template_specificity
+ attributes:
+ value:
+ range: string
+ required: true
+ description: |
+ The budget status value.
+ Valid values: DRAFT, PROPOSED, APPROVED, ACTIVE, REVISED, CLOSED, REJECTED, SUPERSEDED
+ examples:
+ - value: ACTIVE
+ description: Budget currently in effect
+ - value: DRAFT
+ description: Budget under development
+ - value: CLOSED
+ description: Fiscal period ended
+ effective_date:
+ range: date
+ required: false
+ description: Date when this status became effective.
+ examples:
+ - value: "2024-01-01"
+ description: Status effective from start of year
+ comments:
+ - Budget lifecycle status tracking
+ - Supports audit trail of budget state changes
+ - Part of Rule 53 slot migration from budget_status
+ see_also:
+ - https://nde.nl/ontology/hc/Budget
diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml
index badc553fcd..c9d0cb6654 100644
--- a/frontend/public/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml
+++ b/frontend/public/schemas/20251121/linkml/modules/classes/StorageConditionPolicy.yaml
@@ -31,7 +31,7 @@ imports:
- ../slots/light_max_lux
- ../slots/particulate_max
- ../slots/pest_management_required
-- ../slots/policy_approved_by
+- ../slots/is_or_was_approved_by # MIGRATED: was ../slots/policy_approved_by (2026-01-15)
- ../slots/policy_description
- ../slots/policy_effective_from
- ../slots/policy_effective_to
@@ -46,6 +46,7 @@ imports:
- ../slots/uv_filtered_required
- ./SpecificityAnnotation
- ./TemplateSpecificityScores
+- ./Approver # Added for is_or_was_approved_by migration (2026-01-15)
classes:
StorageConditionPolicy:
class_uri: odrl:Policy
@@ -91,7 +92,7 @@ classes:
- note
- particulate_max
- pest_management_required
- - policy_approved_by
+ - is_or_was_approved_by # MIGRATED: was policy_approved_by (2026-01-15)
- policy_description
- policy_effective_from
- policy_effective_to
diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/StorageUnit.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/StorageUnit.yaml
index a3a893de6a..7191e38001 100644
--- a/frontend/public/schemas/20251121/linkml/modules/classes/StorageUnit.yaml
+++ b/frontend/public/schemas/20251121/linkml/modules/classes/StorageUnit.yaml
@@ -17,8 +17,13 @@ imports:
- ../slots/unit_name
- ../slots/unit_type
- ../slots/capacity_item
-- ../slots/bay_number
-- ../slots/box_number
+# REMOVED - migrated to has_or_had_identifier with range BayNumber (Rule 53)
+# - ../slots/bay_number
+# REMOVED - migrated to has_or_had_identifier with range BoxNumber (Rule 53)
+# - ../slots/box_number
+- ../slots/has_or_had_identifier
+- ./BayNumber
+- ./BoxNumber
- ../slots/current_item_count
- ../slots/drawer_number
- ../slots/part_of_storage
@@ -75,8 +80,10 @@ classes:
- hc:EnvironmentalZone
- schema:Place
slots:
- - bay_number
- - box_number
+ # MIGRATED from bay_number and box_number to has_or_had_identifier (Rule 53)
+ # - bay_number
+ # - box_number
+ - has_or_had_identifier
- capacity_item
- current_item_count
- drawer_number
@@ -124,11 +131,22 @@ classes:
- value: A
- value: '12'
- value: North-3
- bay_number:
+ has_or_had_identifier:
+ description: |
+ MIGRATED from bay_number and box_number (Rule 53).
+ Storage location identifiers including bay and box numbers.
+ Use BayNumber for bay/section identifiers, BoxNumber for box positions.
range: string
+ multivalued: true
examples:
- - value: '3'
- - value: C
+ - value: '[{type: BayNumber, value: "3"}, {type: BoxNumber, value: 12}]'
+ description: Bay 3, Box 12
+ # DEPRECATED - use has_or_had_identifier with range BayNumber
+ # bay_number:
+ # range: string
+ # examples:
+ # - value: '3'
+ # - value: C
shelf_number:
range: integer
examples:
@@ -138,10 +156,11 @@ classes:
range: integer
examples:
- value: 3
- box_number:
- range: integer
- examples:
- - value: 12
+ # DEPRECATED - use has_or_had_identifier with range BoxNumber
+ # box_number:
+ # range: integer
+ # examples:
+ # - value: 12
capacity_item:
range: integer
current_item_count:
diff --git a/frontend/public/schemas/20251121/linkml/modules/classes/VideoAudioAnnotation.yaml b/frontend/public/schemas/20251121/linkml/modules/classes/VideoAudioAnnotation.yaml
index fa28485a39..b899e80a1c 100644
--- a/frontend/public/schemas/20251121/linkml/modules/classes/VideoAudioAnnotation.yaml
+++ b/frontend/public/schemas/20251121/linkml/modules/classes/VideoAudioAnnotation.yaml
@@ -5,7 +5,10 @@ imports:
- linkml:types
- ./VideoAnnotation
- ./VideoTimeSegment
-- ../slots/audio_event_segments
+- ./AudioEventSegment
+# REMOVED - migrated to has_or_had_segment with range AudioEventSegment (Rule 53)
+# - ../slots/audio_event_segments
+- ../slots/has_or_had_segment
- ../slots/has_audio_quality_score
- ../slots/diarization_confidence
- ../slots/diarization_enabled
@@ -112,7 +115,9 @@ classes:
- wikidata:Q11028
- wikidata:Q638
slots:
- - audio_event_segments
+ # MIGRATED from audio_event_segments to has_or_had_segment (Rule 53)
+ # - audio_event_segments
+ - has_or_had_segment
- audio_quality_score
- diarization_enabled
- has_or_had_diarization_segment
@@ -138,6 +143,20 @@ classes:
- has_or_had_speech_segment
- template_specificity
slot_usage:
+ has_or_had_segment:
+ description: |
+ MIGRATED from audio_event_segments (Rule 53).
+ Audio event segments detected in the video content.
+ range: AudioEventSegment
+ multivalued: true
+ required: false
+ inlined_as_list: true
+ examples:
+ - value: '[{audio_event_type: SPEECH, start_seconds: 0.0, end_seconds: 15.0, segment_text: "Speech detected - Speaker 1", confidence: 0.95}]'
+ description: Speech detection segment
+ - value: '[{audio_event_type: MUSIC, start_seconds: 30.0, end_seconds: 60.0, segment_text: "Background classical music", confidence: 0.88}]'
+ description: Music detection segment
+ # NOTE: has_audio_event_segment is deprecated - use has_or_had_segment above
has_audio_event_segment:
range: VideoTimeSegment
multivalued: true
diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/approved_by.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/archive/approved_by_archived_20260114.yaml
similarity index 100%
rename from frontend/public/schemas/20251121/linkml/modules/slots/approved_by.yaml
rename to frontend/public/schemas/20251121/linkml/modules/slots/archive/approved_by_archived_20260114.yaml
diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/audio_event_segments.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/archive/audio_event_segments_archived_20260114.yaml
similarity index 100%
rename from frontend/public/schemas/20251121/linkml/modules/slots/audio_event_segments.yaml
rename to frontend/public/schemas/20251121/linkml/modules/slots/archive/audio_event_segments_archived_20260114.yaml
diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/bay_number.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/archive/bay_number_archived_20260114.yaml
similarity index 100%
rename from frontend/public/schemas/20251121/linkml/modules/slots/bay_number.yaml
rename to frontend/public/schemas/20251121/linkml/modules/slots/archive/bay_number_archived_20260114.yaml
diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/box_number.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/archive/box_number_archived_20260114.yaml
similarity index 100%
rename from frontend/public/schemas/20251121/linkml/modules/slots/box_number.yaml
rename to frontend/public/schemas/20251121/linkml/modules/slots/archive/box_number_archived_20260114.yaml
diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/budget_status.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/archive/budget_status_archived_20260114.yaml
similarity index 100%
rename from frontend/public/schemas/20251121/linkml/modules/slots/budget_status.yaml
rename to frontend/public/schemas/20251121/linkml/modules/slots/archive/budget_status_archived_20260114.yaml
diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml
index c12aa52f82..cc69eef75d 100644
--- a/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml
+++ b/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml
@@ -1344,3 +1344,106 @@ fixes:
type: slot
- label: WritingSystem
type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/worldcat_id
+ revision:
+ - label: has_or_had_identifier
+ type: slot
+ - label: WorldCatIdentifier
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/workshop_space
+ revision:
+ - label: has_or_had_quantity
+ type: slot
+ - label: Quantity
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/work_location
+ revision:
+ - label: has_or_had_location
+ type: slot
+ - label: Location
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/word_count
+ revision:
+ - label: has_or_had_quantity
+ type: slot
+ - label: WordCount
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/within_place
+ revision:
+ - label: is_or_was_located_within
+ type: slot
+ - label: Place
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/within_auxiliary_place
+ revision:
+ - label: is_or_was_located_within
+ type: slot
+ - label: Place
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata_mapping_rationale
+ revision:
+ - label: has_or_had_rationale
+ type: slot
+ - label: Rationale
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata_mapping
+ revision:
+ - label: is_or_was_related_to
+ type: slot
+ - label: WikiDataEntry
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata_id
+ revision:
+ - label: has_or_had_identifier
+ type: slot
+ - label: WikiDataIdentifier
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata_equivalent
+ revision:
+ - label: is_or_was_equivalent_to
+ type: slot
+ - label: WikiDataEntry
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata_entity_label
+ revision:
+ - label: has_or_had_label
+ type: slot
+ - label: Label
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata_entity_id
+ revision:
+ - label: has_or_had_identifier
+ type: slot
+ - label: WikiDataIdentifier
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata_entity
+ revision:
+ - label: has_or_had_identifier
+ type: slot
+ - label: WikiDataIdentifier
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata_class
+ revision:
+ - label: is_or_was_instance_of
+ type: slot
+ - label: WikiDataEntry
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata_alignment
+ revision:
+ - label: is_or_was_related_to
+ type: slot
+ - label: WikiDataEntry
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/wikidata
+ revision:
+ - label: is_or_was_instance_of
+ type: slot
+ - label: WikiDataEntry
+ type: class
+ - original_slot_id: https://nde.nl/ontology/hc/slot/whatsapp_enrichment
+ revision:
+ - label: has_or_had_contact_details
+ type: slot
+ - label: WhatsAppProfile
+ type: class
+ -
diff --git a/frontend/src/pages/LinkMLViewerPage.tsx b/frontend/src/pages/LinkMLViewerPage.tsx
index b943f61361..70fe5ce5b1 100644
--- a/frontend/src/pages/LinkMLViewerPage.tsx
+++ b/frontend/src/pages/LinkMLViewerPage.tsx
@@ -2595,7 +2595,7 @@ const LinkMLViewerPage: React.FC = () => {
@@ -2612,7 +2612,7 @@ const LinkMLViewerPage: React.FC = () => {
@@ -2642,7 +2642,7 @@ const LinkMLViewerPage: React.FC = () => {