Refactor schema: Migrate slots to new patterns and create new classes
- Migrated `audio_event_segments` to `has_or_had_segment` with range `AudioEventSegment` in VideoAudioAnnotation.yaml. - Removed deprecated slots: `approved_by`, `audio_event_segments`, `bay_number`, `box_number`, and `budget_status`. - Created new classes: `AudioEventSegment`, `BayNumber`, `BoxNumber`, and `BudgetStatus` to encapsulate previously slot-based data. - Introduced `has_or_had_auxiliary_entities` slot to replace `auxiliary_places` and `auxiliary_platforms`. - Archived removed slots to maintain historical context. - Updated LinkMLViewerPage to utilize new schema element popup for better navigation.
This commit is contained in:
parent
7691a11e79
commit
5ddb7e818a
22 changed files with 803 additions and 97 deletions
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"generated": "2026-01-14T14:13:07.428Z",
|
"generated": "2026-01-14T14:15:37.461Z",
|
||||||
"schemaRoot": "/schemas/20251121/linkml",
|
"schemaRoot": "/schemas/20251121/linkml",
|
||||||
"totalFiles": 2884,
|
"totalFiles": 2883,
|
||||||
"categoryCounts": {
|
"categoryCounts": {
|
||||||
"main": 4,
|
"main": 4,
|
||||||
"class": 679,
|
"class": 683,
|
||||||
"enum": 147,
|
"enum": 147,
|
||||||
"slot": 2050,
|
"slot": 2045,
|
||||||
"module": 4
|
"module": 4
|
||||||
},
|
},
|
||||||
"categories": [
|
"categories": [
|
||||||
|
|
@ -280,6 +280,11 @@
|
||||||
"path": "modules/classes/AssociationArchive.yaml",
|
"path": "modules/classes/AssociationArchive.yaml",
|
||||||
"category": "class"
|
"category": "class"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "AudioEventSegment",
|
||||||
|
"path": "modules/classes/AudioEventSegment.yaml",
|
||||||
|
"category": "class"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "AudiovisualArchive",
|
"name": "AudiovisualArchive",
|
||||||
"path": "modules/classes/AudiovisualArchive.yaml",
|
"path": "modules/classes/AudiovisualArchive.yaml",
|
||||||
|
|
@ -345,6 +350,11 @@
|
||||||
"path": "modules/classes/BankArchiveRecordSetTypes.yaml",
|
"path": "modules/classes/BankArchiveRecordSetTypes.yaml",
|
||||||
"category": "class"
|
"category": "class"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "BayNumber",
|
||||||
|
"path": "modules/classes/BayNumber.yaml",
|
||||||
|
"category": "class"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Bildstelle",
|
"name": "Bildstelle",
|
||||||
"path": "modules/classes/Bildstelle.yaml",
|
"path": "modules/classes/Bildstelle.yaml",
|
||||||
|
|
@ -380,6 +390,11 @@
|
||||||
"path": "modules/classes/Bookplate.yaml",
|
"path": "modules/classes/Bookplate.yaml",
|
||||||
"category": "class"
|
"category": "class"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "BoxNumber",
|
||||||
|
"path": "modules/classes/BoxNumber.yaml",
|
||||||
|
"category": "class"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "BranchOffice",
|
"name": "BranchOffice",
|
||||||
"path": "modules/classes/BranchOffice.yaml",
|
"path": "modules/classes/BranchOffice.yaml",
|
||||||
|
|
@ -400,6 +415,11 @@
|
||||||
"path": "modules/classes/Budget.yaml",
|
"path": "modules/classes/Budget.yaml",
|
||||||
"category": "class"
|
"category": "class"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "BudgetStatus",
|
||||||
|
"path": "modules/classes/BudgetStatus.yaml",
|
||||||
|
"category": "class"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "BudgetType",
|
"name": "BudgetType",
|
||||||
"path": "modules/classes/BudgetType.yaml",
|
"path": "modules/classes/BudgetType.yaml",
|
||||||
|
|
@ -4227,11 +4247,6 @@
|
||||||
"path": "modules/slots/applies_to_call.yaml",
|
"path": "modules/slots/applies_to_call.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "approved_by",
|
|
||||||
"path": "modules/slots/approved_by.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "approximate",
|
"name": "approximate",
|
||||||
"path": "modules/slots/approximate.yaml",
|
"path": "modules/slots/approximate.yaml",
|
||||||
|
|
@ -4252,11 +4267,6 @@
|
||||||
"path": "modules/slots/asserted_by.yaml",
|
"path": "modules/slots/asserted_by.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "audio_event_segments",
|
|
||||||
"path": "modules/slots/audio_event_segments.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "authors",
|
"name": "authors",
|
||||||
"path": "modules/slots/authors.yaml",
|
"path": "modules/slots/authors.yaml",
|
||||||
|
|
@ -4282,11 +4292,6 @@
|
||||||
"path": "modules/slots/base_surname.yaml",
|
"path": "modules/slots/base_surname.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "bay_number",
|
|
||||||
"path": "modules/slots/bay_number.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "begin_of_the_begin",
|
"name": "begin_of_the_begin",
|
||||||
"path": "modules/slots/begin_of_the_begin.yaml",
|
"path": "modules/slots/begin_of_the_begin.yaml",
|
||||||
|
|
@ -4342,11 +4347,6 @@
|
||||||
"path": "modules/slots/bounding_box.yaml",
|
"path": "modules/slots/bounding_box.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "box_number",
|
|
||||||
"path": "modules/slots/box_number.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "branch_head",
|
"name": "branch_head",
|
||||||
"path": "modules/slots/branch_head.yaml",
|
"path": "modules/slots/branch_head.yaml",
|
||||||
|
|
@ -4367,11 +4367,6 @@
|
||||||
"path": "modules/slots/budget_currency.yaml",
|
"path": "modules/slots/budget_currency.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "budget_status",
|
|
||||||
"path": "modules/slots/budget_status.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "building_floor_area_sqm",
|
"name": "building_floor_area_sqm",
|
||||||
"path": "modules/slots/building_floor_area_sqm.yaml",
|
"path": "modules/slots/building_floor_area_sqm.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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
@ -16,7 +16,10 @@ imports:
|
||||||
- ../slots/budget_currency
|
- ../slots/budget_currency
|
||||||
- ../slots/has_or_had_description
|
- ../slots/has_or_had_description
|
||||||
- ../slots/has_or_had_label
|
- ../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/has_or_had_type
|
||||||
- ../slots/capital_budget
|
- ../slots/capital_budget
|
||||||
- ./BudgetType
|
- ./BudgetType
|
||||||
|
|
@ -97,7 +100,9 @@ classes:
|
||||||
- budget_currency
|
- budget_currency
|
||||||
- has_or_had_description
|
- has_or_had_description
|
||||||
- has_or_had_label
|
- 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
|
- has_or_had_type
|
||||||
- capital_budget
|
- capital_budget
|
||||||
- digitization_budget
|
- digitization_budget
|
||||||
|
|
@ -249,12 +254,25 @@ classes:
|
||||||
description: Agent (person/organization) that approved this budget
|
description: Agent (person/organization) that approved this budget
|
||||||
range: string
|
range: string
|
||||||
required: false
|
required: false
|
||||||
budget_status:
|
# MIGRATED from budget_status to has_or_had_status (Rule 53)
|
||||||
range: string
|
# 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
|
required: true
|
||||||
examples:
|
examples:
|
||||||
- value: ACTIVE
|
- value: '{value: "ACTIVE", effective_date: "2024-01-01"}'
|
||||||
description: Current fiscal year budget in effect
|
description: Budget currently in effect
|
||||||
|
- value: '{value: "DRAFT", effective_date: "2023-10-01"}'
|
||||||
|
description: Budget under development
|
||||||
revision_number:
|
revision_number:
|
||||||
range: integer
|
range: integer
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -319,7 +337,9 @@ classes:
|
||||||
endowment_draw: 5000000.0
|
endowment_draw: 5000000.0
|
||||||
approval_date: '2023-11-15'
|
approval_date: '2023-11-15'
|
||||||
is_or_was_approved_by: Board of Directors
|
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
|
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
|
||||||
description: Major museum annual operating budget
|
description: Major museum annual operating budget
|
||||||
- value:
|
- value:
|
||||||
|
|
@ -341,6 +361,8 @@ classes:
|
||||||
internal_funding: 2500000.0
|
internal_funding: 2500000.0
|
||||||
approval_date: '2024-03-01'
|
approval_date: '2024-03-01'
|
||||||
is_or_was_approved_by: Province of Noord-Holland
|
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
|
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-haa-a-nha
|
||||||
description: Regional archive government-funded budget
|
description: Regional archive government-funded budget
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -31,7 +31,7 @@ imports:
|
||||||
- ../slots/light_max_lux
|
- ../slots/light_max_lux
|
||||||
- ../slots/particulate_max
|
- ../slots/particulate_max
|
||||||
- ../slots/pest_management_required
|
- ../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_description
|
||||||
- ../slots/policy_effective_from
|
- ../slots/policy_effective_from
|
||||||
- ../slots/policy_effective_to
|
- ../slots/policy_effective_to
|
||||||
|
|
@ -46,6 +46,7 @@ imports:
|
||||||
- ../slots/uv_filtered_required
|
- ../slots/uv_filtered_required
|
||||||
- ./SpecificityAnnotation
|
- ./SpecificityAnnotation
|
||||||
- ./TemplateSpecificityScores
|
- ./TemplateSpecificityScores
|
||||||
|
- ./Approver # Added for is_or_was_approved_by migration (2026-01-15)
|
||||||
classes:
|
classes:
|
||||||
StorageConditionPolicy:
|
StorageConditionPolicy:
|
||||||
class_uri: odrl:Policy
|
class_uri: odrl:Policy
|
||||||
|
|
@ -91,7 +92,7 @@ classes:
|
||||||
- note
|
- note
|
||||||
- particulate_max
|
- particulate_max
|
||||||
- pest_management_required
|
- pest_management_required
|
||||||
- policy_approved_by
|
- is_or_was_approved_by # MIGRATED: was policy_approved_by (2026-01-15)
|
||||||
- policy_description
|
- policy_description
|
||||||
- policy_effective_from
|
- policy_effective_from
|
||||||
- policy_effective_to
|
- policy_effective_to
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,13 @@ imports:
|
||||||
- ../slots/unit_name
|
- ../slots/unit_name
|
||||||
- ../slots/unit_type
|
- ../slots/unit_type
|
||||||
- ../slots/capacity_item
|
- ../slots/capacity_item
|
||||||
- ../slots/bay_number
|
# REMOVED - migrated to has_or_had_identifier with range BayNumber (Rule 53)
|
||||||
- ../slots/box_number
|
# - ../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/current_item_count
|
||||||
- ../slots/drawer_number
|
- ../slots/drawer_number
|
||||||
- ../slots/part_of_storage
|
- ../slots/part_of_storage
|
||||||
|
|
@ -75,8 +80,10 @@ classes:
|
||||||
- hc:EnvironmentalZone
|
- hc:EnvironmentalZone
|
||||||
- schema:Place
|
- schema:Place
|
||||||
slots:
|
slots:
|
||||||
- bay_number
|
# MIGRATED from bay_number and box_number to has_or_had_identifier (Rule 53)
|
||||||
- box_number
|
# - bay_number
|
||||||
|
# - box_number
|
||||||
|
- has_or_had_identifier
|
||||||
- capacity_item
|
- capacity_item
|
||||||
- current_item_count
|
- current_item_count
|
||||||
- drawer_number
|
- drawer_number
|
||||||
|
|
@ -124,11 +131,22 @@ classes:
|
||||||
- value: A
|
- value: A
|
||||||
- value: '12'
|
- value: '12'
|
||||||
- value: North-3
|
- 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
|
range: string
|
||||||
|
multivalued: true
|
||||||
examples:
|
examples:
|
||||||
- value: '3'
|
- value: '[{type: BayNumber, value: "3"}, {type: BoxNumber, value: 12}]'
|
||||||
- value: C
|
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:
|
shelf_number:
|
||||||
range: integer
|
range: integer
|
||||||
examples:
|
examples:
|
||||||
|
|
@ -138,10 +156,11 @@ classes:
|
||||||
range: integer
|
range: integer
|
||||||
examples:
|
examples:
|
||||||
- value: 3
|
- value: 3
|
||||||
box_number:
|
# DEPRECATED - use has_or_had_identifier with range BoxNumber
|
||||||
range: integer
|
# box_number:
|
||||||
examples:
|
# range: integer
|
||||||
- value: 12
|
# examples:
|
||||||
|
# - value: 12
|
||||||
capacity_item:
|
capacity_item:
|
||||||
range: integer
|
range: integer
|
||||||
current_item_count:
|
current_item_count:
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,10 @@ imports:
|
||||||
- linkml:types
|
- linkml:types
|
||||||
- ./VideoAnnotation
|
- ./VideoAnnotation
|
||||||
- ./VideoTimeSegment
|
- ./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/has_audio_quality_score
|
||||||
- ../slots/diarization_confidence
|
- ../slots/diarization_confidence
|
||||||
- ../slots/diarization_enabled
|
- ../slots/diarization_enabled
|
||||||
|
|
@ -112,7 +115,9 @@ classes:
|
||||||
- wikidata:Q11028
|
- wikidata:Q11028
|
||||||
- wikidata:Q638
|
- wikidata:Q638
|
||||||
slots:
|
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
|
- audio_quality_score
|
||||||
- diarization_enabled
|
- diarization_enabled
|
||||||
- has_or_had_diarization_segment
|
- has_or_had_diarization_segment
|
||||||
|
|
@ -138,6 +143,20 @@ classes:
|
||||||
- has_or_had_speech_segment
|
- has_or_had_speech_segment
|
||||||
- template_specificity
|
- template_specificity
|
||||||
slot_usage:
|
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:
|
has_audio_event_segment:
|
||||||
range: VideoTimeSegment
|
range: VideoTimeSegment
|
||||||
multivalued: true
|
multivalued: true
|
||||||
|
|
|
||||||
|
|
@ -1344,3 +1344,106 @@ fixes:
|
||||||
type: slot
|
type: slot
|
||||||
- label: WritingSystem
|
- label: WritingSystem
|
||||||
type: class
|
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
|
||||||
|
-
|
||||||
|
|
|
||||||
|
|
@ -2595,7 +2595,7 @@ const LinkMLViewerPage: React.FC = () => {
|
||||||
<button
|
<button
|
||||||
key={subclass}
|
key={subclass}
|
||||||
className="linkml-viewer__exports-link"
|
className="linkml-viewer__exports-link"
|
||||||
onClick={() => navigateToClass(subclass)}
|
onClick={() => setSchemaElementPopup({ name: subclass, type: 'class' })}
|
||||||
>
|
>
|
||||||
{subclass}
|
{subclass}
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -2612,7 +2612,7 @@ const LinkMLViewerPage: React.FC = () => {
|
||||||
<button
|
<button
|
||||||
key={user}
|
key={user}
|
||||||
className="linkml-viewer__exports-link"
|
className="linkml-viewer__exports-link"
|
||||||
onClick={() => navigateToClass(user)}
|
onClick={() => setSchemaElementPopup({ name: user, type: 'class' })}
|
||||||
>
|
>
|
||||||
{user}
|
{user}
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -2642,7 +2642,7 @@ const LinkMLViewerPage: React.FC = () => {
|
||||||
<button
|
<button
|
||||||
key={`${className}-${slotName}`}
|
key={`${className}-${slotName}`}
|
||||||
className="linkml-viewer__exports-link"
|
className="linkml-viewer__exports-link"
|
||||||
onClick={() => navigateToClass(className)}
|
onClick={() => setSchemaElementPopup({ name: className, type: 'class' })}
|
||||||
title={`via slot: ${slotName}`}
|
title={`via slot: ${slotName}`}
|
||||||
>
|
>
|
||||||
{className} <span className="linkml-viewer__exports-via">via {slotName}</span>
|
{className} <span className="linkml-viewer__exports-via">via {slotName}</span>
|
||||||
|
|
@ -2660,7 +2660,7 @@ const LinkMLViewerPage: React.FC = () => {
|
||||||
<button
|
<button
|
||||||
key={refClass}
|
key={refClass}
|
||||||
className="linkml-viewer__exports-link"
|
className="linkml-viewer__exports-link"
|
||||||
onClick={() => navigateToClass(refClass)}
|
onClick={() => setSchemaElementPopup({ name: refClass, type: 'class' })}
|
||||||
>
|
>
|
||||||
{refClass}
|
{refClass}
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -4158,6 +4158,16 @@ const LinkMLViewerPage: React.FC = () => {
|
||||||
onClose={() => setOntologyPopupCurie(null)}
|
onClose={() => setOntologyPopupCurie(null)}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{/* Schema Element Popup - renders when clicking class/slot/enum in Imports/Exports */}
|
||||||
|
{schemaElementPopup && (
|
||||||
|
<SchemaElementPopup
|
||||||
|
elementName={schemaElementPopup.name}
|
||||||
|
elementType={schemaElementPopup.type}
|
||||||
|
onClose={() => setSchemaElementPopup(null)}
|
||||||
|
onNavigate={handleSchemaElementNavigate}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"generated": "2026-01-14T14:14:23.659Z",
|
"generated": "2026-01-14T14:20:53.577Z",
|
||||||
"schemaRoot": "/schemas/20251121/linkml",
|
"schemaRoot": "/schemas/20251121/linkml",
|
||||||
"totalFiles": 2884,
|
"totalFiles": 2883,
|
||||||
"categoryCounts": {
|
"categoryCounts": {
|
||||||
"main": 4,
|
"main": 4,
|
||||||
"class": 679,
|
"class": 683,
|
||||||
"enum": 147,
|
"enum": 147,
|
||||||
"slot": 2050,
|
"slot": 2045,
|
||||||
"module": 4
|
"module": 4
|
||||||
},
|
},
|
||||||
"categories": [
|
"categories": [
|
||||||
|
|
@ -280,6 +280,11 @@
|
||||||
"path": "modules/classes/AssociationArchive.yaml",
|
"path": "modules/classes/AssociationArchive.yaml",
|
||||||
"category": "class"
|
"category": "class"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "AudioEventSegment",
|
||||||
|
"path": "modules/classes/AudioEventSegment.yaml",
|
||||||
|
"category": "class"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "AudiovisualArchive",
|
"name": "AudiovisualArchive",
|
||||||
"path": "modules/classes/AudiovisualArchive.yaml",
|
"path": "modules/classes/AudiovisualArchive.yaml",
|
||||||
|
|
@ -345,6 +350,11 @@
|
||||||
"path": "modules/classes/BankArchiveRecordSetTypes.yaml",
|
"path": "modules/classes/BankArchiveRecordSetTypes.yaml",
|
||||||
"category": "class"
|
"category": "class"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "BayNumber",
|
||||||
|
"path": "modules/classes/BayNumber.yaml",
|
||||||
|
"category": "class"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Bildstelle",
|
"name": "Bildstelle",
|
||||||
"path": "modules/classes/Bildstelle.yaml",
|
"path": "modules/classes/Bildstelle.yaml",
|
||||||
|
|
@ -380,6 +390,11 @@
|
||||||
"path": "modules/classes/Bookplate.yaml",
|
"path": "modules/classes/Bookplate.yaml",
|
||||||
"category": "class"
|
"category": "class"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "BoxNumber",
|
||||||
|
"path": "modules/classes/BoxNumber.yaml",
|
||||||
|
"category": "class"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "BranchOffice",
|
"name": "BranchOffice",
|
||||||
"path": "modules/classes/BranchOffice.yaml",
|
"path": "modules/classes/BranchOffice.yaml",
|
||||||
|
|
@ -400,6 +415,11 @@
|
||||||
"path": "modules/classes/Budget.yaml",
|
"path": "modules/classes/Budget.yaml",
|
||||||
"category": "class"
|
"category": "class"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "BudgetStatus",
|
||||||
|
"path": "modules/classes/BudgetStatus.yaml",
|
||||||
|
"category": "class"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "BudgetType",
|
"name": "BudgetType",
|
||||||
"path": "modules/classes/BudgetType.yaml",
|
"path": "modules/classes/BudgetType.yaml",
|
||||||
|
|
@ -4227,11 +4247,6 @@
|
||||||
"path": "modules/slots/applies_to_call.yaml",
|
"path": "modules/slots/applies_to_call.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "approved_by",
|
|
||||||
"path": "modules/slots/approved_by.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "approximate",
|
"name": "approximate",
|
||||||
"path": "modules/slots/approximate.yaml",
|
"path": "modules/slots/approximate.yaml",
|
||||||
|
|
@ -4252,11 +4267,6 @@
|
||||||
"path": "modules/slots/asserted_by.yaml",
|
"path": "modules/slots/asserted_by.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "audio_event_segments",
|
|
||||||
"path": "modules/slots/audio_event_segments.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "authors",
|
"name": "authors",
|
||||||
"path": "modules/slots/authors.yaml",
|
"path": "modules/slots/authors.yaml",
|
||||||
|
|
@ -4282,11 +4292,6 @@
|
||||||
"path": "modules/slots/base_surname.yaml",
|
"path": "modules/slots/base_surname.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "bay_number",
|
|
||||||
"path": "modules/slots/bay_number.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "begin_of_the_begin",
|
"name": "begin_of_the_begin",
|
||||||
"path": "modules/slots/begin_of_the_begin.yaml",
|
"path": "modules/slots/begin_of_the_begin.yaml",
|
||||||
|
|
@ -4342,11 +4347,6 @@
|
||||||
"path": "modules/slots/bounding_box.yaml",
|
"path": "modules/slots/bounding_box.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "box_number",
|
|
||||||
"path": "modules/slots/box_number.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "branch_head",
|
"name": "branch_head",
|
||||||
"path": "modules/slots/branch_head.yaml",
|
"path": "modules/slots/branch_head.yaml",
|
||||||
|
|
@ -4367,11 +4367,6 @@
|
||||||
"path": "modules/slots/budget_currency.yaml",
|
"path": "modules/slots/budget_currency.yaml",
|
||||||
"category": "slot"
|
"category": "slot"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "budget_status",
|
|
||||||
"path": "modules/slots/budget_status.yaml",
|
|
||||||
"category": "slot"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "building_floor_area_sqm",
|
"name": "building_floor_area_sqm",
|
||||||
"path": "modules/slots/building_floor_area_sqm.yaml",
|
"path": "modules/slots/building_floor_area_sqm.yaml",
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,9 @@ imports:
|
||||||
- ./GeoSpatialPlace
|
- ./GeoSpatialPlace
|
||||||
- ../enums/PlaceSpecificityEnum
|
- ../enums/PlaceSpecificityEnum
|
||||||
- ./ReconstructedEntity
|
- ./ReconstructedEntity
|
||||||
- ../slots/auxiliary_places
|
# REMOVED - migrated to has_or_had_auxiliary_entities with range AuxiliaryPlace (Rule 53)
|
||||||
|
# - ../slots/auxiliary_places
|
||||||
|
- ../slots/has_or_had_auxiliary_entities
|
||||||
- ../slots/place_name
|
- ../slots/place_name
|
||||||
- ../slots/place_language
|
- ../slots/place_language
|
||||||
- ../slots/place_specificity
|
- ../slots/place_specificity
|
||||||
|
|
@ -65,7 +67,9 @@ classes:
|
||||||
- prov:Entity
|
- prov:Entity
|
||||||
- crm:E27_Site
|
- crm:E27_Site
|
||||||
slots:
|
slots:
|
||||||
- auxiliary_places
|
# MIGRATED from auxiliary_places to has_or_had_auxiliary_entities (Rule 53)
|
||||||
|
# - auxiliary_places
|
||||||
|
- has_or_had_auxiliary_entities
|
||||||
- country
|
- country
|
||||||
- has_feature_type
|
- has_feature_type
|
||||||
- has_geospatial_location
|
- has_geospatial_location
|
||||||
|
|
@ -171,7 +175,11 @@ classes:
|
||||||
has_accuracy_in_meters: 50.0
|
has_accuracy_in_meters: 50.0
|
||||||
spatial_resolution: NEIGHBORHOOD
|
spatial_resolution: NEIGHBORHOOD
|
||||||
description: Approximate location from neighborhood reference
|
description: Approximate location from neighborhood reference
|
||||||
has_auxiliary_place:
|
# MIGRATED from auxiliary_places / has_auxiliary_place (Rule 53)
|
||||||
|
has_or_had_auxiliary_entities:
|
||||||
|
description: |
|
||||||
|
MIGRATED from auxiliary_places (Rule 53).
|
||||||
|
Subordinate or auxiliary locations associated with this custodian place.
|
||||||
range: AuxiliaryPlace
|
range: AuxiliaryPlace
|
||||||
multivalued: true
|
multivalued: true
|
||||||
inlined_as_list: true
|
inlined_as_list: true
|
||||||
|
|
@ -211,7 +219,7 @@ classes:
|
||||||
- Link to GeoSpatialPlace via has_geospatial_location slot (TOOI pattern)
|
- Link to GeoSpatialPlace via has_geospatial_location slot (TOOI pattern)
|
||||||
- Can be vague ('the mansion') or specific ('het museum op het Museumplein 1')
|
- Can be vague ('the mansion') or specific ('het museum op het Museumplein 1')
|
||||||
- Historical place names capture how custodians were referenced in archival documents
|
- Historical place names capture how custodians were referenced in archival documents
|
||||||
- 'NEW: auxiliary_places links to subordinate AuxiliaryPlace sites (depots, branches, labs)'
|
- 'MIGRATED: auxiliary_places → has_or_had_auxiliary_entities for AuxiliaryPlace sites (depots, branches, labs)'
|
||||||
- Hierarchical pattern mirrors CustodianName → CustodianAppellation relationship
|
- Hierarchical pattern mirrors CustodianName → CustodianAppellation relationship
|
||||||
see_also:
|
see_also:
|
||||||
- http://www.cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E53
|
- http://www.cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E53
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
id: https://nde.nl/ontology/hc/slot/has_or_had_auxiliary_entities
|
||||||
|
name: has_or_had_auxiliary_entities_slot
|
||||||
|
title: Has Or Had Auxiliary Entities Slot
|
||||||
|
description: |
|
||||||
|
Generic slot for auxiliary/supporting entities associated with a primary entity.
|
||||||
|
|
||||||
|
CREATED as part of slot migration (Rule 53) to replace:
|
||||||
|
- `auxiliary_places` → range: AuxiliaryPlace
|
||||||
|
- `auxiliary_platforms` → range: AuxiliaryPlatform
|
||||||
|
|
||||||
|
Follows RiC-O temporal predicate pattern (has_or_had_*).
|
||||||
|
prefixes:
|
||||||
|
linkml: https://w3id.org/linkml/
|
||||||
|
hc: https://nde.nl/ontology/hc/
|
||||||
|
rico: https://www.ica.org/standards/RiC/ontology#
|
||||||
|
schema: http://schema.org/
|
||||||
|
imports:
|
||||||
|
- linkml:types
|
||||||
|
default_prefix: hc
|
||||||
|
slots:
|
||||||
|
has_or_had_auxiliary_entities:
|
||||||
|
description: >-
|
||||||
|
Auxiliary or supporting entities associated with the primary entity.
|
||||||
|
|
||||||
|
**SEMANTIC PATTERN**:
|
||||||
|
|
||||||
|
This slot follows the RiC-O temporal predicate pattern (has_or_had_*)
|
||||||
|
to indicate that auxiliary relationships may change over time.
|
||||||
|
|
||||||
|
**REPLACES**:
|
||||||
|
|
||||||
|
- `auxiliary_places` - Physical locations supporting the main entity
|
||||||
|
- `auxiliary_platforms` - Digital platforms supporting the main entity
|
||||||
|
|
||||||
|
**USE CASES**:
|
||||||
|
|
||||||
|
1. **Storage locations**: Off-site storage, external repositories
|
||||||
|
2. **Branch facilities**: Satellite offices, reading rooms
|
||||||
|
3. **Partner platforms**: External discovery services, aggregators
|
||||||
|
|
||||||
|
slot_uri: rico:hasOrHadPart
|
||||||
|
range: uriorcurie
|
||||||
|
multivalued: true
|
||||||
|
exact_mappings:
|
||||||
|
- rico:hasOrHadPart
|
||||||
|
close_mappings:
|
||||||
|
- schema:hasPart
|
||||||
|
annotations:
|
||||||
|
custodian_types: '["*"]'
|
||||||
|
custodian_types_rationale: Applicable to all heritage custodian types.
|
||||||
|
custodian_types_primary: M
|
||||||
|
specificity_score: 0.4
|
||||||
|
specificity_rationale: Broadly applicable auxiliary entity relationship.
|
||||||
|
examples:
|
||||||
|
- value: "hc:auxiliary-place/rijksmuseum-depot-amersfoort"
|
||||||
|
description: Off-site storage depot
|
||||||
|
- value: "hc:auxiliary-platform/europeana-aggregation"
|
||||||
|
description: External discovery platform
|
||||||
|
|
@ -421,10 +421,15 @@ fixes:
|
||||||
|
|
||||||
- original_slot_id: https://nde.nl/ontology/hc/slot/approved_by
|
- original_slot_id: https://nde.nl/ontology/hc/slot/approved_by
|
||||||
processed:
|
processed:
|
||||||
status: false
|
status: true
|
||||||
timestamp: null
|
timestamp: '2026-01-14T11:15:00Z'
|
||||||
session: null
|
session: "slot-migration-session-8"
|
||||||
notes: "Requires Approver class creation"
|
notes: |
|
||||||
|
MIGRATED: approved_by → is_or_was_approved_by + Approver
|
||||||
|
- is_or_was_approved_by slot already existed
|
||||||
|
- Approver class already existed
|
||||||
|
- Budget.yaml already migrated (session 2026-01-15)
|
||||||
|
- Archived to modules/slots/archive/approved_by_archived_20260114.yaml
|
||||||
revision:
|
revision:
|
||||||
- label: is_or_was_approved_by
|
- label: is_or_was_approved_by
|
||||||
type: slot
|
type: slot
|
||||||
|
|
@ -610,10 +615,15 @@ fixes:
|
||||||
|
|
||||||
- original_slot_id: https://nde.nl/ontology/hc/slot/auxiliary_places
|
- original_slot_id: https://nde.nl/ontology/hc/slot/auxiliary_places
|
||||||
processed:
|
processed:
|
||||||
status: false
|
status: true
|
||||||
timestamp: null
|
timestamp: '2026-01-14T11:30:00Z'
|
||||||
session: null
|
session: "slot-migration-session-8"
|
||||||
notes: "Maps to existing AuxiliaryPlace class"
|
notes: |
|
||||||
|
MIGRATED: auxiliary_places → has_or_had_auxiliary_entities + AuxiliaryPlace
|
||||||
|
- Created has_or_had_auxiliary_entities.yaml slot
|
||||||
|
- AuxiliaryPlace class already existed
|
||||||
|
- Updated CustodianPlace.yaml: imports, slots list, slot_usage
|
||||||
|
- Archived to modules/slots/archive/auxiliary_places_archived_20260114.yaml
|
||||||
revision:
|
revision:
|
||||||
- label: has_or_had_auxiliary_entities
|
- label: has_or_had_auxiliary_entities
|
||||||
type: slot
|
type: slot
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue