Refactor schema definitions and slots for improved temporal modeling and publisher representation

- Migrated `published_at` to `is_or_was_published_at` with structured `PublicationEvent` class for enhanced temporal accuracy.
- Introduced `has_or_had_publisher` slot to replace the string-based `publisher` slot, allowing for detailed publisher information.
- Added new slots: `deduction_percentage`, `regulatory_body`, `expiration_date`, and `jurisdiction` to support tax scheme documentation.
- Archived outdated slots: `published_by` and `publisher`, ensuring compliance with updated naming conventions and ontology alignment.
- Updated `Database` types to `DatabaseSystem` for consistency in technological infrastructure classification.
- Broadened range types for slots `allows_or_allowed` and `includes_or_included` from `string` to `uriorcurie` to resolve OWL ambiguities.
- Enhanced documentation and examples across various classes and slots to clarify usage and improve understanding.
This commit is contained in:
kempersc 2026-01-17 21:10:50 +01:00
parent ed80fb316e
commit 47663e7c79
25 changed files with 726 additions and 113 deletions

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-17T18:53:55.988Z",
"generated": "2026-01-17T19:58:12.596Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2968,
"categoryCounts": {

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-17T19:58:12.596Z",
"generated": "2026-01-17T20:10:50.954Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2968,
"categoryCounts": {

View file

@ -16,7 +16,9 @@ imports:
- ../metadata
# REMOVED 2026-01-15: ../slots/wikidata_id - migrated to has_or_had_identifier + WikiDataIdentifier (Rule 53)
- ./WikiDataIdentifier
- ../slots/publisher
# REMOVED 2026-01-17: ../slots/publisher - migrated to has_or_had_publisher + Publisher (Rule 53/56)
- ../slots/has_or_had_publisher
- ./Publisher
- ../slots/publication_date
- ../slots/isbn
- ../slots/language
@ -123,7 +125,7 @@ classes:
- price
- publication_date
- publication_place
- publisher
- has_or_had_publisher # was: publisher - migrated per Rule 53/56 (2026-01-17)
- specificity_annotation
- is_or_was_indexed # was: table_of_content - migrated per Rule 53/56 (2026-01-16)
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
@ -242,13 +244,36 @@ classes:
examples:
- value: Anna Tummers (essay)
- value: Jane Smith (conservation notes)
publisher:
has_or_had_publisher: # was: publisher - migrated per Rule 53/56 (2026-01-17)
required: false
range: string
range: Publisher
inlined: true
multivalued: true
description: |
Publisher of the exhibition catalog.
MIGRATED from publisher slot per Rule 53/56 (2026-01-17).
Uses Publisher class for structured representation including:
- Publisher name (required)
- Publisher type (institutional, commercial, academic)
- Location
- Identifiers
examples:
- value: Rijksmuseum
- value: Thames & Hudson
- value: Yale University Press
- value:
has_or_had_label: Rijksmuseum
has_or_had_type: institutional
has_or_had_location: Amsterdam
description: Museum as institutional publisher
- value:
has_or_had_label: Thames & Hudson
has_or_had_type: commercial
has_or_had_location: London
description: Commercial art book publisher
- value:
has_or_had_label: Yale University Press
has_or_had_type: academic
has_or_had_location: New Haven
description: Academic press publisher
publication_date:
required: false
range: date
@ -450,7 +475,13 @@ classes:
author_affiliation: Rijksmuseum Amsterdam
editor:
- Pieter Roelofs
publisher: Rijksmuseum / Hannibal Publishing
has_or_had_publisher: # was: publisher - migrated per Rule 53/56 (2026-01-17)
- has_or_had_label: Rijksmuseum
has_or_had_type: institutional
has_or_had_location: Amsterdam
- has_or_had_label: Hannibal Publishing
has_or_had_type: commercial
has_or_had_location: Veurne
publication_date: '2023-02-01'
publication_place: Amsterdam
isbn_13: '9789491714962'
@ -483,7 +514,10 @@ classes:
- Nicholas Cullinan
- Jodi Hauptman
- Nicholas Serota
publisher: The Museum of Modern Art, New York
has_or_had_publisher: # was: publisher - migrated per Rule 53/56 (2026-01-17)
- has_or_had_label: The Museum of Modern Art
has_or_had_type: institutional
has_or_had_location: New York
publication_date: '2014-10-01'
isbn_13: '9780870709159'
pages: 298
@ -497,7 +531,10 @@ classes:
has_or_had_label: 'Arctic: culture and climate' # was: catalog_title
is_or_was_associated_with: https://nde.nl/ontology/hc/exhibition/british-museum-arctic-2020 # was: catalog_for
has_or_had_type: DIGITAL_CATALOG # was: catalog_type
publisher: The British Museum Press
has_or_had_publisher: # was: publisher - migrated per Rule 53/56 (2026-01-17)
- has_or_had_label: The British Museum Press
has_or_had_type: institutional
has_or_had_location: London
publication_date: '2020-10-22'
has_or_had_url: # was: catalog_url - migrated per Rule 53/56 (2026-01-17)
- has_or_had_url: "https://www.britishmuseum.org/exhibitions/arctic-culture-and-climate"

View file

@ -53,7 +53,9 @@ imports:
- ../slots/date
- ../slots/note
- ../slots/creator
- ../slots/publisher
# REMOVED 2026-01-17: ../slots/publisher - migrated to has_or_had_publisher + Publisher (Rule 53/56)
- ../slots/has_or_had_publisher
- ./Publisher
- ../slots/publication_date
- ../slots/isbn
- ../slots/has_or_had_access_condition
@ -269,7 +271,7 @@ classes:
- has_or_had_page_section
- provenance
- publication_date
- publisher
- has_or_had_publisher # was: publisher - migrated per Rule 53/56 (2026-01-17)
- has_or_had_related_archive
- has_or_had_related_guide
- revision_date
@ -350,6 +352,31 @@ classes:
- label_value: "Genealogy"
language_code: "en"
description: Genealogy topic assignment
has_or_had_publisher: # was: publisher - migrated per Rule 53/56 (2026-01-17)
range: Publisher
inlined: true
multivalued: true
required: false
description: |
Publisher of the finding aid publication.
MIGRATED from publisher slot per Rule 53/56 (2026-01-17).
Uses Publisher class for structured representation including:
- Publisher name (required)
- Publisher type (institutional, commercial, academic)
- Location
- Identifiers
examples:
- value:
has_or_had_label: Nationaal Archief
has_or_had_type: institutional
has_or_had_location: Den Haag
description: National archive as institutional publisher
- value:
has_or_had_label: Rijksarchiefdienst
has_or_had_type: government
has_or_had_location: Den Haag
description: Government archival service publisher
comments:
- Root class for finding aid metadata YAML files
- Designed for validation with linkml-validate

View file

@ -869,11 +869,12 @@ classes:
slots:
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
Index:
IndexDocument:
is_a: FindingAidType
class_uri: wd:Q873506
description: 'Index - alphabetical or systematic list of names, subjects, locations.
description: 'IndexDocument - alphabetical or systematic list of names, subjects, locations (finding aid type).
Note: For structured index with entries, use Index class from Index.yaml.
Wikidata: Q873506 (index)
@ -902,12 +903,12 @@ classes:
broader_type:
range: FindingAidType
narrower_type:
range: Index
range: IndexDocumentDocument
slots:
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
BibliographicIndex:
is_a: Index
is_a: IndexDocument
class_uri: wd:Q2033233
description: 'Bibliographic index - index to bibliographic sources.
@ -932,12 +933,12 @@ classes:
has_or_had_domain: # was: typical_domain - migrated per Rule 53
ifabsent: string(LIBRARY)
broader_type:
range: Index
range: IndexDocument
slots:
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
LocationIndex:
is_a: Index
is_a: IndexDocument
class_uri: wd:Q117311578
description: 'Location index - index organized by geographic location.
@ -962,7 +963,7 @@ classes:
has_or_had_domain: # was: typical_domain - migrated per Rule 53
ifabsent: string(ARCHIVE)
broader_type:
range: Index
range: IndexDocument
slots:
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)

View file

@ -0,0 +1,99 @@
id: https://nde.nl/ontology/hc/class/PublicationEvent
name: publication_event_class
title: Publication Event Class
description: |
Event representing the publication of content, following CIDOC-CRM event modeling.
CREATED 2026-01-17 per Rule 53/56: Provides structured publication event
representation instead of simple datetime. Enables rich temporal modeling
including fuzzy date boundaries.
Supports:
- Social media posts with publication timestamps
- Document publications with date ranges
- Historical publications with uncertain dates
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
dcterms: http://purl.org/dc/terms/
imports:
- linkml:types
- ./TimeSpan
- ../slots/temporal_extent
- ../slots/has_or_had_label
- ../slots/has_or_had_identifier
- ../slots/specificity_annotation
- ../slots/has_or_had_score
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
default_prefix: hc
classes:
PublicationEvent:
class_uri: crm:E7_Activity
description: |
Event of content being published, following CIDOC-CRM activity pattern.
MIGRATED from published_at datetime slot per Rule 53/56 (2026-01-17).
**Why Event Wrapper?**
- Enables fuzzy temporal boundaries (uncertainty in publication dates)
- Supports multiple publication events (republications, versions)
- Links to agents/locations involved in publication
- Follows ontology best practices (CIDOC-CRM activity modeling)
**USE CASES**:
- Social media posts: Precise publication timestamp
- Historical documents: "Published sometime in 1892"
- Archival records: "Published between 1800-1805"
**FOR PRECISE TIMESTAMPS**:
Set all four TimeSpan boundaries to the same instant.
exact_mappings:
- crm:E7_Activity
- prov:Activity
close_mappings:
- schema:PublishAction
related_mappings:
- dcterms:created
slots:
- temporal_extent
- has_or_had_label
- has_or_had_identifier
- specificity_annotation
- has_or_had_score
slot_usage:
temporal_extent:
description: |
When the publication occurred. For precise timestamps, set all four
TimeSpan boundaries to the same instant. For uncertain dates, use
fuzzy boundaries.
range: TimeSpan
inlined: true
required: true
has_or_had_label:
description: Optional label for the publication event (e.g., "First Edition", "Reprint 2020")
required: false
comments:
- "Precise date: Set begin_of_the_begin == end_of_the_begin == begin_of_the_end == end_of_the_end"
- "Uncertain date: Use fuzzy boundaries (e.g., begin_of_the_begin: 1892-01-01, end_of_the_end: 1892-12-31)"
examples:
- value:
temporal_extent:
begin_of_the_begin: "2025-07-30T18:05:15Z"
end_of_the_begin: "2025-07-30T18:05:15Z"
begin_of_the_end: "2025-07-30T18:05:15Z"
end_of_the_end: "2025-07-30T18:05:15Z"
description: Precise social media post timestamp
- value:
temporal_extent:
begin_of_the_begin: "1892-01-01T00:00:00Z"
end_of_the_begin: "1892-06-30T00:00:00Z"
begin_of_the_end: "1892-06-30T00:00:00Z"
end_of_the_end: "1892-12-31T00:00:00Z"
has_or_had_label: "First Edition"
description: Historical publication with uncertain date (sometime in 1892)

View file

@ -0,0 +1,162 @@
id: https://nde.nl/ontology/hc/class/Publisher
name: Publisher
title: Publisher Class
description: |
Represents a publisher entity for publications and documents.
CREATED 2026-01-17 per Rule 53/56: Class for structured publisher representation.
Replaces string-valued publisher slot with structured data including:
- Publisher name (required)
- Publisher type (institutional, commercial, academic, self-published)
- Location/city
- Identifiers (ISNI, Wikidata)
- URL
**Ontology Alignment**:
- **Schema.org**: schema:Organization (primary - web discoverability)
- **Dublin Core**: dcterms:Agent (abstract agent entity)
- **FOAF**: foaf:Organization (friend-of-a-friend vocabulary)
**Publisher Types**:
| Type | Description | Example |
|------|-------------|---------|
| institutional | Museum, archive, or library publishing | Rijksmuseum, British Museum Press |
| commercial | Trade and commercial publishers | Thames & Hudson, Phaidon |
| academic | University and academic presses | Yale University Press, MIT Press |
| self-published | Self-publishing by individuals | Artist monographs |
| government | Government publishing offices | GPO, HMSO |
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/
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_label
- ../slots/has_or_had_identifier
- ../slots/has_or_had_location
- ../slots/has_or_had_url
- ../slots/has_or_had_type
- ../slots/specificity_annotation
- ../slots/has_or_had_score
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
default_prefix: hc
classes:
Publisher:
class_uri: schema:Organization
description: |
A publisher of publications, catalogs, finding aids, or other documents.
Supports structured representation with name, type, location, and identifiers.
CREATED 2026-01-17 per Rule 53/56: Replaces string-valued publisher slot.
exact_mappings:
- schema:Organization
- foaf:Organization
close_mappings:
- dcterms:Agent
slots:
- has_or_had_label
- has_or_had_identifier
- has_or_had_location
- has_or_had_url
- has_or_had_type
- specificity_annotation
- has_or_had_score
slot_usage:
has_or_had_label:
required: true
range: string
description: |
Name of the publisher.
Required field - every publisher must have a name.
examples:
- value: Rijksmuseum
description: Dutch national museum publisher
- value: Yale University Press
description: Academic press
- value: Thames & Hudson
description: Commercial art publisher
- value: The British Museum Press
description: Institutional publisher
has_or_had_type:
required: false
range: string
description: |
Type classification of the publisher.
Common values:
- institutional: Museums, archives, libraries
- commercial: Trade publishers
- academic: University presses
- self-published: Individual publishing
- government: Government publishing offices
examples:
- value: institutional
- value: commercial
- value: academic
- value: government
has_or_had_location:
required: false
range: string
description: |
Location/city of the publisher.
Typically the city where the publisher is headquartered.
examples:
- value: Amsterdam
- value: New York
- value: London
- value: New Haven
has_or_had_identifier:
required: false
range: uriorcurie
multivalued: true
description: |
Identifiers for the publisher (ISNI, Wikidata Q-number, etc.).
examples:
- value: "Q190804"
description: Wikidata identifier for Rijksmuseum
- value: "0000000121671840"
description: ISNI identifier
has_or_had_url:
required: false
range: uri
description: |
Official website URL of the publisher.
examples:
- value: "https://www.rijksmuseum.nl"
- value: "https://yalebooks.yale.edu"
examples:
- value:
has_or_had_label: Rijksmuseum
has_or_had_type: institutional
has_or_had_location: Amsterdam
has_or_had_url: "https://www.rijksmuseum.nl"
description: Museum as institutional publisher
- value:
has_or_had_label: Yale University Press
has_or_had_type: academic
has_or_had_location: New Haven
has_or_had_url: "https://yalebooks.yale.edu"
description: Academic press publisher
- value:
has_or_had_label: Thames & Hudson
has_or_had_type: commercial
has_or_had_location: London
description: Commercial art book publisher
- value:
has_or_had_label: The British Museum Press
has_or_had_type: institutional
has_or_had_location: London
description: Museum press as institutional publisher
- value:
has_or_had_label: Hannibal Publishing
has_or_had_type: commercial
has_or_had_location: Veurne
description: Belgian art book publisher

View file

@ -17,7 +17,10 @@ imports:
- ../slots/is_official_content
- ../slots/platform_type
- ../slots/posted_by_profile
- ../slots/published_at
# - ../slots/published_at # ARCHIVED 2026-01-17 - migrated per Rule 53/56
- ../slots/is_or_was_published_at # was: published_at - migrated per Rule 53/56 (2026-01-17)
- ./PublicationEvent # for is_or_was_published_at range
- ./TimeSpan # for PublicationEvent.temporal_extent
- ../slots/retrieval_timestamp
- ../slots/specificity_annotation
- ../slots/is_or_was_categorized_as # was: tag - migrated per Rule 53/56 (2026-01-16)
@ -63,7 +66,7 @@ classes:
\ TRACKING**:\n\nContent items are OBSERVATIONAL data retrieved via:\n- Platform APIs (YouTube Data API, Twitter API,\
\ etc.)\n- Web scraping (when API unavailable)\n- Manual archival\n\nEach content record includes:\n- `retrieval_timestamp`:\
\ When content was fetched\n- `api_endpoint`: Which API/method was used\n- `metrics_observed_date`: When engagement\
\ metrics were recorded\n\n**TEMPORAL CONSIDERATIONS**:\n\nContent has multiple temporal dimensions:\n- `published_at`:\
\ metrics were recorded\n\n**TEMPORAL CONSIDERATIONS**:\n\nContent has multiple temporal dimensions:\n- `is_or_was_published_at`:\
\\ When originally posted\\n- `was_last_updated_at`: Last modification by author\\n- `retrieval_timestamp`: When we fetched it\\n\\
- `metrics_observed_date`: When metrics (views, likes) were recorded\n\nEngagement metrics change constantly; always\
\ record observation timestamp.\n\n**SUBCLASSES**:\n\n- VideoPost: YouTube, TikTok, Vimeo videos\n- ImagePost: Instagram,\
@ -88,7 +91,7 @@ classes:
- language
- platform_type
- posted_by_profile
- published_at
- is_or_was_published_at # was: published_at - migrated per Rule 53/56 (2026-01-17)
- retrieval_timestamp
- specificity_annotation
- is_or_was_categorized_as # was: tag - migrated per Rule 53/56 (2026-01-16)
@ -135,12 +138,21 @@ classes:
examples:
- value: De videoreeks De Vrijheidsroute is gebaseerd op de gelijknamige fietsroute...
description: YouTube video description
published_at:
range: datetime
is_or_was_published_at: # was: published_at - migrated per Rule 53/56 (2026-01-17)
range: PublicationEvent
required: true
inlined: true
description: |
Publication event with temporal extent. For precise timestamps,
set all four TimeSpan boundaries to the same instant.
examples:
- value: '2025-07-30T18:05:15Z'
description: Published July 30, 2025
- value:
temporal_extent:
begin_of_the_begin: '2025-07-30T18:05:15Z'
end_of_the_begin: '2025-07-30T18:05:15Z'
begin_of_the_end: '2025-07-30T18:05:15Z'
end_of_the_end: '2025-07-30T18:05:15Z'
description: Published July 30, 2025 (precise timestamp)
was_last_updated_at: # was: updated_at - migrated per Rule 53
range: datetime
required: false

View file

@ -20,7 +20,10 @@ imports:
- ../slots/has_or_had_post_type
- ../slots/post_url
- ../slots/posted_by_profile
- ../slots/published_at
# - ../slots/published_at # ARCHIVED 2026-01-17 - migrated per Rule 53/56
- ../slots/is_or_was_published_at # was: published_at - migrated per Rule 53/56 (2026-01-17)
- ./PublicationEvent # for is_or_was_published_at range
- ./TimeSpan # for PublicationEvent.temporal_extent
- ../slots/retrieval_timestamp
- ../slots/specificity_annotation
- ../slots/is_or_was_categorized_as # was: tag - migrated per Rule 53/56 (2026-01-16)
@ -75,7 +78,7 @@ classes:
\ data retrieved via:\n- Platform APIs (YouTube Data API, Twitter API, etc.)\n- Web scraping (when API unavailable)\n\
- Manual archival\n\nEach content record includes:\n- `retrieval_timestamp`: When content was fetched\n- `api_endpoint`:\
\ Which API/method was used\n- `metrics_observed_date`: When engagement metrics were recorded\n\n**TEMPORAL CONSIDERATIONS**:\n\
\\nContent has multiple temporal dimensions:\\n- `published_at`: When originally posted\\n- `was_last_updated_at`: Last modification\\\n \\ by author\\n- `retrieval_timestamp`: When we fetched it\\n- `metrics_observed_date`: When metrics (views, likes) were\\
\\nContent has multiple temporal dimensions:\\n- `is_or_was_published_at`: When originally posted\\n- `was_last_updated_at`: Last modification\\\n \\ by author\\n- `retrieval_timestamp`: When we fetched it\\n- `metrics_observed_date`: When metrics (views, likes) were\\
\ recorded\n\nEngagement metrics change constantly; always record observation timestamp.\n\n**SUBCLASSES FOR SPECIALIZED\
\ CONTENT**:\n\nWhile SocialMediaPost can represent any content with post_types,\nspecialized subclasses provide additional\
\ platform-specific slots:\n\n- **VideoPost**: YouTube, TikTok, Vimeo videos (duration, definition, captions)\n- **ImagePost**:\
@ -101,7 +104,7 @@ classes:
- has_or_had_post_type
- post_url
- posted_by_profile
- published_at
- is_or_was_published_at # was: published_at - migrated per Rule 53/56 (2026-01-17)
- retrieval_timestamp
- specificity_annotation
- is_or_was_categorized_as # was: tag - migrated per Rule 53/56 (2026-01-16)
@ -162,12 +165,21 @@ classes:
examples:
- value: De videoreeks De Vrijheidsroute is gebaseerd op de gelijknamige fietsroute...
description: YouTube video description
published_at:
range: datetime
is_or_was_published_at: # was: published_at - migrated per Rule 53/56 (2026-01-17)
range: PublicationEvent
required: true
inlined: true
description: |
Publication event with temporal extent. For precise timestamps,
set all four TimeSpan boundaries to the same instant.
examples:
- value: '2025-07-30T18:05:15Z'
description: Published July 30, 2025
- value:
temporal_extent:
begin_of_the_begin: '2025-07-30T18:05:15Z'
end_of_the_begin: '2025-07-30T18:05:15Z'
begin_of_the_end: '2025-07-30T18:05:15Z'
end_of_the_end: '2025-07-30T18:05:15Z'
description: Published July 30, 2025 (precise timestamp)
was_last_updated_at: # was: updated_at - migrated per Rule 53
range: datetime
required: false

View file

@ -14,6 +14,12 @@ imports:
- ../slots/has_or_had_label
- ../slots/has_or_had_description
- ../slots/has_or_had_identifier
- ../slots/jurisdiction
- ../slots/deduction_percentage
- ../slots/regulatory_body
- ../slots/legal_basis
- ../slots/effective_date
- ../slots/expiration_date
- ./TaxSchemeType
- ./TaxSchemeTypes
default_prefix: hc
@ -245,43 +251,3 @@ classes:
discovery.
replaces_slot: tax_scheme
migration_date: "2026-01-16"
# Define additional slots needed for TaxScheme
slots:
jurisdiction:
slot_uri: schema:areaServed
range: string
description: |
ISO 3166-1 alpha-2 country code indicating the jurisdiction
where this tax scheme applies.
deduction_percentage:
slot_uri: hc:deductionPercentage
range: integer
description: |
Percentage of donation amount that is tax-deductible.
100 = full deduction, >100 = enhanced cultural multiplier.
regulatory_body:
slot_uri: schema:provider
range: string
description: |
Name of the government agency administering the tax scheme.
legal_basis:
slot_uri: schema:legislationApplied
range: string
description: |
Legal statute, act, or regulation establishing the scheme.
effective_date:
slot_uri: schema:validFrom
range: date
description: |
Date when the scheme status became effective.
expiration_date:
slot_uri: schema:validThrough
range: date
description: |
Date when the scheme status expires (if applicable).

View file

@ -66,43 +66,44 @@ classes:
# DATABASE TYPES
# ============================================================
Database:
DatabaseSystem:
is_a: TechnologicalInfrastructureType
class_uri: hc:Database
class_uri: hc:DatabaseSystem
description: |
Database management system.
Database management system technology.
Examples: PostgreSQL, MySQL, MongoDB, Elasticsearch, Neo4j
Note: For finding aid classification, use Database from FindingAidTypes.
RelationalDatabase:
is_a: Database
is_a: DatabaseSystem
class_uri: hc:RelationalDatabase
description: |
SQL-based relational database.
Examples: PostgreSQL, MySQL, MariaDB, Oracle, SQL Server
DocumentDatabase:
is_a: Database
is_a: DatabaseSystem
class_uri: hc:DocumentDatabase
description: |
NoSQL document-oriented database.
Examples: MongoDB, CouchDB, RavenDB
GraphDatabase:
is_a: Database
is_a: DatabaseSystem
class_uri: hc:GraphDatabase
description: |
Graph database for relationship-heavy data.
Examples: Neo4j, Amazon Neptune, JanusGraph, Blazegraph
SearchIndex:
is_a: Database
is_a: DatabaseSystem
class_uri: hc:SearchIndex
description: |
Full-text search and indexing system.
Examples: Solr, Elasticsearch, OpenSearch, Meilisearch
TripleStore:
is_a: Database
is_a: DatabaseSystem
class_uri: hc:TripleStore
description: |
RDF triple store for linked data.
@ -131,17 +132,19 @@ classes:
description: |
GraphQL query language API.
SPARQLEndpoint:
SPARQLProtocol:
is_a: APIProtocol
class_uri: hc:SPARQLEndpoint
class_uri: hc:SPARQLProtocol
description: |
SPARQL query endpoint for RDF data.
SPARQL query protocol for RDF data.
Note: For endpoint classification, use SPARQLEndpoint from DataServiceEndpointTypes.
OAIPMHEndpoint:
OAIPMHProtocol:
is_a: APIProtocol
class_uri: hc:OAIPMHEndpoint
class_uri: hc:OAIPMHProtocol
description: |
OAI-PMH protocol for metadata harvesting.
Note: For endpoint classification, use OAIPMHEndpoint class.
IIIFEndpoint:
is_a: APIProtocol

View file

@ -39,7 +39,8 @@ imports:
- ../slots/linked_data_access
- ../slots/portal_type_category
- ../slots/portal_typical_domain
- ../slots/published_by
# - ../slots/published_by # ARCHIVED 2026-01-17 - migrated per Rule 53/56
- ../slots/is_or_was_published_by # was: published_by - migrated per Rule 53/56 (2026-01-17)
- ../slots/specificity_annotation
- ../slots/is_or_was_superseded_by # was: succeeded_by - migrated per Rule 53/56 (2026-01-17)
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
@ -1214,7 +1215,7 @@ classes:
**LINKING**:
- `published_by`: The Custodian that published this dataset
- `is_or_was_published_by`: The Custodian that published this dataset
- `sparql_endpoint`: LinkedDataHub providing semantic access
@ -1229,7 +1230,7 @@ classes:
- dataset_title
- download_endpoint
- linked_data_access
- published_by
- is_or_was_published_by # was: published_by - migrated per Rule 53/56 (2026-01-17)
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
exact_mappings:

View file

@ -42,7 +42,7 @@ slots:
conditions: "Personal research use only, no flash"
```
slot_uri: schema:amenityFeature
range: string
range: uriorcurie # Broadened from string per Rule 55 (2026-01-17) to resolve OWL ambiguous type
multivalued: true
exact_mappings:
- schema:amenityFeature

View file

@ -0,0 +1,39 @@
id: https://nde.nl/ontology/hc/slot/deduction_percentage
name: deduction_percentage_slot
title: Deduction Percentage Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
slots:
deduction_percentage:
slot_uri: hc:deductionPercentage
description: |
Percentage of donation amount that is tax-deductible.
Values over 100 indicate enhanced cultural multipliers:
- 100: Standard full deduction (ANBI in NL, 501(c)(3) in US)
- 125: Cultural ANBI in Netherlands (100% + 25% cultural bonus)
- 66: French individual mécénat rate
**USAGE**:
Used with TaxScheme class to document the tax benefit percentage
available to donors for contributions to heritage institutions.
range: integer
minimum_value: 0
exact_mappings:
- schema:discount
annotations:
custodian_types: '["*"]'
custodian_types_rationale: Tax benefits apply to all heritage custodian types
specificity_score: 0.50
specificity_rationale: Relevant for donation and fiscal queries
comments:
- "Integer percentage, typically 0-125"
- "Values >100 represent enhanced cultural multipliers"
- "Created 2026-01-17 for TaxScheme class per Rule 48"

View file

@ -0,0 +1,38 @@
id: https://nde.nl/ontology/hc/slot/expiration_date
name: expiration_date_slot
title: Expiration Date Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
slots:
expiration_date:
slot_uri: schema:validThrough
description: |
Date when a status, registration, or scheme expires.
**USAGE**:
Used with TaxScheme, AccreditationStatus, License, and similar
classes to document when the relevant status/registration expires.
**NULL SEMANTICS**:
A null value typically indicates no expiration (indefinite validity)
or that expiration tracking is not applicable.
range: date
exact_mappings:
- schema:validThrough
close_mappings:
- schema:expires
annotations:
custodian_types: '["*"]'
custodian_types_rationale: All heritage custodians have dated statuses
specificity_score: 0.40
specificity_rationale: Generic temporal slot applicable across many contexts
comments:
- "ISO 8601 date format (YYYY-MM-DD)"
- "Created 2026-01-17 for TaxScheme class per Rule 48"

View file

@ -0,0 +1,52 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_publisher
name: has_or_had_publisher_slot
title: Has or Had Publisher Slot
description: |
Generic slot for publisher relationships following RiC-O temporal naming convention.
CREATED 2026-01-17 per Rule 53/56: Replaces publisher string slot.
Provides structured publisher representation via Publisher class.
Supports:
- Institutional publishers (museums, universities)
- Commercial publishers (academic presses, trade publishers)
- Self-published works
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_publisher:
slot_uri: dcterms:publisher
description: |
The publisher of a publication or document.
MIGRATED from publisher slot per Rule 53/56 (2026-01-17).
Uses Publisher class for structured representation including:
- Publisher name
- Publisher type (commercial, institutional, self-published)
- Location
- Identifiers (ISNI, Wikidata)
range: Publisher
multivalued: true
inlined: true
exact_mappings:
- dcterms:publisher
- schema:publisher
close_mappings:
- bf:provisionActivity
examples:
- value:
has_or_had_label: Rijksmuseum
publisher_type: institutional
has_or_had_location: Amsterdam
description: Museum as institutional publisher
- value:
has_or_had_label: Yale University Press
publisher_type: commercial
has_or_had_location: New Haven
description: Academic press publisher

View file

@ -49,7 +49,7 @@ slots:
- `rico:includes` - RiC-O inclusion relationship
- `org:hasUnit` - W3C ORG subunit relationship
- `dcterms:hasPart` - Dublin Core part-whole relationship
range: string
range: uriorcurie # Broadened from string per Rule 55 (2026-01-17) to resolve OWL ambiguous type
multivalued: true
slot_uri: rico:includes
exact_mappings:

View file

@ -0,0 +1,63 @@
id: https://nde.nl/ontology/hc/slot/is_or_was_published_at
name: is_or_was_published_at_slot
title: Is or Was Published At Slot
description: |
Generic slot for publication events following RiC-O temporal naming convention.
CREATED 2026-01-17 per Rule 53/56: Replaces published_at datetime slot.
Provides structured publication event representation via PublicationEvent class.
Supports:
- Social media posts with precise timestamps
- Documents with publication dates
- Historical publications with uncertain dates (fuzzy boundaries)
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
crm: http://www.cidoc-crm.org/cidoc-crm/
prov: http://www.w3.org/ns/prov#
imports:
- linkml:types
- ../classes/PublicationEvent
default_prefix: hc
slots:
is_or_was_published_at:
slot_uri: dcterms:created
description: |
Publication event for content/document.
MIGRATED from published_at slot per Rule 53/56 (2026-01-17).
Renamed to follow RiC-O temporal naming conventions (Rule 39).
Uses PublicationEvent class for structured representation including:
- Temporal extent (precise or fuzzy via TimeSpan)
- Optional event label (e.g., "First Edition")
- Event identifier for tracking
**For simple timestamps**: Create PublicationEvent with all four
TimeSpan boundaries set to the same instant.
range: PublicationEvent
multivalued: false
inlined: true
exact_mappings:
- dcterms:created
- schema:datePublished
close_mappings:
- crm:P4_has_time-span
- prov:atTime
examples:
- value:
temporal_extent:
begin_of_the_begin: "2025-07-30T18:05:15Z"
end_of_the_begin: "2025-07-30T18:05:15Z"
begin_of_the_end: "2025-07-30T18:05:15Z"
end_of_the_end: "2025-07-30T18:05:15Z"
description: Social media post with precise timestamp
- value:
temporal_extent:
begin_of_the_begin: "1892-01-01T00:00:00Z"
end_of_the_end: "1892-12-31T00:00:00Z"
has_or_had_label: "Original Edition"
description: Historical publication with uncertain date

View file

@ -0,0 +1,51 @@
id: https://nde.nl/ontology/hc/slot/is_or_was_published_by
name: is_or_was_published_by_slot
title: Is or Was Published By Slot
description: |
Generic slot for dataset-to-custodian publisher relationships.
CREATED 2026-01-17 per Rule 53/56: Renamed from published_by to follow
RiC-O temporal naming conventions (Rule 39).
Retains Custodian range (not Publisher) as this slot is specifically for
datasets published by heritage institutions, not commercial publications.
Supports:
- Dataset registry entries published by custodians
- Linked open data published by heritage institutions
- Digital collections made available by custodians
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
dcterms: http://purl.org/dc/terms/
dcat: http://www.w3.org/ns/dcat#
schema: http://schema.org/
imports:
- linkml:types
- ../classes/Custodian
default_prefix: hc
slots:
is_or_was_published_by:
slot_uri: dcterms:publisher
description: |
The Custodian (heritage institution) that published this dataset.
Links the dataset to its source institution.
MIGRATED from published_by slot per Rule 53/56 (2026-01-17).
Renamed to follow RiC-O temporal naming conventions (Rule 39).
Note: Uses Custodian class (not Publisher) because this slot is
specifically for datasets published by heritage institutions.
For commercial publications, use has_or_had_publisher instead.
range: Custodian
inlined: false
exact_mappings:
- dcterms:publisher
- dcat:publisher
close_mappings:
- schema:publisher
examples:
- value: "ghcid:NL-NH-AMS-M-RM"
description: Rijksmuseum publishing a dataset to national registry
- value: "ghcid:NL-ZH-DHA-A-NA"
description: Nationaal Archief publishing linked open data

View file

@ -32,7 +32,7 @@ description: 'Legal/administrative jurisdiction where an entity operates or is r
slots:
jurisdiction:
slot_uri: gleif_base:hasCoverageArea
range: Jurisdiction
range: uriorcurie # Broadened per Rule 55 (2026-01-17) to resolve OWL ambiguous type
required: false
multivalued: false
inlined: true

View file

@ -0,0 +1,43 @@
id: https://nde.nl/ontology/hc/slot/regulatory_body
name: regulatory_body_slot
title: Regulatory Body Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
org: http://www.w3.org/ns/org#
default_prefix: hc
imports:
- linkml:types
slots:
regulatory_body:
slot_uri: schema:provider
description: |
Name of the government agency or regulatory body administering a scheme,
license, or registration.
**EXAMPLES**:
- Belastingdienst (Dutch Tax Authority)
- HMRC (UK tax authority)
- IRS (US Internal Revenue Service)
- RCE (Rijksdienst voor het Cultureel Erfgoed)
- Charity Commission (UK)
**USAGE**:
Used with TaxScheme, AccreditationStatus, and similar classes
to document which authority administers the relevant program.
range: string
exact_mappings:
- schema:provider
close_mappings:
- org:Organization
annotations:
custodian_types: '["*"]'
custodian_types_rationale: All heritage custodians interact with regulatory bodies
specificity_score: 0.45
specificity_rationale: Relevant for compliance and governance queries
comments:
- "String value with name of regulatory body"
- "Created 2026-01-17 for TaxScheme class per Rule 48"

View file

@ -6794,18 +6794,21 @@ fixes:
timestamp: '2026-01-17T20:10:00Z'
session: session-2026-01-17-slot-migration
notes: |
WELL_STRUCTURED_NO_MIGRATION_NEEDED: publisher slot already has proper
ontology alignment:
- slot_uri: dcterms:publisher
- exact_mappings: dcterms:publisher, schema:publisher
- Range: string (appropriate for publisher names)
FULLY_MIGRATED (2026-01-17):
Creating a Publisher class would be appropriate for structured publisher
entities with metadata, but current string usage is correct for simple
publisher name references in catalogs.
Migration executed per Rule 53/56:
- Created: modules/slots/has_or_had_publisher.yaml (dcterms:publisher alignment)
- Created: modules/classes/Publisher.yaml (schema:Organization class)
- Updated: FindingAid.yaml (import, slots, slot_usage with 2 examples)
- Updated: ExhibitionCatalog.yaml (import, slots, slot_usage with 3 examples, 3 class examples)
- Archived: modules/slots/archive/publisher_archived_20260117.yaml
Used in: FindingAid.yaml, ExhibitionCatalog.yaml
Retaining with existing dcterms:publisher alignment.
Publisher class supports:
- has_or_had_label (required) - publisher name
- has_or_had_type - institutional/commercial/academic/government
- has_or_had_location - city
- has_or_had_identifier - ISNI, Wikidata
- has_or_had_url - official website
- original_slot_id: https://nde.nl/ontology/hc/slot/published_by
revision:
- label: is_or_was_published_by
@ -6814,19 +6817,23 @@ fixes:
type: class
processed:
status: true
timestamp: '2026-01-17T20:10:00Z'
timestamp: '2026-01-17T21:30:00Z'
session: session-2026-01-17-slot-migration
notes: |
WELL_STRUCTURED_ALREADY_USES_CLASS: published_by slot already has:
- slot_uri: dcterms:publisher
- Range: Custodian (ALREADY using a class for structured publisher!)
- inlined: false (reference to Custodian entity)
FULLY_MIGRATED: Renamed published_by to is_or_was_published_by per Rule 39/53/56.
This is already the target pattern - linking to a class rather than string.
No migration needed as it already uses Custodian as the publisher class.
Slot name changed to follow RiC-O temporal naming conventions (Rule 39).
Range RETAINED as Custodian (not Publisher) because this slot is specifically
for datasets published by heritage institutions, not commercial publications.
Used in: WebPortalTypes.yaml
Retaining with existing Custodian range.
Files changed:
- CREATED: modules/slots/is_or_was_published_by.yaml
- UPDATED: modules/classes/WebPortalTypes.yaml (import + 2 slot references)
- ARCHIVED: modules/slots/archive/published_by_archived_20260117.yaml
Note: Revision specified Publisher class but Custodian is semantically correct
for dataset→institution relationships. Publisher class is used separately for
has_or_had_publisher (commercial/institutional publication publishers).
- original_slot_id: https://nde.nl/ontology/hc/slot/published_at
revision:
- label: is_or_was_published_at