Add new slots and update existing ones following RiC-O temporal naming conventions

- Introduced `founding_date`, `founding_date_diocese`, and `fr` slots for capturing founding dates and French language text.
- Created `collects_or_collected`, `has_or_had_objective`, `has_or_had_percentage`, `has_or_had_place`, `has_or_had_reply`, `has_or_had_web_page`, `is_or_was_acquired_by`, `is_or_was_appreciated`, `is_or_was_founded_through`, `is_or_was_part_of`, `is_or_was_part_of_total`, `start_of_the_start`, `takes_or_took_comission`, and `was_fetched_at` slots to enhance data modeling capabilities.
- Each slot includes detailed descriptions, examples, and ontology alignments to ensure clarity and usability.
- Migration notes added for slots transitioned from previous definitions to maintain historical context and facilitate understanding of changes.
This commit is contained in:
kempersc 2026-01-22 15:15:56 +01:00
parent 367aaffc27
commit ba2c766dd0
84 changed files with 6541 additions and 245 deletions

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-22T11:52:29.369Z",
"generated": "2026-01-22T12:00:07.511Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2969,
"categoryCounts": {

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-22T12:00:07.511Z",
"generated": "2026-01-22T14:15:56.373Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2969,
"categoryCounts": {

View file

@ -0,0 +1,149 @@
# Agent class
# Represents a person or organization that performs actions
#
# Created per slot_fixes.yaml migration for: collector
# Creation date: 2026-01-22
#
# Rule 53 (No Bespoke Slots): collector → is_or_was_acquired_by + Agent
id: https://nde.nl/ontology/hc/class/Agent
name: Agent
title: Agent
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
foaf: http://xmlns.com/foaf/0.1/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_name
- ../slots/has_or_had_type
- ../slots/has_or_had_identifier
classes:
Agent:
class_uri: prov:Agent
description: |
An agent (person, organization, or software) that performs actions.
**RULE 53 MIGRATION**:
Replaces simple string slots with a structured agent model:
- `is_or_was_acquired_by` → Agent (this class)
- Supports typed agents (person, organization, software)
**USAGE**:
```yaml
is_or_was_acquired_by:
- agent_name: "Dr. Jane Smith"
agent_type: person
has_or_had_identifier:
- identifier_scheme: ORCID
identifier_value: "0000-0001-2345-6789"
```
**Ontological Alignment**:
- **Primary** (`class_uri`): `prov:Agent` - PROV-O agent
- **Close**: `foaf:Agent` - FOAF agent
- **Close**: `schema:Person` / `schema:Organization` - Schema.org agents
- **Close**: `dcterms:Agent` - Dublin Core agent
**Use Cases**:
- Specimen collectors (field biologists)
- Artwork donors/sellers
- Archive depositors
- Record creators
exact_mappings:
- prov:Agent
close_mappings:
- foaf:Agent
- dcterms:Agent
related_mappings:
- schema:Person
- schema:Organization
slots:
- has_or_had_name
- has_or_had_type
- has_or_had_identifier
attributes:
agent_name:
range: string
description: Name of the agent (person or organization name)
required: true
agent_type:
range: string
description: |
Type of agent: person, organization, software, group
required: false
examples:
- value: person
- value: organization
- value: software
- value: group
agent_role:
range: string
description: |
Role of the agent in the action (collector, donor, creator, etc.)
required: false
slot_usage:
has_or_had_name:
description: |
Structured name for the agent.
range: uriorcurie
required: false
has_or_had_type:
description: |
Classification of the agent type.
range: uriorcurie
required: false
has_or_had_identifier:
description: |
Identifiers for the agent (ORCID, ISNI, etc.).
range: uriorcurie
multivalued: true
required: false
annotations:
specificity_score: "0.25"
specificity_rationale: "Broadly applicable - agents appear across all heritage contexts."
template_specificity: '{"archive_search": 0.30, "museum_search": 0.30, "library_search": 0.30, "collection_discovery": 0.40, "person_research": 0.60, "location_browse": 0.15, "identifier_lookup": 0.35, "organizational_change": 0.25, "digital_platform": 0.20, "general_heritage": 0.25}'
examples:
- value:
agent_name: "Dr. Jane Smith"
agent_type: person
agent_role: collector
description: Field biologist who collected specimens
- value:
agent_name: "Rijksmuseum Foundation"
agent_type: organization
agent_role: donor
description: Organization that donated artwork
- value:
agent_name: "National Archives of the Netherlands"
agent_type: organization
agent_role: transferring_agency
has_or_had_identifier:
- identifier_scheme: ISIL
identifier_value: "NL-HaNA"
description: Archive transferring records
comments:
- "Created per slot_fixes.yaml migration (2026-01-22)"
- "RULE 53: Replaces collector string slot with structured model"
- "Generic agent class for persons, organizations, and software"

View file

@ -0,0 +1,195 @@
# AppreciationEvent class
# Created per slot_fixes.yaml revision for: comment_like_count
#
# Represents appreciation/engagement events on digital content
# MIGRATION NOTE (2026-01-22): Created as part of comment_like_count migration per Rule 53.
id: https://nde.nl/ontology/hc/class/AppreciationEvent
name: appreciation_event_class
title: Appreciation Event Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
as: https://www.w3.org/ns/activitystreams#
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_quantity
- ../slots/has_or_had_unit
- ../slots/temporal_extent
- ./Quantity
- ./Unit
- ./TimeSpan
default_prefix: hc
classes:
AppreciationEvent:
class_uri: as:Like
description: |
Appreciation or engagement event for digital content.
**PURPOSE**:
Structured representation of appreciation metrics (likes, favorites,
upvotes, reactions) for digital content such as videos, comments, and posts.
Replaces simple integer counts with rich event data.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `comment_like_count` integer
to structured `is_or_was_appreciated` + `AppreciationEvent` with
`has_or_had_quantity` + `Quantity` for metric representation.
**APPRECIATION TYPES**:
| Type | Description | Platforms |
|------|-------------|-----------|
| like | Standard like/thumbs up | YouTube, Facebook, Instagram |
| favorite | Favorite/bookmark | Twitter, YouTube |
| upvote | Upvote/positive rating | Reddit, StackOverflow |
| reaction | Emoji reaction | Facebook, Slack |
| share | Share/repost | All platforms |
**ONTOLOGY ALIGNMENT**:
| Ontology | Class/Property | Usage |
|----------|----------------|-------|
| **Activity Streams** | `as:Like` | Social appreciation activity |
| **Schema.org** | `schema:InteractionCounter` | Engagement metrics |
| **PROV-O** | `prov:Activity` | Event modeling |
**EXAMPLE**:
```yaml
is_or_was_appreciated:
- appreciation_type: like
has_or_had_quantity:
numeric_value: 42
has_or_had_unit:
unit_label: "likes"
temporal_extent:
begin_of_the_begin: "2025-01-14T10:00:00Z"
```
exact_mappings:
- as:Like
close_mappings:
- schema:InteractionCounter
- prov:Activity
slots:
- has_or_had_quantity
- has_or_had_unit
- temporal_extent
attributes:
appreciation_type:
description: |
Type of appreciation (like, favorite, upvote, reaction, share).
range: string
required: true
examples:
- value: "like"
description: Standard like/thumbs up
- value: "favorite"
description: Favorite/bookmark
- value: "upvote"
description: Upvote rating
- value: "reaction"
description: Emoji reaction
- value: "share"
description: Share/repost
appreciation_count:
description: |
Simple count of appreciations (shorthand for has_or_had_quantity.numeric_value).
Use has_or_had_quantity for structured representation with unit.
range: integer
required: false
minimum_value: 0
examples:
- value: 42
description: 42 likes
slot_usage:
has_or_had_quantity:
description: |
Structured quantity for the appreciation count.
Use Quantity class with numeric_value and has_or_had_unit.
range: Quantity
inlined: true
required: false
examples:
- value:
numeric_value: 42
has_or_had_unit:
unit_label: "likes"
description: 42 likes using Quantity class
has_or_had_unit:
description: |
Unit for the appreciation type (likes, favorites, etc.).
Can be specified directly or via has_or_had_quantity.has_or_had_unit.
range: Unit
inlined: true
required: false
examples:
- value:
unit_label: "likes"
description: Likes unit
temporal_extent:
description: |
Time when the appreciation count was observed/recorded.
range: TimeSpan
inlined: true
required: false
examples:
- value:
begin_of_the_begin: "2025-01-14T10:00:00Z"
description: Observation timestamp
examples:
- value:
appreciation_type: "like"
appreciation_count: 42
description: Simple like count (minimal)
- value:
appreciation_type: "like"
has_or_had_quantity:
numeric_value: 42
has_or_had_unit:
unit_label: "likes"
temporal_extent:
begin_of_the_begin: "2025-01-14T10:00:00Z"
description: Full structured like count with timestamp
- value:
appreciation_type: "favorite"
appreciation_count: 15
description: Favorite count
comments:
- Created 2026-01-22 from comment_like_count migration (Rule 53)
- Models appreciation metrics as structured events
- Supports multiple appreciation types (likes, favorites, etc.)
- Includes temporal observation tracking
see_also:
- https://www.w3.org/ns/activitystreams#Like
- https://schema.org/InteractionCounter
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian with digital content may track appreciation.
specificity_score: "0.60"
specificity_rationale: >-
Moderately specific - primarily for digital content engagement contexts.

View file

@ -0,0 +1,148 @@
# ArtSaleService class
# Created per slot_fixes.yaml revision for: commission_rate
#
# Represents art sales service with commission structure
# MIGRATION NOTE (2026-01-22): Created as part of commission_rate migration per Rule 53.
id: https://nde.nl/ontology/hc/class/ArtSaleService
name: art_sale_service_class
title: Art Sale Service Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
- ../metadata
- ./Service
- ../slots/takes_or_took_comission
- ./CommissionRate
default_prefix: hc
classes:
ArtSaleService:
is_a: Service
class_uri: hc:ArtSaleService
description: |
Service for selling artworks, typically offered by commercial galleries.
**PURPOSE**:
Models art sales activities including commission structures,
market type (primary/secondary), and artist representation.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `commission_rate` string
to structured `has_or_had_service` + `ArtSaleService` with nested
commission details.
**USE CASES**:
- Commercial gallery primary market sales (representing artists)
- Secondary market resales (consignment)
- Auction house sales (different commission model)
**MARKET TYPES**:
- **Primary market**: First sale of artwork by artist (40-50% commission)
- **Secondary market**: Resale of previously sold works (10-20% commission)
close_mappings:
- schema:SellAction
- schema:Service
slots:
- takes_or_took_comission
attributes:
market_type:
description: |
Type of art market (primary or secondary).
range: string
required: false
examples:
- value: "primary"
description: First sale by artist
- value: "secondary"
description: Resale of previously sold work
artist_representation:
description: |
Whether this service involves exclusive artist representation.
range: boolean
required: false
examples:
- value: true
description: Gallery exclusively represents the artist
- value: false
description: Consignment or non-exclusive arrangement
sales_activity:
description: |
Whether active sales are conducted (vs exhibition-only).
range: boolean
required: true
examples:
- value: true
description: Active artwork sales
- value: false
description: Exhibition only, no sales
slot_usage:
takes_or_took_comission:
description: |
Commission structure for this art sales service.
range: CommissionRate
inlined: true
required: false
examples:
- value:
rate_type: "primary_market"
has_or_had_percentage:
percentage_value: 50
description: Standard 50% primary market commission
examples:
- value:
service_name: "Primary Market Sales"
market_type: "primary"
artist_representation: true
sales_activity: true
takes_or_took_comission:
rate_type: "primary_market"
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
description: Commercial gallery with 50% primary market commission
- value:
service_name: "Consignment Sales"
market_type: "secondary"
artist_representation: false
sales_activity: true
takes_or_took_comission:
rate_type: "secondary_market"
has_or_had_percentage:
percentage_value: 15
percentage_display: "10-20%"
description: Secondary market consignment with variable commission
comments:
- Created 2026-01-22 from commission_rate migration (Rule 53)
- Extends Service class for art sales context
- Supports primary and secondary market distinctions
see_also:
- https://schema.org/SellAction
annotations:
custodian_types: '["G", "C"]'
custodian_types_rationale: >-
Primarily for galleries (G) and commercial organizations (C).
specificity_score: "0.75"
specificity_rationale: >-
Specific to commercial art sales context.

View file

@ -31,11 +31,21 @@ imports:
# REMOVED 2026-01-19: collection_date - migrated to was_acquired_through + Acquisition (Rule 53)
- ../slots/was_acquired_through
- ./Acquisition
- ../slots/collection_locality_text
- ../slots/collection_location
- ../slots/collector
- ../slots/common_name
- ../slots/common_name_language
# REMOVED 2026-01-19: collection_locality_text - migrated to describes_or_described + Locality (Rule 53)
- ../slots/describes_or_described
- ./Locality
# REMOVED 2026-01-19: collection_location - migrated to has_or_had_place + CollectionEvent (Rule 53)
- ../slots/has_or_had_place
- ./CollectionEvent
# REMOVED 2026-01-22: ../slots/collector - migrated to is_or_was_acquired_by + Agent (Rule 53)
- ../slots/is_or_was_acquired_by
- ./Agent
# REMOVED 2026-01-22: ../slots/common_name - migrated to has_or_had_name + Name + has_or_had_type + NameType (Rule 53)
# REMOVED 2026-01-22: ../slots/common_name_language - migrated to Name.has_or_had_language (Rule 53)
- ../slots/has_or_had_name
- ./Name
- ./NameType
- ./NameTypes
- ../slots/has_or_had_custodian_type
- ../slots/date_identified
- ../slots/field_number
@ -90,10 +100,10 @@ classes:
- Taxidermy mounts (mammals, birds, fish)\n- Study skins and skeletal material\n- Herbarium specimens (pressed plants)\n\
- Wet specimens (fluid-preserved animals)\n- Fossils of organisms\n- Entomological collections (pinned insects)\n- Paleontological\
\ specimens\n- Living collection records (botanical gardens, zoos)\n\n**Darwin Core Integration**:\n\nBiologicalObject\
\ aligns with Darwin Core (TDWG) occurrence/specimen standards:\n- `taxon_name` → dwc:scientificName\n- `collection_date`\
\ → dwc:eventDate\n- `collector` → dwc:recordedBy\n- `preservation_method` → dwc:preparations\n- `gbif_id` → dwc:occurrenceID\
\ (GBIF)\n\n**Taxonomic Data Model**:\n\n```\nBiologicalObject\n │\n ├── taxon_name (scientific name: \"Raphus\
\ cucullatus\")\n │ │\n │ ├── common_name (\"Dodo\")\n │ ├── has_or_had_rank (SPECIES)\n \
\ aligns with Darwin Core (TDWG) occurrence/specimen standards:\n- `has_or_had_label` (TaxonName) → dwc:scientificName\n- `was_acquired_through` (Acquisition) → dwc:eventDate\
\n- `is_or_was_acquired_by` (Agent) → dwc:recordedBy\n- `preservation_method` → dwc:preparations\n- `gbif_id` → dwc:occurrenceID\
\ (GBIF)\n\n**Taxonomic Data Model**:\n\n```\nBiologicalObject\n │\n ├── has_or_had_label (TaxonName: \"Raphus\
\ cucullatus\")\n │ │\n │ ├── has_or_had_name (Name with type=CommonName: \"Dodo\")\n │ ├── has_or_had_rank (SPECIES)\n \
\ │ ├── has_or_had_authority (\"Linnaeus, 1758\")\n │ └── higher_classification (Aves → Columbiformes\
\ → Columbidae)\n │\n ├── specimen_data\n │ │\n │ ├── specimen_type (HOLOTYPE, PARATYPE, etc.)\n\
\ │ ├── is_type_specimen (boolean)\n │ ├── sex (MALE, FEMALE, UNKNOWN)\n │ ├── life_stage\
@ -126,11 +136,14 @@ classes:
- is_or_was_listed_in
# collection_date REMOVED - migrated to was_acquired_through + Acquisition (Rule 53, 2026-01-19)
- was_acquired_through
- collection_locality_text
- collection_location
- collector
- common_name
- common_name_language
# collection_locality_text REMOVED - migrated to describes_or_described + Locality (Rule 53, 2026-01-19)
- describes_or_described
# collection_location REMOVED - migrated to has_or_had_place + CollectionEvent (Rule 53, 2026-01-19)
- has_or_had_place
# REMOVED 2026-01-22: collector - migrated to is_or_was_acquired_by + Agent (Rule 53)
- is_or_was_acquired_by
# REMOVED 2026-01-22: common_name, common_name_language - migrated to has_or_had_name + Name (Rule 53)
- has_or_had_name
- has_or_had_custodian_type
- date_identified
- field_number
@ -214,21 +227,40 @@ classes:
scientific_name: "Panthera leo"
taxonomic_rank: SPECIES
description: Lion (authority omitted)
common_name:
# MIGRATED 2026-01-22: common_name, common_name_language → has_or_had_name + Name (Rule 53)
has_or_had_name:
description: |
Common/vernacular names for this biological object.
MIGRATED from common_name and common_name_language per slot_fixes.yaml (Rule 53, 2026-01-22).
Uses Name class for structured representation including:
- Name value (has_or_had_label)
- Name type (has_or_had_type → NameType, e.g., CommonName)
- Language (has_or_had_language)
required: false
range: string
range: Name
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value: Dodo
- value: Lion
- value: Coast Redwood
common_name_language:
required: false
range: string
multivalued: true
examples:
- value: en
- value: nl
- value:
has_or_had_label: "Dodo"
has_or_had_type: CommonName
has_or_had_language: "en"
description: English common name
- value:
has_or_had_label: "Dronte"
has_or_had_type: CommonName
has_or_had_language: "nl"
description: Dutch common name
- value:
has_or_had_label: "Lion"
has_or_had_type: CommonName
has_or_had_language: "en"
- value:
has_or_had_label: "Coast Redwood"
has_or_had_type: CommonName
has_or_had_language: "en"
has_or_had_rank: # was: taxonomic_rank - migrated per Rule 53/56 (2026-01-17)
required: false
range: string
@ -407,29 +439,65 @@ classes:
end_of_the_end: "1879-12-31"
acquisition_date_text: "1870s"
acquisition_notes: "Historical specimen with approximate date"
collection_location:
# MIGRATED 2026-01-19: collection_location → has_or_had_place + CollectionEvent (Rule 53)
has_or_had_place:
required: false
range: CustodianPlace
inlined: true
description: >-
Structured location where specimen was collected.
MIGRATED from collection_location per slot_fixes.yaml (Rule 53, 2026-01-19).
Uses CustodianPlace for detailed location including coordinates.
examples:
- value:
place_name: Mauritius
country: MU
latitude: -20.2
longitude: 57.5
collection_locality_text:
# MIGRATED 2026-01-19: collection_locality_text → describes_or_described + Locality (Rule 53)
describes_or_described:
required: false
range: string
range: Locality
inlined: true
inlined_as_list: true
description: >-
Verbatim locality description as recorded on specimen label.
MIGRATED from collection_locality_text per slot_fixes.yaml (Rule 53, 2026-01-19).
Uses Locality class for structured representation including
original text, language, and provenance.
examples:
- value: Mauritius, near Port Louis, in forest
- value: 'Indonesia: Java: Mt. Gede, 1500m'
collector:
- value:
verbatim_text: "Mauritius, near Port Louis, in forest"
original_language: "en"
description: Locality for Dodo specimen
- value:
verbatim_text: "Indonesia: Java: Mt. Gede, 1500m"
original_language: "en"
interpretation_notes: "Mt. Gede is Gunung Gede volcano"
description: Indonesian specimen with elevation
# MIGRATED 2026-01-22: collector → is_or_was_acquired_by + Agent (Rule 53)
is_or_was_acquired_by:
description: |
The person(s) or organization(s) who collected this specimen.
Migrated from collector per slot_fixes.yaml revision.
required: false
range: string
range: Agent
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value: Alfred Russel Wallace
- value: Charles Darwin
- value:
agent_name: "Alfred Russel Wallace"
agent_type: person
agent_role: collector
description: Victorian naturalist collector
- value:
agent_name: "Charles Darwin"
agent_type: person
agent_role: collector
description: HMS Beagle expedition collector
field_number:
required: false
range: string
@ -529,9 +597,14 @@ classes:
scientific_name: "Raphus cucullatus (Linnaeus, 1758)"
authorship: "Linnaeus, 1758"
taxonomic_rank: SPECIES
common_name:
- Dodo
- Dronte
# MIGRATED 2026-01-22: common_name → has_or_had_name + Name (Rule 53)
has_or_had_name:
- has_or_had_label: "Dodo"
has_or_had_type: CommonName
has_or_had_language: "en"
- has_or_had_label: "Dronte"
has_or_had_type: CommonName
has_or_had_language: "nl"
has_or_had_rank: SPECIES # was: taxonomic_rank - migrated per Rule 53/56 (2026-01-17)
higher_classification: Animalia|Chordata|Aves|Columbiformes|Columbidae|Raphus
part_type:
@ -546,7 +619,8 @@ classes:
begin_of_the_begin: "1600-01-01"
end_of_the_end: "1662-12-31"
notes: "Pre-1662 (before Great Fire of London destroyed records)"
collection_location:
# MIGRATED 2026-01-19: collection_location → has_or_had_place (Rule 53)
has_or_had_place:
place_name: Mauritius
country: MU
iucn_status: EX
@ -570,13 +644,19 @@ classes:
scientific_name: "Megatherium americanum Cuvier, 1796"
authorship: "Cuvier, 1796"
taxonomic_rank: SPECIES
common_name:
- Giant Ground Sloth
# MIGRATED 2026-01-22: common_name → has_or_had_name + Name (Rule 53)
has_or_had_name:
- has_or_had_label: "Giant Ground Sloth"
has_or_had_type: CommonName
has_or_had_language: "en"
has_or_had_rank: SPECIES # was: taxonomic_rank - migrated per Rule 53/56 (2026-01-17)
part_type:
- SKELETON
preservation_method: FOSSIL_PREPARED
collection_locality_text: Argentina, Buenos Aires Province
# MIGRATED 2026-01-19: collection_locality_text → describes_or_described (Rule 53)
describes_or_described:
- verbatim_text: "Argentina, Buenos Aires Province"
original_language: "en"
iucn_status: EX
current_keeper: https://nde.nl/ontology/hc/custodian/nl/naturalis
description: Megatherium skeleton at Naturalis Biodiversity Center
@ -591,9 +671,14 @@ classes:
scientific_name: "Quercus robur L."
authorship: "L."
taxonomic_rank: SPECIES
common_name:
- English Oak
- Pedunculate Oak
# MIGRATED 2026-01-22: common_name → has_or_had_name + Name (Rule 53)
has_or_had_name:
- has_or_had_label: "English Oak"
has_or_had_type: CommonName
has_or_had_language: "en"
- has_or_had_label: "Pedunculate Oak"
has_or_had_type: CommonName
has_or_had_language: "en"
has_or_had_rank: SPECIES # was: taxonomic_rank - migrated per Rule 53/56 (2026-01-17)
has_or_had_authority: # was: taxonomic_authority - migrated per Rule 53/56 (2026-01-16)
has_or_had_label: "Linnaeus, 1753"
@ -617,7 +702,10 @@ classes:
begin_of_the_begin: "1750-01-01"
end_of_the_end: "1759-12-31"
notes: "Collected by Linnaeus in the 1750s"
collector:
- Carl Linnaeus
# MIGRATED 2026-01-22: collector → is_or_was_acquired_by + Agent (Rule 53)
is_or_was_acquired_by:
- agent_name: "Carl Linnaeus"
agent_type: person
agent_role: collector
current_keeper: https://nde.nl/ontology/hc/custodian/uk/royal-botanic-gardens-kew
description: Oak type specimen at Royal Botanic Gardens, Kew

View file

@ -30,7 +30,9 @@ imports:
- ../slots/catering_price_range
- ../slots/has_or_had_accessibility_feature
- ../slots/operator
- ../slots/founded_year
# MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent (Rule 53)
- ../slots/is_or_was_founded_through
- ./FoundingEvent
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ../slots/is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
@ -92,7 +94,7 @@ classes:
- catering_price_range
- catering_type
- cuisine_type
- founded_year
- is_or_was_founded_through # was: founded_year - migrated per Rule 53 (2026-01-22)
- has_michelin_star
- has_outdoor_seating
- heritage_type_classification
@ -238,11 +240,20 @@ classes:
description: Dutch catering company
- value: In-house
description: Museum-operated
founded_year:
range: integer
# MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
description: |
The founding event for this catering place.
Migrated from founded_year per slot_fixes.yaml revision.
range: FoundingEvent
inlined: true
examples:
- value: 1902
description: Historic café founding year
- value:
temporal_extent:
begin_of_the_begin: "1902-01-01"
end_of_the_begin: "1902-12-31"
founding_description: "Established as historic café"
description: Historic café founding event (1902)
is_or_was_derived_from: # was: was_derived_from - migrated per Rule 53
range: CustodianObservation
multivalued: true
@ -308,6 +319,11 @@ classes:
seating_capacity: 150
has_outdoor_seating: true
opening_hour: Daily 07:00-23:00
founded_year: 1902
# MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "1902-01-01"
end_of_the_begin: "1902-12-31"
founding_description: "Historic art deco café established in 1902"
catering_price_range: €€€
description: Historic heritage café

View file

@ -0,0 +1,268 @@
# CollectionEvent class
# Structured representation of specimen collection events.
#
# MIGRATION NOTE (2026-01-19):
# Created as part of collection_location migration per slot_fixes.yaml (Rule 53).
#
# Darwin Core alignment: Captures dwc:Event for specimen collection activities.
id: https://nde.nl/ontology/hc/class/CollectionEvent
name: CollectionEvent
title: Collection Event Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
crm: http://www.cidoc-crm.org/cidoc-crm/
dcterms: http://purl.org/dc/terms/
dwc: http://rs.tdwg.org/dwc/terms/
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_place
- ../slots/has_or_had_provenance
- ../slots/has_or_had_note
- ../slots/temporal_extent
- ../slots/is_or_was_acquired_by # Added 2026-01-22 for collector migration (Rule 53)
- ./Place
- ./CustodianPlace
- ./TimeSpan
- ./Agent # Added 2026-01-22 for collector migration (Rule 53)
default_prefix: hc
classes:
CollectionEvent:
class_uri: dwc:Event
description: >-
A specimen collection event capturing where, when, and by whom a specimen was collected.
**Purpose**:
Consolidates collection metadata into a structured event following Darwin Core
and CIDOC-CRM event modeling patterns.
**Darwin Core Alignment**:
- `has_or_had_place` → dwc:locality (structured location)
- `temporal_extent` → dwc:eventDate (collection date/period)
- `is_or_was_acquired_by` → dwc:recordedBy (was: collector, migrated 2026-01-22)
- `field_number` → dwc:fieldNumber
**CIDOC-CRM Alignment**:
- Maps to crm:E7_Activity (collection activity)
- `has_or_had_place` → crm:P7_took_place_at
- `temporal_extent` → crm:P4_has_time-span
**REPLACES**:
- Individual slots: collection_location, collection_date, field_number
- collector → is_or_was_acquired_by + Agent (migrated 2026-01-22)
- Consolidates into structured event with provenance
**Example**:
```yaml
CollectionEvent:
has_or_had_place:
place_name: "Mauritius"
country: "MU"
latitude: -20.2
longitude: 57.5
temporal_extent:
begin_of_the_begin: "1662-01-01"
end_of_the_end: "1662-12-31"
is_or_was_acquired_by: # was: collector - migrated 2026-01-22
- agent_name: "Unknown Dutch sailor"
agent_type: person
agent_role: collector
field_number: "VOC-1662-001"
```
exact_mappings:
- dwc:Event
close_mappings:
- crm:E7_Activity
- prov:Activity
related_mappings:
- schema:Action
mixins:
- HasProvenance
slots:
- has_or_had_place
- has_or_had_provenance
- has_or_had_note
- temporal_extent
- is_or_was_acquired_by # Added 2026-01-22: was collector (Rule 53)
attributes:
event_id:
description: >-
Unique identifier for this collection event.
range: uriorcurie
identifier: true
slot_uri: dcterms:identifier
# collector: REMOVED - migrated to is_or_was_acquired_by per Rule 53 (2026-01-22)
# Now uses imported slot is_or_was_acquired_by with Agent class
field_number:
description: >-
Collector's field number or identifier.
Maps to dwc:fieldNumber.
range: string
slot_uri: dwc:fieldNumber
examples:
- value: "ARW-1234"
- value: "CD-HMS Beagle-567"
sampling_protocol:
description: >-
Method used to collect the specimen.
Maps to dwc:samplingProtocol.
range: string
slot_uri: dwc:samplingProtocol
examples:
- value: "UV light trap"
- value: "Mist net"
- value: "Hand collection"
habitat_description:
description: >-
Description of habitat where specimen was collected.
Maps to dwc:habitat.
range: string
slot_uri: dwc:habitat
examples:
- value: "Tropical rainforest, understory"
- value: "Coral reef, depth 15m"
slot_usage:
has_or_had_place:
description: >-
Structured location where specimen was collected.
MIGRATED from collection_location per slot_fixes.yaml (Rule 53, 2026-01-19).
Uses CustodianPlace for detailed location including coordinates.
range: CustodianPlace
inlined: true
examples:
- value:
place_name: "Mauritius"
country: "MU"
latitude: -20.2
longitude: 57.5
temporal_extent:
description: >-
Time period when collection occurred.
Supports exact dates, ranges, and approximate periods.
range: TimeSpan
inlined: true
examples:
- value:
begin_of_the_begin: "2020-06-15"
end_of_the_end: "2020-06-15"
description: Exact date
- value:
begin_of_the_begin: "1870-01-01"
end_of_the_end: "1879-12-31"
notes: "1870s"
description: Approximate decade
has_or_had_provenance:
description: >-
Provenance of this collection event record.
range: ProvenanceBlock
inlined: true
is_or_was_acquired_by:
description: >-
Person(s) who collected the specimen.
MIGRATED from collector attribute per slot_fixes.yaml (Rule 53, 2026-01-22).
Uses Agent class for structured representation with name, type, and role.
Maps to dwc:recordedBy via Agent.
range: Agent
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value:
agent_name: "Alfred Russel Wallace"
agent_type: person
agent_role: collector
description: Victorian naturalist collector
- value:
agent_name: "Charles Darwin"
agent_type: person
agent_role: collector
description: HMS Beagle expedition collector
comments:
- Created 2026-01-19 from collection_location migration (Rule 53)
- "2026-01-22: collector attribute → is_or_was_acquired_by slot + Agent class (Rule 53)"
- Aligns with Darwin Core dwc:Event
- Consolidates collection metadata into structured event
- Supports provenance tracking for historical specimens
see_also:
- https://dwc.tdwg.org/terms/#dwc:Event
- https://cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E7
annotations:
custodian_types: '["B", "M", "R"]'
custodian_types_rationale: >-
Primarily used for Botanical/Zoo (B), Museum (M), and Research (R) custodians
with biological specimen collections.
custodian_types_primary: "B"
specificity_score: "0.70"
specificity_rationale: >-
Fairly specific - primarily for natural history specimen collecting events.
template_specificity:
museum_search: "0.75"
collection_discovery: "0.80"
general_heritage: "0.55"
examples:
- value:
event_id: "https://nde.nl/ontology/hc/event/dodo-collection-1662"
has_or_had_place:
place_name: "Mauritius"
country: "MU"
latitude: -20.2
longitude: 57.5
temporal_extent:
begin_of_the_begin: "1600-01-01"
end_of_the_end: "1662-12-31"
notes: "Pre-1662 (before extinction)"
# collector → is_or_was_acquired_by (migrated 2026-01-22)
is_or_was_acquired_by:
- agent_name: "Unknown Dutch sailor"
agent_type: person
agent_role: collector
description: Historical Dodo collection event
- value:
event_id: "https://nde.nl/ontology/hc/event/wallace-java-1234"
has_or_had_place:
place_name: "Mt. Gede"
region: "West Java"
country: "ID"
latitude: -6.78
longitude: 106.98
temporal_extent:
begin_of_the_begin: "1854-06-01"
end_of_the_end: "1854-06-30"
# collector → is_or_was_acquired_by (migrated 2026-01-22)
is_or_was_acquired_by:
- agent_name: "Alfred Russel Wallace"
agent_type: person
agent_role: collector
field_number: "ARW-1234"
sampling_protocol: "Hand collection"
habitat_description: "Montane forest, 1500m elevation"
description: Wallace collection in Java

View file

@ -0,0 +1,198 @@
# ColonialStatus class
#
# Created per slot_fixes.yaml revision for: colonial
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 56
id: https://nde.nl/ontology/hc/class/ColonialStatus
name: colonial_status_class
title: Colonial Status Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_identifier
- ../slots/temporal_extent
- ./TimeSpan
default_prefix: hc
classes:
ColonialStatus:
class_uri: hc:ColonialStatus
description: |
Structured representation of colonial/territorial status for geographic coverage.
**PURPOSE**:
Models colonial territories and their historical status in archival finding aids.
Captures both the geographic territory and its colonial relationship over time.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from simple `colonial` string slot to
structured class with temporal and geographic context.
The revision specifies:
- `includes_or_included` + `GeoSpatialPlace` for territory geometry
- `is_or_was_categorized_as` + `ColonialStatus` for categorization
**USE CASES**:
- Dutch East Indies archives (1602-1949)
- Belgian Congo documentation
- British Colonial Office records
- Portuguese overseas territories
**PROVENANCE CONSIDERATIONS**:
Colonial status is historically contingent and politically sensitive.
Always capture:
- Time period of colonial relationship
- Perspective (colonizer vs. colonized)
- Modern-day geographic equivalent
exact_mappings:
- dcterms:spatial
close_mappings:
- schema:containedInPlace
related_mappings:
- skos:Concept
slots:
- has_or_had_label
- has_or_had_identifier
- temporal_extent
attributes:
territory_name:
description: |
Name of the colonial territory.
Use the historical name as recorded in archival sources.
Modern equivalents should be recorded in notes or linked via GeoSpatialPlace.
range: string
required: true
examples:
- value: "Dutch East Indies"
description: Historical name for Indonesia under Dutch rule
- value: "Belgian Congo"
description: Historical name for DRC under Belgian rule
- value: "British Malaya"
description: Historical British colonial territories in Southeast Asia
colonizing_power:
description: |
The colonizing nation or entity.
range: string
examples:
- value: "Netherlands"
- value: "Belgium"
- value: "United Kingdom"
- value: "Portugal"
- value: "France"
modern_equivalent:
description: |
Modern-day country or region corresponding to this colonial territory.
Use ISO 3166-1 alpha-2 codes or full country names.
range: string
multivalued: true
examples:
- value: "ID"
description: Indonesia (former Dutch East Indies)
- value: "CD"
description: Democratic Republic of Congo (former Belgian Congo)
- value: "MY"
description: Malaysia (part of former British Malaya)
status_type:
description: |
Type of colonial relationship.
range: string
examples:
- value: "colony"
- value: "protectorate"
- value: "mandate"
- value: "overseas territory"
- value: "dependency"
slot_usage:
has_or_had_label:
description: |
Display label for the colonial status.
MIGRATION: Used for simple string representation of colonial territory name.
range: string
examples:
- value: "Dutch East Indies (1602-1949)"
temporal_extent:
description: |
Time period of colonial relationship.
Use CIDOC-CRM TimeSpan for precise temporal modeling.
range: TimeSpan
inlined: true
examples:
- value:
begin_of_the_begin: "1602-01-01"
end_of_the_end: "1949-12-27"
description: Dutch colonial period in Indonesia (VOC founding to sovereignty transfer)
examples:
- value:
territory_name: "Dutch East Indies"
colonizing_power: "Netherlands"
modern_equivalent:
- "ID"
status_type: "colony"
has_or_had_label: "Dutch East Indies (1602-1949)"
temporal_extent:
begin_of_the_begin: "1602-03-20"
end_of_the_end: "1949-12-27"
description: Dutch colonial Indonesia - VOC founding to sovereignty transfer
- value:
territory_name: "Suriname"
colonizing_power: "Netherlands"
modern_equivalent:
- "SR"
status_type: "colony"
has_or_had_label: "Dutch Suriname (1667-1975)"
temporal_extent:
begin_of_the_begin: "1667-01-01"
end_of_the_end: "1975-11-25"
description: Dutch colonial Suriname
- value:
territory_name: "Netherlands Antilles"
colonizing_power: "Netherlands"
modern_equivalent:
- "CW"
- "SX"
- "BQ"
status_type: "overseas territory"
has_or_had_label: "Netherlands Antilles (1954-2010)"
temporal_extent:
begin_of_the_begin: "1954-01-01"
end_of_the_end: "2010-10-10"
description: Former Netherlands Antilles (now Curaçao, Sint Maarten, Caribbean Netherlands)
comments:
- Created per slot_fixes.yaml migration from colonial slot (2026-01-22)
- Models colonial territories with temporal and geographic context
- Supports decolonization research and provenance tracking
- Politically sensitive - capture multiple perspectives where relevant
see_also:
- https://www.nationaalarchief.nl/onderzoeken/colonial-records
- https://www.kit.nl/project/decolonization-heritage/

View file

@ -0,0 +1,196 @@
# CommentReply class
# Created per slot_fixes.yaml revision for: comment_reply_count
#
# Represents reply metrics and relationships for comments
# MIGRATION NOTE (2026-01-22): Created as part of comment_reply_count migration per Rule 53.
id: https://nde.nl/ontology/hc/class/CommentReply
name: comment_reply_class
title: Comment Reply Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
sioc: http://rdfs.org/sioc/ns#
as: https://www.w3.org/ns/activitystreams#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_quantity
- ../slots/has_or_had_unit
- ../slots/temporal_extent
- ./Quantity
- ./Unit
- ./TimeSpan
default_prefix: hc
classes:
CommentReply:
class_uri: sioc:Post
description: |
Reply metrics and relationships for comments/posts.
**PURPOSE**:
Structured representation of reply counts and relationships for threaded
discussions. Replaces simple integer counts with rich reply data including
quantity, temporal tracking, and relationship information.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `comment_reply_count` integer
to structured `has_or_had_reply` + `CommentReply` with `has_or_had_quantity`
+ `Quantity` for metric representation.
**REPLY CONTEXTS**:
| Context | Description |
|---------|-------------|
| YouTube | Comment replies on video comments |
| Twitter | Reply threads |
| Facebook | Comment replies on posts |
| Forum | Threaded discussion replies |
**ONTOLOGY ALIGNMENT**:
| Ontology | Class/Property | Usage |
|----------|----------------|-------|
| **SIOC** | `sioc:Post`, `sioc:has_reply` | Online community content |
| **Activity Streams** | `as:Note`, `as:inReplyTo` | Social activity |
| **Schema.org** | `schema:Comment` | Generic comment modeling |
**EXAMPLE**:
```yaml
has_or_had_reply:
- reply_count: 5
has_or_had_quantity:
numeric_value: 5
has_or_had_unit:
unit_label: "replies"
temporal_extent:
begin_of_the_begin: "2025-01-14T10:00:00Z"
```
exact_mappings:
- sioc:Post
close_mappings:
- schema:Comment
- as:Note
related_mappings:
- sioc:has_reply
- as:inReplyTo
slots:
- has_or_had_quantity
- has_or_had_unit
- temporal_extent
attributes:
reply_count:
description: |
Simple count of replies (shorthand for has_or_had_quantity.numeric_value).
Use has_or_had_quantity for structured representation with unit.
range: integer
required: false
minimum_value: 0
examples:
- value: 5
description: 5 replies to a comment
- value: 42
description: 42 replies in thread
reply_type:
description: |
Type of reply context (comment_reply, thread_reply, direct_reply).
range: string
required: false
examples:
- value: "comment_reply"
description: Reply to a comment
- value: "thread_reply"
description: Reply in a discussion thread
- value: "direct_reply"
description: Direct reply to author
slot_usage:
has_or_had_quantity:
description: |
Structured quantity for the reply count.
Use Quantity class with numeric_value and has_or_had_unit.
range: Quantity
inlined: true
required: false
examples:
- value:
numeric_value: 5
has_or_had_unit:
unit_label: "replies"
description: 5 replies using Quantity class
has_or_had_unit:
description: |
Unit for the reply type (replies, responses, etc.).
Can be specified directly or via has_or_had_quantity.has_or_had_unit.
range: Unit
inlined: true
required: false
examples:
- value:
unit_label: "replies"
description: Replies unit
temporal_extent:
description: |
Time when the reply count was observed/recorded.
range: TimeSpan
inlined: true
required: false
examples:
- value:
begin_of_the_begin: "2025-01-14T10:00:00Z"
description: Observation timestamp
examples:
- value:
reply_count: 5
description: Simple reply count (minimal)
- value:
reply_count: 5
reply_type: "comment_reply"
has_or_had_quantity:
numeric_value: 5
has_or_had_unit:
unit_label: "replies"
temporal_extent:
begin_of_the_begin: "2025-01-14T10:00:00Z"
description: Full structured reply count with timestamp
- value:
reply_count: 0
reply_type: "comment_reply"
description: Comment with no replies
comments:
- Created 2026-01-22 from comment_reply_count migration (Rule 53)
- Models reply metrics as structured data
- Supports temporal tracking of reply counts
- Aligned with SIOC vocabulary for online communities
see_also:
- http://rdfs.org/sioc/ns#has_reply
- https://schema.org/Comment
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian with discussion content may track replies.
specificity_score: "0.55"
specificity_rationale: >-
Moderately general - applies to threaded discussion contexts.

View file

@ -0,0 +1,160 @@
# CommercialCustodianTypes class
# Type/Types naming pattern per Rule 0b
#
# Created per slot_fixes.yaml revision for: commercial_custodian_subtype
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 0b
id: https://nde.nl/ontology/hc/class/CommercialCustodianTypes
name: commercial_custodian_types_class
title: Commercial Custodian Types 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/
wd: http://www.wikidata.org/entity/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_identifier
- ../enums/CommercialCustodianTypeEnum
default_prefix: hc
classes:
CommercialCustodianTypes:
class_uri: skos:Collection
description: |
Collection of commercial custodian subtypes from the 295-type Wikidata taxonomy.
**PURPOSE**:
Structured representation of commercial heritage custodian subtypes,
replacing the simple enum-valued slot with a class that can hold
multiple types with additional metadata.
**DESIGN RATIONALE** (Rule 0b):
Follows the Type/Types naming pattern:
- `CommercialCustodianType` (singular) - would be abstract base
- `CommercialCustodianTypes` (plural) - collection of concrete subtypes
Created per slot_fixes.yaml migration from `commercial_custodian_subtype`
enum slot to structured `includes_or_included` + `CommercialCustodianTypes`.
**COMMERCIAL CUSTODIAN CATEGORIES**:
| Category | Examples |
|----------|----------|
| Auction houses | Christie's, Sotheby's, Bonhams |
| Art dealers | Gagosian, David Zwirner |
| Corporate archives | Ford Motor Archives, IBM Archives |
| Brand museums | Heineken Experience, Guinness Storehouse |
| Company museums | Mercedes-Benz Museum, BMW Welt |
**WIKIDATA INTEGRATION**:
Each subtype links to a Wikidata Q-number describing the specific
commercial organization type, enabling Linked Open Data queries.
exact_mappings:
- skos:Collection
close_mappings:
- skos:ConceptScheme
slots:
- has_or_had_label
- has_or_had_identifier
attributes:
subtype_code:
description: |
Code for the commercial custodian subtype from CommercialCustodianTypeEnum.
range: CommercialCustodianTypeEnum
required: false
multivalued: true
examples:
- value: "AUCTION_HOUSE"
- value: "ART_DEALER"
- value: "CORPORATE_ARCHIVE"
wikidata_qid:
description: |
Wikidata Q-number for this commercial custodian type.
range: uriorcurie
required: false
examples:
- value: "wd:Q1078426"
description: Auction house (Q1078426)
- value: "wd:Q17537576"
description: Corporate archive (Q17537576)
subtype_label:
description: |
Human-readable label for this subtype.
range: string
required: false
examples:
- value: "Auction House"
- value: "Corporate Archive"
- value: "Brand Heritage Center"
slot_usage:
has_or_had_label:
description: |
Display label for the commercial custodian type collection.
examples:
- value: "Auction Houses and Art Dealers"
has_or_had_identifier:
description: |
Wikidata or other identifier for this type.
examples:
- value:
identifier_scheme: wikidata
identifier_value: "Q1078426"
examples:
- value:
subtype_code:
- "AUCTION_HOUSE"
subtype_label: "Auction House"
wikidata_qid: "wd:Q1078426"
description: Auction house type
- value:
subtype_code:
- "CORPORATE_ARCHIVE"
subtype_label: "Corporate Archive"
wikidata_qid: "wd:Q17537576"
description: Corporate archive type
- value:
subtype_code:
- "ART_DEALER"
- "GALLERY"
subtype_label: "Art Dealer/Gallery"
description: Combined art dealer and gallery type
comments:
- Created 2026-01-22 from commercial_custodian_subtype migration (Rule 53)
- Follows Type/Types naming pattern (Rule 0b)
- Links to Wikidata taxonomy of 295 commercial custodian types
- Replaces simple enum slot with structured class
see_also:
- https://www.wikidata.org/wiki/Q1078426
- https://www.wikidata.org/wiki/Q17537576
annotations:
custodian_types: '["C"]'
custodian_types_rationale: >-
Specific to Commercial (C) custodian type classification.
specificity_score: "0.75"
specificity_rationale: >-
Fairly specific - applies only to commercial heritage contexts.

View file

@ -17,12 +17,17 @@ imports:
- ../enums/CommercialCustodianTypeEnum
- ../slots/has_or_had_model # was: business_model - migrated per Rule 53/56/57 (2026-01-17)
- ./BusinessModel
- ../slots/collection_purpose
# REMOVED 2026-01-19: collection_purpose - migrated to collects_or_collected + has_or_had_rationale (Rule 53)
- ../slots/collects_or_collected
- ../slots/has_or_had_rationale
- ./Rationale
- ../slots/has_or_had_service # was: commercial_activity - migrated per Rule 53/56/57 (2026-01-18)
- ./Service
- ./ServiceType
- ./ServiceTypes
- ../slots/commercial_custodian_subtype
# REMOVED 2026-01-22: ../slots/commercial_custodian_subtype - migrated to includes_or_included + CommercialCustodianTypes (Rule 53)
- ../slots/includes_or_included
- ./CommercialCustodianTypes
- ../slots/corporate_integration
- ../slots/has_or_had_custodian_type
- ../slots/heritage_holding
@ -190,8 +195,7 @@ classes:
\ .\n\n# Example: Heineken Experience (corporate brand heritage center in Amsterdam)\n<https://w3id.org/heritage/custodian/nl/heineken-experience>\n\
\ a schema:Corporation, schema:TouristAttraction, crm:E74_Group, hc:CommercialOrganization ;\n hc:custodian_type hc:CommercialOrganizationType\
\ ;\n hc:has_or_had_model \"For-profit brand heritage attraction\", \"Admission fees\", \"Merchandise sales\", \"Brand\
\ marketing\" ;\n hc:collection_purpose \"Brand heritage communication\", \"Consumer engagement\", \"Tourism revenue\"\
, \"Corporate identity\" ;\n hc:corporate_integration \"Fully owned by Heineken N.V.\", \"Marketing department\", \"\
\ marketing\" ;\n hc:has_or_had_rationale [ hc:rationale_text \"Brand heritage communication, Consumer engagement, Tourism revenue, Corporate identity\" ] ;\n hc:corporate_integration \"Fully owned by Heineken N.V.\", \"Marketing department\", \"\
Brand management division\" ;\n hc:public_access \"Daily visitor hours 10:30-19:30\", \"Paid admission\", \"Self-guided\
\ tours\", \"Group bookings available\" ;\n hc:heritage_holdings \"Brewing equipment (1867-present)\", \"Advertising\
\ materials archive\", \"Bottle/label collections\", \"Corporate photography\" ;\n hc:has_or_had_service [\n a hc:Service ;\n\
@ -216,9 +220,12 @@ classes:
- schema:TouristAttraction
slots:
- has_or_had_model # was: business_model - migrated per Rule 53/56 (2026-01-17)
- collection_purpose
# collection_purpose REMOVED - migrated to collects_or_collected + has_or_had_rationale (Rule 53, 2026-01-19)
- collects_or_collected
- has_or_had_rationale
- has_or_had_service # was: commercial_activity - migrated per Rule 53/56/57 (2026-01-18)
- commercial_custodian_subtype
# MIGRATED 2026-01-22: commercial_custodian_subtype → includes_or_included + CommercialCustodianTypes (Rule 53)
- includes_or_included
- corporate_integration
- has_or_had_custodian_type
- heritage_holding
@ -246,16 +253,77 @@ classes:
has_or_had_label: "Brand heritage center"
has_or_had_description: "Event rental, Hospitality, Tourism revenue"
description: Coca-Cola World of Coke model
collection_purpose:
range: string
required: true
# MIGRATED 2026-01-19: collection_purpose → collects_or_collected + has_or_had_rationale (Rule 53)
collects_or_collected:
range: Collection
inlined: true
inlined_as_list: true
required: false
description: >-
What the commercial organization collects for heritage purposes.
MIGRATED from collection_purpose per slot_fixes.yaml (Rule 53, 2026-01-19).
Uses Collection class with has_or_had_rationale for purpose documentation.
examples:
- value: Brand communication, Consumer engagement, Tourism, Identity
- value:
collection_name: "Brand Heritage Collection"
has_or_had_rationale:
rationale_text: "Brand communication, Consumer engagement, Tourism, Identity"
rationale_category: "marketing"
description: Heineken Experience purpose
- value: Legal record-keeping, Product history, IP documentation
- value:
collection_name: "Corporate Archive"
has_or_had_rationale:
rationale_text: "Legal record-keeping, Product history, IP documentation"
rationale_category: "compliance"
description: Ford Motor archive purpose
- value: Corporate culture, Brand storytelling, Innovation
- value:
collection_name: "Innovation Archive"
has_or_had_rationale:
rationale_text: "Corporate culture, Brand storytelling, Innovation"
rationale_category: "corporate_culture"
description: IBM archive purpose
has_or_had_rationale:
range: Rationale
inlined: true
required: true
description: >-
Why the commercial organization maintains heritage collections.
Documents corporate motivations (marketing, compliance, culture, etc.).
examples:
- value:
rationale_text: "Brand heritage communication, Consumer engagement"
rationale_category: "marketing"
description: Marketing-driven heritage purpose
- value:
rationale_text: "Legal compliance, IP documentation"
rationale_category: "compliance"
description: Compliance-driven heritage purpose
# MIGRATED 2026-01-22: commercial_custodian_subtype → includes_or_included + CommercialCustodianTypes (Rule 53)
includes_or_included:
description: |
MIGRATED from commercial_custodian_subtype per slot_fixes.yaml (Rule 53, 2026-01-22).
Specific subtypes of commercial heritage custodian from the 295-type Wikidata taxonomy.
Uses CommercialCustodianTypes class for structured representation with Wikidata links.
range: CommercialCustodianTypes
inlined: true
inlined_as_list: true
required: false
examples:
- value:
subtype_code: ["AUCTION_HOUSE"]
subtype_label: "Auction House"
wikidata_qid: "wd:Q1078426"
description: Christie's, Sotheby's type
- value:
subtype_code: ["CORPORATE_ARCHIVE"]
subtype_label: "Corporate Archive"
wikidata_qid: "wd:Q17537576"
description: Ford Motor Archives type
- value:
subtype_code: ["ART_DEALER"]
subtype_label: "Art Dealer"
description: Gagosian type
corporate_integration:
range: string
required: true

View file

@ -0,0 +1,160 @@
# CommissionRate class
# Created per slot_fixes.yaml revision for: commission_rate
#
# Represents commission rate structure
# MIGRATION NOTE (2026-01-22): Created as part of commission_rate migration per Rule 53.
id: https://nde.nl/ontology/hc/class/CommissionRate
name: commission_rate_class
title: Commission Rate Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_percentage
- ./Percentage
default_prefix: hc
classes:
CommissionRate:
class_uri: hc:CommissionRate
description: |
Structured representation of a commission rate.
**PURPOSE**:
Models commission percentages with context (market type,
rate type) replacing simple string representation.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `commission_rate` string
to structured representation with Percentage class.
**ART MARKET STANDARDS**:
- **Primary market**: 40-50% standard (gallery takes half)
- **Secondary market**: 10-20% (resale commission)
- **Auction**: 10-25% buyer's premium + seller's commission
**EXAMPLE**:
```yaml
takes_or_took_comission:
rate_type: "primary_market"
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
```
close_mappings:
- schema:PriceSpecification
slots:
- has_or_had_percentage
attributes:
rate_type:
description: |
Type of commission rate.
range: string
required: false
examples:
- value: "primary_market"
description: Commission on first sale
- value: "secondary_market"
description: Commission on resale
- value: "auction_buyers_premium"
description: Auction house buyer's premium
- value: "auction_sellers_commission"
description: Auction house seller's commission
rate_description:
description: |
Human-readable description of the commission structure.
range: string
required: false
examples:
- value: "Standard 50/50 split between gallery and artist"
description: Primary market explanation
- value: "Sliding scale based on sale price"
description: Variable commission description
effective_date:
description: |
When this commission rate became effective.
range: date
required: false
applies_to:
description: |
What this commission rate applies to.
range: string
required: false
examples:
- value: "All represented artists"
description: Gallery-wide rate
- value: "Works over €10,000"
description: Price-based rate
slot_usage:
has_or_had_percentage:
description: |
The percentage value of this commission rate.
range: Percentage
inlined: true
required: true
examples:
- value:
percentage_value: 50
percentage_display: "50%"
description: 50% commission
examples:
- value:
rate_type: "primary_market"
rate_description: "Standard 50/50 split between gallery and artist"
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
description: Standard primary market commission
- value:
rate_type: "secondary_market"
rate_description: "Consignment fee for resale works"
has_or_had_percentage:
percentage_value: 15
percentage_min: 10
percentage_max: 20
percentage_display: "10-20%"
description: Variable secondary market commission
- value:
rate_type: "auction_buyers_premium"
rate_description: "Buyer's premium at auction"
has_or_had_percentage:
percentage_value: 25
percentage_display: "25%"
description: Auction house buyer's premium
comments:
- Created 2026-01-22 from commission_rate migration (Rule 53)
- Provides structured commission representation
- Supports art market commission conventions
see_also:
- https://schema.org/PriceSpecification
annotations:
custodian_types: '["G", "C"]'
custodian_types_rationale: >-
Primarily for galleries (G) and commercial organizations (C).
specificity_score: "0.80"
specificity_rationale: >-
Specific to commercial sales commission context.

View file

@ -17,7 +17,10 @@ imports:
- ./Label
# REMOVED 2026-01-18: ../slots/collection_description - migrated to has_or_had_description + Description (Rule 53)
- ../slots/has_or_had_description
- ../slots/collection_type
# REMOVED 2026-01-22: ../slots/collection_type - migrated to has_or_had_content + CollectionContent (Rule 53)
- ./CollectionContent
- ./CollectionContentType
- ./CollectionContentTypes
# REMOVED 2026-01-18: ../slots/collection_scope - migrated to has_or_had_scope + CollectionScope (Rule 53)
- ../slots/has_or_had_scope
- ./CollectionScope
@ -96,7 +99,7 @@ classes:
- has_or_had_label
# REMOVED 2026-01-18: collection_scope - migrated to has_or_had_scope + CollectionScope (Rule 53)
- has_or_had_scope
- collection_type
# REMOVED 2026-01-22: collection_type - migrated to has_or_had_content + CollectionContent (Rule 53)
- has_or_had_custodian_type
- custody_history
- digital_surrogate
@ -156,9 +159,7 @@ classes:
description_text: "The Nationaal Archief holdings comprise over 137 km of archival records documenting Dutch government and society from the medieval period to the present."
description_type: collection_description
description: National archive custodian collection description
collection_type:
range: string
multivalued: true
# REMOVED 2026-01-22: collection_type slot_usage - migrated to has_or_had_content + CollectionContent (Rule 53)
has_or_had_scope: # was: collection_scope - migrated per Rule 53/56 (2026-01-18)
description: |
MIGRATED from collection_scope per slot_fixes.yaml (Rule 53/56, 2026-01-18).
@ -178,21 +179,37 @@ classes:
scope_type: archival_scope
description: Archival collection scope example
has_or_had_content:
# was: temporal_coverage - migrated per Rule 53/56 (2026-01-16)
range: Content
# was: temporal_coverage (2026-01-16) + collection_type (2026-01-22) - migrated per Rule 53/56
range: CollectionContent
multivalued: true
inlined: true
inlined_as_list: true
required: false
description: |
Content scope including temporal, spatial, and topical coverage.
MIGRATED from temporal_coverage per slot_fixes.yaml (Rule 53/56, 2026-01-16).
Content held by this collection with typed categorization.
MIGRATED from:
- temporal_coverage per slot_fixes.yaml (Rule 53/56, 2026-01-16)
- collection_type per slot_fixes.yaml (Rule 53, 2026-01-22)
CollectionContent unifies content description with type classification:
- content_description: Free-text description of the content
- content_date_range: Temporal coverage (e.g., "1602-1799")
- content_extent: Size/extent of content
- has_or_had_type → CollectionContentType: Type classification (Archival, Library, Art, etc.)
examples:
- value:
has_or_had_label: "Colonial Archives"
temporal_extent:
begin_of_the_begin: '1602-01-01'
end_of_the_end: '1800-12-31'
description: Colonial period content coverage
content_description: "Colonial period administrative records"
content_date_range: "1602-1800"
has_or_had_type:
- type_label: Archival
description: Colonial archives content with type
- value:
content_description: "Religious art and liturgical objects"
content_extent: "450 objects"
has_or_had_type:
- type_label: Art
- type_label: Liturgical
description: Religious heritage content with multiple types
extent:
range: string
required: false

View file

@ -34,7 +34,9 @@ imports:
- ../slots/serves_finding_aid
- ./ReconstructedEntity
- ../slots/has_or_had_data_service_endpoint
- ../slots/collection_web_address
# REMOVED 2026-01-22: ../slots/collection_web_address - migrated to has_or_had_web_page + WebPage (Rule 53)
- ../slots/has_or_had_web_page
- ./WebPage
- ../slots/fixity_check_date
- ../slots/homepage_web_address
- ../slots/iiif_support
@ -114,7 +116,8 @@ classes:
# MIGRATED from auxiliary_platforms to has_or_had_auxiliary_entities (Rule 53)
# - auxiliary_platforms
- has_or_had_auxiliary_entities
- collection_web_address
# REMOVED 2026-01-22: collection_web_address - migrated to has_or_had_web_page + WebPage (Rule 53)
- has_or_had_web_page
- has_or_had_data_service_endpoint
- fixity_check_date
- homepage_web_address
@ -211,12 +214,23 @@ classes:
description: Rijksmuseum homepage
- value: https://www.europeana.eu/
description: Europeana homepage
collection_web_address:
range: uri
has_or_had_web_page: # was: collection_web_address - migrated per Rule 53 (2026-01-22)
description: |
MIGRATED from collection_web_address per slot_fixes.yaml (Rule 53, 2026-01-22).
Web pages for accessing digital collections on this platform.
Uses WebPage class for structured representation with URL and metadata.
range: WebPage
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value: https://www.rijksmuseum.nl/nl/rijksstudio
description: Rijksstudio collection access
- value:
has_or_had_label:
label_value: "Rijksstudio Collections"
has_or_had_url:
- has_or_had_url: "https://www.rijksmuseum.nl/nl/rijksstudio"
has_or_had_type: collection_access
description: Rijksstudio collection access web page
inventory_web_address:
range: uri
multivalued: true
@ -406,8 +420,12 @@ classes:
platform_type:
- DiscoveryPortal
homepage_web_address: https://www.rijksmuseum.nl/
collection_web_address:
- https://www.rijksmuseum.nl/nl/rijksstudio
has_or_had_web_page: # was: collection_web_address - migrated per Rule 53 (2026-01-22)
- has_or_had_label:
label_value: "Rijksstudio Collections"
has_or_had_url:
- has_or_had_url: "https://www.rijksmuseum.nl/nl/rijksstudio"
has_or_had_type: collection_access
api_endpoint: https://www.rijksmuseum.nl/api/
iiif_support: true
linked_data: true
@ -424,8 +442,12 @@ classes:
- AggregationPlatform
- APIService
homepage_web_address: https://www.europeana.eu/
collection_web_address:
- https://www.europeana.eu/en/collections
has_or_had_web_page: # was: collection_web_address - migrated per Rule 53 (2026-01-22)
- has_or_had_label:
label_value: "Europeana Collections Browse"
has_or_had_url:
- has_or_had_url: "https://www.europeana.eu/en/collections"
has_or_had_type: collection_access
api_endpoint: https://api.europeana.eu/record/v2/
sparql_endpoint: https://api.europeana.eu/sparql
oai_pmh_endpoint: https://www.europeana.eu/oai

View file

@ -0,0 +1,181 @@
# DigitalPlatformUserIdentifier class
#
# Created per slot_fixes.yaml revision for: comment_author_channel_id
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 56
id: https://nde.nl/ontology/hc/class/DigitalPlatformUserIdentifier
name: digital_platform_user_identifier_class
title: Digital Platform User Identifier Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
foaf: http://xmlns.com/foaf/0.1/
as: https://www.w3.org/ns/activitystreams#
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_identifier
- ./Identifier
default_prefix: hc
classes:
DigitalPlatformUserIdentifier:
is_a: Identifier
class_uri: hc:DigitalPlatformUserIdentifier
description: |
Identifier for a user account on a digital platform (YouTube, Twitter, etc.).
**PURPOSE**:
Structured representation of platform-specific user identifiers,
such as YouTube channel IDs, Twitter handles, or Instagram usernames.
Replaces simple string channel_id slots with typed identifiers.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `comment_author_channel_id` string
to structured `has_or_had_author` + `Author` with `has_or_had_identifier` +
`DigitalPlatformUserIdentifier` for platform user identification.
**PLATFORM IDENTIFIER TYPES**:
| Platform | Identifier Type | Example |
|----------|-----------------|---------|
| YouTube | Channel ID | UC1234abcdef |
| Twitter/X | User ID | 12345678 |
| Instagram | Username | @museum_account |
| Facebook | Page ID | 123456789 |
| LinkedIn | Company ID | heritage-foundation |
| TikTok | User ID | museum_official |
**ONTOLOGY ALIGNMENT**:
| Ontology | Class/Property | Usage |
|----------|----------------|-------|
| **Dublin Core** | `dcterms:identifier` | Base identifier semantics |
| **Schema.org** | `schema:identifier` | Web-standard identifier |
| **FOAF** | `foaf:OnlineAccount` | Online account modeling |
| **Activity Streams** | `as:Person` | Social media activity |
exact_mappings:
- foaf:OnlineAccount
close_mappings:
- schema:identifier
related_mappings:
- dcterms:identifier
- as:actor
attributes:
platform_type:
description: |
Type of digital platform (YouTube, Twitter, Instagram, etc.).
range: string
required: true
examples:
- value: "youtube"
- value: "twitter"
- value: "instagram"
- value: "facebook"
- value: "linkedin"
- value: "tiktok"
platform_user_id:
description: |
Platform-specific user/channel/account identifier.
range: string
required: true
examples:
- value: "UC1234abcdefghijk"
description: YouTube channel ID
- value: "12345678"
description: Twitter numeric user ID
- value: "museum_official"
description: TikTok username
platform_username:
description: |
Human-readable username or handle on the platform.
May differ from platform_user_id.
range: string
required: false
examples:
- value: "@rijksmuseum"
description: Twitter handle
- value: "MuseumFan2024"
description: YouTube display name
profile_url:
description: |
URL to the user's profile page on the platform.
range: uri
required: false
examples:
- value: "https://www.youtube.com/channel/UC1234abcdef"
- value: "https://twitter.com/rijksmuseum"
slot_usage:
identifier_scheme:
description: |
Platform identifier scheme. Use lowercase platform name.
Examples: youtube_channel_id, twitter_user_id, instagram_username
ifabsent: "string(digital_platform_user_id)"
examples:
- value: "youtube_channel_id"
- value: "twitter_user_id"
identifier_value:
description: |
The actual platform user identifier value.
Inherited from Identifier class.
examples:
- value: "UC1234abcdefghijk"
description: YouTube channel ID
examples:
- value:
identifier_scheme: youtube_channel_id
identifier_value: "UCsT0YIqwnpJCM-mx7-gSA4Q"
platform_type: "youtube"
platform_user_id: "UCsT0YIqwnpJCM-mx7-gSA4Q"
platform_username: "TEDx Talks"
profile_url: "https://www.youtube.com/channel/UCsT0YIqwnpJCM-mx7-gSA4Q"
description: YouTube channel identifier with full metadata
- value:
identifier_scheme: twitter_user_id
identifier_value: "12345678"
platform_type: "twitter"
platform_user_id: "12345678"
platform_username: "@rijksmuseum"
profile_url: "https://twitter.com/rijksmuseum"
description: Twitter user identifier
- value:
identifier_scheme: youtube_channel_id
identifier_value: "UC1234abcdef"
platform_type: "youtube"
platform_user_id: "UC1234abcdef"
description: Minimal YouTube channel identifier (just ID)
comments:
- Created per slot_fixes.yaml migration from comment_author_channel_id (2026-01-22)
- Extends Identifier class with platform-specific fields
- Use for identifying users/authors on digital platforms
- Supports YouTube, Twitter, Instagram, Facebook, LinkedIn, TikTok
see_also:
- http://xmlns.com/foaf/0.1/OnlineAccount
- https://www.w3.org/ns/activitystreams
- https://developers.google.com/youtube/v3/docs/channels
annotations:
specificity_score: 0.70
specificity_rationale: >-
Specific to digital platform user identification contexts.

View file

@ -14,12 +14,25 @@ prefixes:
imports:
- linkml:types
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
- ../slots/is_or_was_founded_through
- ./FoundingEvent
default_range: string
classes:
DigitalPlatformV2OrganizationProfile:
description: Detailed profile of the organization including type, scope, and description
class_uri: schema:Organization
slots:
- is_or_was_founded_through # was: founding_date attribute - migrated per Rule 53 (2026-01-22)
slot_usage:
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
description: |
The founding event for this organization.
Migrated from founding_date attribute per slot_fixes.yaml revision.
range: FoundingEvent
inlined: true
attributes:
organization_type:
range: string
@ -30,9 +43,7 @@ classes:
description:
range: string
description: Detailed description of the organization and its activities
founding_date:
range: string
description: Date or year of founding
# REMOVED: founding_date - migrated to is_or_was_founded_through (Rule 53, 2026-01-22)
history:
range: string
description: Brief organizational history

View file

@ -22,7 +22,9 @@ imports:
- ../slots/has_or_had_custodian_type
- ../slots/diocese_name
- ../slots/ecclesiastical_province
- ../slots/founding_date_diocese
# MIGRATED 2026-01-22: founding_date_diocese → is_or_was_part_of + Diocese (Rule 53)
- ../slots/is_or_was_part_of
- ./Diocese
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ../slots/has_or_had_identifier # was: wikidata_entity - migrated per Rule 53 (2026-01-15)
@ -44,7 +46,7 @@ classes:
- has_or_had_custodian_type
- diocese_name
- ecclesiastical_province
- founding_date_diocese
- is_or_was_part_of # was: founding_date_diocese - migrated per Rule 53 (2026-01-22)
- hold_or_held_record_set_type
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
@ -81,10 +83,22 @@ classes:
range: string
examples:
- value: Province of Utrecht
founding_date_diocese:
range: date
# MIGRATED 2026-01-22: founding_date_diocese → is_or_was_part_of + Diocese (Rule 53)
is_or_was_part_of:
description: |
The diocese this archive is part of.
Diocese includes founding event with temporal extent.
Migrated from founding_date_diocese per slot_fixes.yaml revision.
range: Diocese
inlined: true
examples:
- value: '0695-01-01'
- value:
diocese_name: "Diocese of Utrecht"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "0695-01-01"
end_of_the_begin: "0695-12-31"
founding_description: "Established circa 695 by St. Willibrord"
description: Diocese of Utrecht established ~695
canonical_access_rule:
range: boolean
@ -128,6 +142,13 @@ classes:
diocese_name: Diocese of 's-Hertogenbosch
archdiocese_name: Archdiocese of Utrecht
ecclesiastical_province: Province of Utrecht
founding_date_diocese: '1559-05-12'
# MIGRATED 2026-01-22: founding_date_diocese → is_or_was_part_of + Diocese (Rule 53)
is_or_was_part_of:
diocese_name: "Diocese of 's-Hertogenbosch"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "1559-05-12"
end_of_the_begin: "1559-05-12"
founding_description: "Established 12 May 1559"
canonical_access_rules: true
description: Diocesan archive example - Diocese of 's-Hertogenbosch

View file

@ -0,0 +1,170 @@
# Diocese - Ecclesiastical administrative unit class
#
# Created per slot_fixes.yaml migration for: founding_date_diocese
# Creation date: 2026-01-22
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (slot_fixes revision)
id: https://nde.nl/ontology/hc/class/Diocese
name: Diocese
title: Diocese
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
org: http://www.w3.org/ns/org#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/is_or_was_founded_through
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/description
- ./FoundingEvent
classes:
Diocese:
class_uri: org:Organization
description: |
Represents an ecclesiastical diocese (bishopric) - an administrative unit
of the Catholic, Anglican, or other episcopal churches.
**USAGE**:
Captures structured information about dioceses that heritage custodians
(particularly diocesan archives) are part of.
**WIKIDATA**: Q131896 (diocese)
**ECCLESIASTICAL HIERARCHY**:
```
Vatican / Holy See
├── Ecclesiastical Province
│ └── Archdiocese (metropolitan see)
│ └── DIOCESE (suffragan see) ← THIS CLASS
│ └── Parish
└── Religious Orders
```
**HISTORICAL SIGNIFICANCE**:
Many European dioceses were established in medieval times and often
predate civil administrative divisions. Their founding dates are
significant for understanding ecclesiastical history.
**MIGRATION NOTE**:
Created per slot_fixes.yaml revision (Rule 53, 2026-01-22).
Replaces simple `founding_date_diocese` (date) with structured class
capturing diocese identity and founding event.
slots:
- is_or_was_founded_through
- has_or_had_identifier
- has_or_had_label
- description
attributes:
diocese_id:
identifier: true
description: |
Unique identifier for this diocese.
Recommended: Use Wikidata ID or institutional URI.
range: uriorcurie
slot_uri: dcterms:identifier
examples:
- value: "wd:Q1808831"
description: Diocese of Utrecht (Wikidata)
- value: "hc:diocese/s-hertogenbosch"
description: Diocese of 's-Hertogenbosch (internal URI)
diocese_name:
description: |
Official name of the diocese.
range: string
required: true
slot_uri: schema:name
examples:
- value: "Diocese of Utrecht"
- value: "Bistum Münster"
- value: "Diocese of 's-Hertogenbosch"
archdiocese_name:
description: |
Name of the metropolitan archdiocese this diocese belongs to.
range: string
slot_uri: schema:parentOrganization
examples:
- value: "Archdiocese of Utrecht"
ecclesiastical_province:
description: |
Name of the ecclesiastical province containing this diocese.
range: string
examples:
- value: "Province of Utrecht"
denomination:
description: |
Religious denomination (Catholic, Anglican, Orthodox, etc.)
range: string
slot_uri: schema:additionalType
examples:
- value: "Roman Catholic"
- value: "Church of England"
- value: "Eastern Orthodox"
slot_usage:
is_or_was_founded_through:
description: |
The founding event of this diocese.
Many dioceses have medieval founding dates.
range: FoundingEvent
inlined: true
examples:
- value:
temporal_extent:
begin_of_the_begin: "0695-01-01"
end_of_the_begin: "0695-12-31"
founding_description: "Diocese of Utrecht established circa 695 by St. Willibrord"
description: Medieval diocese founding
exact_mappings:
- wd:Q131896
close_mappings:
- org:Organization
- schema:Organization
examples:
- value:
diocese_id: "wd:Q1808831"
diocese_name: "Diocese of Utrecht"
archdiocese_name: "Archdiocese of Utrecht"
ecclesiastical_province: "Province of Utrecht"
denomination: "Roman Catholic"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "0695-01-01"
end_of_the_begin: "0695-12-31"
founding_description: "Established circa 695 by St. Willibrord"
description: Diocese of Utrecht example
- value:
diocese_id: "hc:diocese/s-hertogenbosch"
diocese_name: "Diocese of 's-Hertogenbosch"
archdiocese_name: "Archdiocese of Utrecht"
ecclesiastical_province: "Province of Utrecht"
denomination: "Roman Catholic"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "1559-05-12"
end_of_the_begin: "1559-05-12"
founding_description: "Established 12 May 1559 during reorganization of Dutch church"
description: Diocese of 's-Hertogenbosch example
annotations:
custodian_types: '["H"]'
custodian_types_rationale: "Dioceses are ecclesiastical organizations relevant to Holy Sites (H) heritage custodians."
specificity_score: "0.75"
specificity_rationale: "Fairly specific - primarily relevant for diocesan archives and religious heritage."

View file

@ -20,7 +20,9 @@ imports:
- ../slots/legal_jurisdiction
- ../slots/external_identifier
- ../slots/has_or_had_area_served
- ../slots/founding_date
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
- ../slots/is_or_was_founded_through
- ./FoundingEvent
- ../slots/funding_focus
- ../slots/funding_scheme
- ../slots/governance_authority
@ -48,7 +50,7 @@ imports:
- ../slots/description
- ../slots/dissolution_date
- ../slots/external_identifier
- ../slots/founding_date
# REMOVED: ../slots/founding_date - migrated to is_or_was_founded_through (Rule 53, 2026-01-22)
- ../slots/governance_authority
- ../slots/has_or_had_area_served
- ../slots/has_or_had_member_custodian
@ -67,7 +69,7 @@ imports:
- ../slots/description
- ../slots/dissolution_date
- ../slots/external_identifier
- ../slots/founding_date
# REMOVED: ../slots/founding_date - migrated to is_or_was_founded_through (Rule 53, 2026-01-22)
- ../slots/governance_authority
- ../slots/has_or_had_area_served
- ../slots/has_or_had_member_custodian
@ -133,7 +135,7 @@ classes:
- description
- dissolution_date
- external_identifier
- founding_date
- is_or_was_founded_through # was: founding_date - migrated per Rule 53 (2026-01-22)
- governance_authority
- id
- legal_jurisdiction
@ -185,11 +187,20 @@ classes:
- value: Government ministry
- value: Non-profit foundation
- value: Professional association
founding_date:
range: date
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
description: |
The founding event for this encompassing body.
Migrated from founding_date per slot_fixes.yaml revision.
range: FoundingEvent
inlined: true
examples:
- value: '1965-07-01'
description: Ministry established July 1965
- value:
temporal_extent:
begin_of_the_begin: "1965-07-01"
end_of_the_begin: "1965-07-01"
founding_description: "Ministry established July 1965"
description: Ministry founding event (exact date)
dissolution_date:
range: date
examples:

View file

@ -77,7 +77,11 @@ imports:
- ../slots/card_title_en
- ../slots/card_url
- ../slots/has_or_had_quantity # was: claims_count - migrated per Rule 53 (2026-01-19)
- ../slots/colonial
# REMOVED 2026-01-22: ../slots/colonial - migrated to includes_or_included + GeoSpatialPlace + is_or_was_categorized_as + ColonialStatus (Rule 53)
- ../slots/includes_or_included
- ./GeoSpatialPlace
- ../slots/is_or_was_categorized_as
- ./ColonialStatus
- ../slots/content_block
- ../slots/crawler_version
- ../slots/custodian
@ -91,8 +95,12 @@ imports:
- ../slots/finding_aid_note
- ../slots/finding_aid_scope_note
- ../slots/has_or_had_type
- ../slots/format
- ../slots/fr
# MIGRATED 2026-01-22: format → has_or_had_format + Format (Rule 53)
- ../slots/has_or_had_format
- ./Format
# MIGRATED 2026-01-22: fr → has_or_had_language + Language (Rule 53)
- ../slots/has_or_had_language
- ./Language
- ../slots/full_name
- ../slots/geographic_coverage
- ../slots/ghcid
@ -270,7 +278,7 @@ classes:
- has_or_had_external_resource
- finding_aid_note
- has_or_had_type
- format
- has_or_had_format # was: format - migrated per Rule 53 (2026-01-22)
- geographic_coverage
- id
- isbn
@ -398,24 +406,61 @@ classes:
- http://id.loc.gov/ontologies/bibframe/
MultilingualText:
class_uri: skos:Concept
description: 'Container for multilingual text values (titles, descriptions).
Supports any ISO 639-1 language code as a slot name.
Common slots: nl (Dutch), en (English), de (German), fr (French).
'
description: |
Container for multilingual text values (titles, descriptions).
**MIGRATED 2026-01-22**: Language-specific slots (de, en, fr, nl) migrated to
unified `has_or_had_language` slot with `Language` class per Rule 53.
**Old Pattern** (deprecated):
```yaml
nl: "Nederlandse tekst"
en: "English text"
fr: "Texte français"
```
**New Pattern**:
```yaml
has_or_had_language:
- iso_639_1: "nl"
language_name: "Dutch"
text_content: "Nederlandse tekst"
- iso_639_1: "en"
language_name: "English"
text_content: "English text"
- iso_639_1: "fr"
language_name: "French"
text_content: "Texte français"
```
slots:
- de
- en
- fr
- nl
# MIGRATED 2026-01-22: de, en, fr, nl → has_or_had_language + Language (Rule 53)
- has_or_had_language
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
slot_usage:
has_or_had_language:
range: Language
multivalued: true
inlined: true
inlined_as_list: true
description: |
Language-tagged text content.
MIGRATED from de/en/fr/nl slots per slot_fixes.yaml (Rule 53, 2026-01-22).
Use Language class with iso_639_1, language_name, and text_content.
examples:
- value: |
- iso_639_1: "nl"
language_name: "Dutch"
text_content: "Nederlandse tekst"
- iso_639_1: "en"
language_name: "English"
text_content: "English text"
description: Multilingual text with Dutch and English versions
comments:
- At least one language slot should be populated
- At least one language entry should be populated
- nl is primary for Dutch archives
- MIGRATED 2026-01-22 from separate de/en/fr/nl slots to unified has_or_had_language
CustodianReference:
class_uri: rico:Agent
description: 'Reference to the heritage custodian that created/maintains this finding aid.
@ -558,7 +603,9 @@ classes:
'
slots:
- colonial
# MIGRATED 2026-01-22: colonial → includes_or_included + GeoSpatialPlace + is_or_was_categorized_as + ColonialStatus (Rule 53)
- includes_or_included
- is_or_was_categorized_as
- historical_region
- inbound_from
- international
@ -579,8 +626,41 @@ classes:
multivalued: true
historical_region:
multivalued: true
colonial:
# MIGRATED 2026-01-22: colonial → includes_or_included + is_or_was_categorized_as (Rule 53)
includes_or_included:
description: |
MIGRATED from colonial per slot_fixes.yaml (Rule 53, 2026-01-22).
Geographic territories included in this coverage area.
Use GeoSpatialPlace for structured geographic data.
range: GeoSpatialPlace
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value:
geospatial_id: https://nde.nl/ontology/hc/geo/dutch-east-indies
latitude: -6.2
longitude: 106.8
geometry_type: POLYGON
description: Dutch East Indies territory
is_or_was_categorized_as:
description: |
MIGRATED from colonial per slot_fixes.yaml (Rule 53, 2026-01-22).
Colonial status categorization for this geographic coverage.
Use ColonialStatus for structured colonial relationship data.
range: ColonialStatus
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value:
territory_name: "Dutch East Indies"
colonizing_power: "Netherlands"
modern_equivalent: ["ID"]
temporal_extent:
begin_of_the_begin: "1602-01-01"
end_of_the_end: "1949-12-27"
description: Dutch colonial Indonesia
international:
multivalued: true
major_city:

View file

@ -0,0 +1,150 @@
# Format - Document/resource format class
#
# Created per slot_fixes.yaml migration for: format
# Creation date: 2026-01-22
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (slot_fixes revision)
id: https://nde.nl/ontology/hc/class/Format
name: Format
title: Format
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dct: http://purl.org/dc/terms/
schema: http://schema.org/
premis: http://www.loc.gov/premis/rdf/v3/
default_prefix: hc
imports:
- linkml:types
- ../slots/description
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
classes:
Format:
class_uri: dct:MediaType
description: |
A structured representation of a document, file, or resource format.
**USAGE**:
Represents format specifications for:
- Finding aids (EAD, PDF, HTML, MARC)
- API responses (JSON, XML, RDF)
- Media files (JPEG, MP3, MP4)
- Transcripts and subtitles (VTT, SRT, TXT)
**ONTOLOGY ALIGNMENT**:
- **Primary** (`class_uri`): `dct:MediaType` - Dublin Core media type
- **Related**: `schema:encodingFormat` - Schema.org encoding
- **Related**: `premis:Format` - PREMIS preservation format
**MIGRATION NOTE**:
Created per slot_fixes.yaml revision (Rule 53, 2026-01-22).
Replaces simple string-valued `format` slot with structured class.
slots:
- has_or_had_identifier
- has_or_had_label
- description
attributes:
format_id:
identifier: true
description: |
Unique identifier for this format specification.
Recommended: Use IANA media type URI or CURIE.
range: uriorcurie
slot_uri: dct:identifier
examples:
- value: "iana:application/xml"
description: XML MIME type as CURIE
- value: "https://www.iana.org/assignments/media-types/text/vtt"
description: WebVTT format as full URI
format_name:
description: |
Human-readable name of the format.
range: string
slot_uri: schema:name
examples:
- value: "Encoded Archival Description (EAD)"
- value: "WebVTT Subtitle Format"
- value: "JSON (JavaScript Object Notation)"
mime_type:
description: |
IANA media type (MIME type) for this format.
range: string
slot_uri: dct:format
pattern: "^[a-z]+/[a-z0-9.+-]+$"
examples:
- value: "application/xml"
- value: "text/vtt"
- value: "application/json"
file_extension:
description: |
Common file extension(s) for this format.
range: string
multivalued: true
examples:
- value: ".xml"
- value: ".ead"
- value: ".vtt"
- value: ".json"
format_specification_url:
description: |
URL to the format's official specification or documentation.
range: uri
slot_uri: schema:url
examples:
- value: "https://www.loc.gov/ead/"
description: EAD specification
- value: "https://www.w3.org/TR/webvtt1/"
description: WebVTT W3C specification
exact_mappings:
- dct:MediaType
close_mappings:
- schema:encodingFormat
- premis:Format
examples:
- value:
format_id: "iana:application/xml+ead"
format_name: "Encoded Archival Description (EAD)"
mime_type: "application/xml"
file_extension:
- ".xml"
- ".ead"
format_specification_url: "https://www.loc.gov/ead/"
description: EAD finding aid format
- value:
format_id: "iana:text/vtt"
format_name: "WebVTT (Web Video Text Tracks)"
mime_type: "text/vtt"
file_extension:
- ".vtt"
format_specification_url: "https://www.w3.org/TR/webvtt1/"
description: WebVTT subtitle/caption format
- value:
format_id: "iana:application/pdf"
format_name: "Portable Document Format (PDF)"
mime_type: "application/pdf"
file_extension:
- ".pdf"
format_specification_url: "https://www.iso.org/standard/75839.html"
description: PDF document format
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Format specifications applicable to all custodian types."
specificity_score: "0.25"
specificity_rationale: "Broadly applicable - formats used across all heritage custodian types."

View file

@ -0,0 +1,157 @@
# FoundingEvent - Organization founding event class
#
# Created per slot_fixes.yaml migration for: founded_year, founding_date
# Creation date: 2026-01-22
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (slot_fixes revision)
id: https://nde.nl/ontology/hc/class/FoundingEvent
name: FoundingEvent
title: Founding Event
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
- ../slots/temporal_extent
- ../slots/description
- ../slots/has_or_had_identifier
- ./TimeSpan
classes:
FoundingEvent:
class_uri: crm:E63_Beginning_of_Existence
description: |
Represents the founding or establishment event of an organization.
**USAGE**:
Captures structured founding information for:
- Heritage custodians (museums, archives, libraries)
- Standards organizations
- Historic restaurants and venues
- Any organization with establishment history
**ONTOLOGY ALIGNMENT**:
- **Primary** (`class_uri`): `crm:E63_Beginning_of_Existence` - CIDOC-CRM
- **Close**: `schema:Event` - Schema.org event
- **Close**: `prov:Activity` - PROV-O activity
**TEMPORAL PATTERN**:
Uses CIDOC-CRM E52_Time-Span pattern for fuzzy temporal bounds:
- Known year: `begin_of_the_begin` = "YYYY-01-01", `end_of_the_begin` = "YYYY-12-31"
- Known exact date: all four bounds equal
- Unknown year range: set `begin_of_the_begin` to earliest, `end_of_the_begin` to latest
**MIGRATION NOTE**:
Created per slot_fixes.yaml revision (Rule 53, 2026-01-22).
Replaces simple `founded_year` (integer) and `founding_date` (string).
slots:
- temporal_extent
- description
- has_or_had_identifier
attributes:
founding_event_id:
identifier: true
description: |
Unique identifier for this founding event.
Recommended format: URI combining organization ID and "founding".
range: uriorcurie
slot_uri: dcterms:identifier
examples:
- value: "https://nde.nl/ontology/hc/event/founding/rijksmuseum-1800"
- value: "hc:event/founding/de-kas-1902"
founding_description:
description: |
Textual description of the founding event and circumstances.
range: string
slot_uri: schema:description
examples:
- value: "Founded by King Louis Napoleon as the Royal Museum"
- value: "Established as family restaurant in historic greenhouse"
founding_location:
description: |
Location where the founding took place (if different from current location).
range: string
slot_uri: schema:location
examples:
- value: "The Hague, Netherlands"
- value: "Original premises at 123 Main Street"
founded_by:
description: |
Person(s) or organization(s) who founded this entity.
range: string
multivalued: true
slot_uri: schema:founder
examples:
- value: "King Louis Napoleon"
- value: "Johannes van der Berg"
slot_usage:
temporal_extent:
description: |
The temporal extent of the founding event.
For a known year (e.g., 1902), use:
- begin_of_the_begin: "1902-01-01"
- end_of_the_begin: "1902-12-31"
For a precise date (e.g., 1902-03-15), set all bounds equal.
For uncertain date ranges, use appropriate fuzzy bounds.
range: TimeSpan
inlined: true
required: true
exact_mappings:
- crm:E63_Beginning_of_Existence
close_mappings:
- schema:Event
- prov:Activity
examples:
- value:
founding_event_id: "https://nde.nl/ontology/hc/event/founding/rijksmuseum-1800"
temporal_extent:
begin_of_the_begin: "1800-01-01"
end_of_the_begin: "1800-12-31"
notes: "Founded in 1800 by King Louis Napoleon"
founding_description: "Founded as the Royal Museum by King Louis Napoleon"
founded_by:
- "King Louis Napoleon"
founding_location: "The Hague, Netherlands"
description: Rijksmuseum founding event
- value:
founding_event_id: "https://nde.nl/ontology/hc/event/founding/de-kas-1902"
temporal_extent:
begin_of_the_begin: "1902-01-01"
end_of_the_begin: "1902-12-31"
founding_description: "Established as historic greenhouse restaurant"
founded_by:
- "Original family owners"
description: Historic restaurant founding
- value:
founding_event_id: "https://nde.nl/ontology/hc/event/founding/unknown-archive-1850s"
temporal_extent:
begin_of_the_begin: "1850-01-01"
end_of_the_begin: "1859-12-31"
notes: "Founded sometime in the 1850s"
founding_description: "Founded during the 1850s, exact date unknown"
description: Founding with decade-level uncertainty
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Founding events applicable to all custodian types."
specificity_score: "0.30"
specificity_rationale: "Broadly applicable - founding events for all heritage organizations."

View file

@ -6,8 +6,16 @@ imports:
- ./CustodianType
- ../enums/GalleryTypeEnum
- ../slots/has_or_had_artist_representation
- ../slots/commercial_operation
- ../slots/commission_rate
# REMOVED 2026-01-22: ../slots/commercial_operation - migrated to has_or_had_objective + Profit (Rule 53)
- ../slots/has_or_had_objective
- ./Profit
# REMOVED 2026-01-22: ../slots/commission_rate - migrated to has_or_had_service + ArtSaleService + takes_or_took_comission + CommissionRate (Rule 53)
- ../slots/has_or_had_service
- ./ArtSaleService
- ../slots/takes_or_took_comission
- ./CommissionRate
- ../slots/has_or_had_percentage
- ./Percentage
- ../slots/has_or_had_custodian_type
- ../slots/exhibition_focus
- ../slots/exhibition_model
@ -123,14 +131,13 @@ classes:
\ Example**:\n```turtle\n:Custodian_KunsthalRotterdam\n org:classification :GalleryType_Kunsthalle_Q1475403 .\n\n\
:GalleryType_Kunsthalle_Q1475403\n a glamtype:GalleryType, crm:E55_Type, skos:Concept ;\n skos:prefLabel \"Kunsthalle\"\
@en, \"kunsthalle\"@nl, \"Kunsthalle\"@de ;\n skos:broader :GalleryType_ArtGallery_Q1007870 ;\n schema:additionalType\
\ <http://www.wikidata.org/entity/Q1475403> ;\n glamtype:glamorcubesfixphdnt_code \"GALLERY\" ;\n glamtype:commercial_operation\
\ <http://www.wikidata.org/entity/Q1475403> ;\n glamtype:glamorcubesfixphdnt_code \"GALLERY\" ;\n glamtype:has_or_had_objective\
\ false ;\n glamtype:exhibition_focus \"contemporary art\" ;\n glamtype:sales_activity false ;\n glamtype:exhibition_model\
\ \"temporary rotating exhibitions\" .\n```\n\n**Domain-Specific Properties**:\nThis class adds gallery-specific metadata\
\ beyond base CustodianType:\n- `commercial_operation` - Whether gallery operates commercially (sells art)\n- `artist_representation`\
\ beyond base CustodianType:\n- `has_or_had_objective` - Structured profit objective (commercial/nonprofit/mixed)\n- `artist_representation`\
\ - Artists represented by gallery (for commercial galleries)\n- `exhibition_focus` - Type of art exhibited (contemporary,\
\ modern, photography, etc.)\n- `sales_activity` - Whether gallery sells artworks (not just exhibits)\n- `exhibition_model`\
\ - Exhibition strategy (temporary, rotating, curated shows)\n- `commission_rate` - Gallery commission percentage (for\
\ commercial galleries)\n\n**Getty AAT Integration**:\nThe Getty Art & Architecture Thesaurus provides standardized\
\ - Exhibition strategy (temporary, rotating, curated shows)\n- `has_or_had_service` - Art sales service with commission structure (ArtSaleService)\n\n**Getty AAT Integration**:\nThe Getty Art & Architecture Thesaurus provides standardized\
\ vocabulary:\n- aat:300005768 - art galleries (institutions)\n- aat:300240057 - commercial galleries\n- aat:300240058\
\ - nonprofit galleries\n- aat:300005741 - kunsthalles\n\n**Art Market Context**:\nCommercial galleries operate in the\
\ art market ecosystem:\n- **Primary market**: Representing living artists, first sales\n- **Secondary market**: Resale\
@ -139,8 +146,10 @@ classes:
\ extracted from 78 Wikidata entities with type='G'\nin `data/wikidata/GLAMORCUBEPSXHFN/hyponyms_curated_full.yaml`.\n"
slots:
- has_or_had_artist_representation
- commercial_operation
- commission_rate
# REMOVED 2026-01-22: commercial_operation - migrated to has_or_had_objective + Profit (Rule 53)
- has_or_had_objective
# REMOVED 2026-01-22: commission_rate - migrated to has_or_had_service + ArtSaleService (Rule 53)
- has_or_had_service
- has_or_had_custodian_type
- exhibition_focus
- exhibition_model
@ -185,7 +194,11 @@ classes:
- Kunsthalle@de
has_or_had_description: facility that mounts temporary art exhibitions without permanent collection # was: type_description - migrated per Rule 53/56 (2026-01-16)
custodian_type_broader: https://nde.nl/ontology/hc/type/gallery/Q1007870
commercial_operation: false
# MIGRATED 2026-01-22: commercial_operation → has_or_had_objective + Profit (Rule 53)
has_or_had_objective:
objective_type: "nonprofit"
is_commercial: false
profit_model: "Public funding and grants"
exhibition_focus: contemporary art
sales_activity: false
exhibition_model: temporary rotating exhibitions, no permanent collection
@ -199,7 +212,11 @@ classes:
- kunstgalerie@nl
has_or_had_description: for-profit gallery that sells artworks and represents artists # was: type_description - migrated per Rule 53/56 (2026-01-16)
custodian_type_broader: https://nde.nl/ontology/hc/type/gallery/Q1007870
commercial_operation: true
# MIGRATED 2026-01-22: commercial_operation → has_or_had_objective + Profit (Rule 53)
has_or_had_objective:
objective_type: "for-profit"
is_commercial: true
profit_model: "Sales commission (50%)"
has_or_had_artist_representation:
- Artist A
- Artist B
@ -207,5 +224,15 @@ classes:
exhibition_focus: contemporary painting and sculpture
sales_activity: true
exhibition_model: curated exhibitions of represented artists
commission_rate: 50%
# MIGRATED 2026-01-22: commission_rate → has_or_had_service + ArtSaleService (Rule 53)
has_or_had_service:
service_name: "Primary Market Sales"
market_type: "primary"
artist_representation: true
sales_activity: true
takes_or_took_comission:
rate_type: "primary_market"
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
description: Commercial gallery with artist representation and sales

View file

@ -16,7 +16,11 @@ imports:
- ./CustodianType
- ../slots/has_or_had_access_policy
- ../enums/HolySiteTypeEnum
- ../slots/collection_type
# REMOVED 2026-01-22: ../slots/collection_type - migrated to has_or_had_content + CollectionContent (Rule 53)
- ../slots/has_or_had_content
- ./CollectionContent
- ./CollectionContentType
- ./CollectionContentTypes
- ../slots/has_or_had_custodian_type
- ../slots/holy_site_subtype
- ../slots/religious_function
@ -280,8 +284,8 @@ classes:
\ hc:TempleCollection ;\n schema:url <https://nde.nl/ontology/hc/class/holy-sacred-site-type> .\n\n# Example:\
\ Vatican Apostolic Archive (papal archive)\n<https://w3id.org/heritage/custodian/va/vatican-apostolic-archive>\n a\
\ schema:PlaceOfWorship, schema:ArchiveOrganization, crm:E39_Actor, hc:HolySacredSite ;\n hc:custodian_type hc:HolySacredSiteType\
\ ;\n hc:religious_tradition \"Roman Catholic Christianity\" ;\n hc:collection_type \"Archival records\", \"Papal\
\ documents\", \"Medieval manuscripts\", \"Correspondence\" ;\n hc:religious_function \"Support papal governance\"\
\ ;\n hc:religious_tradition \"Roman Catholic Christianity\" ;\n hc:has_or_had_content [ hc:content_description \"Archival records, Papal\
\ documents, Medieval manuscripts, Correspondence\" ] ;\n hc:religious_function \"Support papal governance\"\
, \"Document Church history\", \"Preserve canon law\" ;\n hc:access_policy \"Restricted access by appointment\", \"\
Scholars and researchers only\", \"No browsing\" ;\n hc:is_or_was_managed_by \"Prefect of Vatican Apostolic Archive\"\
, \"Papal administrative authority\" ;\n hc:secularization_status \"Active religious institution, No secularization\"\
@ -303,7 +307,8 @@ classes:
- schema:ArchiveOrganization
slots:
- has_or_had_access_policy
- collection_type
# REMOVED 2026-01-22: collection_type - migrated to has_or_had_content + CollectionContent (Rule 53)
- has_or_had_content
- has_or_had_custodian_type
- holy_site_subtype
- religious_function
@ -323,16 +328,34 @@ classes:
description: Sunni mosque
- value: Theravada Buddhism
description: Buddhist temple
collection_type:
range: string
has_or_had_content: # was: collection_type - migrated per Rule 53 (2026-01-22)
description: |
MIGRATED from collection_type per slot_fixes.yaml (Rule 53, 2026-01-22).
Types of heritage materials held by the religious site.
Uses CollectionContent class with CollectionContentType taxonomy.
range: CollectionContent
multivalued: true
inlined: true
inlined_as_list: true
required: true
examples:
- value: Archives, Manuscripts, Papal documents
- value:
content_description: "Archives, Manuscripts, Papal documents"
has_or_had_type:
- type_label: Archival
- type_label: Library
description: Vatican collection types
- value: Torah scrolls, Archives, Ceremonial silver
- value:
content_description: "Torah scrolls, Archives, Ceremonial silver"
has_or_had_type:
- type_label: Archival
- type_label: Liturgical
description: Synagogue collection types
- value: Sutras, Temple registers, Buddha statues
- value:
content_description: "Sutras, Temple registers, Buddha statues"
has_or_had_type:
- type_label: Library
- type_label: Art
description: Temple collection types
religious_function:
range: string

View file

@ -1,17 +1,42 @@
# Language - Language class
# Extended 2026-01-22: Added text_content attribute for language-tagged text support
# Supports migration of language-specific text slots (fr, de, en, nl) per slot_fixes.yaml
id: https://nde.nl/ontology/hc/class/Language
name: Language
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dct: http://purl.org/dc/terms/
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
imports:
- linkml:types
- ../slots/has_or_had_code
classes:
Language:
class_uri: dct:LinguisticSystem
description: A language with ISO codes
description: |
A language with ISO codes and optional text content.
**Purpose**:
Represents a language entity that can identify the language of text content.
Used for language-tagged text where the language code and content are bundled together.
**Use Cases**:
1. Language identification only (just codes, no content)
2. Language-tagged text (codes + text_content for multilingual data)
**Migration Support**:
This class supports migration from language-specific text slots (fr, de, en, nl)
to a unified `has_or_had_language` + `Language` pattern per slot_fixes.yaml.
**Ontological Alignment**:
- **Primary**: `dct:LinguisticSystem` - Dublin Core linguistic system
- **Close**: `schema:Language` - Schema.org language
exact_mappings:
- dct:LinguisticSystem
close_mappings:
- schema:Language
slots:
- has_or_had_code
attributes:
@ -22,7 +47,43 @@ classes:
Parsed from raw string, not authoritative. Use ISO codes for formal identification.
iso_639_1:
range: string
description: ISO 639-1 two-letter code
description: ISO 639-1 two-letter code (e.g., "fr", "en", "de", "nl")
pattern: "^[a-z]{2}$"
iso_639_3:
range: string
description: ISO 639-3 three-letter code
description: ISO 639-3 three-letter code (e.g., "fra", "eng", "deu", "nld")
pattern: "^[a-z]{3}$"
text_content:
range: string
description: |
Text content in this language.
Used when bundling language identification with the actual text content.
This enables migration from language-specific slots (fr, de, en, nl) to
a unified Language-tagged pattern.
**Example**:
```yaml
has_or_had_language:
- iso_639_1: "fr"
language_name: "French"
text_content: "archives universitaires"
- iso_639_1: "en"
language_name: "English"
text_content: "university archives"
```
examples:
- value: |
iso_639_1: "fr"
language_name: "French"
text_content: "archives universitaires"
description: French language-tagged text for multilingual label
- value: |
iso_639_1: "en"
language_name: "English"
description: English language identifier (without text content)
- value: |
iso_639_1: "nl"
language_name: "Dutch"
text_content: "universitair archief"
description: Dutch language-tagged text

View file

@ -0,0 +1,153 @@
# Name class
# Created per slot_fixes.yaml revision for: common_name
#
# MIGRATION NOTE (2026-01-22): Created as part of common_name migration per Rule 53.
# Provides structured representation of names with type classification.
id: https://nde.nl/ontology/hc/class/Name
name: name_class
title: Name Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
rdfs: http://www.w3.org/2000/01/rdf-schema#
dwc: http://rs.tdwg.org/dwc/terms/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_type
- ../slots/has_or_had_language
- ../slots/has_or_had_label
default_prefix: hc
classes:
Name:
class_uri: schema:name
description: |
Structured representation of a name associated with an entity.
**MIGRATION NOTE** (2026-01-22):
Created per slot_fixes.yaml migration from `common_name` string
to structured Name class per Rule 53.
**Purpose**:
Provides structured representation for names including:
- The name value itself (via has_or_had_label)
- Name type classification (e.g., common name, scientific name, trade name)
- Language information
**Ontological Alignment**:
- **Primary** (`class_uri`): `schema:name` - Schema.org name
- **Close**: `skos:prefLabel`, `rdfs:label` - Label predicates
- **Related**: `dwc:vernacularName` - Darwin Core vernacular name
**Use Cases**:
- Biological specimens with common/vernacular names in multiple languages
- Organizations with official names and trading names
- Places with indigenous and colonial names
- Products with brand names and generic names
**Pattern**:
```yaml
has_or_had_name:
- has_or_had_label: "Dodo"
has_or_had_type: CommonName
has_or_had_language: "en"
- has_or_had_label: "Dronte"
has_or_had_type: CommonName
has_or_had_language: "nl"
```
slots:
- has_or_had_label
- has_or_had_type
- has_or_had_language
slot_usage:
has_or_had_label:
description: The name value itself.
range: string
required: true
examples:
- value: "Dodo"
description: English common name
- value: "Dronte"
description: Dutch common name
has_or_had_type:
description: |
The type classification of this name.
Range narrowed to NameType class hierarchy.
range: NameType
required: false
examples:
- value: CommonName
description: Vernacular/common name
- value: ScientificName
description: Binomial nomenclature
has_or_had_language:
description: |
The language of this name (ISO 639-1 code).
range: string
required: false
examples:
- value: "en"
description: English
- value: "nl"
description: Dutch
- value: "la"
description: Latin (for scientific names)
exact_mappings:
- schema:name
close_mappings:
- skos:prefLabel
- rdfs:label
related_mappings:
- dwc:vernacularName
- schema:alternateName
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Name structures applicable to all heritage custodian types.
custodian_types_primary: M
specificity_score: 0.25
specificity_rationale: >-
Broadly applicable - names are fundamental to all heritage entities
including biological specimens, organizations, places, and objects.
template_specificity:
collection_discovery: 0.30
person_research: 0.35
general_heritage: 0.25
migration_info:
source_slot: common_name
migration_date: "2026-01-22"
rule: "Rule 53"
comments:
- "Structured name representation with type and language"
- "Replaces simple string-valued common_name slot"
- "Supports multilingual names through has_or_had_language"
- "Type classification via NameType hierarchy"
- "Created 2026-01-22 from common_name migration (Rule 53)"
examples:
- value:
has_or_had_label: "Dodo"
has_or_had_type: CommonName
has_or_had_language: "en"
description: English common name for extinct bird
- value:
has_or_had_label: "Dronte"
has_or_had_type: CommonName
has_or_had_language: "nl"
description: Dutch common name for same species
- value:
has_or_had_label: "Coast Redwood"
has_or_had_type: CommonName
has_or_had_language: "en"
description: English common name for tree species

View file

@ -0,0 +1,100 @@
# NameType class (abstract base)
# Created per slot_fixes.yaml revision for: common_name
#
# MIGRATION NOTE (2026-01-22): Created as part of common_name migration per Rule 53.
# Abstract base class for name type taxonomy following Rule 0b (Type/Types pattern).
id: https://nde.nl/ontology/hc/class/NameType
name: name_type_class
title: Name Type Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
crm: http://www.cidoc-crm.org/cidoc-crm/
dwc: http://rs.tdwg.org/dwc/terms/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_description
default_prefix: hc
classes:
NameType:
class_uri: crm:E55_Type
abstract: true
description: |
Abstract base class for name type classifications.
**DESIGN PATTERN** (Rule 0b - Type/Types Convention):
| File | Purpose |
|------|---------|
| `NameType.yaml` (this file) | Abstract base class |
| `NameTypes.yaml` | Concrete subclasses (CommonName, ScientificName, etc.) |
**Purpose**:
Provides type taxonomy for categorizing different kinds of names:
- Common/vernacular names (species, products)
- Scientific names (binomial nomenclature)
- Official names (organizations, places)
- Trade/brand names
- Historical/former names
**Ontological Alignment**:
- **Primary** (`class_uri`): `crm:E55_Type` - CIDOC-CRM type
- **Close**: `skos:Concept` - SKOS concept vocabulary
**Usage**:
```yaml
has_or_had_name:
- has_or_had_label: "Dodo"
has_or_had_type: CommonName # ← NameType subclass
has_or_had_language: "en"
```
slots:
- has_or_had_label
- has_or_had_description
slot_usage:
has_or_had_label:
description: Human-readable label for this name type.
range: string
required: true
examples:
- value: "Common Name"
- value: "Scientific Name"
has_or_had_description:
description: Explanation of when to use this name type.
range: string
required: false
exact_mappings:
- crm:E55_Type
close_mappings:
- skos:Concept
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Name types applicable across all heritage domains.
custodian_types_primary: M
specificity_score: 0.30
specificity_rationale: >-
Moderately specific - name type vocabularies are fundamental but have
domain-specific variations (biology vs. organizational naming).
design_pattern: "Type/Types (Rule 0b)"
migration_info:
source_slot: common_name
migration_date: "2026-01-22"
rule: "Rule 53"
comments:
- "Abstract base class - see NameTypes.yaml for concrete subclasses"
- "Follows Rule 0b Type/Types naming pattern"
- "Used with Name class to classify name types"
- "Created 2026-01-22 from common_name migration (Rule 53)"

View file

@ -0,0 +1,226 @@
# NameTypes class (concrete subclasses)
# Created per slot_fixes.yaml revision for: common_name
#
# MIGRATION NOTE (2026-01-22): Created as part of common_name migration per Rule 53.
# Contains concrete name type subclasses per Rule 0b (Type/Types pattern).
# NOTE: revision specifies "this includes CommonName"
id: https://nde.nl/ontology/hc/class/NameTypes
name: name_types_class
title: Name Types Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
dwc: http://rs.tdwg.org/dwc/terms/
schema: http://schema.org/
imports:
- linkml:types
- ../metadata
- ./NameType # Import abstract base class
default_prefix: hc
classes:
# === Primary Name Types ===
CommonName:
is_a: NameType
class_uri: dwc:vernacularName
description: |
Vernacular or common name in any language.
**Darwin Core Alignment**:
Maps to `dwc:vernacularName` - "A common or vernacular name."
**Use Cases**:
- Species common names ("Dodo", "Dronte", "Coast Redwood")
- Product common names
- Informal organization names
**Example**:
```yaml
has_or_had_name:
- has_or_had_label: "Dodo"
has_or_had_type: CommonName
has_or_had_language: "en"
```
exact_mappings:
- dwc:vernacularName
annotations:
specificity_score: 0.35
specificity_rationale: Common names used across biological and cultural heritage.
ScientificName:
is_a: NameType
class_uri: dwc:scientificName
description: |
Scientific name following nomenclatural codes (ICZN, ICN, ICNP).
**Darwin Core Alignment**:
Maps to `dwc:scientificName` - "The full scientific name, with authorship
and date information if known."
**Use Cases**:
- Binomial nomenclature for species
- Taxonomic names at any rank
**Example**:
```yaml
has_or_had_name:
- has_or_had_label: "Raphus cucullatus (Linnaeus, 1758)"
has_or_had_type: ScientificName
has_or_had_language: "la"
```
exact_mappings:
- dwc:scientificName
annotations:
specificity_score: 0.70
specificity_rationale: Scientific names specific to biological/taxonomic contexts.
OfficialName:
is_a: NameType
class_uri: skos:prefLabel
description: |
Official, formal, or legal name of an entity.
**Use Cases**:
- Organization legal names
- Official place names
- Formal document titles
**Example**:
```yaml
has_or_had_name:
- has_or_had_label: "Rijksmuseum Amsterdam"
has_or_had_type: OfficialName
has_or_had_language: "nl"
```
close_mappings:
- skos:prefLabel
- schema:legalName
annotations:
specificity_score: 0.40
specificity_rationale: Official names apply to organizations, places, and formal entities.
TradeName:
is_a: NameType
class_uri: schema:alternateName
description: |
Commercial, trade, or brand name.
**Use Cases**:
- Company trading names (DBA)
- Product brand names
- Service marks
**Example**:
```yaml
has_or_had_name:
- has_or_had_label: "The Rijks"
has_or_had_type: TradeName
has_or_had_language: "en"
```
close_mappings:
- schema:alternateName
annotations:
specificity_score: 0.55
specificity_rationale: Trade names specific to commercial/corporate contexts.
HistoricalName:
is_a: NameType
class_uri: hc:HistoricalName
description: |
Former or historical name no longer in active use.
**Use Cases**:
- Former city names (Constantinople → Istanbul)
- Previous organization names
- Obsolete taxonomic names (synonyms)
**Example**:
```yaml
has_or_had_name:
- has_or_had_label: "Didus ineptus"
has_or_had_type: HistoricalName
has_or_had_language: "la"
```
annotations:
specificity_score: 0.45
specificity_rationale: Historical names applicable across all heritage domains.
IndigenousName:
is_a: NameType
class_uri: hc:IndigenousName
description: |
Name in an indigenous or minority language.
**Use Cases**:
- Indigenous place names
- Traditional ecological knowledge names
- Minority language names for cultural heritage
**Example**:
```yaml
has_or_had_name:
- has_or_had_label: "Aotearoa"
has_or_had_type: IndigenousName
has_or_had_language: "mi" # Maori
```
annotations:
specificity_score: 0.50
specificity_rationale: Indigenous names particularly relevant for cultural heritage and decolonization.
Abbreviation:
is_a: NameType
class_uri: hc:Abbreviation
description: |
Abbreviated form of a name.
**Use Cases**:
- Acronyms (UNESCO, ICOM)
- Standard abbreviations
- Initialisms
**Example**:
```yaml
has_or_had_name:
- has_or_had_label: "NHM"
has_or_had_type: Abbreviation
has_or_had_language: "en"
```
annotations:
specificity_score: 0.35
specificity_rationale: Abbreviations common across all naming contexts.
NickName:
is_a: NameType
class_uri: hc:NickName
description: |
Informal nickname or pet name.
**Use Cases**:
- Informal references to places ("The City")
- Colloquial names for organizations
- Popular names for specimens
**Example**:
```yaml
has_or_had_name:
- has_or_had_label: "Oxford Dodo"
has_or_had_type: NickName
has_or_had_language: "en"
```
annotations:
specificity_score: 0.40
specificity_rationale: Nicknames used informally across heritage contexts.

View file

@ -0,0 +1,161 @@
# Percentage class
# Created per slot_fixes.yaml revision for: commission_rate
#
# Represents a percentage value with optional range
# MIGRATION NOTE (2026-01-22): Created as part of commission_rate migration per Rule 53.
id: https://nde.nl/ontology/hc/class/Percentage
name: percentage_class
title: Percentage Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
qudt: http://qudt.org/schema/qudt/
imports:
- linkml:types
- ../metadata
default_prefix: hc
classes:
Percentage:
class_uri: hc:Percentage
description: |
Structured representation of a percentage value.
**PURPOSE**:
Models percentage values with optional min/max range and
display formatting. Replaces unstructured percentage strings.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `commission_rate` string
(e.g., "50%", "40-50%") to structured Percentage class.
**USE CASES**:
- Commission rates: "50%" → percentage_value: 50
- Variable rates: "40-50%" → percentage_min: 40, percentage_max: 50
- Completion: "75% complete" → percentage_value: 75
- Discount: "20% off" → percentage_value: 20
**EXAMPLE**:
```yaml
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
```
close_mappings:
- qudt:QuantityValue
- schema:QuantitativeValue
attributes:
percentage_value:
description: |
The numeric percentage value (0-100).
For ranges, this is the typical/default value.
range: float
required: true
minimum_value: 0
maximum_value: 100
examples:
- value: 50
description: 50 percent
- value: 15.5
description: 15.5 percent
percentage_min:
description: |
Minimum percentage in a range.
Only used when percentage varies (e.g., "40-50%").
range: float
required: false
minimum_value: 0
maximum_value: 100
examples:
- value: 40
description: Minimum of 40-50% range
percentage_max:
description: |
Maximum percentage in a range.
Only used when percentage varies (e.g., "40-50%").
range: float
required: false
minimum_value: 0
maximum_value: 100
examples:
- value: 50
description: Maximum of 40-50% range
percentage_display:
description: |
Human-readable display format of the percentage.
Preserves original formatting from source data.
range: string
required: false
pattern: ^[0-9]{1,3}(\.[0-9]+)?(-[0-9]{1,3}(\.[0-9]+)?)?%$
examples:
- value: "50%"
description: Simple percentage
- value: "40-50%"
description: Range percentage
- value: "15.5%"
description: Decimal percentage
percentage_context:
description: |
Context or meaning of this percentage.
range: string
required: false
examples:
- value: "commission"
description: Commission rate
- value: "completion"
description: Completion percentage
- value: "discount"
description: Discount percentage
examples:
- value:
percentage_value: 50
percentage_display: "50%"
percentage_context: "commission"
description: Simple 50% commission
- value:
percentage_value: 45
percentage_min: 40
percentage_max: 50
percentage_display: "40-50%"
percentage_context: "commission"
description: Variable commission range (40-50%)
- value:
percentage_value: 15.5
percentage_display: "15.5%"
percentage_context: "secondary_market"
description: Decimal percentage for secondary market
comments:
- Created 2026-01-22 from commission_rate migration (Rule 53)
- Supports single values and ranges
- Preserves original display formatting
see_also:
- http://qudt.org/schema/qudt/QuantityValue
- https://schema.org/QuantitativeValue
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - percentages apply across many contexts.
specificity_score: "0.30"
specificity_rationale: >-
Broadly useful - percentages appear in many contexts.

View file

@ -0,0 +1,152 @@
# Profit class
# Created per slot_fixes.yaml revision for: commercial_operation
#
# Represents organizational profit objective/motive
# MIGRATION NOTE (2026-01-22): Created as part of commercial_operation migration per Rule 53.
id: https://nde.nl/ontology/hc/class/Profit
name: profit_class
title: Profit Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
org: http://www.w3.org/ns/org#
imports:
- linkml:types
- ../metadata
default_prefix: hc
classes:
Profit:
class_uri: hc:Profit
description: |
Structured representation of an organization's profit motive/objective.
**PURPOSE**:
Models whether an organization operates for profit or as nonprofit,
replacing simple boolean with structured class for richer metadata.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `commercial_operation` boolean
to structured `has_or_had_objective` + `Profit` for complete objective tracking.
**USE CASES**:
- Commercial galleries: For-profit, sell artworks, earn commission
- Kunsthalle: Nonprofit, exhibition-only, public funding
- Mixed models: Partial commercial activities in nonprofit context
**EXAMPLE**:
```yaml
has_or_had_objective:
objective_type: "for-profit"
is_commercial: true
profit_model: "Sales commission"
tax_status: "for-profit corporation"
```
close_mappings:
- schema:BusinessFunction
- org:purpose
attributes:
objective_type:
description: |
Type of operational objective (for-profit, nonprofit, mixed).
range: string
required: true
examples:
- value: "for-profit"
description: Commercial operation
- value: "nonprofit"
description: Non-commercial operation
- value: "mixed"
description: Combination of commercial and nonprofit activities
is_commercial:
description: |
Boolean indicator for commercial operation.
True = operates commercially (generates profit/revenue from sales)
False = non-commercial (exhibition-only, public/grant funded)
MIGRATION NOTE: This preserves the original boolean semantics
of the deprecated commercial_operation slot.
range: boolean
required: true
examples:
- value: true
description: Commercial gallery selling artworks
- value: false
description: Kunsthalle or non-profit exhibition space
profit_model:
description: |
Description of how profit/revenue is generated.
range: string
required: false
examples:
- value: "Sales commission (50%)"
description: Gallery earns commission on artwork sales
- value: "Admission fees"
description: Revenue from visitor admission
- value: "Membership dues"
description: Revenue from member subscriptions
tax_status:
description: |
Legal tax status of the organization.
range: string
required: false
examples:
- value: "501(c)(3) nonprofit"
description: US tax-exempt nonprofit
- value: "ANBI"
description: Dutch public benefit organization
- value: "for-profit corporation"
description: Standard commercial entity
examples:
- value:
objective_type: "for-profit"
is_commercial: true
profit_model: "Sales commission (50%)"
tax_status: "for-profit corporation"
description: Commercial art gallery with sales commission model
- value:
objective_type: "nonprofit"
is_commercial: false
profit_model: "Public funding and grants"
tax_status: "ANBI"
description: Kunsthalle with nonprofit status
- value:
objective_type: "mixed"
is_commercial: true
profit_model: "Gift shop and admission, plus grants"
tax_status: "501(c)(3) nonprofit"
description: Museum with mixed revenue model
comments:
- Created 2026-01-22 from commercial_operation migration (Rule 53)
- Replaces boolean with structured objective representation
- Supports commercial, nonprofit, and mixed operational models
see_also:
- https://schema.org/BusinessFunction
- https://www.w3.org/ns/org#purpose
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian type may have operational objectives.
specificity_score: "0.40"
specificity_rationale: >-
Moderately specific - relates to organizational structure across types.

View file

@ -0,0 +1,132 @@
# Significance class
# Created per slot_fixes.yaml revision for: community_significance
#
# MIGRATION NOTE (2026-01-22): Created as part of community_significance migration per Rule 53.
# Provides structured representation of significance with type classification.
id: https://nde.nl/ontology/hc/class/Significance
name: significance_class
title: Significance Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_type
- ../slots/has_or_had_description
- ../slots/has_or_had_label
default_prefix: hc
classes:
Significance:
class_uri: crm:E55_Type
description: |
Structured representation of significance or importance.
**MIGRATION NOTE** (2026-01-22):
Created per slot_fixes.yaml migration from `community_significance` string
to structured Significance class per Rule 53.
**Purpose**:
Provides structured representation for significance including:
- Type classification (e.g., cultural, economic, historical)
- Description of the significance
- Supporting evidence or justification
**Ontological Alignment**:
- **Primary** (`class_uri`): `crm:E55_Type` - CIDOC-CRM type (significance as typed concept)
- **Close**: `dcterms:description` - Dublin Core description
**Use Cases**:
- Cultural heritage significance (UNESCO recognition)
- Community importance (identity, social cohesion)
- Economic impact (tourism, heritage economy)
- Historical continuity (ancestral links)
**Pattern**:
```yaml
has_or_had_significance:
- has_or_had_type: CommunitySignificance
has_or_had_description: "Belgian cultural identity, Trappist beer heritage"
- has_or_had_type: EconomicSignificance
has_or_had_description: "Tourism revenue, heritage economy"
```
slots:
- has_or_had_type
- has_or_had_description
- has_or_had_label
slot_usage:
has_or_had_type:
description: |
The type classification of this significance.
Range narrowed to SignificanceType class hierarchy.
range: SignificanceType
required: false
examples:
- value: CommunitySignificance
description: Community/cultural significance
- value: EconomicSignificance
description: Economic importance
has_or_had_description:
description: |
Detailed description of the significance.
range: string
required: true
examples:
- value: "UNESCO-recognized Trappist tradition, Belgian cultural identity"
- value: "Economic importance for regional tourism"
has_or_had_label:
description: Short label for this significance.
range: string
required: false
examples:
- value: "UNESCO Intangible Heritage"
- value: "Regional Economic Driver"
exact_mappings:
- crm:E55_Type
close_mappings:
- dcterms:description
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Significance applicable to all heritage custodian types.
custodian_types_primary: T
specificity_score: 0.35
specificity_rationale: >-
Broadly applicable - significance is fundamental to heritage justification
across all domains.
template_specificity:
collection_discovery: 0.40
general_heritage: 0.35
migration_info:
source_slot: community_significance
migration_date: "2026-01-22"
rule: "Rule 53"
comments:
- "Structured significance representation with type"
- "Replaces simple string-valued community_significance slot"
- "Type classification via SignificanceType hierarchy"
- "Created 2026-01-22 from community_significance migration (Rule 53)"
examples:
- value:
has_or_had_type: CommunitySignificance
has_or_had_label: "Belgian Trappist Heritage"
has_or_had_description: "UNESCO-recognized Trappist tradition, Belgian cultural identity, Beer pilgrimage site"
description: Community/cultural significance for Trappist brewery
- value:
has_or_had_type: EconomicSignificance
has_or_had_label: "Regional Tourism"
has_or_had_description: "Whisky tourism generating 50,000 visitors/year"
description: Economic significance for Islay distillery

View file

@ -0,0 +1,91 @@
# SignificanceType class (abstract base)
# Created per slot_fixes.yaml revision for: community_significance
#
# MIGRATION NOTE (2026-01-22): Created as part of community_significance migration per Rule 53.
# Abstract base class for significance type taxonomy following Rule 0b (Type/Types pattern).
id: https://nde.nl/ontology/hc/class/SignificanceType
name: significance_type_class
title: Significance Type Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
crm: http://www.cidoc-crm.org/cidoc-crm/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_description
default_prefix: hc
classes:
SignificanceType:
class_uri: crm:E55_Type
abstract: true
description: |
Abstract base class for significance type classifications.
**DESIGN PATTERN** (Rule 0b - Type/Types Convention):
| File | Purpose |
|------|---------|
| `SignificanceType.yaml` (this file) | Abstract base class |
| `SignificanceTypes.yaml` | Concrete subclasses (CommunitySignificance, etc.) |
**Purpose**:
Provides type taxonomy for categorizing different kinds of significance:
- Community/cultural significance
- Economic significance
- Historical significance
- Scientific significance
- Aesthetic significance
**Ontological Alignment**:
- **Primary** (`class_uri`): `crm:E55_Type` - CIDOC-CRM type
- **Close**: `skos:Concept` - SKOS concept vocabulary
slots:
- has_or_had_label
- has_or_had_description
slot_usage:
has_or_had_label:
description: Human-readable label for this significance type.
range: string
required: true
examples:
- value: "Community Significance"
- value: "Economic Significance"
has_or_had_description:
description: Explanation of this significance type.
range: string
required: false
exact_mappings:
- crm:E55_Type
close_mappings:
- skos:Concept
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Significance types applicable across all heritage domains.
custodian_types_primary: T
specificity_score: 0.35
specificity_rationale: >-
Moderately specific - significance categorization is fundamental but has
domain-specific nuances.
design_pattern: "Type/Types (Rule 0b)"
migration_info:
source_slot: community_significance
migration_date: "2026-01-22"
rule: "Rule 53"
comments:
- "Abstract base class - see SignificanceTypes.yaml for concrete subclasses"
- "Follows Rule 0b Type/Types naming pattern"
- "Used with Significance class to classify significance types"
- "Created 2026-01-22 from community_significance migration (Rule 53)"

View file

@ -0,0 +1,222 @@
# SignificanceTypes class (concrete subclasses)
# Created per slot_fixes.yaml revision for: community_significance
#
# MIGRATION NOTE (2026-01-22): Created as part of community_significance migration per Rule 53.
# Contains concrete significance type subclasses per Rule 0b (Type/Types pattern).
# NOTE: revision specifies "this includes CommunitySignificance"
id: https://nde.nl/ontology/hc/class/SignificanceTypes
name: significance_types_class
title: Significance Types 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/
imports:
- linkml:types
- ../metadata
- ./SignificanceType # Import abstract base class
default_prefix: hc
classes:
# === Primary Significance Types ===
CommunitySignificance:
is_a: SignificanceType
class_uri: hc:CommunitySignificance
description: |
Significance to a community, relating to cultural identity and social cohesion.
**Aspects**:
- Cultural identity (regional/national pride)
- Social cohesion (shared traditions, festivals)
- Historical continuity (ancestral links)
- Sense of place and belonging
**Use Cases**:
- UNESCO Intangible Cultural Heritage listings
- Regional food/craft traditions
- Community festivals and rituals
**Example**:
```yaml
has_or_had_significance:
- has_or_had_type: CommunitySignificance
has_or_had_description: "Belgian Trappist brewing tradition, cultural identity"
```
annotations:
specificity_score: 0.40
specificity_rationale: Community significance central to cultural heritage justification.
EconomicSignificance:
is_a: SignificanceType
class_uri: hc:EconomicSignificance
description: |
Economic importance and impact.
**Aspects**:
- Tourism revenue
- Local employment
- Heritage economy contribution
- Export value
**Use Cases**:
- Tourism impact assessment
- Heritage-based business justification
- Regional economic planning
**Example**:
```yaml
has_or_had_significance:
- has_or_had_type: EconomicSignificance
has_or_had_description: "Islay whisky tourism, 50,000 visitors/year"
```
annotations:
specificity_score: 0.45
specificity_rationale: Economic significance important for heritage sustainability.
HistoricalSignificance:
is_a: SignificanceType
class_uri: hc:HistoricalSignificance
description: |
Historical importance and relevance.
**Aspects**:
- Historical continuity
- Documentary evidence
- Period representation
- Historical events association
**Use Cases**:
- Heritage listing justification
- Historical interpretation
- Archives and documentary heritage
**Example**:
```yaml
has_or_had_significance:
- has_or_had_type: HistoricalSignificance
has_or_had_description: "Founded 1253, continuous brewing tradition"
```
annotations:
specificity_score: 0.40
specificity_rationale: Historical significance fundamental to heritage assessment.
ScientificSignificance:
is_a: SignificanceType
class_uri: hc:ScientificSignificance
description: |
Scientific or research importance.
**Aspects**:
- Research value
- Type specimens
- Unique materials
- Scientific discovery associations
**Use Cases**:
- Natural history collections
- Research archives
- Scientific heritage sites
**Example**:
```yaml
has_or_had_significance:
- has_or_had_type: ScientificSignificance
has_or_had_description: "Type specimen location, taxonomic reference"
```
annotations:
specificity_score: 0.55
specificity_rationale: Scientific significance specific to research collections.
AestheticSignificance:
is_a: SignificanceType
class_uri: hc:AestheticSignificance
description: |
Aesthetic or artistic importance.
**Aspects**:
- Artistic merit
- Architectural significance
- Design innovation
- Visual/sensory appeal
**Use Cases**:
- Art collections
- Architectural heritage
- Design archives
**Example**:
```yaml
has_or_had_significance:
- has_or_had_type: AestheticSignificance
has_or_had_description: "Iconic Art Deco building, architectural landmark"
```
annotations:
specificity_score: 0.50
specificity_rationale: Aesthetic significance important for art and architecture.
TerroirSignificance:
is_a: SignificanceType
class_uri: hc:TerroirSignificance
description: |
Geographic/environmental specificity and uniqueness.
**Aspects**:
- Geographic origin
- Environmental conditions
- Place-based character
- PDO/PGI designations
**Use Cases**:
- Food and beverage heritage (wine, cheese, spirits)
- Agricultural heritage
- Place-based crafts
**Example**:
```yaml
has_or_had_significance:
- has_or_had_type: TerroirSignificance
has_or_had_description: "Gouda PDO, specific to region, traditional methods"
```
annotations:
specificity_score: 0.60
specificity_rationale: Terroir significance specific to taste/scent heritage.
DiplomaticSignificance:
is_a: SignificanceType
class_uri: hc:DiplomaticSignificance
description: |
Cultural diplomacy and international representation.
**Aspects**:
- National heritage representation
- Soft power
- International recognition
- Cultural exchange
**Use Cases**:
- National collections
- Cultural embassies
- International exhibitions
**Example**:
```yaml
has_or_had_significance:
- has_or_had_type: DiplomaticSignificance
has_or_had_description: "French parfumerie tradition, cultural diplomacy"
```
annotations:
specificity_score: 0.55
specificity_rationale: Diplomatic significance relevant for national heritage.

View file

@ -0,0 +1,171 @@
# SourceCommentCount class
# Created per slot_fixes.yaml revision for: comments_fetched
#
# Represents comment count metadata from external sources
# MIGRATION NOTE (2026-01-22): Created as part of comments_fetched migration per Rule 53.
id: https://nde.nl/ontology/hc/class/SourceCommentCount
name: source_comment_count_class
title: Source Comment Count Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
- ../metadata
- ../slots/was_fetched_at
- ../slots/has_or_had_quantity
- ./Timestamp
- ./Quantity
default_prefix: hc
classes:
SourceCommentCount:
class_uri: hc:SourceCommentCount
description: |
Comment count metadata from an external source (API, web page).
**PURPOSE**:
Structured representation of comment retrieval metadata, tracking
how many comments were fetched versus the total available at the source.
Replaces simple integer count with rich provenance data.
**DESIGN RATIONALE**:
Created per slot_fixes.yaml migration from `comments_fetched` integer
to structured `was_fetched_at` + `Timestamp` + `is_or_was_part_of_total`
+ `SourceCommentCount` for complete retrieval tracking.
**USE CASES**:
- YouTube API: Track fetched comments vs total comment count
- Social media: Partial comment retrieval with pagination
- Web scraping: Track scraped vs visible comments
**EXAMPLE**:
```yaml
is_or_was_part_of_total:
fetched_count: 100
total_count: 500
fetch_complete: false
was_fetched_at:
has_or_had_timestamp: "2025-01-14T10:30:00Z"
```
close_mappings:
- schema:InteractionCounter
- prov:Entity
slots:
- was_fetched_at
- has_or_had_quantity
attributes:
fetched_count:
description: |
Number of items actually fetched/retrieved.
range: integer
required: true
minimum_value: 0
examples:
- value: 100
description: 100 comments fetched
total_count:
description: |
Total number of items available at the source.
May be null if source doesn't provide total.
range: integer
required: false
minimum_value: 0
examples:
- value: 500
description: 500 total comments at source
fetch_complete:
description: |
Whether all available items were fetched.
True if fetched_count equals total_count.
range: boolean
required: false
ifabsent: "false"
examples:
- value: true
description: All comments fetched
- value: false
description: Partial fetch
source_api:
description: |
API or source from which data was fetched.
range: string
required: false
examples:
- value: "youtube_data_api_v3"
description: YouTube Data API
- value: "web_scrape"
description: Web scraping
slot_usage:
was_fetched_at:
description: |
When the comments were fetched from the source.
range: Timestamp
inlined: true
required: false
examples:
- value:
has_or_had_timestamp: "2025-01-14T10:30:00Z"
description: Fetch timestamp
has_or_had_quantity:
description: |
Alternative structured representation of count.
Use fetched_count for simple integer.
range: Quantity
inlined: true
required: false
examples:
- value:
fetched_count: 100
total_count: 500
fetch_complete: false
source_api: "youtube_data_api_v3"
was_fetched_at:
has_or_had_timestamp: "2025-01-14T10:30:00Z"
description: Partial comment fetch from YouTube API
- value:
fetched_count: 50
total_count: 50
fetch_complete: true
description: Complete comment fetch
- value:
fetched_count: 0
description: No comments fetched (minimal)
comments:
- Created 2026-01-22 from comments_fetched migration (Rule 53)
- Tracks fetched vs total comment counts
- Includes fetch timestamp for provenance
- Supports partial/paginated data retrieval
see_also:
- https://schema.org/InteractionCounter
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian with video/social media content.
specificity_score: "0.70"
specificity_rationale: >-
Specific to video/social media comment fetching contexts.

View file

@ -25,7 +25,11 @@ imports:
- ./Domain # for has_or_had_domain range
- ../slots/temporal_extent
- ./TimeSpan
- ../slots/common_variant
# REMOVED 2026-01-22: ../slots/common_variant - migrated to has_or_had_type + VariantType + includes_or_included + VariantTypes (Rule 53)
- ../slots/has_or_had_type
- ./VariantType
- ./VariantTypes
- ../slots/includes_or_included
- ../slots/requires_qualification
- ../slots/role_category
- ../slots/role_id
@ -164,7 +168,9 @@ classes:
slots:
# REMOVED 2026-01-19: circumstances_of_death - migrated to is_deceased with DeceasedStatus
- is_deceased
- common_variant
# REMOVED 2026-01-22: common_variant - migrated to has_or_had_type + VariantType + VariantTypes (Rule 53)
- has_or_had_type
- includes_or_included
- date_of_death
- deceased
- description
@ -217,6 +223,44 @@ classes:
begin_of_the_begin: "2023-11-19T00:00:00Z"
end_of_the_end: "2023-11-19T23:59:59Z"
```
# MIGRATED 2026-01-22: common_variant → has_or_had_type + VariantType + VariantTypes (Rule 53)
has_or_had_type:
required: false
range: VariantType
multivalued: true
inlined: true
inlined_as_list: true
description: |
Common role title variants, synonyms, and alternative names.
MIGRATED from common_variant per slot_fixes.yaml (Rule 53, 2026-01-22).
Uses VariantType class hierarchy for structured representation:
- AbbreviationVariant: Abbreviated forms (e.g., "Dir." for "Director")
- SynonymVariant: Alternative names (e.g., "Keeper" for "Curator")
- RegionalVariant: Regional variations (e.g., British vs American)
- HistoricalVariant: Archaic/obsolete terms
- InformalVariant: Colloquial names
- TranslationVariant: Translations in other languages
examples:
- value:
has_or_had_label: "Keeper"
has_or_had_type: SynonymVariant
has_or_had_description: "British English alternative for Curator"
description: Regional synonym for Curator
- value:
has_or_had_label: "Conservateur"
has_or_had_type: TranslationVariant
has_or_had_language: "fr"
description: French translation
includes_or_included:
required: false
range: VariantType
multivalued: true
inlined: true
inlined_as_list: true
description: |
Included variant types for this role.
Used to express containment relationships in variant hierarchies.
comments:
- Abstract base class - use specific subclasses (Curator, Archivist, etc.)
- Represents OFFICIAL JOB TITLES, not de facto work performed

View file

@ -13,6 +13,9 @@ imports:
- ../metadata
- ../slots/description
# REMOVED: ../slots/website - using inline attribute definition (Rule 53, migrated 2025-01-15)
# MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent (Rule 53)
- ../slots/is_or_was_founded_through
- ./FoundingEvent
- ../slots/specificity_annotation
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ./SpecificityAnnotation
@ -121,23 +124,32 @@ classes:
'
range: string
multivalued: true
founded_year:
slot_uri: schema:foundingDate
description: 'Year the organization was founded.
# MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
description: |
The founding event for this standards organization.
Migrated from founded_year per slot_fixes.yaml revision.
Examples:
- ISO: 1947
- ANSI: 1918
- W3C: 1994
- IETF: 1986
'
range: integer
range: FoundingEvent
inlined: true
examples:
- value:
temporal_extent:
begin_of_the_begin: "1947-02-23"
end_of_the_begin: "1947-02-23"
founding_description: "ISO founded on 23 February 1947"
description: ISO founding event (exact date known)
- value:
temporal_extent:
begin_of_the_begin: "1994-01-01"
end_of_the_begin: "1994-12-31"
founding_description: "W3C founded in 1994"
description: W3C founding event (year known)
headquarters_country:
slot_uri: schema:location
description: 'Country where headquarters is located (ISO 3166-1 alpha-2).

View file

@ -27,6 +27,9 @@ imports:
- ./WikidataAlignment
- ./WikiDataEntry # for is_or_was_related_to range (2026-01-15)
- ./UniversityArchiveRecordSetType
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
- ../slots/is_or_was_founded_through
- ./FoundingEvent
classes:
UniversityArchive:
description: A collection of historical records of a college or university. University archives (Universitätsarchive)
@ -41,6 +44,7 @@ classes:
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- is_or_was_related_to # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
- has_or_had_identifier # was: wikidata_entity - migrated per Rule 53 (2026-01-15)
- is_or_was_founded_through # was: founding_date attribute - migrated per Rule 53 (2026-01-22)
exact_mappings:
- wd:Q2496264 # Wikidata (was: slot_usage wikidata_equivalent - migrated per Rule 53, 2026-01-17)
close_mappings:
@ -54,13 +58,18 @@ classes:
is_or_was_related_to: # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
range: WikidataAlignment
inlined: true
# MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent (Rule 53)
is_or_was_founded_through:
description: |
The founding event for this university archive.
Migrated from founding_date attribute per slot_fixes.yaml revision.
range: FoundingEvent
inlined: true
attributes:
parent_university:
description: The university or college this archive serves
range: string
founding_date:
description: When the university archive was established
range: date
# REMOVED: founding_date - migrated to is_or_was_founded_through (Rule 53, 2026-01-22)
records_scope:
description: Types of university records held (administrative, faculty, student, etc.)
range: string

View file

@ -0,0 +1,95 @@
# VariantType class (abstract base)
# Created per slot_fixes.yaml revision for: common_variant
#
# MIGRATION NOTE (2026-01-22): Created as part of common_variant migration per Rule 53.
# Abstract base class for variant type taxonomy following Rule 0b (Type/Types pattern).
id: https://nde.nl/ontology/hc/class/VariantType
name: variant_type_class
title: Variant Type Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
crm: http://www.cidoc-crm.org/cidoc-crm/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_description
default_prefix: hc
classes:
VariantType:
class_uri: crm:E55_Type
abstract: true
description: |
Abstract base class for variant/alternative type classifications.
**DESIGN PATTERN** (Rule 0b - Type/Types Convention):
| File | Purpose |
|------|---------|
| `VariantType.yaml` (this file) | Abstract base class |
| `VariantTypes.yaml` | Concrete subclasses (Abbreviation, Synonym, etc.) |
**Purpose**:
Provides type taxonomy for categorizing different kinds of variants:
- Alternative names/titles for roles
- Common abbreviations
- Synonyms in different contexts
- Regional or dialect variations
**Use Cases**:
- Staff role title variants (e.g., "Curator" vs "Keeper" vs "Conservator")
- Organization name variants
- Technical term variations
**Ontological Alignment**:
- **Primary** (`class_uri`): `crm:E55_Type` - CIDOC-CRM type
- **Close**: `skos:Concept` - SKOS concept vocabulary
slots:
- has_or_had_label
- has_or_had_description
slot_usage:
has_or_had_label:
description: Human-readable label for this variant type.
range: string
required: true
examples:
- value: "Abbreviation"
- value: "Synonym"
has_or_had_description:
description: Explanation of when to use this variant type.
range: string
required: false
exact_mappings:
- crm:E55_Type
close_mappings:
- skos:Concept
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Variant types applicable across all heritage domains.
custodian_types_primary: M
specificity_score: 0.35
specificity_rationale: >-
Moderately specific - variant handling is common across naming contexts
but specific implementations vary by domain.
design_pattern: "Type/Types (Rule 0b)"
migration_info:
source_slot: common_variant
migration_date: "2026-01-22"
rule: "Rule 53"
comments:
- "Abstract base class - see VariantTypes.yaml for concrete subclasses"
- "Follows Rule 0b Type/Types naming pattern"
- "Used with has_or_had_type to classify variant types"
- "Created 2026-01-22 from common_variant migration (Rule 53)"

View file

@ -0,0 +1,162 @@
# VariantTypes class (concrete subclasses)
# Created per slot_fixes.yaml revision for: common_variant
#
# MIGRATION NOTE (2026-01-22): Created as part of common_variant migration per Rule 53.
# Contains concrete variant type subclasses per Rule 0b (Type/Types pattern).
id: https://nde.nl/ontology/hc/class/VariantTypes
name: variant_types_class
title: Variant Types 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/
imports:
- linkml:types
- ../metadata
- ./VariantType # Import abstract base class
default_prefix: hc
classes:
# === Variant Types ===
AbbreviationVariant:
is_a: VariantType
class_uri: hc:AbbreviationVariant
description: |
Abbreviated form or acronym of a term.
**Use Cases**:
- Role abbreviations ("Dir." for "Director")
- Department abbreviations
- Standard acronyms
**Example**:
```yaml
has_or_had_type:
- has_or_had_label: "Dir."
has_or_had_type: AbbreviationVariant
```
annotations:
specificity_score: 0.35
specificity_rationale: Abbreviations common across all naming contexts.
SynonymVariant:
is_a: VariantType
class_uri: skos:altLabel
description: |
Synonym or alternative term with equivalent meaning.
**Use Cases**:
- Role title synonyms ("Curator" / "Keeper" / "Conservator")
- Technical synonyms
- Cross-cultural equivalents
**Example**:
```yaml
has_or_had_type:
- has_or_had_label: "Keeper"
has_or_had_type: SynonymVariant
```
exact_mappings:
- skos:altLabel
annotations:
specificity_score: 0.40
specificity_rationale: Synonyms important for search and discovery.
RegionalVariant:
is_a: VariantType
class_uri: hc:RegionalVariant
description: |
Regional or dialect variation of a term.
**Use Cases**:
- British vs. American English ("Curator" vs. "Keeper")
- Dutch regional variations
- Country-specific terminology
**Example**:
```yaml
has_or_had_type:
- has_or_had_label: "Keeper"
has_or_had_type: RegionalVariant
has_or_had_description: "British English term"
```
annotations:
specificity_score: 0.45
specificity_rationale: Regional variants important for international heritage.
HistoricalVariant:
is_a: VariantType
class_uri: hc:HistoricalVariant
description: |
Historical or archaic term no longer in common use.
**Use Cases**:
- Obsolete job titles
- Historical terminology
- Legacy classifications
**Example**:
```yaml
has_or_had_type:
- has_or_had_label: "Assistant Keeper"
has_or_had_type: HistoricalVariant
has_or_had_description: "Victorian-era title"
```
annotations:
specificity_score: 0.50
specificity_rationale: Historical variants important for heritage documentation.
InformalVariant:
is_a: VariantType
class_uri: hc:InformalVariant
description: |
Informal, colloquial, or casual term.
**Use Cases**:
- Casual job references
- Colloquial terminology
- Internal nicknames
**Example**:
```yaml
has_or_had_type:
- has_or_had_label: "Art person"
has_or_had_type: InformalVariant
```
annotations:
specificity_score: 0.40
specificity_rationale: Informal terms help with natural language search.
TranslationVariant:
is_a: VariantType
class_uri: hc:TranslationVariant
description: |
Translation of a term in another language.
**Use Cases**:
- Multilingual role titles
- International terminology
- Cross-language equivalents
**Example**:
```yaml
has_or_had_type:
- has_or_had_label: "Conservateur"
has_or_had_type: TranslationVariant
has_or_had_language: "fr"
```
annotations:
specificity_score: 0.45
specificity_rationale: Translations essential for multilingual heritage data.

View file

@ -12,28 +12,38 @@ imports:
# REMOVED 2026-01-18: ../slots/comment_author - migrated to has_or_had_author + Author (Rule 53)
- ../slots/has_or_had_author
- ./Author
- ../slots/comment_author_channel_id
# REMOVED 2026-01-22: ../slots/comment_author_channel_id - migrated to has_or_had_identifier + DigitalPlatformUserIdentifier (Rule 53)
- ./DigitalPlatformUserIdentifier
# REMOVED 2026-01-18: ../slots/comment_id - migrated to has_or_had_identifier + Identifier (Rule 53)
# REMOVED 2026-01-18: ../slots/comment_count - migrated to has_or_had_quantity + Quantity (Rule 53)
- ../slots/comment_like_count
# REMOVED 2026-01-22: ../slots/comment_like_count - migrated to is_or_was_appreciated + AppreciationEvent (Rule 53)
- ../slots/is_or_was_appreciated
- ./AppreciationEvent
# REMOVED 2026-01-18: ../slots/comment_published_at - migrated to temporal_extent + TimeSpan (Rule 53)
- ../slots/temporal_extent
- ./TimeSpan
- ../slots/has_or_had_comment_reply
- ../slots/comment_reply_count
# REMOVED 2026-01-22: ../slots/comment_reply_count - migrated to has_or_had_reply + CommentReply (Rule 53)
- ../slots/has_or_had_reply
- ./CommentReply
# REMOVED 2026-01-18: ../slots/comment_text - migrated to has_or_had_content + Content (Rule 53)
- ../slots/has_or_had_content
- ./Content
# REMOVED 2026-01-18: ../slots/comment_updated_at - migrated to was_last_updated_at + Timestamp (Rule 53)
- ../slots/was_last_updated_at
- ./Timestamp
- ../slots/comments_fetched
# REMOVED 2026-01-22: ../slots/comments_fetched - migrated to was_fetched_at + is_or_was_part_of_total + SourceCommentCount (Rule 53)
- ../slots/was_fetched_at
- ../slots/is_or_was_part_of_total
- ./SourceCommentCount
- ../slots/default_audio_language
- ../slots/default_language
- ../slots/dislike_count
- ../slots/duration
- ../slots/favorite_count
- ../slots/frame_rate
# MIGRATED 2026-01-22: frame_rate → has_or_had_quantity + Quantity + has_or_had_unit + Unit (Rule 53)
- ../slots/has_or_had_unit
- ./Unit
- ../slots/is_embeddable
- ../slots/is_licensed_content
- ../slots/is_made_for_kid
@ -215,14 +225,16 @@ classes:
- has_available_caption_language
- caption_available
# REMOVED 2026-01-18: comment_count - migrated to has_or_had_quantity + Quantity (Rule 53)
- comments_fetched
# REMOVED 2026-01-22: comments_fetched - migrated to was_fetched_at + is_or_was_part_of_total + SourceCommentCount (Rule 53)
- was_fetched_at
- is_or_was_part_of_total
- default_audio_language
- default_language
- definition
- dislike_count
- duration
- favorite_count
- frame_rate
# REMOVED 2026-01-22: frame_rate - migrated to has_or_had_quantity + Quantity + Unit (Rule 53)
- is_embeddable
- is_licensed_content
- is_made_for_kid
@ -260,12 +272,13 @@ classes:
description: Standard widescreen
- value: '9:16'
description: Vertical format for Shorts/Reels
frame_rate:
range: float
required: false
examples:
- value: 30.0
description: 30 frames per second
# MIGRATED 2026-01-22: frame_rate → has_or_had_quantity + Quantity + has_or_had_unit + Unit (Rule 53)
# frame_rate:
# range: float
# required: false
# examples:
# - value: 30.0
# description: 30 frames per second
caption_available:
range: boolean
required: false
@ -302,12 +315,13 @@ classes:
multivalued: true
description: |
Quantified metrics for video content. RULE 53: Replaces deprecated
view_count and comment_count with structured Quantity class supporting
measurement unit and temporal extent for point-in-time observation.
view_count, comment_count, and frame_rate with structured Quantity class
supporting measurement unit and temporal extent for point-in-time observation.
MIGRATED SLOTS:
- view_count → Quantity with has_or_had_measurement_unit: VIEW (2026-01-15)
- comment_count → Quantity with has_or_had_measurement_unit: COMMENT (2026-01-18)
- frame_rate → Quantity with has_or_had_unit: "frames per second" (2026-01-22)
examples:
- value:
quantity_value: 132
@ -325,6 +339,21 @@ classes:
temporal_extent:
begin_of_the_begin: "2025-12-01T23:16:22Z"
description: 42 comments at observation time (migrated from comment_count)
- value:
quantity_value: 30.0
quantity_type: FRAME_RATE
has_or_had_unit:
unit_value: "frames per second"
unit_uri: "qudt:FPS"
description: 30 frames per second (migrated from frame_rate, 2026-01-22)
- value:
quantity_value: 24.0
quantity_type: FRAME_RATE
has_or_had_unit:
unit_value: "fps"
has_or_had_label:
- label_text: "frames per second"
description: Cinema standard 24fps
like_count:
range: integer
required: false
@ -389,13 +418,42 @@ classes:
is_made_for_kid:
range: boolean
required: false
comments_fetched:
range: integer
# MIGRATED 2026-01-22: comments_fetched → was_fetched_at + is_or_was_part_of_total + SourceCommentCount (Rule 53)
# comments_fetched:
# range: integer
# required: false
# minimum_value: 0
# examples:
# - value: 0
# description: No comments fetched
was_fetched_at:
description: |
MIGRATED from comments_fetched per slot_fixes.yaml (Rule 53, 2026-01-22).
Timestamp when comments were fetched from the video platform API.
range: Timestamp
inlined: true
required: false
minimum_value: 0
examples:
- value: 0
description: No comments fetched
- value:
has_or_had_timestamp: "2025-12-01T23:16:22Z"
description: Comments fetched at observation time
is_or_was_part_of_total:
description: |
MIGRATED from comments_fetched per slot_fixes.yaml (Rule 53, 2026-01-22).
Structured count metadata showing fetched vs total comments.
range: SourceCommentCount
inlined: true
required: false
examples:
- value:
fetched_count: 100
total_count: 500
fetch_complete: false
source_api: "youtube_data_api_v3"
description: 100 of 500 comments fetched from YouTube API
- value:
fetched_count: 0
description: No comments fetched (minimal)
has_or_had_comment: # was: video_comment - migrated per Rule 53 (2025-01-15)
range: VideoComment
multivalued: true
@ -430,14 +488,17 @@ classes:
slots:
# MIGRATED 2026-01-18: comment_author → has_or_had_author + Author (Rule 53)
- has_or_had_author
- comment_author_channel_id
# MIGRATED 2026-01-22: comment_author_channel_id → has_or_had_identifier + DigitalPlatformUserIdentifier (Rule 53)
# NOTE: has_or_had_identifier already present - used for both comment_id and comment_author_channel_id
# REMOVED 2026-01-18: comment_id - migrated to has_or_had_identifier + Identifier (Rule 53)
- has_or_had_identifier
- comment_like_count
# MIGRATED 2026-01-22: comment_like_count → is_or_was_appreciated + AppreciationEvent (Rule 53)
- is_or_was_appreciated
# REMOVED 2026-01-18: comment_published_at - migrated to temporal_extent + TimeSpan (Rule 53)
- temporal_extent
- has_or_had_comment_reply
- comment_reply_count
# MIGRATED 2026-01-22: comment_reply_count → has_or_had_reply + CommentReply (Rule 53)
- has_or_had_reply
# REMOVED 2026-01-18: comment_text - migrated to has_or_had_content + Content (Rule 53)
- has_or_had_content
# REMOVED 2026-01-18: comment_updated_at - migrated to was_last_updated_at + Timestamp (Rule 53)
@ -459,29 +520,40 @@ classes:
identifier_scheme: youtube_comment_id
identifier_value: "UgzK1234abcdefgh"
description: YouTube comment identifier
comment_author:
range: string
required: true
# REMOVED 2026-01-18: comment_author - migrated to has_or_had_author + Author (Rule 53)
# MIGRATED 2026-01-18: comment_author → has_or_had_author + Author (Rule 53)
# MIGRATED 2026-01-22: comment_author_channel_id is now captured via Author.has_or_had_identifier (Rule 53)
has_or_had_author:
description: |
MIGRATED from comment_author per slot_fixes.yaml (Rule 53, 2026-01-18).
Display name of comment author.
UPDATED 2026-01-22: Now also captures comment_author_channel_id via nested identifier.
Display name of comment author plus optional platform user identifier.
Uses Author class for structured author representation.
Platform channel ID captured via has_or_had_identifier → DigitalPlatformUserIdentifier.
range: Author
inlined: true
required: true
examples:
- value:
has_or_had_name: "Visitor123"
description: Comment author display name
description: Comment author display name only
- value:
has_or_had_name: "MuseumFan2024"
has_or_had_identifier: "https://youtube.com/channel/UC123"
description: Comment author with channel link
comment_author_channel_id:
range: string
required: false
has_or_had_identifier:
- identifier_scheme: youtube_channel_id
identifier_value: "UCsT0YIqwnpJCM-mx7-gSA4Q"
platform_type: "youtube"
platform_user_id: "UCsT0YIqwnpJCM-mx7-gSA4Q"
description: Comment author with YouTube channel ID (migrated from comment_author_channel_id)
# MIGRATED 2026-01-22: comment_author_channel_id → has_or_had_identifier + DigitalPlatformUserIdentifier (Rule 53)
# NOTE: has_or_had_identifier slot_usage updated above to handle BOTH comment_id AND comment_author_channel_id
# The Author class already has has_or_had_identifier slot, so channel_id can be linked via:
# has_or_had_author:
# has_or_had_identifier:
# - identifier_scheme: youtube_channel_id
# identifier_value: "UC1234..."
# platform_type: "youtube"
# MIGRATED 2026-01-18: comment_text → has_or_had_content + Content (Rule 53/56)
has_or_had_content:
description: |
@ -522,14 +594,53 @@ classes:
has_or_had_timestamp: "2025-01-15T10:30:00Z"
has_or_had_precision: second
description: Comment last updated timestamp
comment_like_count:
range: integer
# MIGRATED 2026-01-22: comment_like_count → is_or_was_appreciated + AppreciationEvent (Rule 53)
is_or_was_appreciated:
description: |
MIGRATED from comment_like_count per slot_fixes.yaml (Rule 53, 2026-01-22).
Appreciation metrics (likes) for this comment.
Uses AppreciationEvent class for structured representation.
range: AppreciationEvent
inlined: true
inlined_as_list: true
required: false
minimum_value: 0
comment_reply_count:
range: integer
examples:
- value:
appreciation_type: "like"
appreciation_count: 42
description: Comment with 42 likes
- value:
appreciation_type: "like"
has_or_had_quantity:
numeric_value: 100
has_or_had_unit:
unit_label: "likes"
description: Structured like count with Quantity
# MIGRATED 2026-01-22: comment_reply_count → has_or_had_reply + CommentReply (Rule 53)
has_or_had_reply:
description: |
MIGRATED from comment_reply_count per slot_fixes.yaml (Rule 53, 2026-01-22).
Reply metrics for this comment.
Uses CommentReply class for structured representation.
range: CommentReply
inlined: true
inlined_as_list: true
required: false
minimum_value: 0
examples:
- value:
reply_count: 5
reply_type: "comment_reply"
description: Comment with 5 replies
- value:
reply_count: 0
description: Comment with no replies
- value:
reply_count: 12
has_or_had_quantity:
numeric_value: 12
has_or_had_unit:
unit_label: "replies"
description: Structured reply count with Quantity
has_or_had_comment_reply:
range: VideoComment
multivalued: true

View file

@ -0,0 +1,119 @@
# WebPage class
# Represents a web page with URL and metadata
#
# Created per slot_fixes.yaml migration for: collection_web_address
# Creation date: 2026-01-22
#
# Rule 53 (No Bespoke Slots): collection_web_address → has_or_had_content + Collection + has_or_had_web_page + WebPage + has_or_had_url + URL
id: https://nde.nl/ontology/hc/class/WebPage
name: WebPage
title: Web Page
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_url
- ./URL
- ../slots/has_or_had_label
- ./Label
- ../slots/has_or_had_description
- ./Description
classes:
WebPage:
class_uri: schema:WebPage
description: |
Represents a web page that provides access to heritage content.
**RULE 53 MIGRATION**:
Replaces the simple `collection_web_address` URI slot with a structured model:
- `has_or_had_web_page` → WebPage (this class)
- `has_or_had_url` → URL (the actual web address)
**USAGE**:
```yaml
has_or_had_web_page:
- has_or_had_label:
label_value: "Rijksstudio Collections"
has_or_had_url:
- has_or_had_url: "https://www.rijksmuseum.nl/nl/rijksstudio"
has_or_had_type: collection_access
```
**Ontological Alignment**:
- **Primary** (`class_uri`): `schema:WebPage` - Schema.org WebPage
- **Close**: `dcterms:BibliographicResource` - DC bibliographic resource
**Use Cases**:
- Collection access pages (digital collection browse interfaces)
- Institutional portals (main website landing pages)
- API documentation pages
- Europeana collection pages
exact_mappings:
- schema:WebPage
close_mappings:
- dcterms:BibliographicResource
slots:
- has_or_had_url
- has_or_had_label
- has_or_had_description
slot_usage:
has_or_had_url:
description: |
The URL(s) of this web page.
May include primary URL and alternate URLs (e.g., different languages).
range: URL
multivalued: true
inlined: true
inlined_as_list: true
required: true
has_or_had_label:
description: |
The name/title of this web page.
range: Label
inlined: true
required: false
has_or_had_description:
description: |
Description of the web page content.
range: Description
inlined: true
required: false
annotations:
specificity_score: "0.30"
specificity_rationale: "Moderately generic - applies to web-accessible heritage resources."
template_specificity: '{"archive_search": 0.35, "museum_search": 0.35, "library_search": 0.35, "collection_discovery": 0.60, "person_research": 0.15, "location_browse": 0.20, "identifier_lookup": 0.25, "organizational_change": 0.10, "digital_platform": 0.65, "general_heritage": 0.30}'
examples:
- value:
has_or_had_label:
label_value: "Rijksstudio Collections"
has_or_had_url:
- has_or_had_url: "https://www.rijksmuseum.nl/nl/rijksstudio"
has_or_had_type: collection_access
description: Rijksstudio collection access page
- value:
has_or_had_label:
label_value: "Europeana Collections Browse"
has_or_had_url:
- has_or_had_url: "https://www.europeana.eu/en/collections"
has_or_had_type: collection_access
description: Europeana collections browse page
comments:
- "Created per slot_fixes.yaml migration (2026-01-22)"
- "RULE 53: Replaces collection_web_address URI slot with structured model"

View file

@ -17,6 +17,8 @@ imports:
- linkml:types
- ./Tag # for tag migration per Rule 53/56 (2026-01-16)
- ./Quantity # for comment_count migration per Rule 53 (2026-01-18)
- ./SourceCommentCount # for comments_fetched migration per Rule 53 (2026-01-22)
- ./Timestamp # for comments_fetched migration per Rule 53 (2026-01-22)
- ./YoutubeComment
- ./YoutubeTranscript
default_range: string
@ -104,9 +106,22 @@ classes:
multivalued: true
inlined_as_list: true
description: Comments on the video
comments_fetched:
range: integer
description: Number of comments fetched
# MIGRATED 2026-01-22: comments_fetched → was_fetched_at + is_or_was_part_of_total + SourceCommentCount (Rule 53)
# comments_fetched:
# range: integer
# description: Number of comments fetched
was_fetched_at:
range: Timestamp
inlined: true
description: |
MIGRATED from comments_fetched per slot_fixes.yaml (Rule 53, 2026-01-22).
Timestamp when comments were fetched from YouTube API.
is_or_was_part_of_total:
range: SourceCommentCount
inlined: true
description: |
MIGRATED from comments_fetched per slot_fixes.yaml (Rule 53, 2026-01-22).
Structured count metadata showing fetched vs total comments.
transcript:
range: YoutubeTranscript
description: Video transcript data

View file

@ -0,0 +1,86 @@
# collects_or_collected slot
# Generic slot for collecting relationships following RiC-O temporal naming convention.
#
# MIGRATION NOTE (2026-01-19):
# Created as part of collection_purpose migration per slot_fixes.yaml (Rule 53).
#
# Semantic intent: Links an entity to what it collects or collected.
id: https://nde.nl/ontology/hc/slot/collects_or_collected
name: collects_or_collected_slot
title: Collects Or Collected Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
crm: http://www.cidoc-crm.org/cidoc-crm/
rico: https://www.ica.org/standards/RiC/ontology#
imports:
- linkml:types
default_prefix: hc
slots:
collects_or_collected:
slot_uri: rico:hasOrHadHolder
description: >-
Links a custodian to what it collects or collected.
**TEMPORAL SEMANTICS** (RiC-O style):
The "collects_or_collected" naming follows RiC-O convention indicating that
collecting activities may change over time:
- Active collecting programs
- Historical collecting focus that has changed
- Materials previously collected but now deaccessioned
**USE CASES**:
- Commercial organizations: what they collect for heritage purposes
- Museums: their collecting scope and purpose
- Archives: types of records they acquire
**REPLACES**:
- `collection_purpose` (why commercial organization maintains collections)
**EXAMPLE**:
```yaml
collects_or_collected:
- collection_type: "brand_heritage"
has_or_had_rationale:
rationale_text: "Brand heritage communication"
rationale_category: "marketing"
```
range: uriorcurie
multivalued: true
inlined: true
inlined_as_list: true
exact_mappings:
- rico:hasOrHadHolder
close_mappings:
- crm:P109_has_current_or_former_curator
- schema:owns
related_mappings:
- crm:P50_has_current_keeper
annotations:
custodian_types: '["C", "M", "A", "L"]'
custodian_types_rationale: >-
Primarily for Corporations (C), Museums (M), Archives (A), and Libraries (L)
that actively collect materials.
custodian_types_primary: "C"
specificity_score: "0.45"
specificity_rationale: >-
Moderate specificity - applies to custodians with collecting programs.
comments:
- Created from slot_fixes.yaml migration (2026-01-19)
- Part of collection_purpose migration
- Range is uriorcurie to allow class narrowing via slot_usage
see_also:
- https://www.ica.org/standards/RiC/ontology#hasOrHadHolder

View file

@ -1,22 +1,59 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_language
name: has_or_had_language_slot
title: Languages Slot
# Updated 2026-01-22: Extended to support both LanguageProficiency and Language classes
# Enables migration of language-specific text slots (fr, de, en, nl) per slot_fixes.yaml
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dct: http://purl.org/dc/terms/
imports:
- linkml:types
- ../classes/LanguageProficiency
- ../classes/Language
default_prefix: hc
slots:
has_or_had_language:
description: 'Parsed language proficiency entries.
Array of LanguageProficiency objects with language name, code, level.
Use this when storing processed/structured data.
'
range: LanguageProficiency
description: |
Language information for an entity.
**Use Cases**:
1. **Language Proficiency**: When tracking language skills (e.g., person profiles)
- Use LanguageProficiency class with language_name, code, and level
2. **Language-Tagged Text**: When storing multilingual text content
- Use Language class with iso_639_1, language_name, and text_content
**Migration Support**:
This slot replaces language-specific text slots (fr, de, en, nl) with a
unified pattern per slot_fixes.yaml revisions:
- `fr` (French text) → has_or_had_language with Language(iso_639_1="fr")
- `de` (German text) → has_or_had_language with Language(iso_639_1="de")
- `en` (English text) → has_or_had_language with Language(iso_639_1="en")
- `nl` (Dutch text) → has_or_had_language with Language(iso_639_1="nl")
**Example - Language-Tagged Text**:
```yaml
has_or_had_language:
- iso_639_1: "fr"
language_name: "French"
text_content: "archives universitaires"
- iso_639_1: "en"
language_name: "English"
text_content: "university archives"
```
**Example - Language Proficiency**:
```yaml
has_or_had_language:
- language_name: "French"
language_code: "fr"
proficiency_level: "fluent"
```
range: Any
any_of:
- range: LanguageProficiency
- range: Language
multivalued: true
slot_uri: hc:languages
inlined: true
inlined_as_list: true
slot_uri: dct:language

View file

@ -0,0 +1,79 @@
# has_or_had_objective slot
# RiC-O temporal naming convention (Rule 39)
#
# Created per slot_fixes.yaml revision for: commercial_operation
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 39
id: https://nde.nl/ontology/hc/slot/has_or_had_objective
name: has_or_had_objective
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
org: http://www.w3.org/ns/org#
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_objective:
slot_uri: org:purpose
description: |
The objective or purpose of an organization's operations.
**PURPOSE**:
Links an organization to its operational objectives (profit-making,
nonprofit, educational, cultural preservation, etc.).
**RiC-O NAMING** (Rule 39):
Uses "has_or_had_" prefix indicating temporal relationship -
the objective may change over time.
**ONTOLOGY ALIGNMENT**:
| Ontology | Property | Usage |
|----------|----------|-------|
| **W3C Org** | `org:purpose` | Organizational purpose |
| **Schema.org** | `schema:businessFunction` | Business function |
| **SKOS** | `skos:scopeNote` | Scope description |
**MIGRATION NOTE**:
Created from migration of `commercial_operation` slot per slot_fixes.yaml.
Replaces boolean with structured Profit class for richer modeling.
range: Profit
inlined: true
exact_mappings:
- org:purpose
close_mappings:
- schema:businessFunction
examples:
- value:
objective_type: "for-profit"
is_commercial: true
description: Commercial gallery selling artworks
- value:
objective_type: "nonprofit"
is_commercial: false
description: Kunsthalle or non-profit exhibition space
comments:
- Created 2026-01-22 from commercial_operation migration (Rule 53)
- Uses RiC-O temporal naming convention (Rule 39)
- Links organization to operational objectives
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian type may have operational objectives.

View file

@ -0,0 +1,68 @@
# has_or_had_percentage slot
# RiC-O temporal naming convention (Rule 39)
#
# Created per slot_fixes.yaml revision for: commission_rate
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 39
id: https://nde.nl/ontology/hc/slot/has_or_had_percentage
name: has_or_had_percentage
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_percentage:
slot_uri: schema:valueReference
description: |
A percentage value associated with an entity.
**PURPOSE**:
Links entities to structured percentage representations.
Used for commission rates, discounts, completion percentages, etc.
**RiC-O NAMING** (Rule 39):
Uses "has_or_had_" prefix indicating temporal relationship -
percentages may change over time.
**MIGRATION NOTE**:
Created from migration of `commission_rate` slot per slot_fixes.yaml.
Provides structured percentage via Percentage class.
range: Percentage
inlined: true
close_mappings:
- schema:valueReference
examples:
- value:
percentage_value: 50
percentage_display: "50%"
description: 50 percent
- value:
percentage_value: 15
percentage_min: 10
percentage_max: 20
percentage_display: "10-20%"
description: Variable percentage range
comments:
- Created 2026-01-22 from commission_rate migration (Rule 53)
- Uses RiC-O temporal naming convention (Rule 39)
- Links entities to percentage values
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - percentages apply across many contexts.

View file

@ -0,0 +1,84 @@
# has_or_had_place slot
# Generic slot for place relationships following RiC-O temporal naming convention.
#
# MIGRATION NOTE (2026-01-19):
# Created as part of collection_location migration per slot_fixes.yaml (Rule 53).
#
# Semantic intent: Links an entity to its associated place (collection site, event venue, etc.)
id: https://nde.nl/ontology/hc/slot/has_or_had_place
name: has_or_had_place_slot
title: Has Or Had Place Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
crm: http://www.cidoc-crm.org/cidoc-crm/
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_place:
slot_uri: schema:location
description: >-
Links an entity to its associated place.
**TEMPORAL SEMANTICS** (RiC-O style):
The "has_or_had" naming follows RiC-O convention indicating that
place associations may change over time:
- Collection events occur at specific locations
- Institutions may relocate
- Historical associations preserved
**USE CASES**:
- Collection events: where specimen was collected
- Events: where event took place
- Activities: location of activity
**REPLACES**:
- `collection_location` (structured location for specimens)
**EXAMPLE**:
```yaml
has_or_had_place:
place_name: "Mauritius"
country: "MU"
latitude: -20.2
longitude: 57.5
```
range: uriorcurie
inlined: true
exact_mappings:
- schema:location
close_mappings:
- prov:atLocation
- crm:P7_took_place_at
related_mappings:
- crm:P161_has_spatial_projection
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Generic place relationship applicable across all custodian types.
custodian_types_primary: "*"
specificity_score: "0.20"
specificity_rationale: >-
Very low specificity - universal place association concept.
comments:
- Created from slot_fixes.yaml migration (2026-01-19)
- Part of collection_location migration
- Range is uriorcurie to allow class narrowing via slot_usage
see_also:
- http://schema.org/location
- https://dwc.tdwg.org/terms/#dwc:locality

View file

@ -0,0 +1,79 @@
# has_or_had_reply slot
# RiC-O temporal naming convention (Rule 39)
#
# Created per slot_fixes.yaml revision for: comment_reply_count
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 39
id: https://nde.nl/ontology/hc/slot/has_or_had_reply
name: has_or_had_reply
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
as: https://www.w3.org/ns/activitystreams#
sioc: http://rdfs.org/sioc/ns#
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_reply:
slot_uri: sioc:has_reply
description: |
Reply or response associated with content (comments, posts, messages).
**PURPOSE**:
Captures reply/response relationships and metrics for threaded discussions
using CommentReply class for structured representation.
**RiC-O NAMING** (Rule 39):
Uses "has_or_had_" prefix to indicate temporal relationship - the content
has replies currently or had replies in the past (e.g., deleted replies).
**ONTOLOGY ALIGNMENT**:
| Ontology | Property | Usage |
|----------|----------|-------|
| **SIOC** | `sioc:has_reply` | Discussion reply relationship |
| **Activity Streams** | `as:inReplyTo` (inverse) | Social media replies |
| **Schema.org** | `schema:comment` | Generic comment relationship |
**MIGRATION NOTE**:
Created from migration of `comment_reply_count` slot per slot_fixes.yaml.
Replaces simple integer counts with structured reply data.
range: uriorcurie
multivalued: true
exact_mappings:
- sioc:has_reply
close_mappings:
- schema:comment
related_mappings:
- as:inReplyTo
examples:
- value: https://nde.nl/ontology/hc/reply/comment-123-replies
description: Reply collection for a comment
comments:
- Created 2026-01-22 from comment_reply_count migration (Rule 53)
- Uses RiC-O temporal naming convention (Rule 39)
- Supports structured reply metrics
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian with discussion content may track replies.
specificity_score: 0.55
specificity_rationale: >-
Moderately general - applies to any threaded discussion context.

View file

@ -0,0 +1,87 @@
# has_or_had_significance slot
# Created per slot_fixes.yaml revision for: community_significance
#
# MIGRATION NOTE (2026-01-22): Created as part of community_significance migration per Rule 53.
# Generic slot for significance/importance relationships following RiC-O naming convention.
id: https://nde.nl/ontology/hc/slot/has_or_had_significance
name: has_or_had_significance_slot
title: Has Or Had Significance Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_significance:
slot_uri: crm:P17i_was_motivation_for
description: |
Significance or importance of an entity to a community, culture, or domain.
**Temporal Semantics** (RiC-O Pattern):
The "hasOrHad" naming follows RiC-O convention indicating this relationship
may be historical - significance can change over time.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `crm:P17i_was_motivation_for` - CIDOC-CRM motivation
- **Close**: `dcterms:description` - Dublin Core description
- **Related**: `schema:significance` - Schema.org (informal)
**Use Cases**:
- Cultural heritage significance
- Community importance
- Historical relevance
- Economic/social impact
**Example**:
```yaml
has_or_had_significance:
- has_or_had_type: CommunitySignificance
has_or_had_description: "UNESCO-recognized Trappist tradition, Belgian cultural identity"
```
range: uriorcurie # Broadened per Rule 55 to allow class-valued ranges
multivalued: true
required: false
exact_mappings:
- crm:P17i_was_motivation_for
close_mappings:
- dcterms:description
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Significance applicable to all heritage types.
custodian_types_primary: T
specificity_score: 0.40
specificity_rationale: >-
Broadly applicable - significance is fundamental to heritage justification
across all custodian types.
rico_naming_convention: |
Follows RiC-O "hasOrHad" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
migration_info:
source_slot: community_significance
migration_date: "2026-01-22"
rule: "Rule 53"
comments:
- "Generic significance slot for heritage importance"
- "Range: uriorcurie - allows Significance class via slot_usage"
- "RiC-O naming: hasOrHad indicates potentially historical relationship"
- "Created 2026-01-22 from community_significance migration (Rule 53)"
examples:
- value: "UNESCO-recognized cultural heritage"
description: Cultural significance example
- value: "Regional economic importance"
description: Economic significance example

View file

@ -0,0 +1,86 @@
# has_or_had_web_page slot
# Web page association following RiC-O naming pattern
#
# Generation date: 2026-01-22
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml)
#
# Supports migration per slot_fixes.yaml:
# - collection_web_address → has_or_had_web_page + WebPage
id: https://nde.nl/ontology/hc/slot/has_or_had_web_page
name: has_or_had_web_page_slot
title: Has Or Had Web Page Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
foaf: http://xmlns.com/foaf/0.1/
default_prefix: hc
imports:
- linkml:types
slots:
has_or_had_web_page:
slot_uri: schema:hasPart
description: |
Web pages associated with this entity.
**Temporal Semantics** (RiC-O Pattern):
The "hasOrHad" naming follows RiC-O convention indicating this
web page association may be historical - websites change over time.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `schema:hasPart` - Schema.org part relationship
- **Close**: `foaf:page` - FOAF document page
- **Close**: `schema:url` - Schema.org URL (for simple cases)
**Use Cases**:
- Collection browse pages (e.g., Rijksstudio)
- Search interfaces
- Catalog pages
- Finding aid pages
**Range**: WebPage class (structured web page with URL and metadata)
**Cardinality**:
Multivalued - entities may have multiple web pages.
range: uriorcurie # Broadened per Rule 55 - allows both literals and class instances
required: false
multivalued: true
inlined: true
inlined_as_list: true
exact_mappings: []
close_mappings:
- foaf:page
- schema:url
annotations:
rico_naming_convention: |
Follows RiC-O "hasOrHad" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
replaces_slots: "collection_web_address"
migration_date: "2026-01-22"
custodian_types: '["*"]'
custodian_types_rationale: Web pages apply to all heritage custodian types.
specificity_score: 0.20
specificity_rationale: Generic web page slot applicable across most contexts.
comments:
- "Generic web page association slot"
- "Temporal: Web pages may change over time"
- "RiC-O naming: hasOrHad indicates potentially historical"
- "Replaces collection_web_address per slot_fixes.yaml (2026-01-22)"
examples:
- value:
page_name: "Digital Collections"
has_or_had_url:
- has_or_had_url: "https://www.rijksmuseum.nl/nl/rijksstudio"
has_or_had_type: collection_browse
description: "Rijksstudio collections browse page"

View file

@ -0,0 +1,83 @@
# is_or_was_acquired_by slot
# Acquisition relationship following RiC-O naming pattern
#
# Created per slot_fixes.yaml migration for: collector
# Creation date: 2026-01-22
#
# Rule 53 (No Bespoke Slots): collector → is_or_was_acquired_by + Agent
# Rule 39 (RiC-O Style): isOrWas temporal naming convention
id: https://nde.nl/ontology/hc/slot/is_or_was_acquired_by
name: is_or_was_acquired_by_slot
title: Is Or Was Acquired By Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
dwc: http://rs.tdwg.org/dwc/terms/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
slots:
is_or_was_acquired_by:
slot_uri: prov:wasAttributedTo
description: |
The agent (person or organization) who acquired or collected this entity.
**Temporal Semantics** (RiC-O Pattern):
The "isOrWas" naming follows RiC-O convention indicating this
relationship may be historical - acquisition/collection is a past event.
**Ontological Alignment**:
- **Primary** (`slot_uri`): `prov:wasAttributedTo` - PROV-O attribution
- **Close**: `dwc:recordedBy` - Darwin Core collector (for specimens)
- **Close**: `schema:acquiredFrom` - Schema.org acquisition source
**Use Cases**:
- Biological specimen collectors (field collection)
- Artwork acquisition (purchase, donation)
- Archive accessioning (donor, transferring agency)
**Range**: `uriorcurie` (Rule 55 - broaden range for class-level narrowing to Agent)
**Migrated From**: collector (2026-01-22)
range: uriorcurie
multivalued: true
inlined: true
inlined_as_list: true
exact_mappings:
- prov:wasAttributedTo
close_mappings:
- dwc:recordedBy
- schema:acquiredFrom
annotations:
rico_naming_convention: |
Follows RiC-O "isOrWas" pattern for temporal predicates.
See Rule 39: Slot Naming Convention (RiC-O Style)
replaces_slots: "collector"
migration_date: "2026-01-22"
custodian_types: '["*"]'
custodian_types_rationale: Acquisition applies to all heritage custodian types.
specificity_score: 0.35
specificity_rationale: Moderately specific - applies to acquisition contexts.
comments:
- "Generic acquisition/collection agent slot"
- "Temporal: acquisition is a historical event"
- "RiC-O naming: isOrWas indicates past relationship"
- "Replaces collector per slot_fixes.yaml (2026-01-22)"
examples:
- value:
agent_name: "Dr. Jane Smith"
agent_type: person
description: "Specimen collected by Dr. Jane Smith"

View file

@ -0,0 +1,78 @@
# is_or_was_appreciated slot
# RiC-O temporal naming convention (Rule 39)
#
# Created per slot_fixes.yaml revision for: comment_like_count
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 39
id: https://nde.nl/ontology/hc/slot/is_or_was_appreciated
name: is_or_was_appreciated
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
as: https://www.w3.org/ns/activitystreams#
imports:
- linkml:types
default_prefix: hc
slots:
is_or_was_appreciated:
slot_uri: as:Like
description: |
Appreciation or engagement event associated with content.
**PURPOSE**:
Captures appreciation metrics (likes, favorites, upvotes) for digital content
in a structured way using AppreciationEvent class.
**RiC-O NAMING** (Rule 39):
Uses "is_or_was_" prefix to indicate temporal relationship - the content
is currently appreciated or was appreciated in the past.
**ONTOLOGY ALIGNMENT**:
| Ontology | Property | Usage |
|----------|----------|-------|
| **Activity Streams** | `as:Like` | Social appreciation activity |
| **Schema.org** | `schema:interactionStatistic` | Engagement metrics |
**MIGRATION NOTE**:
Created from migration of `comment_like_count` slot per slot_fixes.yaml.
Replaces simple integer counts with structured appreciation events.
range: AppreciationEvent
multivalued: true
inlined: true
inlined_as_list: true
exact_mappings:
- as:Like
close_mappings:
- schema:interactionStatistic
examples:
- value:
appreciation_type: like
has_or_had_quantity:
numeric_value: 42
has_or_had_unit:
unit_label: "likes"
description: 42 likes on content
comments:
- Created 2026-01-22 from comment_like_count migration (Rule 53)
- Uses RiC-O temporal naming convention (Rule 39)
- Supports structured appreciation metrics
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian with digital content may track appreciation.

View file

@ -0,0 +1,80 @@
# is_or_was_founded_through - Founding event relationship slot
#
# Created per slot_fixes.yaml migration for: founded_year, founding_date
# Creation date: 2026-01-22
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (slot_fixes revision)
id: https://nde.nl/ontology/hc/slot/is_or_was_founded_through
name: is_or_was_founded_through
title: Is or Was Founded Through
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
slots:
is_or_was_founded_through:
slot_uri: hc:isOrWasFoundedThrough
description: |
Links an organization or institution to its founding event.
**USAGE**:
Represents the founding/establishment event for:
- Heritage custodians (museums, archives, libraries)
- Standards organizations
- Restaurants/venues with historical significance
- Any organization with a founding date
**ONTOLOGY ALIGNMENT**:
- **Primary** (`slot_uri`): `hc:isOrWasFoundedThrough` - Heritage Custodian property
- **Close**: `schema:foundingDate` - Schema.org founding date (simpler)
- **Close**: `prov:wasGeneratedBy` - PROV-O generation event
- **Related**: `crm:P92i_was_brought_into_existence_by` - CIDOC-CRM existence
**TEMPORAL PATTERN**:
The FoundingEvent contains a `temporal_extent` (TimeSpan) with:
- `begin_of_the_begin`: Earliest possible founding date
- `end_of_the_begin`: Latest possible founding date (for uncertain dates)
**MIGRATION NOTE**:
Replaces simple `founded_year` (integer) and `founding_date` (string)
with structured FoundingEvent for richer temporal and contextual data.
range: FoundingEvent
multivalued: false
inlined: true
close_mappings:
- schema:foundingDate
- prov:wasGeneratedBy
related_mappings:
- crm:P92i_was_brought_into_existence_by
examples:
- value:
founding_event_id: "https://nde.nl/ontology/hc/event/founding/rijksmuseum-1800"
temporal_extent:
begin_of_the_begin: "1800-01-01"
end_of_the_begin: "1800-12-31"
founding_description: "Founded by King Louis Napoleon"
description: Museum founding event with known year
- value:
founding_event_id: "https://nde.nl/ontology/hc/event/founding/historic-restaurant-1902"
temporal_extent:
begin_of_the_begin: "1902-01-01"
end_of_the_end: "1902-12-31"
founding_description: "Established as family restaurant"
description: Restaurant founding with known year
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Founding events applicable to all custodian types."

View file

@ -0,0 +1,67 @@
# is_or_was_part_of - Part-whole relationship slot
#
# Created per slot_fixes.yaml migration for: founding_date_diocese
# Creation date: 2026-01-22
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (slot_fixes revision)
id: https://nde.nl/ontology/hc/slot/is_or_was_part_of
name: is_or_was_part_of
title: Is or Was Part Of
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
rico: https://www.ica.org/standards/RiC/ontology#
schema: http://schema.org/
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
slots:
is_or_was_part_of:
slot_uri: rico:isOrWasPartOf
description: |
Indicates that this entity is or was part of another entity.
**USAGE**:
Represents part-whole relationships for:
- Archives as part of dioceses (DiocesanArchive → Diocese)
- Collections as part of institutions
- Organizational units as part of parent organizations
- Geographic regions as part of larger regions
**ONTOLOGY ALIGNMENT**:
- **Primary** (`slot_uri`): `rico:isOrWasPartOf` - RiC-O part-of relationship
- **Close**: `schema:isPartOf` - Schema.org containment
- **Close**: `dcterms:isPartOf` - Dublin Core part-of
**TEMPORAL SEMANTICS**:
The "is_or_was" pattern (RiC-O convention) indicates that:
- The relationship may be current ("is part of")
- The relationship may be historical ("was part of")
- Temporal extent can be captured via associated TimeSpan
**INVERSE**: `has_or_had_part`
range: uriorcurie
multivalued: true
exact_mappings:
- rico:isOrWasPartOf
close_mappings:
- schema:isPartOf
- dcterms:isPartOf
examples:
- value: "hc:diocese/utrecht"
description: Archive is part of Diocese of Utrecht
- value: "hc:organization/ministry-ocw"
description: Department is part of ministry
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Part-whole relationships applicable to all custodian types."

View file

@ -0,0 +1,69 @@
# is_or_was_part_of_total slot
# RiC-O temporal naming convention (Rule 39)
#
# Created per slot_fixes.yaml revision for: comments_fetched
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 39
id: https://nde.nl/ontology/hc/slot/is_or_was_part_of_total
name: is_or_was_part_of_total
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
is_or_was_part_of_total:
slot_uri: schema:partOfTotalCount
description: |
Indicates a partial count as part of a total.
**PURPOSE**:
Links a fetched/partial count to the total count at the source.
Used for tracking partial data retrieval (e.g., fetched 100 of 500 comments).
**RiC-O NAMING** (Rule 39):
Uses "is_or_was_" prefix indicating temporal relationship -
the partial count is or was part of a total.
**USE CASES**:
- Comments: 100 fetched out of 500 total
- Search results: 25 returned out of 1000 matches
- Paginated data: page 1 of 50 pages
**MIGRATION NOTE**:
Created from migration of `comments_fetched` slot per slot_fixes.yaml.
Works with SourceCommentCount class for structured count metadata.
range: SourceCommentCount
inlined: true
close_mappings:
- schema:partOfTotalCount
examples:
- value:
fetched_count: 100
total_count: 500
fetch_complete: false
description: 100 of 500 comments fetched
comments:
- Created 2026-01-22 from comments_fetched migration (Rule 53)
- Uses RiC-O temporal naming convention (Rule 39)
- Tracks partial vs total counts for paginated data
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian fetching paginated data may track partial counts.

View file

@ -83,36 +83,26 @@
"cms_product_name.yaml",
"collection_description.yaml",
"collection_id.yaml",
"collection_locality_text.yaml",
"collection_location.yaml",
"collection_name.yaml",
"collection_purpose.yaml",
"collection_scope.yaml",
"collection_type.yaml",
"collection_type_description.yaml",
"collection_type_id.yaml",
"collection_type_name.yaml",
"collection_type_ref.yaml",
"collection_web_address.yaml",
"collector.yaml",
"colonial.yaml",
"collects_or_collected.yaml",
"comment_author.yaml",
"comment_author_channel_id.yaml",
"comment_count.yaml",
"comment_id.yaml",
"comment_like_count.yaml",
"comment_published_at.yaml",
"comment_reply_count.yaml",
"comment_text.yaml",
"comment_updated_at.yaml",
"comments_fetched.yaml",
"__ARCHIVED_20260122__comments_fetched.yaml",
"commercial_custodian_subtype.yaml",
"commercial_operation.yaml",
"commission_rate.yaml",
"common_name.yaml",
"common_name_language.yaml",
"common_variant.yaml",
"__ARCHIVED_20260122__commercial_operation.yaml",
"__ARCHIVED_20260122__commission_rate.yaml",
"__ARCHIVED_20260122__common_name.yaml",
"__ARCHIVED_20260122__common_name_language.yaml",
"__ARCHIVED_20260122__common_variant.yaml",
"community_significance.yaml",
"complex_name.yaml",
"compliance_status.yaml",
@ -283,6 +273,7 @@
"derived_from_entity.yaml",
"derived_from_observation.yaml",
"derives_or_derived_from.yaml",
"describes_or_described.yaml",
"description.yaml",
"description_text.yaml",
"description_type.yaml",
@ -508,12 +499,6 @@
"follower_count.yaml",
"following_count.yaml",
"footnote.yaml",
"format.yaml",
"founded_year.yaml",
"founding_date.yaml",
"founding_date_diocese.yaml",
"fr.yaml",
"frame_rate.yaml",
"frame_sample_rate.yaml",
"from_location.yaml",
"full_extracted_text.yaml",
@ -853,6 +838,7 @@
"has_or_had_net_asset.yaml",
"has_or_had_note.yaml",
"has_or_had_notes.yaml",
"has_or_had_objective.yaml",
"has_or_had_open_access_endpoint.yaml",
"has_or_had_opening_hour.yaml",
"has_or_had_operate.yaml",
@ -865,7 +851,9 @@
"has_or_had_page_section.yaml",
"has_or_had_participated_in_event.yaml",
"has_or_had_participated_in_project.yaml",
"has_or_had_percentage.yaml",
"has_or_had_period.yaml",
"has_or_had_place.yaml",
"has_or_had_place_of_birth.yaml",
"has_or_had_policy.yaml",
"has_or_had_portal_data_source.yaml",
@ -893,6 +881,7 @@
"has_or_had_related_exhibition.yaml",
"has_or_had_related_guide.yaml",
"has_or_had_related_heritage_form.yaml",
"has_or_had_reply.yaml",
"has_or_had_requirement.yaml",
"has_or_had_requirement_status.yaml",
"has_or_had_research_attempt.yaml",
@ -957,6 +946,7 @@
"has_or_had_verification_status.yaml",
"has_or_had_version.yaml",
"has_or_had_web_claim.yaml",
"has_or_had_web_page.yaml",
"has_or_had_writing_system.yaml",
"has_outdoor_seating.yaml",
"has_person_name.yaml",
@ -1095,6 +1085,7 @@
"is_open_to_public.yaml",
"is_or_was_about_digital_presence.yaml",
"is_or_was_access_restricted.yaml",
"is_or_was_acquired_by.yaml",
"is_or_was_active_since.yaml",
"is_or_was_affected_by_event.yaml",
"is_or_was_affiliated_with.yaml",
@ -1105,6 +1096,7 @@
"is_or_was_also_allocation_agency.yaml",
"is_or_was_alternative_form_of.yaml",
"is_or_was_appended_with.yaml",
"is_or_was_appreciated.yaml",
"is_or_was_approved_by.yaml",
"is_or_was_approximate.yaml",
"is_or_was_archive_department_of.yaml",
@ -1121,6 +1113,8 @@
"is_or_was_encompassed_by.yaml",
"is_or_was_equivalent_to.yaml",
"is_or_was_extracted_using.yaml",
"is_or_was_founded_through.yaml",
"is_or_was_part_of.yaml",
"is_or_was_generated_by.yaml",
"is_or_was_indexed.yaml",
"is_or_was_instance_of.yaml",
@ -1130,6 +1124,7 @@
"is_or_was_member_of.yaml",
"is_or_was_part_of_archive_series.yaml",
"is_or_was_platform_of.yaml",
"is_or_was_part_of_total.yaml",
"is_or_was_related_to.yaml",
"is_or_was_required.yaml",
"is_or_was_responsible_for.yaml",
@ -1918,6 +1913,7 @@
"standards_compliance.yaml",
"start.yaml",
"start_date.yaml",
"start_of_the_start.yaml",
"start_seconds.yaml",
"start_time.yaml",
"started_at_time.yaml",
@ -1938,6 +1934,7 @@
"supersede_condition.yaml",
"supersede_name.yaml",
"supersedes_or_superseded.yaml",
"takes_or_took_comission.yaml",
"takes_or_took_place_at.yaml",
"temperature_target.yaml",
"template_specificity.yaml",
@ -1952,6 +1949,7 @@
"was_acquired_through.yaml",
"was_derived_from.yaml",
"was_generated_by.yaml",
"was_fetched_at.yaml",
"was_last_updated_at.yaml",
"warrants_or_warranted.yaml",
"wikidata_entity.yaml",

View file

@ -10032,6 +10032,22 @@ fixes:
type: slot
- label: Locality
type: class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-19: collection_locality_text → describes_or_described + Locality
**Files Created**:
- describes_or_described.yaml: Generic descriptive relationship slot (dcterms:description)
- Locality.yaml: Structured locality class with dwc:verbatimLocality alignment
**Files Modified**:
- BiologicalObject.yaml: Migrated import, slot list, slot_usage with Locality range
**Already Existed**:
- has_or_had_provenance.yaml and Provenance.yaml (reused)
**Archived**: modules/slots/archive/collection_locality_text_archived_20260119.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/collection_location
revision:
- label: has_or_had_provenance
@ -10046,6 +10062,24 @@ fixes:
type: slot
- label: Place
type: class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: collection_location → has_or_had_place + Place + CollectionEvent
**Files Created**:
- has_or_had_place.yaml: Temporal place relationship slot (existed from prior migration)
- CollectionEvent.yaml: Darwin Core Event-aligned collection event class (existed)
**Files Modified**:
- BiologicalObject.yaml: Previously migrated (2026-01-19)
**Already Existed**:
- has_or_had_provenance.yaml, Provenance.yaml
- describes_or_described.yaml
- Place.yaml
**Archived**: modules/slots/archive/collection_location_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/collection_name
revision:
- label: has_or_had_label
@ -10066,6 +10100,21 @@ fixes:
type: slot
- label: Rationale
type: class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-19: collection_purpose → collects_or_collected + has_or_had_rationale
**Files Created**:
- collects_or_collected.yaml: Generic collecting relationship slot (rico:hasOrHadHolder)
**Files Modified**:
- CommercialOrganizationType.yaml: Migrated import, slot list, slot_usage with Rationale range
**Already Existed**:
- has_or_had_rationale.yaml, Rationale.yaml
**Archived**: modules/slots/archive/collection_purpose_archived_20260119.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/collection_scope
revision:
- label: has_or_had_scope
@ -10087,6 +10136,21 @@ fixes:
- label: Unit
type: class
value: item
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: collection_size → has_or_had_quantity + Quantity + has_or_had_unit + Unit
**Files Created**:
- All required slots and classes existed from prior migrations (2026-01-19)
**Files Modified**:
- BioCustodianType.yaml: Migrated to has_or_had_quantity + Quantity (2026-01-19)
- PersonalCollectionType.yaml: Migrated to has_or_had_quantity + Quantity (2026-01-19)
**Note**: Unit default value "item" used for collection item counts.
**Archived**: modules/slots/archive/collection_size_archived_20260119.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/collection_type
revision:
- label: has_or_had_content
@ -10101,6 +10165,19 @@ fixes:
type: slot
- label: CollectionContentTypes
type: class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: collection_type → has_or_had_content + CollectionContent + has_or_had_type + CollectionContentType
**Files Modified**:
- HolySacredSiteType.yaml: Migrated to has_or_had_content + CollectionContent (2026-01-22)
- CustodianCollection.yaml: Already migrated (REMOVED comment present)
**Files Archived**:
- collection_type.yaml → archive/collection_type_archived_20260122.yaml
**Note**: All required slots/classes already existed from prior migration work (2026-01-19)
- original_slot_id: https://nde.nl/ontology/hc/slot/collection_type_description
revision:
- label: has_or_had_description
@ -10161,6 +10238,21 @@ fixes:
- label: has_or_had_url
type: slot
- label: URL
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: collection_web_address → has_or_had_web_page + WebPage
**Note**: Revision contains typo "had_or_had_web_page" - implemented as "has_or_had_web_page" per RiC-O naming (Rule 39).
**Files Created**:
- has_or_had_web_page.yaml: New slot for web page association
- WebPage.yaml: New class for structured web page representation
**Files Modified**:
- DigitalPlatform.yaml: Migrated collection_web_address to has_or_had_web_page + WebPage
**Archived**: modules/slots/archive/collection_web_address_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/collections_under_responsibility
revision:
- label: is_or_was_responsible_for
@ -10177,6 +10269,20 @@ fixes:
type: slot
- label: Agent
type: class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: collector → is_or_was_acquired_by + Agent
**Files Created**:
- modules/slots/is_or_was_acquired_by.yaml: New slot for acquisition agent
- modules/classes/Agent.yaml: New class for person/organization agents
**Files Modified**:
- BiologicalObject.yaml: Migrated slot_usage and examples from collector to is_or_was_acquired_by + Agent
- CollectionEvent.yaml: Migrated inline collector attribute to is_or_was_acquired_by slot; updated imports, slots list, description, and examples
**Note**: No standalone collector.yaml existed to archive - collector was only defined inline as attribute in CollectionEvent.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/colonial
revision:
- label: includes_or_included
@ -10187,6 +10293,26 @@ fixes:
type: Slot
- label: ColonialStatus
type: Class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: colonial → includes_or_included + GeoSpatialPlace + is_or_was_categorized_as + ColonialStatus
**Files Created**:
- modules/classes/ColonialStatus.yaml: New class for colonial status categorization
**Files Modified**:
- FindingAid.yaml: Migrated colonial slot in GeographicCoverage class
- Updated imports (lines 80-84)
- Updated slots list (lines 564-566)
- Updated slot_usage (lines 586-620)
**Existing Files Used** (already existed):
- modules/slots/includes_or_included.yaml
- modules/classes/GeoSpatialPlace.yaml
- modules/slots/is_or_was_categorized_as.yaml
**Archived**: modules/slots/archive/colonial_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/comment_author
revision:
- label: has_or_had_author
@ -10212,6 +10338,23 @@ fixes:
type: slot
- label: DigitalPlatformUserIdentifier
type: class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: comment_author_channel_id → has_or_had_author + Author + has_or_had_identifier + DigitalPlatformUserIdentifier
**Files Created**:
- modules/classes/DigitalPlatformUserIdentifier.yaml: New class for platform user/channel identifiers
**Files Modified**:
- VideoPost.yaml: Removed comment_author_channel_id import and slot usage; channel ID now captured via Author.has_or_had_identifier
**Existing Files Used**:
- modules/slots/has_or_had_author.yaml
- modules/classes/Author.yaml
- modules/slots/has_or_had_identifier.yaml
**Archived**: modules/slots/archive/comment_author_channel_id_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/comment_count
revision:
- label: has_or_had_comment
@ -10259,6 +10402,28 @@ fixes:
- label: Unit
type: class
value: like
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: comment_like_count → is_or_was_appreciated + AppreciationEvent
**Files Created**:
- modules/slots/is_or_was_appreciated.yaml: New slot for appreciation events
- modules/classes/AppreciationEvent.yaml: New class for like/favorite metrics
**Files Modified**:
- VideoPost.yaml: Migrated comment_like_count in VideoComment class
- Updated imports (lines 19-21)
- Updated slots list (lines 440-441)
- Updated slot_usage (lines 541-562)
**Existing Files Used**:
- modules/slots/has_or_had_quantity.yaml
- modules/classes/Quantity.yaml
- modules/slots/has_or_had_unit.yaml
- modules/classes/Unit.yaml
**Archived**: modules/slots/archive/comment_like_count_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/comment_published_at
revision:
- label: temporal_extent
@ -10289,6 +10454,28 @@ fixes:
- label: Unit
type: class
value: reply
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: comment_reply_count → has_or_had_reply + CommentReply
**Files Created**:
- modules/slots/has_or_had_reply.yaml: New slot for reply relationships
- modules/classes/CommentReply.yaml: New class for reply metrics
**Files Modified**:
- VideoPost.yaml: Migrated comment_reply_count in VideoComment class
- Updated imports (lines 25-27)
- Updated slots list (lines 446-448)
- Updated slot_usage (lines 566-586)
**Existing Files Used**:
- modules/slots/has_or_had_quantity.yaml
- modules/classes/Quantity.yaml
- modules/slots/has_or_had_unit.yaml
- modules/classes/Unit.yaml
**Archived**: modules/slots/archive/comment_reply_count_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/comment_text
revision:
- label: has_or_had_content
@ -10331,6 +10518,21 @@ fixes:
type: slot
- label: SourceCommentCount
type: class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: comments_fetched → was_fetched_at + Timestamp + is_or_was_part_of_total + SourceCommentCount
**Files Created**:
- was_fetched_at.yaml: New slot for fetch timestamp (prov:generatedAtTime)
- is_or_was_part_of_total.yaml: New slot for partial/total count relationship
- SourceCommentCount.yaml: New class for comment count metadata
**Files Modified**:
- VideoPost.yaml: Migrated comments_fetched to was_fetched_at + is_or_was_part_of_total
- YoutubeVideo.yaml: Migrated comments_fetched to was_fetched_at + is_or_was_part_of_total
**Archived**: modules/slots/archive/comments_fetched_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/commercial_activity
revision:
- label: has_or_had_service
@ -10367,12 +10569,44 @@ fixes:
type: slot
- label: CommercialCustodianTypes
type: class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: commercial_custodian_subtype → includes_or_included + CommercialCustodianTypes
**Files Created**:
- modules/classes/CommercialCustodianTypes.yaml: New class for commercial custodian type collection
**Files Modified**:
- CommercialOrganizationType.yaml: Migrated commercial_custodian_subtype
- Updated imports (lines 28-30)
- Updated slots list (lines 225-227)
- Added slot_usage for includes_or_included (lines 302-326)
**Existing Files Used**:
- modules/slots/includes_or_included.yaml
**Archived**: modules/slots/archive/commercial_custodian_subtype_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/commercial_operation
revision:
- label: has_or_had_objective
type: slot
- label: Profit
type: class
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: commercial_operation → has_or_had_objective + Profit
**Files Created**:
- has_or_had_objective.yaml: New slot for organizational objectives (org:purpose)
- Profit.yaml: New class for profit motive/objective representation
**Files Modified**:
- GalleryType.yaml: Migrated commercial_operation to has_or_had_objective + Profit
- Updated imports, slots, description, examples
**Archived**: modules/slots/archive/commercial_operation_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/commission_rate
revision:
- label: has_or_had_service
@ -10387,6 +10621,28 @@ fixes:
type: slot
- label: Percentage
type: class
processed:
status: true
date: '2026-01-22'
agent: claude-claude-sonnet-4-20250514
notes: |
**Migration #35: commission_rate** ✅ COMPLETE
**Pattern**: commission_rate → has_or_had_service + ArtSaleService + takes_or_took_comission + CommissionRate + has_or_had_percentage + Percentage
**Files Created**:
- has_or_had_service.yaml: Slot for service relationships (schema:provider)
- ArtSaleService.yaml: Class for art sale/consignment services
- takes_or_took_comission.yaml: Slot for commission relationships (note: typo preserved from revision)
- CommissionRate.yaml: Class for commission rate representation
- has_or_had_percentage.yaml: Slot for percentage values
- Percentage.yaml: Class for percentage/ratio values
**Files Modified**:
- GalleryType.yaml: Migrated commission_rate to has_or_had_service + ArtSaleService
- Updated imports, slots, description, examples
**Archived**: modules/slots/archive/commission_rate_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/common_name
revision:
- label: has_or_had_name
@ -10402,6 +10658,23 @@ fixes:
- label: NameTypes
type: class
note: this includes CommonName
processed:
status: true
notes: |
FULLY_MIGRATED 2026-01-22: common_name → has_or_had_name + Name + has_or_had_type + NameType
**Files Already Existed** (created earlier this session):
- has_or_had_name.yaml: Generic name slot (slot_uri: skos:prefLabel)
- Name.yaml: Structured name with label, type, and language
- NameType.yaml: Abstract base for name type classification
- NameTypes.yaml: Concrete name types including CommonName
**Files Modified**:
- BiologicalObject.yaml: Migrated common_name to has_or_had_name + Name
- Updated slot_usage with structured examples
- Updated all examples (Dodo, Megatherium, Oak) to use Name class
**Archived**: modules/slots/archive/common_name_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/common_name_language
revision:
- label: has_or_had_name
@ -10421,6 +10694,32 @@ fixes:
type: slot
- label: Language
type: class
processed:
status: true
date: '2026-01-22'
agent: claude-claude-sonnet-4-20250514
notes: |
**Migration #37: common_name_language** ✅ COMPLETE
**Pattern**: common_name_language → has_or_had_name + Name (with has_or_had_language) + has_or_had_type + NameType + NameTypes + Language
**Completed With Migration #36**:
This migration was completed as part of common_name migration (#36).
The Name class includes has_or_had_language slot for language specification.
**Files Already Created** (in Migration #36):
- Name.yaml: Includes has_or_had_language slot
- NameType.yaml: Abstract base class
- NameTypes.yaml: Concrete subclasses
**Files Already Exist**:
- has_or_had_language.yaml: Generic language slot
- Language.yaml: Language class with ISO codes
**Files Modified** (in Migration #36):
- BiologicalObject.yaml: common_name_language removed, language now in Name class
**Archived**: modules/slots/archive/common_name_language_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/common_variant
revision:
- label: has_or_had_type
@ -10431,6 +10730,24 @@ fixes:
type: slot
- label: VariantTypes
type: class
processed:
status: true
date: '2026-01-22'
agent: claude-claude-sonnet-4-20250514
notes: |
**Migration #38: common_variant** ✅ COMPLETE
**Pattern**: common_variant → has_or_had_type + VariantType + includes_or_included + VariantTypes
**Files Created**:
- VariantType.yaml: Abstract base class for variant type taxonomy (Rule 0b)
- VariantTypes.yaml: Concrete subclasses (AbbreviationVariant, SynonymVariant, RegionalVariant, HistoricalVariant, InformalVariant, TranslationVariant)
**Files Modified**:
- StaffRole.yaml: Migrated common_variant to has_or_had_type + VariantType
- Updated imports, slots list
**Archived**: modules/slots/archive/common_variant_archived_20260122.yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/community_engagement
revision:
- label: has_or_had_activity
@ -11130,7 +11447,7 @@ fixes:
- original_slot_id: https://bronhouder.nl/linkml?slot=description_section
processed:
status: true
notes: 'was split into multiple slots"
notes: 'was split into multiple slots'
feedback:
- timestamp: 20260119T120000Z
user: Simon C. Kemper
@ -13324,6 +13641,11 @@ fixes:
type: slot
- label: Format
type: class
processed:
status: true
notes: 'FULLY_MIGRATED 2026-01-22: format → has_or_had_format + Format.
Created Format.yaml class. FindingAid.yaml migrated to use has_or_had_format.
has_or_had_format.yaml slot already existed. Old slot archived to archive/format_archived_20260122.yaml'
- original_slot_id: https://nde.nl/ontology/hc/slot/founded_year
revision:
- label: is_or_was_founded_through
@ -13338,6 +13660,13 @@ fixes:
type: slot
- label: Timestamp
type: class
processed:
status: true
notes: 'FULLY_MIGRATED 2026-01-22: founded_year → is_or_was_founded_through + FoundingEvent.
Created is_or_was_founded_through.yaml slot, FoundingEvent.yaml class, start_of_the_start.yaml slot.
CateringPlace.yaml and StandardsOrganization.yaml migrated.
Existing files used: temporal_extent.yaml, TimeSpan.yaml, Timestamp.yaml.
Old slot archived to archive/founded_year_archived_20260122.yaml'
- original_slot_id: https://nde.nl/ontology/hc/slot/founding_date
revision:
- label: is_or_was_founded_through
@ -13352,6 +13681,12 @@ fixes:
type: slot
- label: Timestamp
type: class
processed:
status: true
notes: 'FULLY_MIGRATED 2026-01-22: founding_date → is_or_was_founded_through + FoundingEvent.
EncompassingBody.yaml, UniversityArchive.yaml, DigitalPlatformV2OrganizationProfile.yaml migrated.
Reused existing is_or_was_founded_through.yaml, FoundingEvent.yaml, start_of_the_start.yaml from founded_year migration.
Old slot archived to archive/founding_date_archived_20260122.yaml'
- original_slot_id: https://nde.nl/ontology/hc/slot/founding_date_diocese
revision:
- label: is_or_was_part_of
@ -13370,6 +13705,13 @@ fixes:
type: slot
- label: Timestamp
type: class
processed:
status: true
notes: 'FULLY_MIGRATED 2026-01-22: founding_date_diocese → is_or_was_part_of + Diocese.
Created is_or_was_part_of.yaml slot and Diocese.yaml class.
DiocesanArchive.yaml migrated to use Diocese with embedded FoundingEvent.
Reused existing FoundingEvent, TimeSpan, Timestamp classes.
Old slot archived to archive/founding_date_diocese_archived_20260122.yaml'
- original_slot_id: https://nde.nl/ontology/hc/slot/fr
revision:
- label: has_or_had_language
@ -13377,6 +13719,13 @@ fixes:
- label: Language
type: class
value: French
processed:
status: true
notes: "FULLY_MIGRATED 2026-01-22: fr → has_or_had_language + Language (Rule 53).
Extended Language class with text_content attribute for language-tagged text.
Updated has_or_had_language slot to support both Language and LanguageProficiency (any_of).
Migrated FindingAid.yaml MultilingualText class to use unified language pattern.
Old slot archived to archive/fr_archived_20260122.yaml"
- original_slot_id: https://nde.nl/ontology/hc/slot/frame_rate
revision:
- label: has_or_had_quantity
@ -13629,7 +13978,7 @@ fixes:
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/geographic_restriction
revision:
- label: occurs_or_occurred_in
- label: is_or_was_applicable_in
type: slot
- label: Location
type: class
@ -14101,4 +14450,214 @@ fixes:
type: slot
- label: Timestamp
type: class
# https://nde.nl/ontology/hc/slot/has_air_changes_per_hour
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_air_changes_per_hour
revision:
- label: specifies_or_specified
type: slot
- label: Ventilation
type: class
- label: requires_or_required
type: slot
- label: AirChanges
type: class
- label: has_or_had_quantity
type: slot
- label: Quantity
type: class
- label: has_or_had_unit
type: slot
- label: Unit
type: class
value: air changes per hour
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_allocation_date
revision:
- label: is_or_was_allocated_through
type: slot
- label: AllocationEvent
type: class
- label: temporal_extent
type: slot
- label: TimeSpan
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_alpha_2_code
revision:
- label: has_or_had_identifier
type: slot
- label: Alpha2Code
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_alpha_3_code
revision:
- label: has_or_had_identifier
type: slot
- label: Alpha3Code
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_alpha_3_code
revision:
- label: has_or_had_identifier
type: slot
- label: Alpha3Code
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_altitude
revision:
- label: has_or_had_altitude
type: slot
- label: Altitude
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_amendment_history
revision:
- label: is_or_was_amended_through
type: slot
- label: AmendmentEvent
type: class
- label: has_or_had_provenance
type: slot
- label: Provenance
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_annex_description
revision:
- label: has_or_had_description
type: slot
- label: Description
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_annex_name
revision:
- label: has_or_had_label
type: slot
- label: Label
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_annex_reason
revision:
- label: is_or_was_created_through
type: slot
- label: AnnexCreationEvent
type: class
- label: has_or_had_reason
type: slot
- label: Reason
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_annotation_by
revision:
- label: contains_or_contained
type: slot
- label: Annotation
type: class
- label: is_or_was_created_by
type: slot
- label: Agent
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_annotation_motivation
revision:
- label: has_or_had_rationale
type: slot
- label: Rationale
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_annotation_segment
revision:
- label: contains_or_contained
type: slot
- label: Segment
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_annotation_type
revision:
- label: has_or_had_type
type: slot
- label: AnnotationType
type: class
- label: includes_or_included
type: slot
- label: AnnotationTypes
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_api_version
revision:
- label: has_or_had_provenance
type: slot
- label: Provenance
type: class
- label: is_or_was_retrieved_through
type: slot
- label: APIRequest
type: class
- label: has_or_had_endpoint
type: slot
- label: APIEndpoint
type: class
- label: has_or_had_version
type: slot
- label: APIVersion
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_appellation_language
revision:
- label: has_or_had_language
type: slot
- label: Language
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_appellation_type
revision:
- label: has_or_had_type
type: slot
- label: AppellationType
type: class
- label: includes_or_included
type: slot
- label: AppellationTypes
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_appellation_value
revision:
- label: has_or_had_label
type: slot
- label: Label
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_applicable_country
revision:
- label: is_or_was_applicable_in
type: slot
- label: Country
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_application_deadline
revision:
- label: is_or_was_due_on
type: slot
- label: TimeSpan
type: class
- label: end_of_the_end
type: slot
- label: Timestamp
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_application_opening_date
revision:
- label: is_or_was_opened_on
type: slot
- label: TimeSpan
type: class
- label: start_of_the_start
type: slot
- label: Timestamp
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_appraisal_note
revision:
- label: has_or_had_note
type: slot
- label: Note
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_approval_date
revision:
- label: is_or_was_approved_on
type: slot
- label: TimeSpan
type: class
- label: start_of_the_start
type: slot
- label: Timestamp
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_archdiocese_name
revision:
- label: is_or_was_part_of
type: slot
- label: Archdiocese
type: class
- label: has_or_had_label
type: slot
- label: Label
type: class
# https://nde.nl/ontology/hc/slot/has_appellation_type
# https://nde.nl/ontology/hc/slot/has_appellation_type

View file

@ -0,0 +1,59 @@
# start_of_the_start - Temporal boundary slot (alias for begin_of_the_begin)
#
# Created per slot_fixes.yaml migration for: founded_year, founding_date
# Creation date: 2026-01-22
# Rule compliance: 39 (RiC-O naming), 50 (ontology mapping), 53 (slot_fixes revision)
#
# NOTE: This is semantically equivalent to begin_of_the_begin (CIDOC-CRM P82a).
# Created to fulfill slot_fixes.yaml revision requirements.
# Prefer using begin_of_the_begin in new code (established CIDOC-CRM pattern).
id: https://nde.nl/ontology/hc/slot/start_of_the_start
name: start_of_the_start
title: Start of the Start
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
slots:
start_of_the_start:
slot_uri: crm:P82a_begin_of_the_begin
description: |
The earliest possible start time of a temporal extent.
**SEMANTICS**:
Equivalent to CIDOC-CRM P82a_begin_of_the_begin.
This slot is an alias for `begin_of_the_begin` for naming consistency.
**USAGE**:
- For precise start: Set to exact timestamp
- For uncertain start: Set to earliest plausible date
**NOTE**:
Prefer `begin_of_the_begin` in new code (established CIDOC-CRM pattern).
This slot created per slot_fixes.yaml revision requirements.
range: Timestamp
exact_mappings:
- crm:P82a_begin_of_the_begin
aliases:
- begin_of_the_begin
examples:
- value: "1902-01-01"
description: Earliest possible date for 1902 founding
- value: "1850-01-01"
description: Earliest date for 1850s founding (decade uncertainty)
annotations:
custodian_types: '["*"]'
custodian_types_rationale: "Temporal boundaries applicable to all custodian types."

View file

@ -0,0 +1,73 @@
# takes_or_took_comission slot
# RiC-O temporal naming convention (Rule 39)
#
# Created per slot_fixes.yaml revision for: commission_rate
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 39
# NOTE: Spelling "comission" matches revision specification (Rule 57 - immutable)
id: https://nde.nl/ontology/hc/slot/takes_or_took_comission
name: takes_or_took_comission
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
takes_or_took_comission:
slot_uri: schema:priceComponent
description: |
Commission rate taken on sales transactions.
**PURPOSE**:
Links a service (like art sales) to its commission structure.
Used for modeling gallery commission on artwork sales.
**RiC-O NAMING** (Rule 39):
Uses "takes_or_took_" prefix indicating temporal relationship -
commission rates may change over time.
**MIGRATION NOTE**:
Created from migration of `commission_rate` slot per slot_fixes.yaml.
Provides structured commission representation via CommissionRate class.
**NOTE**: Spelling "comission" matches revision specification per Rule 57.
range: CommissionRate
inlined: true
close_mappings:
- schema:priceComponent
examples:
- value:
rate_type: "primary_market"
has_or_had_percentage:
percentage_value: 50
percentage_display: "50%"
description: Standard primary market commission (50%)
- value:
rate_type: "secondary_market"
has_or_had_percentage:
percentage_value: 15
percentage_display: "10-20%"
description: Secondary market resale commission
comments:
- Created 2026-01-22 from commission_rate migration (Rule 53)
- Uses RiC-O temporal naming convention (Rule 39)
- Links services to commission structures
annotations:
custodian_types: '["G"]'
custodian_types_rationale: >-
Primarily for galleries and commercial art dealers.

View file

@ -0,0 +1,72 @@
# was_fetched_at slot
# RiC-O temporal naming convention (Rule 39)
#
# Created per slot_fixes.yaml revision for: comments_fetched
# Migration date: 2026-01-22
# Rule reference: Rule 53, Rule 39
id: https://nde.nl/ontology/hc/slot/was_fetched_at
name: was_fetched_at
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
dcterms: http://purl.org/dc/terms/
imports:
- linkml:types
default_prefix: hc
slots:
was_fetched_at:
slot_uri: prov:generatedAtTime
description: |
Timestamp when data was fetched/retrieved from a source.
**PURPOSE**:
Records when content was fetched from an external source (API, web page, etc.).
Used for provenance tracking of retrieved data.
**RiC-O NAMING** (Rule 39):
Uses "was_" prefix indicating past tense - the fetch has already occurred.
**ONTOLOGY ALIGNMENT**:
| Ontology | Property | Usage |
|----------|----------|-------|
| **PROV-O** | `prov:generatedAtTime` | When entity was generated |
| **Dublin Core** | `dcterms:dateAccepted` | Date accepted/retrieved |
**MIGRATION NOTE**:
Created from migration of `comments_fetched` slot per slot_fixes.yaml.
Works with SourceCommentCount class for structured fetch metadata.
range: Timestamp
inlined: true
exact_mappings:
- prov:generatedAtTime
close_mappings:
- dcterms:dateAccepted
examples:
- value:
has_or_had_timestamp: "2025-01-14T10:30:00Z"
has_or_had_precision: second
description: Exact fetch timestamp
comments:
- Created 2026-01-22 from comments_fetched migration (Rule 53)
- Uses RiC-O temporal naming convention (Rule 39)
- Tracks when external data was retrieved
annotations:
custodian_types: '["*"]'
custodian_types_rationale: >-
Universal - any custodian fetching external data may track fetch times.