Compare commits
No commits in common. "fcb704c97ea3c3db569442d428183e1a4e50822c" and "b68d580c822b055cf22c027269d4066cd5e1d70d" have entirely different histories.
fcb704c97e
...
b68d580c82
7354 changed files with 168107 additions and 394727 deletions
|
|
@ -1,46 +0,0 @@
|
|||
# Rule: Do Not Delete From slot_fixes.yaml
|
||||
|
||||
**Identifier**: `no-deletion-from-slot-fixes`
|
||||
**Severity**: **CRITICAL**
|
||||
|
||||
## Core Directive
|
||||
|
||||
**NEVER delete entries from `slot_fixes.yaml`.**
|
||||
|
||||
The `slot_fixes.yaml` file serves as the historical record and audit trail for all schema migrations. Removing entries destroys this history and violates the project's data integrity principles.
|
||||
|
||||
## Workflow
|
||||
|
||||
When processing a migration:
|
||||
|
||||
1. **Do NOT Remove**: Never delete the entry for the slot you are working on.
|
||||
2. **Update `processed`**: Instead, update the `processed` block:
|
||||
* Set `status: true`.
|
||||
* Set `date` to the current date (YYYY-MM-DD).
|
||||
* Add a detailed `notes` string explaining what was done (e.g., "Fully migrated to [new_slot] + [Class] (Rule 53). [File].yaml updated. Slot archived.").
|
||||
3. **Preserve History**: The entry must remain in the file permanently as a record of the migration.
|
||||
|
||||
## Rationale
|
||||
|
||||
* **Audit Trail**: We need to know what was migrated, when, and how.
|
||||
* **Reversibility**: If a migration introduces a bug, the record helps us understand the original state.
|
||||
* **Completeness**: The file tracks the total progress of the schema refactoring project.
|
||||
|
||||
## Example
|
||||
|
||||
**WRONG (Deletion)**:
|
||||
```yaml
|
||||
# DELETED from file
|
||||
# - original_slot_id: ...
|
||||
```
|
||||
|
||||
**CORRECT (Update)**:
|
||||
```yaml
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/has_some_slot
|
||||
processed:
|
||||
status: true
|
||||
date: '2026-01-27'
|
||||
notes: Fully migrated to has_or_had_new_slot + NewClass (Rule 53).
|
||||
revision:
|
||||
...
|
||||
```
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
# Rule: Preserve Bespoke Slots Until Refactoring
|
||||
|
||||
**Identifier**: `preserve-bespoke-slots-until-refactoring`
|
||||
**Severity**: **CRITICAL**
|
||||
|
||||
## Core Directive
|
||||
|
||||
**DO NOT remove or migrate "additional" bespoke slots during generic migration passes unless they are the specific target of the current task.**
|
||||
|
||||
## Context
|
||||
|
||||
When migrating a specific slot (e.g., `has_approval_date`), you may encounter other bespoke or legacy slots in the same class file (e.g., `innovation_budget`, `operating_budget`).
|
||||
|
||||
**YOU MUST**:
|
||||
* ✅ Migrate ONLY the specific slot you were instructed to work on.
|
||||
* ✅ Leave other bespoke slots exactly as they are.
|
||||
* ✅ Focus strictly on the current migration target.
|
||||
|
||||
**YOU MUST NOT**:
|
||||
* ❌ Proactively migrate "nearby" slots just because they look like they need refactoring.
|
||||
* ❌ Remove slots that seem unused or redundant without specific instruction.
|
||||
* ❌ "Clean up" the class file by removing legacy attributes.
|
||||
|
||||
## Rationale
|
||||
|
||||
Refactoring is a separate, planned phase. Mixing opportunistic refactoring with systematic slot migration increases the risk of regression and makes changes harder to review. "We will refactor those later."
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Identify Target**: Identify the specific slot(s) assigned for migration (from `slot_fixes.yaml` or user prompt).
|
||||
2. **Execute Migration**: Apply changes ONLY for those slots.
|
||||
3. **Ignore Others**: Do not touch other slots in the file, even if they violate other rules (like Rule 39 or Rule 53). Those will be handled in their own dedicated tasks.
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
# Rule: Slot Fixes File is Authoritative
|
||||
|
||||
**Scope:** Schema Migration / Slot Fixes
|
||||
|
||||
**Description:**
|
||||
The file `/Users/kempersc/apps/glam/data/fixes/slot_fixes.yaml` is the **single authoritative source** for tracking slot migrations and fixes.
|
||||
|
||||
**Directives:**
|
||||
1. **Authoritative Source:** Always read and update `/Users/kempersc/apps/glam/data/fixes/slot_fixes.yaml`. Do NOT use `schemas/.../slot_fixes.yaml` as the master list (though you may need to sync them if they diverge, the `data/fixes` version takes precedence).
|
||||
2. **Processed Status:** When a slot migration is completed (schema updated, data migrated), you MUST update the entry in `slot_fixes.yaml` with a `processed` block containing:
|
||||
* `status: true`
|
||||
* `date: 'YYYY-MM-DD'`
|
||||
* `notes`: Brief description of what was done.
|
||||
3. **NEVER DELETE:** You MUST NOT delete entries from `slot_fixes.yaml`. Even if a slot is removed from the schema, the record of its fix MUST remain in this file with `status: true`.
|
||||
4. **Format Compliance:** New slots added during migration must follow proper LinkML format conventions and use `slot_uri` and mappings (`exact_mappings`, `close_mappings`) that reference **legitimate predicates and classes found in `/Users/kempersc/apps/glam/data/ontology/`**.
|
||||
|
||||
**Example of Processed Entry:**
|
||||
```yaml
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/has_old_slot
|
||||
revision:
|
||||
- label: has_new_slot
|
||||
type: slot
|
||||
- label: NewClass
|
||||
type: class
|
||||
processed:
|
||||
status: true
|
||||
date: '2026-01-27'
|
||||
notes: Migrated to has_new_slot + NewClass. Old slot archived.
|
||||
```
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
# Rule 62: Verified Ontology Terms Reference
|
||||
|
||||
🚨 **CRITICAL**: All `class_uri`, `slot_uri`, and mapping properties (`exact_mappings`, `close_mappings`, etc.) MUST use verified classes and predicates that exist in the local ontology files at `data/ontology/`.
|
||||
|
||||
## 1. Verified Ontology Files
|
||||
|
||||
The following ontologies are locally available in `data/ontology/`. Always verify terms against these specific files. **NO HALLUCINATIONS ALLOWED.**
|
||||
|
||||
**Mandatory Verification Step**: Before using any `class_uri`, `slot_uri`, or mapping URI, you MUST `grep` the term in the local ontology file to confirm it exists.
|
||||
|
||||
| Prefix | Namespace | Local File | Key Classes/Predicates (Verified) |
|
||||
|--------|-----------|------------|-----------------------------------|
|
||||
| `cpov:` | `http://data.europa.eu/m8g/` | `core-public-organisation-ap.ttl` | `PublicOrganisation`, `contactPage`, `email` |
|
||||
| `crm:` | `http://www.cidoc-crm.org/cidoc-crm/` | `CIDOC_CRM_v7.1.3.rdf` | `E1_CRM_Entity`, `E5_Event`, `P2_has_type` |
|
||||
| `rico:` | `https://www.ica.org/standards/RiC/ontology#` | `RiC-O_1-1.rdf` | `Record`, `Agent`, `hasOrHadHolder` (Note: Use v1.1 file) |
|
||||
| `pico:` | `https://personsincontext.org/model#` | `pico.ttl` | `PersonObservation`, `role` |
|
||||
| `prov:` | `http://www.w3.org/ns/prov#` | `prov.ttl` | `Activity`, `Agent`, `wasGeneratedBy` |
|
||||
| `skos:` | `http://www.w3.org/2004/02/skos/core#` | `skos.rdf` | `Concept`, `prefLabel`, `broader` |
|
||||
| `schema:` | `https://schema.org/` | `frontend/public/ontology/schemaorg.owl` | `Organization`, `Place`, `name`, `url` |
|
||||
| `dcterms:` | `http://purl.org/dc/terms/` | `dublin_core_elements.rdf` | `identifier`, `title`, `description` |
|
||||
| `org:` | `http://www.w3.org/ns/org#` | `org.rdf` | `Organization`, `hasMember` |
|
||||
| `tooi:` | `https://identifier.overheid.nl/tooi/def/ont/` | `tooiont.ttl` | `Overheidsorganisatie` |
|
||||
| `dcat:` | `http://www.w3.org/ns/dcat#` | `dcat3.ttl` | `Dataset`, `Catalog`, `dataset` |
|
||||
| `gn:` | `https://www.geonames.org/ontology#` | `geonames_ontology.rdf` | `Feature` |
|
||||
| `dqv:` | `http://www.w3.org/ns/dqv#` | `dqv.ttl` | `QualityMeasurement`, `hasQualityAnnotation` |
|
||||
| `premis:` | `http://www.loc.gov/premis/rdf/v3/` | `premis3.owl` | `fixity`, `storedAt`, `Event` |
|
||||
|
||||
## 2. Verification Procedure (MANDATORY)
|
||||
|
||||
**You MUST verify every term.** Do not assume a term exists just because it sounds standard.
|
||||
|
||||
```bash
|
||||
# 1. Identify the source ontology file
|
||||
ls data/ontology/
|
||||
|
||||
# 2. Grep for the specific term (e.g., 'hasFixity')
|
||||
grep "hasFixity" data/ontology/premis3.owl
|
||||
# Result: EMPTY -> Term does not exist! DO NOT USE.
|
||||
|
||||
# 3. Grep for the correct term (e.g., 'fixity')
|
||||
grep "fixity" data/ontology/premis3.owl
|
||||
# Result: <owl:ObjectProperty rdf:about=".../fixity"> -> Term exists. USE THIS.
|
||||
```
|
||||
|
||||
## 3. LinkML Mapping Requirements
|
||||
|
||||
Mappings must be precise and verified.
|
||||
|
||||
* `exact_mappings` = `skos:exactMatch` (Semantic equivalence)
|
||||
* `close_mappings` = `skos:closeMatch` (Near equivalence)
|
||||
* `related_mappings` = `skos:relatedMatch` (Association)
|
||||
* `broad_mappings` = `skos:broadMatch` (Broader concept)
|
||||
* `narrow_mappings` = `skos:narrowMatch` (Narrower concept)
|
||||
|
||||
## 4. Prohibited/Invalid Terms (Hallucinations)
|
||||
|
||||
Do NOT use these commonly hallucinated or incorrect terms. They have been verified as **non-existent** in our local ontologies:
|
||||
|
||||
* ❌ `dqv:ConfidenceScore` (Use `dqv:QualityMeasurement`)
|
||||
* ❌ `premis:hasFixity` (Use `premis:fixity`)
|
||||
* ❌ `premis:hasFrameRate` (Verify specific PREMIS properties first)
|
||||
* ❌ `schema:HeritageBuilding` (Use `schema:LandmarksOrHistoricalBuildings`)
|
||||
* ❌ `rico:has_provenance` (Use `rico:history`)
|
||||
* ❌ `rico:hasProvenance` (Use `rico:history`)
|
||||
* ❌ `schema:archive` (Use `schema:archiveHeld` or `schema:archivedAt`)
|
||||
|
||||
**Always verify against the local file content.**
|
||||
|
||||
13
AGENTS.md
13
AGENTS.md
|
|
@ -4806,16 +4806,3 @@ def test_historical_addition():
|
|||
**Schema Version**: v0.2.1 (modular)
|
||||
**Last Updated**: 2025-12-08
|
||||
**Maintained By**: GLAM Data Extraction Project
|
||||
|
||||
### Rule 61: Slot Fixes Authoritative File
|
||||
|
||||
🚨 **CRITICAL**: The file `/Users/kempersc/apps/glam/data/fixes/slot_fixes.yaml` is the AUTHORITATIVE source for slot migrations. NEVER delete entries from this file. Always mark completed migrations with `processed: {status: true}`.
|
||||
|
||||
**See**: `.opencode/rules/slot-fixes-authoritative-rule.md` for complete documentation
|
||||
|
||||
### Rule 62: Verified Ontology Terms Reference
|
||||
|
||||
🚨 **CRITICAL**: All `class_uri`, `slot_uri`, and mappings MUST use verified classes and predicates from local ontology files in `data/ontology/`.
|
||||
|
||||
**See**: `.opencode/rules/verified-ontology-terms.md` for the list of verified ontologies and verification procedures.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
DualClassLink_archived_20260126.yaml
|
||||
EducationCredential_archived_20260125.yaml
|
||||
EducationEntry_archived_20260125.yaml
|
||||
RealnessStatus_archived_20260114.yaml
|
||||
TemplateSpecificityScores_archived_20260117.yaml
|
||||
1146
archived_slots.txt
1146
archived_slots.txt
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -42,8 +42,6 @@ RUN useradd -m -u 1000 -s /bin/bash glam
|
|||
|
||||
# Install Python dependencies first (better layer caching)
|
||||
COPY requirements.txt .
|
||||
# Install CPU-only PyTorch first to avoid massive CUDA download and runtime issues
|
||||
RUN pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# Copy application code
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -407,7 +407,7 @@ class Settings:
|
|||
# RAG uses only Qdrant (vectors) and Oxigraph (SPARQL) for retrieval
|
||||
|
||||
# LLM Configuration
|
||||
anthropic_api_key: str = os.getenv("ANTHROPIC_API_KEY", "") or os.getenv("CLAUDE_API_KEY", "")
|
||||
anthropic_api_key: str = os.getenv("ANTHROPIC_API_KEY", "")
|
||||
openai_api_key: str = os.getenv("OPENAI_API_KEY", "")
|
||||
huggingface_api_key: str = os.getenv("HUGGINGFACE_API_KEY", "")
|
||||
groq_api_key: str = os.getenv("GROQ_API_KEY", "")
|
||||
|
|
@ -1660,7 +1660,6 @@ class MultiSourceRetriever:
|
|||
only_heritage_relevant: bool = False,
|
||||
only_wcms: bool = False,
|
||||
using: str | None = None,
|
||||
extra_filters: dict[str, Any] | None = None,
|
||||
) -> list[Any]:
|
||||
"""Search for persons/staff in the heritage_persons collection.
|
||||
|
||||
|
|
@ -1673,29 +1672,20 @@ class MultiSourceRetriever:
|
|||
only_heritage_relevant: Only return heritage-relevant staff
|
||||
only_wcms: Only return WCMS-registered profiles
|
||||
using: Optional embedding model to use (e.g., 'minilm_384', 'openai_1536')
|
||||
extra_filters: Optional extra filters for Qdrant
|
||||
|
||||
Returns:
|
||||
List of RetrievedPerson objects
|
||||
"""
|
||||
if self.qdrant:
|
||||
try:
|
||||
# Dynamically check if qdrant.search_persons supports extra_filters
|
||||
# This handles case where HybridRetriever signature varies
|
||||
import inspect
|
||||
sig = inspect.signature(self.qdrant.search_persons)
|
||||
kwargs = {
|
||||
"query": query,
|
||||
"k": k,
|
||||
"filter_custodian": filter_custodian,
|
||||
"only_heritage_relevant": only_heritage_relevant,
|
||||
"only_wcms": only_wcms,
|
||||
"using": using,
|
||||
}
|
||||
if "extra_filters" in sig.parameters:
|
||||
kwargs["extra_filters"] = extra_filters
|
||||
|
||||
return self.qdrant.search_persons(**kwargs) # type: ignore[no-any-return]
|
||||
return self.qdrant.search_persons( # type: ignore[no-any-return]
|
||||
query=query,
|
||||
k=k,
|
||||
filter_custodian=filter_custodian,
|
||||
only_heritage_relevant=only_heritage_relevant,
|
||||
only_wcms=only_wcms,
|
||||
using=using,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Person search failed: {e}")
|
||||
return []
|
||||
|
|
@ -2762,68 +2752,16 @@ async def person_search(request: PersonSearchRequest) -> PersonSearchResponse:
|
|||
)
|
||||
|
||||
try:
|
||||
# Augment query for better recall on domain names if it looks like a domain search
|
||||
# "nos" -> "nos email domain nos" to guide vector search towards email addresses
|
||||
search_query = request.query
|
||||
extra_filters = None
|
||||
|
||||
# 1. Email/Domain Detection Logic
|
||||
is_email_like = "@" in search_query
|
||||
# Check for common TLDs at the end of the query or at the end of words
|
||||
common_tlds = ['.nl', '.com', '.org', '.net', '.eu', '.be', '.de', '.edu', '.gov', '.uk', '.fr', '.it', '.es']
|
||||
is_domain_like = any(tld in search_query.lower() for tld in common_tlds)
|
||||
|
||||
# 2. Construct Filters
|
||||
if is_email_like or is_domain_like:
|
||||
logger.info(f"[PersonSearch] Email/Domain pattern detected: '{search_query}'")
|
||||
# If explicit @ is present, we might want to strip leading @ for better matching
|
||||
# e.g. "@nos.nl" -> "nos.nl"
|
||||
clean_term = search_query.strip()
|
||||
if clean_term.startswith("@"):
|
||||
clean_term = clean_term[1:]
|
||||
|
||||
# Apply MatchText filter on email field
|
||||
# This prioritizes email matches by strictly filtering for them first
|
||||
extra_filters = {"email": {"match": {"text": clean_term}}}
|
||||
|
||||
elif len(search_query.split()) == 1 and len(search_query) > 2:
|
||||
# Heuristic: single word queries might be domain searches (e.g. "nos", "leiden")
|
||||
# We use MatchText filtering on email field to find substring matches
|
||||
# Qdrant "match": {"text": "nos"} performs token-based matching
|
||||
extra_filters = {"email": {"match": {"text": search_query}}}
|
||||
logger.info(f"[PersonSearch] Potential domain search detected for '{search_query}'. Applying strict email filter: {extra_filters}")
|
||||
|
||||
logger.info(f"[PersonSearch] Executing search for '{search_query}' (extra_filters={extra_filters})")
|
||||
|
||||
# Use the hybrid retriever's person search
|
||||
results = retriever.search_persons(
|
||||
query=search_query,
|
||||
query=request.query,
|
||||
k=request.k,
|
||||
filter_custodian=request.filter_custodian,
|
||||
only_heritage_relevant=request.only_heritage_relevant,
|
||||
only_wcms=request.only_wcms,
|
||||
using=request.embedding_model, # Pass embedding model
|
||||
extra_filters=extra_filters,
|
||||
)
|
||||
|
||||
# FALLBACK: If strict domain filter yielded no results, try standard vector search
|
||||
# This fixes the issue where searching for names like "willem" (which look like domains)
|
||||
# would fail because they don't appear in emails.
|
||||
if extra_filters and not results:
|
||||
logger.info(f"[PersonSearch] No results with email filter for '{search_query}'. Falling back to standard vector search.")
|
||||
results = retriever.search_persons(
|
||||
query=search_query,
|
||||
k=request.k,
|
||||
filter_custodian=request.filter_custodian,
|
||||
only_heritage_relevant=request.only_heritage_relevant,
|
||||
only_wcms=request.only_wcms,
|
||||
using=request.embedding_model,
|
||||
extra_filters=None, # Disable filter for fallback
|
||||
)
|
||||
logger.info(f"[PersonSearch] Fallback search returned {len(results)} results")
|
||||
|
||||
logger.info(f"[PersonSearch] Final result count: {len(results)}")
|
||||
|
||||
# Determine which embedding model was actually used
|
||||
embedding_model_used = None
|
||||
qdrant = retriever.qdrant
|
||||
|
|
@ -3563,21 +3501,6 @@ async def dspy_query(request: DSPyQueryRequest) -> DSPyQueryResponse:
|
|||
|
||||
logger.info(f"LLM provider requested: {requested_provider} (request.llm_provider={request.llm_provider}, server default={settings.llm_provider})")
|
||||
|
||||
# Check if requested provider has API key configured - fail early if not
|
||||
provider_api_keys = {
|
||||
"zai": settings.zai_api_token,
|
||||
"groq": settings.groq_api_key,
|
||||
"anthropic": settings.anthropic_api_key,
|
||||
"openai": settings.openai_api_key,
|
||||
"huggingface": settings.huggingface_api_key,
|
||||
}
|
||||
|
||||
if requested_provider in provider_api_keys and not provider_api_keys[requested_provider]:
|
||||
raise ValueError(
|
||||
f"LLM provider '{requested_provider}' was requested but its API key is not configured. "
|
||||
f"Please set the appropriate environment variable (e.g., ANTHROPIC_API_KEY or CLAUDE_API_KEY for anthropic)."
|
||||
)
|
||||
|
||||
# Provider configuration priority: requested provider first, then fallback chain
|
||||
providers_to_try = [requested_provider]
|
||||
# Add fallback chain (but not duplicates)
|
||||
|
|
@ -4278,22 +4201,6 @@ async def stream_dspy_query_response(
|
|||
llm_model_used: str | None = None
|
||||
lm = None
|
||||
|
||||
# Check if requested provider has API key configured - fail early if not
|
||||
provider_api_keys = {
|
||||
"zai": settings.zai_api_token,
|
||||
"groq": settings.groq_api_key,
|
||||
"anthropic": settings.anthropic_api_key,
|
||||
"openai": settings.openai_api_key,
|
||||
"huggingface": settings.huggingface_api_key,
|
||||
}
|
||||
|
||||
if requested_provider in provider_api_keys and not provider_api_keys[requested_provider]:
|
||||
yield emit_error(
|
||||
f"LLM provider '{requested_provider}' was requested but its API key is not configured. "
|
||||
f"Please set the appropriate environment variable (e.g., ANTHROPIC_API_KEY or CLAUDE_API_KEY for anthropic)."
|
||||
)
|
||||
return
|
||||
|
||||
providers_to_try = [requested_provider]
|
||||
for fallback in ["zai", "groq", "anthropic", "openai"]:
|
||||
if fallback not in providers_to_try:
|
||||
|
|
|
|||
|
|
@ -1,846 +0,0 @@
|
|||
"""
|
||||
Multi-Embedding Retriever for Heritage Data
|
||||
|
||||
Supports multiple embedding models using Qdrant's named vectors feature.
|
||||
This enables:
|
||||
- A/B testing different embedding models
|
||||
- Cost optimization (cheap local embeddings vs paid API embeddings)
|
||||
- Gradual migration between embedding models
|
||||
- Fallback when one model is unavailable
|
||||
|
||||
Supported Embedding Models:
|
||||
- openai_1536: text-embedding-3-small (1536-dim, $0.02/1M tokens)
|
||||
- minilm_384: all-MiniLM-L6-v2 (384-dim, free/local)
|
||||
- bge_768: bge-base-en-v1.5 (768-dim, free/local, high quality)
|
||||
|
||||
Collection Architecture:
|
||||
Each collection has named vectors for each embedding model:
|
||||
|
||||
heritage_custodians:
|
||||
vectors:
|
||||
"openai_1536": VectorParams(size=1536)
|
||||
"minilm_384": VectorParams(size=384)
|
||||
payload: {name, ghcid, institution_type, ...}
|
||||
|
||||
heritage_persons:
|
||||
vectors:
|
||||
"openai_1536": VectorParams(size=1536)
|
||||
"minilm_384": VectorParams(size=384)
|
||||
payload: {name, headline, custodian_name, ...}
|
||||
|
||||
Usage:
|
||||
retriever = MultiEmbeddingRetriever()
|
||||
|
||||
# Search with default model (auto-select based on availability)
|
||||
results = retriever.search("museums in Amsterdam")
|
||||
|
||||
# Search with specific model
|
||||
results = retriever.search("museums in Amsterdam", using="minilm_384")
|
||||
|
||||
# A/B test comparison
|
||||
comparison = retriever.compare_models("museums in Amsterdam")
|
||||
"""
|
||||
|
||||
import hashlib
|
||||
import logging
|
||||
import os
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
from typing import Any, Literal
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class EmbeddingModel(str, Enum):
|
||||
"""Supported embedding models with their configurations."""
|
||||
|
||||
OPENAI_1536 = "openai_1536"
|
||||
MINILM_384 = "minilm_384"
|
||||
BGE_768 = "bge_768"
|
||||
|
||||
@property
|
||||
def dimension(self) -> int:
|
||||
"""Get the vector dimension for this model."""
|
||||
dims = {
|
||||
"openai_1536": 1536,
|
||||
"minilm_384": 384,
|
||||
"bge_768": 768,
|
||||
}
|
||||
return dims[self.value]
|
||||
|
||||
@property
|
||||
def model_name(self) -> str:
|
||||
"""Get the actual model name for loading."""
|
||||
names = {
|
||||
"openai_1536": "text-embedding-3-small",
|
||||
"minilm_384": "all-MiniLM-L6-v2",
|
||||
"bge_768": "BAAI/bge-base-en-v1.5",
|
||||
}
|
||||
return names[self.value]
|
||||
|
||||
@property
|
||||
def is_local(self) -> bool:
|
||||
"""Check if this model runs locally (no API calls)."""
|
||||
return self.value in ("minilm_384", "bge_768")
|
||||
|
||||
@property
|
||||
def cost_per_1m_tokens(self) -> float:
|
||||
"""Approximate cost per 1M tokens (0 for local models)."""
|
||||
costs = {
|
||||
"openai_1536": 0.02,
|
||||
"minilm_384": 0.0,
|
||||
"bge_768": 0.0,
|
||||
}
|
||||
return costs[self.value]
|
||||
|
||||
|
||||
@dataclass
|
||||
class MultiEmbeddingConfig:
|
||||
"""Configuration for multi-embedding retriever."""
|
||||
|
||||
# Qdrant connection
|
||||
qdrant_host: str = "localhost"
|
||||
qdrant_port: int = 6333
|
||||
qdrant_https: bool = False
|
||||
qdrant_prefix: str | None = None
|
||||
|
||||
# API keys
|
||||
openai_api_key: str | None = None
|
||||
|
||||
# Default embedding model preference order
|
||||
# First available model is used if no explicit model is specified
|
||||
model_preference: list[EmbeddingModel] = field(default_factory=lambda: [
|
||||
EmbeddingModel.MINILM_384, # Free, fast, good quality
|
||||
EmbeddingModel.OPENAI_1536, # Higher quality, paid
|
||||
EmbeddingModel.BGE_768, # Free, high quality, slower
|
||||
])
|
||||
|
||||
# Collection names
|
||||
institutions_collection: str = "heritage_custodians"
|
||||
persons_collection: str = "heritage_persons"
|
||||
|
||||
# Search defaults
|
||||
default_k: int = 10
|
||||
|
||||
|
||||
class MultiEmbeddingRetriever:
|
||||
"""Retriever supporting multiple embedding models via Qdrant named vectors.
|
||||
|
||||
This class manages multiple embedding models and allows searching with
|
||||
any available model. It handles:
|
||||
- Model lazy-loading
|
||||
- Automatic model selection based on availability
|
||||
- Named vector creation and search
|
||||
- A/B testing between models
|
||||
"""
|
||||
|
||||
def __init__(self, config: MultiEmbeddingConfig | None = None):
|
||||
"""Initialize multi-embedding retriever.
|
||||
|
||||
Args:
|
||||
config: Configuration options. If None, uses environment variables.
|
||||
"""
|
||||
self.config = config or self._config_from_env()
|
||||
|
||||
# Lazy-loaded clients
|
||||
self._qdrant_client = None
|
||||
self._openai_client = None
|
||||
self._st_models: dict[str, Any] = {} # Sentence transformer models
|
||||
|
||||
# Track available models per collection
|
||||
self._available_models: dict[str, set[EmbeddingModel]] = {}
|
||||
|
||||
# Track whether each collection uses named vectors (vs single unnamed vector)
|
||||
self._uses_named_vectors: dict[str, bool] = {}
|
||||
|
||||
logger.info(f"MultiEmbeddingRetriever initialized with preference: {[m.value for m in self.config.model_preference]}")
|
||||
|
||||
@staticmethod
|
||||
def _config_from_env() -> MultiEmbeddingConfig:
|
||||
"""Create configuration from environment variables."""
|
||||
use_production = os.getenv("QDRANT_USE_PRODUCTION", "false").lower() == "true"
|
||||
|
||||
if use_production:
|
||||
return MultiEmbeddingConfig(
|
||||
qdrant_host=os.getenv("QDRANT_PROD_HOST", "bronhouder.nl"),
|
||||
qdrant_port=443,
|
||||
qdrant_https=True,
|
||||
qdrant_prefix=os.getenv("QDRANT_PROD_PREFIX", "qdrant"),
|
||||
openai_api_key=os.getenv("OPENAI_API_KEY"),
|
||||
)
|
||||
else:
|
||||
return MultiEmbeddingConfig(
|
||||
qdrant_host=os.getenv("QDRANT_HOST", "localhost"),
|
||||
qdrant_port=int(os.getenv("QDRANT_PORT", "6333")),
|
||||
openai_api_key=os.getenv("OPENAI_API_KEY"),
|
||||
)
|
||||
|
||||
@property
|
||||
def qdrant_client(self):
|
||||
"""Lazy-load Qdrant client."""
|
||||
if self._qdrant_client is None:
|
||||
from qdrant_client import QdrantClient
|
||||
|
||||
if self.config.qdrant_https:
|
||||
self._qdrant_client = QdrantClient(
|
||||
host=self.config.qdrant_host,
|
||||
port=self.config.qdrant_port,
|
||||
https=True,
|
||||
prefix=self.config.qdrant_prefix,
|
||||
prefer_grpc=False,
|
||||
timeout=30,
|
||||
)
|
||||
logger.info(f"Connected to Qdrant: https://{self.config.qdrant_host}/{self.config.qdrant_prefix or ''}")
|
||||
else:
|
||||
self._qdrant_client = QdrantClient(
|
||||
host=self.config.qdrant_host,
|
||||
port=self.config.qdrant_port,
|
||||
)
|
||||
logger.info(f"Connected to Qdrant: {self.config.qdrant_host}:{self.config.qdrant_port}")
|
||||
|
||||
return self._qdrant_client
|
||||
|
||||
@property
|
||||
def openai_client(self):
|
||||
"""Lazy-load OpenAI client."""
|
||||
if self._openai_client is None:
|
||||
if not self.config.openai_api_key:
|
||||
raise RuntimeError("OpenAI API key not configured")
|
||||
|
||||
import openai
|
||||
self._openai_client = openai.OpenAI(api_key=self.config.openai_api_key)
|
||||
|
||||
return self._openai_client
|
||||
|
||||
def _load_sentence_transformer(self, model: EmbeddingModel) -> Any:
|
||||
"""Lazy-load a sentence-transformers model.
|
||||
|
||||
Args:
|
||||
model: The embedding model to load
|
||||
|
||||
Returns:
|
||||
Loaded SentenceTransformer model
|
||||
"""
|
||||
if model.value not in self._st_models:
|
||||
try:
|
||||
from sentence_transformers import SentenceTransformer
|
||||
self._st_models[model.value] = SentenceTransformer(model.model_name)
|
||||
logger.info(f"Loaded sentence-transformers model: {model.model_name}")
|
||||
except ImportError:
|
||||
raise RuntimeError(
|
||||
"sentence-transformers not installed. Run: pip install sentence-transformers"
|
||||
)
|
||||
|
||||
return self._st_models[model.value]
|
||||
|
||||
def get_embedding(self, text: str, model: EmbeddingModel) -> list[float]:
|
||||
"""Get embedding vector for text using specified model.
|
||||
|
||||
Args:
|
||||
text: Text to embed
|
||||
model: Embedding model to use
|
||||
|
||||
Returns:
|
||||
Embedding vector as list of floats
|
||||
"""
|
||||
if model == EmbeddingModel.OPENAI_1536:
|
||||
response = self.openai_client.embeddings.create(
|
||||
input=text,
|
||||
model=model.model_name,
|
||||
)
|
||||
return response.data[0].embedding
|
||||
|
||||
elif model in (EmbeddingModel.MINILM_384, EmbeddingModel.BGE_768):
|
||||
st_model = self._load_sentence_transformer(model)
|
||||
embedding = st_model.encode(text)
|
||||
return embedding.tolist()
|
||||
|
||||
else:
|
||||
raise ValueError(f"Unknown embedding model: {model}")
|
||||
|
||||
def get_embeddings_batch(
|
||||
self,
|
||||
texts: list[str],
|
||||
model: EmbeddingModel,
|
||||
batch_size: int = 32,
|
||||
) -> list[list[float]]:
|
||||
"""Get embedding vectors for multiple texts.
|
||||
|
||||
Args:
|
||||
texts: List of texts to embed
|
||||
model: Embedding model to use
|
||||
batch_size: Batch size for processing
|
||||
|
||||
Returns:
|
||||
List of embedding vectors
|
||||
"""
|
||||
if not texts:
|
||||
return []
|
||||
|
||||
if model == EmbeddingModel.OPENAI_1536:
|
||||
# OpenAI batch API (max 2048 per request)
|
||||
all_embeddings = []
|
||||
for i in range(0, len(texts), 2048):
|
||||
batch = texts[i:i + 2048]
|
||||
response = self.openai_client.embeddings.create(
|
||||
input=batch,
|
||||
model=model.model_name,
|
||||
)
|
||||
batch_embeddings = [item.embedding for item in sorted(response.data, key=lambda x: x.index)]
|
||||
all_embeddings.extend(batch_embeddings)
|
||||
return all_embeddings
|
||||
|
||||
elif model in (EmbeddingModel.MINILM_384, EmbeddingModel.BGE_768):
|
||||
st_model = self._load_sentence_transformer(model)
|
||||
embeddings = st_model.encode(texts, batch_size=batch_size, show_progress_bar=len(texts) > 100)
|
||||
return embeddings.tolist()
|
||||
|
||||
else:
|
||||
raise ValueError(f"Unknown embedding model: {model}")
|
||||
|
||||
def get_available_models(self, collection_name: str) -> set[EmbeddingModel]:
|
||||
"""Get the embedding models available for a collection.
|
||||
|
||||
Checks which named vectors exist in the collection.
|
||||
For single-vector collections, returns models matching the dimension.
|
||||
|
||||
Args:
|
||||
collection_name: Name of the Qdrant collection
|
||||
|
||||
Returns:
|
||||
Set of available EmbeddingModel values
|
||||
"""
|
||||
if collection_name in self._available_models:
|
||||
return self._available_models[collection_name]
|
||||
|
||||
try:
|
||||
info = self.qdrant_client.get_collection(collection_name)
|
||||
vectors_config = info.config.params.vectors
|
||||
|
||||
available = set()
|
||||
uses_named_vectors = False
|
||||
|
||||
# Check for named vectors (dict of vector configs)
|
||||
if isinstance(vectors_config, dict):
|
||||
# Named vectors - each key is a vector name
|
||||
uses_named_vectors = True
|
||||
for vector_name in vectors_config.keys():
|
||||
try:
|
||||
model = EmbeddingModel(vector_name)
|
||||
available.add(model)
|
||||
except ValueError:
|
||||
logger.warning(f"Unknown vector name in collection: {vector_name}")
|
||||
else:
|
||||
# Single unnamed vector - check dimension to find compatible model
|
||||
# Note: This doesn't mean we can use `using=model.value` in queries
|
||||
uses_named_vectors = False
|
||||
if hasattr(vectors_config, 'size'):
|
||||
dim = vectors_config.size
|
||||
for model in EmbeddingModel:
|
||||
if model.dimension == dim:
|
||||
available.add(model)
|
||||
|
||||
# Store both available models and whether named vectors are used
|
||||
self._available_models[collection_name] = available
|
||||
self._uses_named_vectors[collection_name] = uses_named_vectors
|
||||
|
||||
if uses_named_vectors:
|
||||
logger.info(f"Collection '{collection_name}' uses named vectors: {[m.value for m in available]}")
|
||||
else:
|
||||
logger.info(f"Collection '{collection_name}' uses single vector (compatible with: {[m.value for m in available]})")
|
||||
|
||||
return available
|
||||
|
||||
except Exception as e:
|
||||
logger.warning(f"Could not get available models for {collection_name}: {e}")
|
||||
return set()
|
||||
|
||||
def uses_named_vectors(self, collection_name: str) -> bool:
|
||||
"""Check if a collection uses named vectors (vs single unnamed vector).
|
||||
|
||||
Args:
|
||||
collection_name: Name of the Qdrant collection
|
||||
|
||||
Returns:
|
||||
True if collection has named vectors, False for single-vector collections
|
||||
"""
|
||||
# Ensure models are loaded (populates _uses_named_vectors)
|
||||
self.get_available_models(collection_name)
|
||||
return self._uses_named_vectors.get(collection_name, False)
|
||||
|
||||
def select_model(
|
||||
self,
|
||||
collection_name: str,
|
||||
preferred: EmbeddingModel | None = None,
|
||||
) -> EmbeddingModel | None:
|
||||
"""Select the best available embedding model for a collection.
|
||||
|
||||
Args:
|
||||
collection_name: Name of the collection
|
||||
preferred: Preferred model (used if available)
|
||||
|
||||
Returns:
|
||||
Selected EmbeddingModel or None if none available
|
||||
"""
|
||||
available = self.get_available_models(collection_name)
|
||||
|
||||
if not available:
|
||||
# No named vectors - check if we can use any model
|
||||
# This happens for legacy single-vector collections
|
||||
try:
|
||||
info = self.qdrant_client.get_collection(collection_name)
|
||||
vectors_config = info.config.params.vectors
|
||||
|
||||
# Get vector dimension
|
||||
dim = None
|
||||
if hasattr(vectors_config, 'size'):
|
||||
dim = vectors_config.size
|
||||
elif isinstance(vectors_config, dict):
|
||||
# Get first vector config
|
||||
first_config = next(iter(vectors_config.values()), None)
|
||||
if first_config and hasattr(first_config, 'size'):
|
||||
dim = first_config.size
|
||||
|
||||
if dim:
|
||||
for model in self.config.model_preference:
|
||||
if model.dimension == dim:
|
||||
return model
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return None
|
||||
|
||||
# If preferred model is available, use it
|
||||
if preferred and preferred in available:
|
||||
return preferred
|
||||
|
||||
# Otherwise, follow preference order
|
||||
for model in self.config.model_preference:
|
||||
if model in available:
|
||||
# Check if model is usable (has API key if needed)
|
||||
if model == EmbeddingModel.OPENAI_1536 and not self.config.openai_api_key:
|
||||
continue
|
||||
return model
|
||||
|
||||
return None
|
||||
|
||||
def search(
|
||||
self,
|
||||
query: str,
|
||||
collection_name: str | None = None,
|
||||
k: int | None = None,
|
||||
using: EmbeddingModel | str | None = None,
|
||||
filter_conditions: dict[str, Any] | None = None,
|
||||
) -> list[dict[str, Any]]:
|
||||
"""Search for similar documents using specified or auto-selected model.
|
||||
|
||||
Args:
|
||||
query: Search query text
|
||||
collection_name: Collection to search (default: institutions)
|
||||
k: Number of results
|
||||
using: Embedding model to use (auto-selected if None)
|
||||
filter_conditions: Optional Qdrant filter conditions
|
||||
|
||||
Returns:
|
||||
List of results with scores and payloads
|
||||
"""
|
||||
collection_name = collection_name or self.config.institutions_collection
|
||||
k = k or self.config.default_k
|
||||
|
||||
# Resolve model
|
||||
if using is not None:
|
||||
if isinstance(using, str):
|
||||
model = EmbeddingModel(using)
|
||||
else:
|
||||
model = using
|
||||
else:
|
||||
model = self.select_model(collection_name)
|
||||
|
||||
if model is None:
|
||||
raise RuntimeError(f"No compatible embedding model for collection '{collection_name}'")
|
||||
|
||||
logger.info(f"Searching '{collection_name}' with {model.value}: {query[:50]}...")
|
||||
|
||||
# Get query embedding
|
||||
query_vector = self.get_embedding(query, model)
|
||||
|
||||
# Build filter
|
||||
from qdrant_client.http import models
|
||||
|
||||
query_filter = None
|
||||
if filter_conditions:
|
||||
query_filter = models.Filter(
|
||||
must=[
|
||||
models.FieldCondition(
|
||||
key=key,
|
||||
match=models.MatchValue(value=value),
|
||||
)
|
||||
for key, value in filter_conditions.items()
|
||||
]
|
||||
)
|
||||
|
||||
# Check if collection uses named vectors (not just single unnamed vector)
|
||||
# Only pass `using=model.value` if collection has actual named vectors
|
||||
use_named_vector = self.uses_named_vectors(collection_name)
|
||||
|
||||
# Search
|
||||
if use_named_vector:
|
||||
results = self.qdrant_client.query_points(
|
||||
collection_name=collection_name,
|
||||
query=query_vector,
|
||||
using=model.value,
|
||||
limit=k,
|
||||
with_payload=True,
|
||||
query_filter=query_filter,
|
||||
)
|
||||
else:
|
||||
# Legacy single-vector search
|
||||
results = self.qdrant_client.query_points(
|
||||
collection_name=collection_name,
|
||||
query=query_vector,
|
||||
limit=k,
|
||||
with_payload=True,
|
||||
query_filter=query_filter,
|
||||
)
|
||||
|
||||
return [
|
||||
{
|
||||
"id": str(point.id),
|
||||
"score": point.score,
|
||||
"model": model.value,
|
||||
"payload": point.payload or {},
|
||||
}
|
||||
for point in results.points
|
||||
]
|
||||
|
||||
def search_persons(
|
||||
self,
|
||||
query: str,
|
||||
k: int | None = None,
|
||||
using: EmbeddingModel | str | None = None,
|
||||
filter_custodian: str | None = None,
|
||||
only_heritage_relevant: bool = False,
|
||||
only_wcms: bool = False,
|
||||
) -> list[dict[str, Any]]:
|
||||
"""Search for persons/staff in the heritage_persons collection.
|
||||
|
||||
Args:
|
||||
query: Search query text
|
||||
k: Number of results
|
||||
using: Embedding model to use
|
||||
filter_custodian: Optional custodian slug to filter by
|
||||
only_heritage_relevant: Only return heritage-relevant staff
|
||||
only_wcms: Only return WCMS-registered profiles (heritage sector users)
|
||||
|
||||
Returns:
|
||||
List of person results with scores
|
||||
"""
|
||||
k = k or self.config.default_k
|
||||
|
||||
# Build filters
|
||||
filters = {}
|
||||
if filter_custodian:
|
||||
filters["custodian_slug"] = filter_custodian
|
||||
if only_wcms:
|
||||
filters["has_wcms"] = True
|
||||
|
||||
# Search with over-fetch for post-filtering
|
||||
results = self.search(
|
||||
query=query,
|
||||
collection_name=self.config.persons_collection,
|
||||
k=k * 2,
|
||||
using=using,
|
||||
filter_conditions=filters if filters else None,
|
||||
)
|
||||
|
||||
# Post-filter for heritage_relevant if needed
|
||||
if only_heritage_relevant:
|
||||
results = [r for r in results if r.get("payload", {}).get("heritage_relevant", False)]
|
||||
|
||||
# Format results
|
||||
formatted = []
|
||||
for r in results[:k]:
|
||||
payload = r.get("payload", {})
|
||||
formatted.append({
|
||||
"person_id": payload.get("staff_id", "") or hashlib.md5(
|
||||
f"{payload.get('custodian_slug', '')}:{payload.get('name', '')}".encode()
|
||||
).hexdigest()[:16],
|
||||
"name": payload.get("name", ""),
|
||||
"headline": payload.get("headline"),
|
||||
"custodian_name": payload.get("custodian_name"),
|
||||
"custodian_slug": payload.get("custodian_slug"),
|
||||
"location": payload.get("location"),
|
||||
"heritage_relevant": payload.get("heritage_relevant", False),
|
||||
"heritage_type": payload.get("heritage_type"),
|
||||
"linkedin_url": payload.get("linkedin_url"),
|
||||
"score": r["score"],
|
||||
"model": r["model"],
|
||||
})
|
||||
|
||||
return formatted
|
||||
|
||||
def compare_models(
|
||||
self,
|
||||
query: str,
|
||||
collection_name: str | None = None,
|
||||
k: int = 10,
|
||||
models: list[EmbeddingModel] | None = None,
|
||||
) -> dict[str, Any]:
|
||||
"""A/B test comparison of multiple embedding models.
|
||||
|
||||
Args:
|
||||
query: Search query
|
||||
collection_name: Collection to search
|
||||
k: Number of results per model
|
||||
models: Models to compare (default: all available)
|
||||
|
||||
Returns:
|
||||
Dict with results per model and overlap analysis
|
||||
"""
|
||||
collection_name = collection_name or self.config.institutions_collection
|
||||
|
||||
# Determine which models to compare
|
||||
available = self.get_available_models(collection_name)
|
||||
if models:
|
||||
models_to_test = [m for m in models if m in available]
|
||||
else:
|
||||
models_to_test = list(available)
|
||||
|
||||
if not models_to_test:
|
||||
return {"error": "No models available for comparison"}
|
||||
|
||||
results = {}
|
||||
all_ids = {}
|
||||
|
||||
for model in models_to_test:
|
||||
try:
|
||||
model_results = self.search(
|
||||
query=query,
|
||||
collection_name=collection_name,
|
||||
k=k,
|
||||
using=model,
|
||||
)
|
||||
results[model.value] = model_results
|
||||
all_ids[model.value] = {r["id"] for r in model_results}
|
||||
except Exception as e:
|
||||
results[model.value] = {"error": str(e)}
|
||||
all_ids[model.value] = set()
|
||||
|
||||
# Calculate overlap between models
|
||||
overlap = {}
|
||||
model_values = list(all_ids.keys())
|
||||
for i, m1 in enumerate(model_values):
|
||||
for m2 in model_values[i + 1:]:
|
||||
if all_ids[m1] and all_ids[m2]:
|
||||
intersection = all_ids[m1] & all_ids[m2]
|
||||
union = all_ids[m1] | all_ids[m2]
|
||||
jaccard = len(intersection) / len(union) if union else 0
|
||||
overlap[f"{m1}_vs_{m2}"] = {
|
||||
"jaccard_similarity": round(jaccard, 3),
|
||||
"common_results": len(intersection),
|
||||
"total_unique": len(union),
|
||||
}
|
||||
|
||||
return {
|
||||
"query": query,
|
||||
"collection": collection_name,
|
||||
"k": k,
|
||||
"results": results,
|
||||
"overlap_analysis": overlap,
|
||||
}
|
||||
|
||||
def create_multi_embedding_collection(
|
||||
self,
|
||||
collection_name: str,
|
||||
models: list[EmbeddingModel] | None = None,
|
||||
) -> bool:
|
||||
"""Create a new collection with named vectors for multiple embedding models.
|
||||
|
||||
Args:
|
||||
collection_name: Name for the new collection
|
||||
models: Embedding models to support (default: all)
|
||||
|
||||
Returns:
|
||||
True if created successfully
|
||||
"""
|
||||
from qdrant_client.http.models import Distance, VectorParams
|
||||
|
||||
models = models or list(EmbeddingModel)
|
||||
|
||||
vectors_config = {
|
||||
model.value: VectorParams(
|
||||
size=model.dimension,
|
||||
distance=Distance.COSINE,
|
||||
)
|
||||
for model in models
|
||||
}
|
||||
|
||||
try:
|
||||
self.qdrant_client.create_collection(
|
||||
collection_name=collection_name,
|
||||
vectors_config=vectors_config,
|
||||
)
|
||||
logger.info(f"Created multi-embedding collection '{collection_name}' with {[m.value for m in models]}")
|
||||
|
||||
# Clear cache
|
||||
self._available_models.pop(collection_name, None)
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to create collection: {e}")
|
||||
return False
|
||||
|
||||
def add_documents_multi_embedding(
|
||||
self,
|
||||
documents: list[dict[str, Any]],
|
||||
collection_name: str,
|
||||
models: list[EmbeddingModel] | None = None,
|
||||
batch_size: int = 100,
|
||||
) -> int:
|
||||
"""Add documents with embeddings from multiple models.
|
||||
|
||||
Args:
|
||||
documents: List of documents with 'text' and optional 'metadata' fields
|
||||
collection_name: Target collection
|
||||
models: Models to generate embeddings for (default: all available)
|
||||
batch_size: Batch size for processing
|
||||
|
||||
Returns:
|
||||
Number of documents added
|
||||
"""
|
||||
from qdrant_client.http import models as qmodels
|
||||
|
||||
# Determine which models to use
|
||||
available = self.get_available_models(collection_name)
|
||||
if models:
|
||||
models_to_use = [m for m in models if m in available]
|
||||
else:
|
||||
models_to_use = list(available)
|
||||
|
||||
if not models_to_use:
|
||||
raise RuntimeError(f"No embedding models available for collection '{collection_name}'")
|
||||
|
||||
# Filter valid documents
|
||||
valid_docs = [d for d in documents if d.get("text")]
|
||||
total_indexed = 0
|
||||
|
||||
for i in range(0, len(valid_docs), batch_size):
|
||||
batch = valid_docs[i:i + batch_size]
|
||||
texts = [d["text"] for d in batch]
|
||||
|
||||
# Generate embeddings for each model
|
||||
embeddings_by_model = {}
|
||||
for model in models_to_use:
|
||||
try:
|
||||
embeddings_by_model[model] = self.get_embeddings_batch(texts, model)
|
||||
except Exception as e:
|
||||
logger.warning(f"Failed to get {model.value} embeddings: {e}")
|
||||
|
||||
if not embeddings_by_model:
|
||||
continue
|
||||
|
||||
# Create points with named vectors
|
||||
points = []
|
||||
for j, doc in enumerate(batch):
|
||||
text = doc["text"]
|
||||
metadata = doc.get("metadata", {})
|
||||
point_id = doc.get("id") or hashlib.md5(text.encode()).hexdigest()
|
||||
|
||||
# Build named vectors dict
|
||||
vectors = {}
|
||||
for model, model_embeddings in embeddings_by_model.items():
|
||||
vectors[model.value] = model_embeddings[j]
|
||||
|
||||
points.append(qmodels.PointStruct(
|
||||
id=point_id,
|
||||
vector=vectors,
|
||||
payload={
|
||||
"text": text,
|
||||
**metadata,
|
||||
}
|
||||
))
|
||||
|
||||
# Upsert batch
|
||||
self.qdrant_client.upsert(
|
||||
collection_name=collection_name,
|
||||
points=points,
|
||||
)
|
||||
total_indexed += len(points)
|
||||
logger.info(f"Indexed {total_indexed}/{len(valid_docs)} documents with {len(models_to_use)} models")
|
||||
|
||||
return total_indexed
|
||||
|
||||
def get_stats(self) -> dict[str, Any]:
|
||||
"""Get statistics about collections and available models.
|
||||
|
||||
Returns:
|
||||
Dict with collection stats and model availability
|
||||
"""
|
||||
stats = {
|
||||
"config": {
|
||||
"qdrant_host": self.config.qdrant_host,
|
||||
"qdrant_port": self.config.qdrant_port,
|
||||
"model_preference": [m.value for m in self.config.model_preference],
|
||||
"openai_available": bool(self.config.openai_api_key),
|
||||
},
|
||||
"collections": {},
|
||||
}
|
||||
|
||||
for collection_name in [self.config.institutions_collection, self.config.persons_collection]:
|
||||
try:
|
||||
info = self.qdrant_client.get_collection(collection_name)
|
||||
available_models = self.get_available_models(collection_name)
|
||||
selected_model = self.select_model(collection_name)
|
||||
|
||||
stats["collections"][collection_name] = {
|
||||
"vectors_count": info.vectors_count,
|
||||
"points_count": info.points_count,
|
||||
"status": info.status.value if info.status else "unknown",
|
||||
"available_models": [m.value for m in available_models],
|
||||
"selected_model": selected_model.value if selected_model else None,
|
||||
}
|
||||
except Exception as e:
|
||||
stats["collections"][collection_name] = {"error": str(e)}
|
||||
|
||||
return stats
|
||||
|
||||
def close(self):
|
||||
"""Close all connections."""
|
||||
if self._qdrant_client:
|
||||
self._qdrant_client.close()
|
||||
self._qdrant_client = None
|
||||
self._st_models.clear()
|
||||
self._available_models.clear()
|
||||
self._uses_named_vectors.clear()
|
||||
|
||||
|
||||
def create_multi_embedding_retriever(use_production: bool | None = None) -> MultiEmbeddingRetriever:
|
||||
"""Factory function to create a MultiEmbeddingRetriever.
|
||||
|
||||
Args:
|
||||
use_production: If True, connect to production Qdrant.
|
||||
Defaults to QDRANT_USE_PRODUCTION env var.
|
||||
|
||||
Returns:
|
||||
Configured MultiEmbeddingRetriever instance
|
||||
"""
|
||||
if use_production is None:
|
||||
use_production = os.getenv("QDRANT_USE_PRODUCTION", "").lower() in ("true", "1", "yes")
|
||||
|
||||
if use_production:
|
||||
config = MultiEmbeddingConfig(
|
||||
qdrant_host=os.getenv("QDRANT_PROD_HOST", "bronhouder.nl"),
|
||||
qdrant_port=443,
|
||||
qdrant_https=True,
|
||||
qdrant_prefix=os.getenv("QDRANT_PROD_PREFIX", "qdrant"),
|
||||
openai_api_key=os.getenv("OPENAI_API_KEY"),
|
||||
)
|
||||
else:
|
||||
config = MultiEmbeddingConfig(
|
||||
qdrant_host=os.getenv("QDRANT_HOST", "localhost"),
|
||||
qdrant_port=int(os.getenv("QDRANT_PORT", "6333")),
|
||||
openai_api_key=os.getenv("OPENAI_API_KEY"),
|
||||
)
|
||||
|
||||
return MultiEmbeddingRetriever(config)
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,44 +0,0 @@
|
|||
fixes:
|
||||
- orignal_slot_id: /Users/kempersc/apps/glam/schemas/20251121/linkml/modules/slots/archive_branches.yaml
|
||||
revision:
|
||||
- label: has_or_had_branch
|
||||
type: slot
|
||||
- label: Branch
|
||||
type: class
|
||||
- original_slot_id: /Users/kempersc/apps/glam/schemas/20251121/linkml/modules/slots/archive_path.yaml
|
||||
revision:
|
||||
- label: has_or_had_provenance_path
|
||||
type: slot
|
||||
- label: ProvenancePath
|
||||
type: class
|
||||
- original_slot_id: /Users/kempersc/apps/glam/schemas/20251121/linkml/modules/slots/archive_series.yaml
|
||||
revision:
|
||||
- label: is_or_was_part_of_series
|
||||
type: slot
|
||||
- label: Series
|
||||
type: class
|
||||
- orignal_slot_id: /Users/kempersc/apps/glam/schemas/20251121/linkml/modules/slots/condition_of_access.yaml
|
||||
revision:
|
||||
- label: has_or_had_condition_of_access
|
||||
type: slot
|
||||
- label: ConditionofAccess
|
||||
type: class
|
||||
- original_slot_id: /Users/kempersc/apps/glam/schemas/20251121/linkml/modules/slots/connection_heritage_relevant.yaml
|
||||
revision:
|
||||
- label: is_or_was_related_to
|
||||
type: slot
|
||||
- label: Entity
|
||||
type: class
|
||||
- original_slot_id: /Users/kempersc/apps/glam/schemas/20251121/linkml/modules/slots/connection_heritage_type.yaml
|
||||
revision:
|
||||
- label: has_or_had_heritage_type
|
||||
type: slot
|
||||
- label: HeritageType
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/was_retrieved_at
|
||||
revision:
|
||||
- label: is_or_was_retrieved_at
|
||||
type: slot
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
-
|
||||
|
|
@ -73,9 +73,6 @@ This document catalogs all ontologies used in the GLAM Heritage Custodian projec
|
|||
|------|----------|---------|--------|-----------|
|
||||
| `skos.rdf` | SKOS (Simple Knowledge Org System) | 2009 | https://www.w3.org/TR/skos-reference/ | `skos:` |
|
||||
| `dublin_core_elements.rdf` | Dublin Core Elements | 1.1 | https://www.dublincore.org/specifications/dublin-core/ | `dc:` |
|
||||
| `dcterms.rdf` | DCMI Metadata Terms (RDF) | 2020 | https://www.dublincore.org/specifications/dublin-core/dcmi-terms/dublin_core_terms.rdf | `dcterms:` |
|
||||
| `dctype.rdf` | DCMI Type Vocabulary | 2012 | https://www.dublincore.org/specifications/dublin-core/dcmi-type-vocabulary/ | `dcmitype:` |
|
||||
| `oa.ttl` | Open Annotation Data Model | 2013 | https://www.w3.org/TR/annotation-vocab/ | `oa:` |
|
||||
| `dcat3.ttl` | DCAT (Data Catalog Vocabulary) | 3.0 | https://www.w3.org/TR/vocab-dcat-3/ | `dcat:` |
|
||||
| `schemaorg.owl` | Schema.org | 2024 | https://schema.org/ | `schema:` |
|
||||
| `vcard.rdf` | vCard Ontology | 4.0 | https://www.w3.org/TR/vcard-rdf/ | `vcard:` |
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
404: Not Found
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,152 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE rdf:RDF [
|
||||
<!ENTITY rdfns 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
||||
<!ENTITY rdfsns 'http://www.w3.org/2000/01/rdf-schema#'>
|
||||
<!ENTITY dcns 'http://purl.org/dc/elements/1.1/'>
|
||||
<!ENTITY dctermsns 'http://purl.org/dc/terms/'>
|
||||
<!ENTITY dctypens 'http://purl.org/dc/dcmitype/'>
|
||||
<!ENTITY dcamns 'http://purl.org/dc/dcam/'>
|
||||
<!ENTITY skosns 'http://www.w3.org/2004/02/skos/core#'>
|
||||
<!ENTITY owlns 'http://www.w3.org/2002/07/owl#'>
|
||||
]>
|
||||
<rdf:RDF xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:dcam="http://purl.org/dc/dcam/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/">
|
||||
<dcterms:title xml:lang="en">DCMI Type Vocabulary</dcterms:title>
|
||||
<dcterms:publisher rdf:resource="http://purl.org/dc/aboutdcmi#DCMI"/>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2012-06-14</dcterms:modified>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/Collection">
|
||||
<rdfs:label xml:lang="en">Collection</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">An aggregation of resources.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">A collection is described as a group; its parts may also be separately described.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2000-07-11</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#Collection-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/Dataset">
|
||||
<rdfs:label xml:lang="en">Dataset</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">Data encoded in a defined structure.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Examples include lists, tables, and databases. A dataset may be useful for direct machine processing.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2000-07-11</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#Dataset-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/Event">
|
||||
<rdfs:label xml:lang="en">Event</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">A non-persistent, time-based occurrence.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Metadata for an event provides descriptive information that is the basis for discovery of the purpose, location, duration, and responsible agents associated with an event. Examples include an exhibition, webcast, conference, workshop, open day, performance, battle, trial, wedding, tea party, conflagration.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2000-07-11</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#Event-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/Image">
|
||||
<rdfs:label xml:lang="en">Image</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">A visual representation other than text.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Examples include images and photographs of physical objects, paintings, prints, drawings, other images and graphics, animations and moving pictures, film, diagrams, maps, musical notation. Note that Image may include both electronic and physical representations.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2000-07-11</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#Image-004"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/InteractiveResource">
|
||||
<rdfs:label xml:lang="en">Interactive Resource</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">A resource requiring interaction from the user to be understood, executed, or experienced.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Examples include forms on Web pages, applets, multimedia learning objects, chat services, or virtual reality environments.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2000-07-11</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#InteractiveResource-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/Service">
|
||||
<rdfs:label xml:lang="en">Service</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">A system that provides one or more functions.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Examples include a photocopying service, a banking service, an authentication service, interlibrary loans, a Z39.50 or Web server.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2000-07-11</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#Service-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/Software">
|
||||
<rdfs:label xml:lang="en">Software</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">A computer program in source or compiled form.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Examples include a C source file, MS-Windows .exe executable, or Perl script.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2000-07-11</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#Software-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/Sound">
|
||||
<rdfs:label xml:lang="en">Sound</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">A resource primarily intended to be heard.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Examples include a music playback file format, an audio compact disc, and recorded speech or sounds.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2000-07-11</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#Sound-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/Text">
|
||||
<rdfs:label xml:lang="en">Text</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">A resource consisting primarily of words for reading.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Examples include books, letters, dissertations, poems, newspapers, articles, archives of mailing lists. Note that facsimiles or images of texts are still of the genre Text.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2000-07-11</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#Text-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/PhysicalObject">
|
||||
<rdfs:label xml:lang="en">Physical Object</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">An inanimate, three-dimensional object or substance.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Note that digital representations of, or surrogates for, these objects should use Image, Text or one of the other types.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2002-07-13</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#PhysicalObject-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/StillImage">
|
||||
<rdfs:label xml:lang="en">Still Image</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">A static visual representation.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Examples include paintings, drawings, graphic designs, plans and maps. Recommended best practice is to assign the type Text to images of textual materials. Instances of the type Still Image must also be describable as instances of the broader type Image.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2003-11-18</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#StillImage-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
<rdfs:subClassOf rdf:resource="http://purl.org/dc/dcmitype/Image"/>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="http://purl.org/dc/dcmitype/MovingImage">
|
||||
<rdfs:label xml:lang="en">Moving Image</rdfs:label>
|
||||
<rdfs:comment xml:lang="en">A series of visual representations imparting an impression of motion when shown in succession.</rdfs:comment>
|
||||
<dcterms:description xml:lang="en">Examples include animations, movies, television programs, videos, zoetropes, or visual output from a simulation. Instances of the type Moving Image must also be describable as instances of the broader type Image.</dcterms:description>
|
||||
<rdfs:isDefinedBy rdf:resource="http://purl.org/dc/dcmitype/"/>
|
||||
<dcterms:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2003-11-18</dcterms:issued>
|
||||
<dcterms:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2008-01-14</dcterms:modified>
|
||||
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
|
||||
<dcterms:hasVersion rdf:resource="http://dublincore.org/usage/terms/history/#MovingImage-003"/>
|
||||
<dcam:memberOf rdf:resource="http://purl.org/dc/terms/DCMIType"/>
|
||||
<rdfs:subClassOf rdf:resource="http://purl.org/dc/dcmitype/Image"/>
|
||||
</rdf:Description>
|
||||
</rdf:RDF>
|
||||
|
|
@ -1,429 +0,0 @@
|
|||
@prefix acl: <http://www.w3.org/ns/auth/acl#> .
|
||||
@prefix as: <http://www.w3.org/ns/activitystreams#> .
|
||||
@prefix bibo: <http://purl.org/ontology/bibo/> .
|
||||
@prefix cnt: <http://www.w3.org/2011/content#> .
|
||||
@prefix dc: <http://purl.org/dc/elements/1.1/> .
|
||||
@prefix dcterms: <http://purl.org/dc/terms/> .
|
||||
@prefix dctypes: <http://purl.org/dc/dcmitype/> .
|
||||
@prefix exif: <http://www.w3.org/2003/12/exif/ns#> .
|
||||
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
|
||||
@prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
|
||||
@prefix gr: <http://purl.org/goodrelations/v1#> .
|
||||
@prefix iana: <http://www.iana.org/assignments/relation/> .
|
||||
@prefix iiif: <http://iiif.io/api/image/2#> .
|
||||
@prefix ldp: <http://www.w3.org/ns/ldp#> .
|
||||
@prefix oa: <http://www.w3.org/ns/oa#> .
|
||||
@prefix ore: <http://www.openarchives.org/ore/terms/> .
|
||||
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
||||
@prefix prov: <http://www.w3.org/ns/prov#> .
|
||||
@prefix pcdm: <http://pcdm.org/models#> .
|
||||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
||||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
||||
@prefix sc: <http://iiif.io/api/presentation/2#> .
|
||||
@prefix sioc: <http://rdfs.org/sioc/ns#> .
|
||||
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
|
||||
@prefix svcs: <http://rdfs.org/sioc/services#> .
|
||||
@prefix time: <http://www.w3.org/2006/time#> .
|
||||
@prefix trig: <http://www.w3.org/2004/03/trix/rdfg-1/> .
|
||||
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
|
||||
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
||||
|
||||
oa:Annotation a rdfs:Class ;
|
||||
rdfs:label "Annotation" ;
|
||||
rdfs:comment "The class for Web Annotations." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:Choice a rdfs:Class ;
|
||||
rdfs:label "Choice" ;
|
||||
rdfs:comment "A subClass of as:OrderedCollection that conveys to a consuming application that it should select one of the resources in the as:items list to use, rather than all of them. This is typically used to provide a choice of resources to render to the user, based on further supplied properties. If the consuming application cannot determine the user's preference, then it should use the first in the list." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf as:OrderedCollection .
|
||||
|
||||
oa:CssSelector a rdfs:Class ;
|
||||
rdfs:label "CssSelector" ;
|
||||
rdfs:comment "A CssSelector describes a Segment of interest in a representation that conforms to the Document Object Model through the use of the CSS selector specification." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:Selector .
|
||||
|
||||
oa:CssStyle a rdfs:Class ;
|
||||
rdfs:label "CssStyle" ;
|
||||
rdfs:comment "A resource which describes styles for resources participating in the Annotation using CSS." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:Style .
|
||||
|
||||
oa:DataPositionSelector a rdfs:Class ;
|
||||
rdfs:label "DataPositionSelector" ;
|
||||
rdfs:comment "DataPositionSelector describes a range of data by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first byte, position 1 would be immediately before the second byte, and so on. The start byte is thus included in the list, but the end byte is not." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:Selector .
|
||||
|
||||
oa:Direction a rdfs:Class ;
|
||||
rdfs:label "Direction" ;
|
||||
rdfs:comment "A class to encapsulate the different text directions that a textual resource might take. It is not used directly in the Annotation Model, only its three instances." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:FragmentSelector a rdfs:Class ;
|
||||
rdfs:label "FragmentSelector" ;
|
||||
rdfs:comment "The FragmentSelector class is used to record the segment of a representation using the IRI fragment specification defined by the representation's media type." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:Selector .
|
||||
|
||||
oa:HttpRequestState a rdfs:Class ;
|
||||
rdfs:label "HttpRequestState" ;
|
||||
rdfs:comment "The HttpRequestState class is used to record the HTTP request headers that a client SHOULD use to request the correct representation from the resource. " ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:State .
|
||||
|
||||
oa:Motivation a rdfs:Class ;
|
||||
rdfs:label "Motivation" ;
|
||||
rdfs:comment "The Motivation class is used to record the user's intent or motivation for the creation of the Annotation, or the inclusion of the body or target, that it is associated with." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf skos:Concept .
|
||||
|
||||
oa:RangeSelector a rdfs:Class ;
|
||||
rdfs:label "RangeSelector" ;
|
||||
rdfs:comment "A Range Selector can be used to identify the beginning and the end of the selection by using other Selectors. The selection consists of everything from the beginning of the starting selector through to the beginning of the ending selector, but not including it." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:Selector .
|
||||
|
||||
oa:ResourceSelection a rdfs:Class ;
|
||||
rdfs:label "ResourceSelection" ;
|
||||
rdfs:comment "Instances of the ResourceSelection class identify part (described by an oa:Selector) of another resource (referenced with oa:hasSource), possibly from a particular representation of a resource (described by an oa:State). Please note that ResourceSelection is not used directly in the Web Annotation model, but is provided as a separate class for further application profiles to use, separate from oa:SpecificResource which has many Annotation specific features." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:Selector a rdfs:Class ;
|
||||
rdfs:label "Selector" ;
|
||||
rdfs:comment "A resource which describes the segment of interest in a representation of a Source resource, indicated with oa:hasSelector from the Specific Resource. This class is not used directly in the Annotation model, only its subclasses." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:SpecificResource a rdfs:Class ;
|
||||
rdfs:label "SpecificResource" ;
|
||||
rdfs:comment "Instances of the SpecificResource class identify part of another resource (referenced with oa:hasSource), a particular representation of a resource, a resource with styling hints for renders, or any combination of these, as used within an Annotation." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:ResourceSelection .
|
||||
|
||||
oa:State a rdfs:Class ;
|
||||
rdfs:label "State" ;
|
||||
rdfs:comment "A State describes the intended state of a resource as applied to the particular Annotation, and thus provides the information needed to retrieve the correct representation of that resource." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:Style a rdfs:Class ;
|
||||
rdfs:label "Style" ;
|
||||
rdfs:comment "A Style describes the intended styling of a resource as applied to the particular Annotation, and thus provides the information to ensure that rendering is consistent across implementations." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:SvgSelector a rdfs:Class ;
|
||||
rdfs:label "SvgSelector" ;
|
||||
rdfs:comment "An SvgSelector defines an area through the use of the Scalable Vector Graphics [SVG] standard. This allows the user to select a non-rectangular area of the content, such as a circle or polygon by describing the region using SVG. The SVG may be either embedded within the Annotation or referenced as an External Resource." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:Selector .
|
||||
|
||||
oa:TextPositionSelector a rdfs:Class ;
|
||||
rdfs:label "TextPositionSelector" ;
|
||||
rdfs:comment "The TextPositionSelector describes a range of text by recording the start and end positions of the selection in the stream. Position 0 would be immediately before the first character, position 1 would be immediately before the second character, and so on." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:Selector .
|
||||
|
||||
oa:TextQuoteSelector a rdfs:Class ;
|
||||
rdfs:label "TextQuoteSelector" ;
|
||||
rdfs:comment "The TextQuoteSelector describes a range of text by copying it, and including some of the text immediately before (a prefix) and after (a suffix) it to distinguish between multiple copies of the same sequence of characters." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:Selector .
|
||||
|
||||
oa:TextualBody a rdfs:Class ;
|
||||
rdfs:label "TextualBody" ;
|
||||
rdfs:comment "" ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:TimeState a rdfs:Class ;
|
||||
rdfs:label "TimeState" ;
|
||||
rdfs:comment "A TimeState records the time at which the resource's state is appropriate for the Annotation, typically the time that the Annotation was created and/or a link to a persistent copy of the current version." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:State .
|
||||
|
||||
oa:XPathSelector a rdfs:Class ;
|
||||
rdfs:label "XPathSelector" ;
|
||||
rdfs:comment " An XPathSelector is used to select elements and content within a resource that supports the Document Object Model via a specified XPath value." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:subClassOf oa:Selector .
|
||||
|
||||
oa:PreferContainedDescriptions a rdfs:Resource ;
|
||||
rdfs:label "PreferContainedDescriptions" ;
|
||||
rdfs:comment "An IRI to signal the client prefers to receive full descriptions of the Annotations from a container, not just their IRIs." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:PreferContainedIRIs a rdfs:Resource ;
|
||||
rdfs:label "PreferContainedIRIs" ;
|
||||
rdfs:comment "An IRI to signal that the client prefers to receive only the IRIs of the Annotations from a container, not their full descriptions." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:annotationService a rdf:Property ;
|
||||
rdfs:label "annotationService" ;
|
||||
rdfs:comment """The object of the relationship is the end point of a service that conforms to the annotation-protocol, and it may be associated with any resource. The expectation of asserting the relationship is that the object is the preferred service for maintaining annotations about the subject resource, according to the publisher of the relationship.
|
||||
|
||||
This relationship is intended to be used both within Linked Data descriptions and as the rel type of a Link, via HTTP Link Headers rfc5988 for binary resources and in HTML <link> elements. For more information about these, please see the Annotation Protocol specification annotation-protocol.
|
||||
""" ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:assessing a oa:Motivation ;
|
||||
rdfs:label "assessing" ;
|
||||
rdfs:comment "The motivation for when the user intends to provide an assessment about the Target resource." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:bodyValue a rdf:Property ;
|
||||
rdfs:label "bodyValue" ;
|
||||
rdfs:comment """The object of the predicate is a plain text string to be used as the content of the body of the Annotation. The value MUST be an xsd:string and that data type MUST NOT be expressed in the serialization. Note that language MUST NOT be associated with the value either as a language tag, as that is only available for rdf:langString .
|
||||
""" ;
|
||||
rdfs:domain oa:Annotation ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:string .
|
||||
|
||||
oa:bookmarking a oa:Motivation ;
|
||||
rdfs:label "bookmarking" ;
|
||||
rdfs:comment "The motivation for when the user intends to create a bookmark to the Target or part thereof." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:cachedSource a rdf:Property ;
|
||||
rdfs:label "cachedSource" ;
|
||||
rdfs:comment "A object of the relationship is a copy of the Source resource's representation, appropriate for the Annotation." ;
|
||||
rdfs:domain oa:TimeState ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:canonical a rdf:Property ;
|
||||
rdfs:label "canonical" ;
|
||||
rdfs:comment "A object of the relationship is the canonical IRI that can always be used to deduplicate the Annotation, regardless of the current IRI used to access the representation." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:classifying a oa:Motivation ;
|
||||
rdfs:label "classifying" ;
|
||||
rdfs:comment "The motivation for when the user intends to that classify the Target as something." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:commenting a oa:Motivation ;
|
||||
rdfs:label "commenting" ;
|
||||
rdfs:comment "The motivation for when the user intends to comment about the Target." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:describing a oa:Motivation ;
|
||||
rdfs:label "describing" ;
|
||||
rdfs:comment "The motivation for when the user intends to describe the Target, as opposed to a comment about them." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:editing a oa:Motivation ;
|
||||
rdfs:label "editing" ;
|
||||
rdfs:comment "The motivation for when the user intends to request a change or edit to the Target resource." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:end a rdf:Property ;
|
||||
rdfs:label "end" ;
|
||||
rdfs:comment "The end property is used to convey the 0-based index of the end position of a range of content." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:nonNegativeInteger .
|
||||
|
||||
oa:exact a rdf:Property ;
|
||||
rdfs:label "exact" ;
|
||||
rdfs:comment "The object of the predicate is a copy of the text which is being selected, after normalization." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:string .
|
||||
|
||||
oa:hasBody a rdf:Property ;
|
||||
rdfs:label "hasBody" ;
|
||||
rdfs:comment "The object of the relationship is a resource that is a body of the Annotation." ;
|
||||
rdfs:domain oa:Annotation ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:hasEndSelector a rdf:Property ;
|
||||
rdfs:label "hasEndSelector" ;
|
||||
rdfs:comment "The relationship between a RangeSelector and the Selector that describes the end position of the range. " ;
|
||||
rdfs:domain oa:RangeSelector ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range oa:Selector .
|
||||
|
||||
oa:hasPurpose a rdf:Property ;
|
||||
rdfs:label "hasPurpose" ;
|
||||
rdfs:comment "The purpose served by the resource in the Annotation." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range oa:Motivation .
|
||||
|
||||
oa:hasScope a rdf:Property ;
|
||||
rdfs:label "hasScope" ;
|
||||
rdfs:comment "The scope or context in which the resource is used within the Annotation." ;
|
||||
rdfs:domain oa:SpecificResource ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:hasSelector a rdf:Property ;
|
||||
rdfs:label "hasSelector" ;
|
||||
rdfs:comment "The object of the relationship is a Selector that describes the segment or region of interest within the source resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model." ;
|
||||
rdfs:domain oa:ResourceSelection ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range oa:Selector .
|
||||
|
||||
oa:hasSource a rdf:Property ;
|
||||
rdfs:label "hasSource" ;
|
||||
rdfs:comment "The resource that the ResourceSelection, or its subclass SpecificResource, is refined from, or more specific than. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model." ;
|
||||
rdfs:domain oa:ResourceSelection ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:hasStartSelector a rdf:Property ;
|
||||
rdfs:label "hasStartSelector" ;
|
||||
rdfs:comment "The relationship between a RangeSelector and the Selector that describes the start position of the range. " ;
|
||||
rdfs:domain oa:RangeSelector ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range oa:Selector .
|
||||
|
||||
oa:hasState a rdf:Property ;
|
||||
rdfs:label "hasState" ;
|
||||
rdfs:comment "The relationship between the ResourceSelection, or its subclass SpecificResource, and a State resource. Please note that the domain ( oa:ResourceSelection ) is not used directly in the Web Annotation model." ;
|
||||
rdfs:domain oa:ResourceSelection ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range oa:State .
|
||||
|
||||
oa:hasTarget a rdf:Property ;
|
||||
rdfs:label "hasTarget" ;
|
||||
rdfs:comment "The relationship between an Annotation and its Target." ;
|
||||
rdfs:domain oa:Annotation ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:highlighting a oa:Motivation ;
|
||||
rdfs:label "highlighting" ;
|
||||
rdfs:comment "The motivation for when the user intends to highlight the Target resource or segment of it." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:identifying a oa:Motivation ;
|
||||
rdfs:label "identifying" ;
|
||||
rdfs:comment "The motivation for when the user intends to assign an identity to the Target or identify what is being depicted or described in the Target." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:linking a oa:Motivation ;
|
||||
rdfs:label "linking" ;
|
||||
rdfs:comment "The motivation for when the user intends to link to a resource related to the Target." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:ltrDirection a oa:Direction ;
|
||||
rdfs:label "ltrDirection" ;
|
||||
rdfs:comment "The direction of text that is read from left to right." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:moderating a oa:Motivation ;
|
||||
rdfs:label "moderating" ;
|
||||
rdfs:comment "The motivation for when the user intends to assign some value or quality to the Target." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:motivatedBy a rdf:Property ;
|
||||
rdfs:label "motivatedBy" ;
|
||||
rdfs:comment "The relationship between an Annotation and a Motivation that describes the reason for the Annotation's creation." ;
|
||||
rdfs:domain oa:Annotation ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range oa:Motivation .
|
||||
|
||||
oa:prefix a rdf:Property ;
|
||||
rdfs:label "prefix" ;
|
||||
rdfs:comment "The object of the property is a snippet of content that occurs immediately before the content which is being selected by the Selector." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:string .
|
||||
|
||||
oa:processingLanguage a rdf:Property ;
|
||||
rdfs:label "processingLanguage" ;
|
||||
rdfs:comment "The object of the property is the language that should be used for textual processing algorithms when dealing with the content of the resource, including hyphenation, line breaking, which font to use for rendering and so forth. The value must follow the recommendations of BCP47." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:string .
|
||||
|
||||
oa:questioning a oa:Motivation ;
|
||||
rdfs:label "questioning" ;
|
||||
rdfs:comment "The motivation for when the user intends to ask a question about the Target." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:refinedBy a rdf:Property ;
|
||||
rdfs:label "refinedBy" ;
|
||||
rdfs:comment "The relationship between a Selector and another Selector or a State and a Selector or State that should be applied to the results of the first to refine the processing of the source resource. " ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:renderedVia a rdf:Property ;
|
||||
rdfs:label "renderedVia" ;
|
||||
rdfs:comment "A system that was used by the application that created the Annotation to render the resource." ;
|
||||
rdfs:domain oa:SpecificResource ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:replying a oa:Motivation ;
|
||||
rdfs:label "replying" ;
|
||||
rdfs:comment "The motivation for when the user intends to reply to a previous statement, either an Annotation or another resource." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:rtlDirection a oa:Direction ;
|
||||
rdfs:label "rtlDirection" ;
|
||||
rdfs:comment "The direction of text that is read from right to left." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:sourceDate a rdf:Property ;
|
||||
rdfs:label "sourceDate" ;
|
||||
rdfs:comment "The timestamp at which the Source resource should be interpreted as being applicable to the Annotation." ;
|
||||
rdfs:domain oa:TimeState ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:dateTime .
|
||||
|
||||
oa:sourceDateEnd a rdf:Property ;
|
||||
rdfs:label "sourceDateEnd" ;
|
||||
rdfs:comment "The end timestamp of the interval over which the Source resource should be interpreted as being applicable to the Annotation." ;
|
||||
rdfs:domain oa:TimeState ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:dateTime .
|
||||
|
||||
oa:sourceDateStart a rdf:Property ;
|
||||
rdfs:label "sourceDateStart" ;
|
||||
rdfs:comment "The start timestamp of the interval over which the Source resource should be interpreted as being applicable to the Annotation." ;
|
||||
rdfs:domain oa:TimeState ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:dateTime .
|
||||
|
||||
oa:start a rdf:Property ;
|
||||
rdfs:label "start" ;
|
||||
rdfs:comment "The start position in a 0-based index at which a range of content is selected from the data in the source resource." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:nonNegativeInteger .
|
||||
|
||||
oa:styleClass a rdf:Property ;
|
||||
rdfs:label "styleClass" ;
|
||||
rdfs:comment "The name of the class used in the CSS description referenced from the Annotation that should be applied to the Specific Resource." ;
|
||||
rdfs:domain oa:SpecificResource ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:string .
|
||||
|
||||
oa:styledBy a rdf:Property ;
|
||||
rdfs:label "styledBy" ;
|
||||
rdfs:comment "A reference to a Stylesheet that should be used to apply styles to the Annotation rendering." ;
|
||||
rdfs:domain oa:Annotation ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range oa:Style .
|
||||
|
||||
oa:suffix a rdf:Property ;
|
||||
rdfs:label "suffix" ;
|
||||
rdfs:comment "The snippet of text that occurs immediately after the text which is being selected." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range xsd:string .
|
||||
|
||||
oa:tagging a oa:Motivation ;
|
||||
rdfs:label "tagging" ;
|
||||
rdfs:comment "The motivation for when the user intends to associate a tag with the Target." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa:textDirection a rdf:Property ;
|
||||
rdfs:label "textDirection" ;
|
||||
rdfs:comment "The direction of the text of the subject resource. There MUST only be one text direction associated with any given resource." ;
|
||||
rdfs:isDefinedBy oa: ;
|
||||
rdfs:range oa:Direction .
|
||||
|
||||
oa:via a rdf:Property ;
|
||||
rdfs:label "via" ;
|
||||
rdfs:comment "A object of the relationship is a resource from which the source resource was retrieved by the providing system." ;
|
||||
rdfs:isDefinedBy oa: .
|
||||
|
||||
oa: a owl:Ontology ;
|
||||
dc:title "Web Annotation Ontology" ;
|
||||
dcterms:creator [a foaf:Person; foaf:name "Benjamin Young"],
|
||||
[a foaf:Person; foaf:name "Paolo Ciccarese"],
|
||||
[a foaf:Person; foaf:name "Robert Sanderson"] ;
|
||||
dcterms:modified "2016-11-12T21:28:11Z" ;
|
||||
rdfs:comment "The Web Annotation ontology defines the terms of the Web Annotation vocabulary. Any changes to this document MUST be from a Working Group in the W3C that has established expertise in the area." ;
|
||||
rdfs:seeAlso <http://www.w3.org/TR/annotation-vocab/> ;
|
||||
prov:wasRevisionOf <http://www.openannotation.org/spec/core/20130208/oa.owl> ;
|
||||
owl:versionInfo "2016-11-12T21:28:11Z" .
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -4,7 +4,7 @@
|
|||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"sync-schemas": "rsync -av --delete --exclude=\"archive/\" ../schemas/20251121/linkml/ public/schemas/20251121/linkml/",
|
||||
"sync-schemas": "rsync -av --delete ../schemas/20251121/linkml/ public/schemas/20251121/linkml/",
|
||||
"generate-manifest": "node scripts/generate-schema-manifest.cjs",
|
||||
"dev": "pnpm run sync-schemas && pnpm run generate-manifest && vite",
|
||||
"build": "pnpm run sync-schemas && pnpm run generate-manifest && tsc -b && vite build",
|
||||
|
|
|
|||
|
|
@ -43,15 +43,12 @@ imports:
|
|||
- modules/slots/has_appellation_type
|
||||
- modules/slots/has_appellation_value
|
||||
- modules/slots/has_or_had_arrangement_system
|
||||
- modules/slots/has_or_had_description
|
||||
- modules/slots/has_or_had_label
|
||||
# collection_description ARCHIVED (2026-01-18) - migrated to has_or_had_description (Rule 53)
|
||||
# collection_name ARCHIVED (2026-01-18) - migrated to has_or_had_label (Rule 53)
|
||||
- modules/slots/collection_description
|
||||
- modules/slots/collection_name
|
||||
# collection_scope ARCHIVED (2026-01-18) - migrated to has_or_had_scope + CollectionScope (Rule 53)
|
||||
- modules/slots/has_or_had_scope
|
||||
- modules/slots/collection_type
|
||||
# collections_under_responsibility ARCHIVED (2026-01-19) - migrated to is_or_was_responsible_for (Rule 53)
|
||||
- modules/slots/is_or_was_responsible_for
|
||||
- modules/slots/collections_under_responsibility
|
||||
- modules/slots/confidence_method
|
||||
- modules/slots/confidence_score
|
||||
- modules/slots/confidence_value
|
||||
|
|
@ -602,7 +599,7 @@ imports:
|
|||
- modules/slots/has_or_had_area_served
|
||||
- modules/slots/has_or_had_member_custodian
|
||||
- modules/slots/membership_criteria
|
||||
# community_engagement ARCHIVED 2026-01-19 - migrated to has_or_had_activity (imported above)
|
||||
- modules/slots/community_engagement
|
||||
- modules/slots/service_offering
|
||||
- modules/slots/record_type
|
||||
- modules/slots/society_focus
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_admission_fee
|
||||
name: has_or_had_admission_fee_slot
|
||||
title: Has Or Had Admission Fee Slot
|
||||
prefixes:
|
||||
gr: http://purl.org/goodrelations/v1#
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
linkml: https://w3id.org/linkml/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_or_had_admission_fee:
|
||||
description: "Admission fee charged by the institution. Temporal as fees change. A string describing the fee amount or structure (free, \u20AC10, \u20AC5-15, etc.)."
|
||||
range: string
|
||||
slot_uri: hc:hasOrHadAdmissionFee
|
||||
close_mappings:
|
||||
- schema:price
|
||||
- schema:priceRange
|
||||
related_mappings:
|
||||
- schema:offers
|
||||
- gr:hasPriceSpecification
|
||||
comments:
|
||||
- schema:offers links to Offer objects, not fee amounts directly. An admission fee is a specific price value, not an offer.
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Applicable to all heritage custodian types.
|
||||
custodian_types_primary: M
|
||||
specificity_score: 0.5
|
||||
specificity_rationale: Moderately specific slot.
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_classification
|
||||
name: has_or_had_classification_slot
|
||||
title: has_or_had_classification slot
|
||||
description: "Generic temporal classification slot following RiC-O naming pattern. Used for various classification schemes (biological, organizational, etc.).\nReplaces bespoke classification slots per Rule 53/56: - bio_type_classification \u2192 has_or_had_classification (in OutdoorSite)"
|
||||
version: 1.0.0
|
||||
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#
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_or_had_classification:
|
||||
slot_uri: schema:additionalType
|
||||
description: "Classification or categorization scheme value. Uses schema:additionalType for type classification compatibility.\nClasses narrow this slot's range via slot_usage to specific enum types: - OutdoorSite \u2192 BioCustodianTypeEnum (biological/botanical classification)"
|
||||
range: uriorcurie
|
||||
multivalued: true
|
||||
exact_mappings:
|
||||
- schema:additionalType
|
||||
close_mappings:
|
||||
- skos:Concept
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_comprehensive_overview
|
||||
name: has_or_had_comprehensive_overview_slot
|
||||
title: Has Or Had Comprehensive Overview Slot
|
||||
description: 'Generic slot for linking to comprehensive overview collections.
|
||||
|
||||
Follows RiC-O temporal naming convention to indicate the relationship may be current or historical.'
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
schema: http://schema.org/
|
||||
rico: https://www.ica.org/standards/RiC/ontology#
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../classes/Overview
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_or_had_comprehensive_overview:
|
||||
description: "Links an entity to a comprehensive overview collection of resources.\nFollows RiC-O temporal naming convention (`hasOrHad*`) to indicate the relationship may be current or historical.\n**USAGE**:\n```yaml finding_aid:\n has_or_had_comprehensive_overview:\n id: hc:overview/findingaid-links\n title: \"All Links\"\n includes_or_included:\n - url: https://example.org/link1\n link_text: \"Related Resource\"\n```\n**DESIGN RATIONALE**:\nThis is a GENERIC slot for linking to comprehensive collections of resources. Replaces domain-specific slots like `all_links` with a typed relationship to an `Overview` class.\n**MIGRATION NOTE** (2026-01-14):\nCreated as replacement for `all_links` slot. The new pattern: - Uses typed `Overview` class instead of untyped string list - Uses `includes_or_included` for WebLink composition - Enables richer metadata about link collections\n**ONTOLOGY ALIGNMENT**:\n- `dcterms:hasPart` - Dublin Core part-whole relationship - `schema:hasPart`\
|
||||
\ - Schema.org containment - `rico:hasOrHadPart` - RiC-O temporal containment"
|
||||
range: Overview
|
||||
multivalued: false
|
||||
inlined: true
|
||||
slot_uri: dcterms:hasPart
|
||||
exact_mappings:
|
||||
- dcterms:hasPart
|
||||
close_mappings:
|
||||
- schema:hasPart
|
||||
- rico:hasOrHadPart
|
||||
annotations:
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Comprehensive overviews applicable to all heritage custodian types.
|
||||
custodian_types_primary: A
|
||||
specificity_score: 0.35
|
||||
specificity_rationale: Low-moderate specificity - applicable across many contexts where comprehensive resource collections are needed.
|
||||
comments:
|
||||
- Replaces all_links slot
|
||||
- Uses Overview class for typed collection
|
||||
- Created from slot_fixes.yaml migration (2026-01-14)
|
||||
|
|
@ -1,115 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_custodian_type
|
||||
name: has_or_had_custodian_type_slot
|
||||
title: Has Or Had Custodian Type Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
org: http://www.w3.org/ns/org#
|
||||
rov: http://www.w3.org/ns/regorg#
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../classes/CustodianType
|
||||
slots:
|
||||
has_or_had_custodian_type:
|
||||
slot_uri: org:classification
|
||||
description: "The organizational type classification(s) of a heritage custodian within\nthe GLAMORCUBESFIXPHDNT taxonomy.\n\n**Predicate Semantics**:\nThis slot uses org:classification as its primary predicate, which links\nan organization to its type classification(s) using SKOS concepts.\n\n**Temporal Semantics** (RiC-O Pattern):\nThe \"hasOrHad\" naming follows RiC-O convention indicating this relationship\nmay be historical - an institution may have changed type over time\n(e.g., a library becoming a museum, or a mixed institution).\n\n**Ontological Alignment**:\n- **Primary** (`slot_uri`): `org:classification` - W3C Organization Ontology\n predicate for organizational classification (range: skos:Concept)\n- **Close**: `rov:orgType` - Registered Organization Vocabulary predicate\n (subPropertyOf org:classification, for legal entity types like GmbH, Ltd)\n- **Related**: `crm:P2_has_type` - CIDOC-CRM predicate for typing entities\n (domain: E1_CRM_Entity, range: E55_Type)\n- **Related**:\
|
||||
\ `schema:additionalType` - Schema.org predicate for additional\n type classification beyond the primary @type\n- **Broad**: `dcterms:type` - Dublin Core predicate for resource type\n\n**Range**:\nValues are instances of `CustodianType` or its 19 subclasses:\n\n| Code | Subclass | Wikidata | Description |\n|------|--------------------------------|-----------|--------------------------------|\n| A | ArchiveOrganizationType | Q166118 | Archives |\n| B | BioCustodianType | Q167346 | Botanical gardens, zoos |\n| C | CommercialOrganizationType | Q6881511 | Corporate archives |\n| D | DigitalPlatformType | Q3565794 | Digital platforms |\n| E | EducationProviderType | Q3152824 | Educational institutions |\n| F | FeatureCustodianType | Q4989906 | Monuments, memorials |\n| G | GalleryType \
|
||||
\ | Q1007870 | Art galleries |\n| H | HolySacredSiteType | Q1370598 | Religious heritage sites |\n| I | IntangibleHeritageGroupType | Q59544 | Intangible heritage orgs |\n| L | LibraryType | Q7075 | Libraries |\n| M | MuseumType | Q33506 | Museums |\n| N | NonProfitType | Q163740 | NGOs, advocacy groups |\n| O | OfficialInstitutionType | Q2659904 | Government agencies |\n| P | PersonalCollectionType | Q2668072 | Private collections |\n| R | ResearchOrganizationType | Q31855 | Research institutes |\n| S | HeritageSocietyType | Q476068 | Historical societies |\n| T | TasteScentHeritageType | Q5765838 | Culinary/olfactory heritage |\n| U | UnspecifiedType | Q35120 | Unknown\
|
||||
\ type |\n| X | MixedCustodianType | Q35120 | Multiple types combined |\n\nEach CustodianType subclass provides:\n- Wikidata Q-number alignment (via schema:additionalType)\n- Multilingual labels (skos:prefLabel, skos:altLabel)\n- Hierarchical relationships (skos:broader, skos:narrower)\n- GHCID single-letter code derivation\n\n**Cardinality**:\nMultivalued - institutions may have multiple types (e.g., museum + archive).\nUse MixedCustodianType (X) for institutions with complex multi-type identity.\n"
|
||||
range: CustodianType
|
||||
required: false
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
exact_mappings:
|
||||
- org:classification
|
||||
close_mappings:
|
||||
- rov:orgType
|
||||
related_mappings:
|
||||
- crm:P2_has_type
|
||||
- schema:additionalType
|
||||
broad_mappings:
|
||||
- dcterms:type
|
||||
annotations:
|
||||
rico_naming_convention: 'Follows RiC-O "hasOrHad" pattern for temporal predicates.
|
||||
|
||||
See Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
|
||||
'
|
||||
replaces_slots: custodian_type, custodian_types
|
||||
migration_date: '2026-01-09'
|
||||
predicate_clarification: 'slot_uri and mappings reference PREDICATES (properties), not classes.
|
||||
|
||||
- org:classification is a PREDICATE (links Organization to Concept)
|
||||
|
||||
- CustodianType is a CLASS (the range of valid values)
|
||||
|
||||
'
|
||||
range_note: 'Range is CustodianType (abstract class). Valid values are the 19
|
||||
|
||||
CustodianType subclasses defined in modules/classes/:
|
||||
|
||||
- ArchiveOrganizationType.yaml
|
||||
|
||||
- BioCustodianType.yaml
|
||||
|
||||
- CommercialOrganizationType.yaml
|
||||
|
||||
- DigitalPlatformType.yaml
|
||||
|
||||
- EducationProviderType.yaml
|
||||
|
||||
- FeatureCustodianType.yaml
|
||||
|
||||
- GalleryType.yaml
|
||||
|
||||
- HolySacredSiteType.yaml
|
||||
|
||||
- IntangibleHeritageGroupType.yaml
|
||||
|
||||
- LibraryType.yaml
|
||||
|
||||
- MuseumType.yaml
|
||||
|
||||
- NonProfitType.yaml (N)
|
||||
|
||||
- OfficialInstitutionType.yaml
|
||||
|
||||
- PersonalCollectionType.yaml
|
||||
|
||||
- ResearchOrganizationType.yaml
|
||||
|
||||
- HeritageSocietyType.yaml
|
||||
|
||||
- TasteScentHeritageType.yaml
|
||||
|
||||
- UnspecifiedType.yaml
|
||||
|
||||
- MixedCustodianType.yaml
|
||||
|
||||
'
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
comments:
|
||||
- Unified slot replacing custodian_type (singular) and custodian_types (plural)
|
||||
- slot_uri=org:classification is a PREDICATE, not a class
|
||||
- range=CustodianType is an ABSTRACT CLASS - valid values are its 19 subclasses
|
||||
- 'RiC-O naming: hasOrHad indicates potentially historical relationship'
|
||||
- 'Multivalued: institutions may have multiple type classifications'
|
||||
examples:
|
||||
- value: hc:MuseumType
|
||||
description: Art museum classification (M code)
|
||||
- value: hc:ArchiveOrganizationType
|
||||
description: Archive classification (A code)
|
||||
- value: '[hc:MuseumType, hc:ArchiveOrganizationType]'
|
||||
description: Mixed institution with both museum and archive functions
|
||||
- value: hc:MixedCustodianType
|
||||
description: Explicit mixed type when institution defies single categorization (X code)
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
# has_or_had_participant slot
|
||||
# Generic slot for participants
|
||||
#
|
||||
# Generation date: 2026-01-27
|
||||
# Rule compliance: 38, 39, 42
|
||||
#
|
||||
# Part of has_or_had_annual_participant_count migration (Rule 53)
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/has_or_had_participant
|
||||
name: has_or_had_participant_slot
|
||||
title: Has Or Had Participant Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
|
||||
slots:
|
||||
has_or_had_participant:
|
||||
slot_uri: schema:participant
|
||||
description: |
|
||||
A participant in an activity or event.
|
||||
|
||||
**Temporal Semantics** (RiC-O Pattern):
|
||||
"hasOrHad" indicates participation occurred in the past or present.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- `schema:participant`: A person or organization that supports (sponsors) something through some pledge, promise, or financial contribution.
|
||||
|
||||
**Range**:
|
||||
- `Participant` class (or `Agent`, `Person`, `Organization`).
|
||||
range: uriorcurie
|
||||
multivalued: true
|
||||
required: false
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
# has_or_had_policy slot
|
||||
# Policy association following RiC-O naming pattern
|
||||
#
|
||||
# Generation date: 2026-01-15
|
||||
# Updated: 2026-01-22 - Broadened range from TransferPolicy to Policy (Rule 53, 55)
|
||||
# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml), 55 (broaden generic ranges)
|
||||
#
|
||||
# Used by TransferEvent, Storage, and other classes for governing policies
|
||||
|
||||
id: https://nde.nl/ontology/hc/slot/has_or_had_policy
|
||||
name: has_or_had_policy_slot
|
||||
title: Has Or Had Policy Slot
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
odrl: http://www.w3.org/ns/odrl/2/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../classes/Policy # Base class for all policy types (changed from TransferPolicy 2026-01-22)
|
||||
slots:
|
||||
has_or_had_policy:
|
||||
slot_uri: odrl:hasPolicy
|
||||
description: |
|
||||
Policy that governs or governed an activity or entity.
|
||||
|
||||
**Temporal Semantics** (RiC-O Pattern):
|
||||
The "hasOrHad" naming follows RiC-O convention indicating
|
||||
the policy association may be historical.
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary** (`slot_uri`): `odrl:hasPolicy` - ODRL policy association
|
||||
- **Related**: `dcterms:accessRights` - Dublin Core access rights
|
||||
|
||||
**Use Cases**:
|
||||
- Transfer policies governing custody changes
|
||||
- Access policies for collections
|
||||
- Retention policies for archives
|
||||
|
||||
**Range**: Policy (base class - accepts TransferPolicy, ConditionPolicy, etc.)
|
||||
|
||||
**Cardinality**:
|
||||
Multivalued - entities may be governed by multiple policies.
|
||||
|
||||
range: Policy # Broadened from TransferPolicy per Rule 55 (2026-01-22)
|
||||
required: false
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
|
||||
related_mappings:
|
||||
- dcterms:accessRights
|
||||
|
||||
annotations:
|
||||
rico_naming_convention: |
|
||||
Follows RiC-O "hasOrHad" pattern for temporal predicates.
|
||||
See Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
replaces_slots: "transfer_policy"
|
||||
migration_date: "2026-01-15"
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: Policy associations apply to all heritage types.
|
||||
specificity_score: 0.45
|
||||
specificity_rationale: Specialized slot for policy governance.
|
||||
|
||||
comments:
|
||||
- "Links entities to governing policies"
|
||||
- "Maps to odrl:hasPolicy for rights/rules"
|
||||
- "RiC-O naming: hasOrHad indicates potentially historical"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
policy_name: "Donor Transfer Restriction"
|
||||
policy_text: "Materials may not be transferred without donor consent."
|
||||
description: "Transfer policy for collection"
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_registration_number
|
||||
name: has_or_had_registration_number_slot
|
||||
imports:
|
||||
- linkml:types
|
||||
slots:
|
||||
has_or_had_registration_number:
|
||||
slot_uri: rov:registration
|
||||
range: RegistrationNumber
|
||||
multivalued: true
|
||||
description: 'Official registration numbers assigned by authorities (Chamber of Commerce,
|
||||
|
||||
charity registration, company registration, etc.).
|
||||
|
||||
|
||||
Organizations can have multiple registrations in different systems.
|
||||
|
||||
Each registration has temporal validity to track changes over time.
|
||||
|
||||
|
||||
Links to RegistrationNumber class which includes:
|
||||
|
||||
- number: The actual registration number
|
||||
|
||||
- type: Type of registration (KvK, EIN, charity number, etc.)
|
||||
|
||||
- temporal_validity: Time period when registration is/was valid
|
||||
|
||||
'
|
||||
comments:
|
||||
- Replaces deprecated registration_number (singular) and registration_date slots
|
||||
- Temporal validity now captured in RegistrationNumber.temporal_validity
|
||||
- Multiple registrations common for organizations operating in multiple jurisdictions
|
||||
exact_mappings:
|
||||
- rov:registration
|
||||
close_mappings:
|
||||
- schema:identifier
|
||||
- tooi:organisatieIdentificatie
|
||||
examples:
|
||||
- value: "- number: \"41215422\"\n type: \"KvK\"\n temporal_validity:\n begin_of_the_begin: \"1885-07-01\"\n"
|
||||
description: Dutch Chamber of Commerce registration for Rijksmuseum
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_safeguard
|
||||
name: has_or_had_safeguard_slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
owl: http://www.w3.org/2002/07/owl#
|
||||
ich: https://ich.unesco.org/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../classes/IntangibleHeritageForm
|
||||
slots:
|
||||
has_or_had_safeguard:
|
||||
slot_uri: crm:P109_has_current_or_former_curator
|
||||
description: "Intangible heritage forms that this custodian safeguards/preserves.\n\nWe use the inverse direction: Custodian \u2192 IntangibleHeritageForm\n\n**UNESCO 2003 Convention Context**:\n\n\"Safeguarding\" in the intangible heritage context means measures aimed at ensuring\nthe viability of intangible cultural heritage, including:\n- Identification and documentation\n- Research and preservation\n- Protection and promotion\n- Enhancement and transmission (especially through formal and non-formal education)\n- Revitalization of various aspects of such heritage\n\n**Usage**:\n\n- Custodians with `institution_type = I` (Intangible Heritage Group) typically safeguard heritage forms\n- Custodians with `institution_type = T` (Taste/Smell) may also safeguard culinary traditions\n- Other custodian types may occasionally safeguard heritage forms as secondary activity\n\n**Examples**:\n- Stichting Amsterdam Gay Pride safeguards Pride Amsterdam\n- Gilde Sint Joris Heemkundige Kring safeguards\
|
||||
\ local folklore traditions\n- Bakkerij van Maanen safeguards traditional Dutch baking methods"
|
||||
range: IntangibleHeritageForm
|
||||
multivalued: true
|
||||
inlined: false
|
||||
exact_mappings:
|
||||
- crm:P109_has_current_or_former_curator
|
||||
related_mappings:
|
||||
- ich:safeguardedBy
|
||||
- schema:maintainer
|
||||
comments:
|
||||
- Inverse of safeguarded_by (crm:P109i_is_current_or_former_curator_of)
|
||||
- Creates owl:inverseOf axiom in RDF output
|
||||
- Enables navigation from Custodian to heritage forms they preserve
|
||||
- 'Inverse: `safeguarded_by` (crm:P109i_is_current_or_former_curator_of) | Pattern: If Custodian safeguards HeritageForm, then HeritageForm safeguarded_by Custodian'
|
||||
annotations:
|
||||
inverse_slot: safeguarded_by
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_section_link
|
||||
name: has_or_had_section_link_slot
|
||||
title: Section Links Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_or_had_section_link:
|
||||
slot_uri: schema:relatedLink
|
||||
description: Links within this section
|
||||
range: PageLink
|
||||
multivalued: true
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- schema:relatedLink
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_short_code
|
||||
name: has_or_had_short_code_slot
|
||||
title: Has Or Had Short Code Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
schema: http://schema.org/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
slots:
|
||||
has_or_had_short_code:
|
||||
slot_uri: skos:notation
|
||||
description: "Short code or notation for a type classification.\n\n**Temporal Semantics** (RiC-O Pattern):\nThe \"hasOrHad\" naming follows RiC-O convention indicating this relationship\nmay be historical - a type's code may change over time.\n\n**Ontological Alignment**:\n- **Primary** (`slot_uri`): `skos:notation` - SKOS notation for\n coding system identifiers\n- **Related**: `dcterms:identifier` - Dublin Core identifier\n\n**Format**:\nTypically uppercase with underscores (e.g., ARCHIVE_DEPOT, COLD_STORAGE).\nCodes align with enum values for backward compatibility.\n\n**Pattern**:\n^[A-Z][A-Z0-9_]*$ - Uppercase letters, digits, and underscores\n"
|
||||
range: string
|
||||
required: false
|
||||
multivalued: false
|
||||
pattern: ^[A-Z][A-Z0-9_]*$
|
||||
exact_mappings:
|
||||
- skos:notation
|
||||
related_mappings:
|
||||
- dcterms:identifier
|
||||
annotations:
|
||||
rico_naming_convention: 'Follows RiC-O "hasOrHad" pattern for temporal predicates.
|
||||
|
||||
See Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
|
||||
'
|
||||
replaces_slots: storage_type_code
|
||||
migration_date: '2026-01-13'
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
comments:
|
||||
- Generic short code slot for type classifications
|
||||
- Maps to skos:notation for controlled vocabulary codes
|
||||
- 'Pattern: uppercase with underscores (ARCHIVE_DEPOT)'
|
||||
- Codes align with enum values for backward compatibility
|
||||
- 'RiC-O naming: hasOrHad indicates potentially historical relationship'
|
||||
examples:
|
||||
- value: ARCHIVE_DEPOT
|
||||
description: Archive depot storage type code
|
||||
- value: COLD_STORAGE
|
||||
description: Cold storage type code
|
||||
- value: CLIMATE_CONTROLLED
|
||||
description: Climate controlled zone type code
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_storage_facility
|
||||
name: has_or_had_storage_facility_slot
|
||||
title: Storage Facilities Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../classes/Storage
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_or_had_storage_facility:
|
||||
slot_uri: premis:storedAt
|
||||
range: Storage
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
description: Storage facilities operated by this custodian for heritage collections.
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- premis:storedAt
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_sub_guide
|
||||
name: has_or_had_sub_guide_slot
|
||||
title: Sub Guides Slot
|
||||
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/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_or_had_sub_guide:
|
||||
slot_uri: rico:directlyIncludes
|
||||
description: Sub-guides or related finding aids within this repository
|
||||
range: SubGuideReference
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
comments:
|
||||
- rico:includes does not exist - use rico:directlyIncludes or rico:includesOrIncluded
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- rico:directlyIncludes
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_or_had_sub_section
|
||||
name: has_or_had_sub_section_slot
|
||||
title: Sub Sections Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_or_had_sub_section:
|
||||
slot_uri: schema:hasPart
|
||||
description: Nested sub-sections
|
||||
range: PageSection
|
||||
multivalued: true
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- schema:hasPart
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_outdoor_seating
|
||||
name: has_outdoor_seating_slot
|
||||
title: has_outdoor_seating slot
|
||||
version: 1.0.0
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_outdoor_seating:
|
||||
slot_uri: schema:amenityFeature
|
||||
description: 'Whether facility has outdoor/terrace seating.
|
||||
|
||||
'
|
||||
range: boolean
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- schema:amenityFeature
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_publication_series
|
||||
name: has_publication_series_slot
|
||||
title: Has Publication Series Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_publication_series:
|
||||
description: 'Whether this research center publishes a regular publication series.
|
||||
|
||||
'
|
||||
range: boolean
|
||||
slot_uri: hc:hasPublicationSeries
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- hc:hasPublicationSeries
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_research_library
|
||||
name: has_research_library_slot
|
||||
title: Has Research Library Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
has_research_library:
|
||||
description: 'Whether this research center maintains a specialized research library.
|
||||
|
||||
'
|
||||
range: boolean
|
||||
slot_uri: hc:hasResearchLibrary
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- hc:hasResearchLibrary
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/has_unit
|
||||
name: has_unit
|
||||
title: Has Organizational Unit
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
org: http://www.w3.org/ns/org#
|
||||
owl: http://www.w3.org/2002/07/owl#
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../classes/OrganizationalStructure
|
||||
slots:
|
||||
has_unit:
|
||||
slot_uri: org:hasUnit
|
||||
description: "Organizational units (departments, divisions, teams) that are part of \nthis organizational structure.\n\n**Hierarchical Navigation**:\n- Down: has_unit \u2192 child units\n- Up: parent_unit \u2192 parent unit"
|
||||
range: OrganizationalStructure
|
||||
multivalued: true
|
||||
exact_mappings:
|
||||
- org:hasUnit
|
||||
related_mappings:
|
||||
- crm:P148_has_component
|
||||
- rico:includesOrIncluded
|
||||
- rdf:type
|
||||
comments:
|
||||
- Inverse of parent_unit (org:unitOf)
|
||||
- Enables top-down navigation of organizational hierarchy
|
||||
- Creates owl:inverseOf axiom in RDF output
|
||||
- 'Inverse: `parent_unit` (org:unitOf) | Pattern: If A hasUnit B, then B unitOf A'
|
||||
annotations:
|
||||
inverse_slot: parent_unit
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
examples:
|
||||
- value: "OrganizationalStructure:\n unit_name: \"Collections Division\"\n has_unit:\n - unit_name: \"Paintings\\ \\ Department\"\n - unit_name: \"Prints and Drawings Department\"\n - unit_name: \"Applied Arts Depart...\n"
|
||||
description: Usage example
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/hazard
|
||||
name: hazard_slot
|
||||
title: Hazards Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
hazard:
|
||||
description: 'Hazards or safety concerns in the space.
|
||||
|
||||
Aligned with schema:warning.
|
||||
|
||||
'
|
||||
slot_uri: schema:warning
|
||||
range: string
|
||||
multivalued: true
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- schema:warning
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/hc_id
|
||||
name: hc_id-slot
|
||||
imports:
|
||||
- linkml:types
|
||||
slots:
|
||||
hc_id:
|
||||
description: "The persistent identifier for a heritage custodian entity in the NDE Heritage \nCustodian ontology. This is the core identifier that serves as the hub connecting\nall observations, reconstructions, and names related to this custodian.\n\nFormat: https://nde.nl/ontology/hc/{abstracted-ghcid}\nExample: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804\n\nThe ID is derived from the GHCID pattern but abstracted/normalized for use\nas a persistent URI in the ontology namespace.\n"
|
||||
slot_uri: dcterms:identifier
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
pattern: ^https://nde\.nl/ontology/hc/[a-z0-9-]+$
|
||||
comments:
|
||||
- This is THE identifying property for custodian entities. All other properties and relationships connect through this hub identifier.
|
||||
- The path component after /hc/ is an abstracted, lowercased, hyphenated version of the GHCID pattern (country-region-city-type-abbrev-qnumber).
|
||||
see_also:
|
||||
- https://nde.nl/ontology/hc/
|
||||
- https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#identifier
|
||||
broad_mappings:
|
||||
- dcterms:identifier
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- dcterms:identifier
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/hc_preset_uri
|
||||
name: hc_preset_uri_slot
|
||||
title: HC Ontology Preset URI Slot
|
||||
description: 'Slot for referencing Heritage Custodian ontology environmental preset individuals.
|
||||
|
||||
|
||||
These presets are defined in hc-storage.ttl and provide standard environmental
|
||||
|
||||
configurations for heritage preservation contexts.
|
||||
|
||||
'
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
hc_preset_uri:
|
||||
description: "URI of the corresponding HC ontology environmental preset individual.\n\nThese presets define standard environmental parameters for heritage storage.\n\nExample presets:\n- hc:StandardArchiveEnvironment (18\xB0C, 50% RH)\n- hc:ColdStorageEnvironment (-5\xB0C, 30% RH)\n- hc:PhotographicMaterialsEnvironment (15\xB0C, 35% RH)\n- hc:TextileStorageEnvironment (18\xB0C, 50% RH, 50 lux)\n"
|
||||
range: string
|
||||
slot_uri: skos:exactMatch
|
||||
examples:
|
||||
- value: hc:StandardArchiveEnvironment
|
||||
description: "Standard archive storage preset (18\xB0C, 50% RH)"
|
||||
- value: hc:ColdStorageEnvironment
|
||||
description: "Cold storage preset (-5\xB0C, 30% RH)"
|
||||
- value: hc:PhotographicMaterialsEnvironment
|
||||
description: "Photographic materials storage preset (15\xB0C, 35% RH)"
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- skos:exactMatch
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/heading_level
|
||||
name: heading_level_slot
|
||||
title: Heading Level Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
heading_level:
|
||||
slot_uri: hc:headingLevel
|
||||
description: Heading level (1-6 for h1-h6)
|
||||
range: integer
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- hc:headingLevel
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/heading_text
|
||||
name: heading_text_slot
|
||||
title: Heading Text Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
schema: http://schema.org/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
heading_text:
|
||||
slot_uri: dcterms:title
|
||||
description: Text of the section heading (original language)
|
||||
range: string
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- dcterms:title
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/heading_text_en
|
||||
name: heading_text_en_slot
|
||||
title: Heading Text En Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
schema: http://schema.org/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
heading_text_en:
|
||||
slot_uri: dcterms:title
|
||||
description: English translation of heading
|
||||
range: string
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- dcterms:title
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/headline
|
||||
name: headline_slot
|
||||
title: Headline Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
headline:
|
||||
description: 'Professional headline/tagline from LinkedIn.
|
||||
|
||||
Typically includes current job title and/or professional identity.
|
||||
|
||||
'
|
||||
range: string
|
||||
slot_uri: hc:headline
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- hc:headline
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/slot/heritage_designation_date
|
||||
name: heritage_designation_date_slot
|
||||
title: Heritage Designation Date Slot
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
default_prefix: hc
|
||||
slots:
|
||||
heritage_designation_date:
|
||||
description: 'Date when heritage status was designated.
|
||||
|
||||
'
|
||||
range: date
|
||||
slot_uri: dcterms:date
|
||||
annotations:
|
||||
custodian_types:
|
||||
- '*'
|
||||
custodian_types_rationale: Universal utility concept
|
||||
exact_mappings:
|
||||
- dcterms:date
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,25 +0,0 @@
|
|||
classes:
|
||||
APIEndpoint:
|
||||
class_uri: schema:EntryPoint
|
||||
description: An API endpoint.
|
||||
slots:
|
||||
- has_or_had_url
|
||||
- has_or_had_description
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
classes:
|
||||
APIRequest:
|
||||
class_uri: prov:Activity
|
||||
description: An API request event.
|
||||
slots:
|
||||
- has_or_had_provenance
|
||||
- has_or_had_endpoint
|
||||
- has_or_had_version
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
classes:
|
||||
APIVersion:
|
||||
class_uri: schema:SoftwareApplication
|
||||
description: Version of an API.
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_identifier
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AVEquipment
|
||||
name: AVEquipment
|
||||
title: AVEquipment
|
||||
description: Audiovisual equipment used in heritage contexts (e.g., for playback, digitization).
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
- ../slots/has_or_had_type
|
||||
classes:
|
||||
AVEquipment:
|
||||
class_uri: schema:Product
|
||||
description: AV Equipment.
|
||||
slots:
|
||||
- has_or_had_name
|
||||
- has_or_had_type
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -8,54 +8,58 @@ prefixes:
|
|||
rico: https://www.ica.org/standards/RiC/ontology#
|
||||
wd: http://www.wikidata.org/entity/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./ArchiveOrganizationType
|
||||
- ./CollectionType
|
||||
- ./AcademicArchiveRecordSetTypes
|
||||
- ../slots/has_or_had_scope
|
||||
- ./Scope
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/dual_class_link
|
||||
- ../slots/has_or_had_hypernym
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./DualClassLink
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./WikidataAlignment
|
||||
- ./WikiDataEntry
|
||||
- ./AcademicArchiveRecordSetType
|
||||
- linkml:types
|
||||
- ./ArchiveOrganizationType
|
||||
- ./CollectionType
|
||||
- ./AcademicArchiveRecordSetTypes
|
||||
- ../slots/has_or_had_scope # was: type_scope - migrated per Rule 53 (2026-01-15)
|
||||
- ./Scope # for has_or_had_scope range (2026-01-15)
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/dual_class_link
|
||||
# broader_concept REMOVED - migrated to has_or_had_hypernym (Rule 53)
|
||||
- ../slots/has_or_had_hypernym
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ../slots/is_or_was_related_to # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
|
||||
- ./DualClassLink
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./WikidataAlignment
|
||||
- ./WikiDataEntry # for is_or_was_related_to range (2026-01-15)
|
||||
- ./AcademicArchiveRecordSetType
|
||||
classes:
|
||||
AcademicArchive:
|
||||
is_a: ArchiveOrganizationType
|
||||
class_uri: schema:ArchiveOrganization
|
||||
description: Archive of a higher education institution (university, college, polytechnic).
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_custodian_type
|
||||
- dual_class_link
|
||||
- hold_or_held_record_set_type
|
||||
# broader_concept REMOVED - migrated to has_or_had_hypernym (Rule 53)
|
||||
- has_or_had_hypernym
|
||||
- has_or_had_label
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- is_or_was_related_to
|
||||
- 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)
|
||||
structured_aliases:
|
||||
- literal_form: Hochschularchiv
|
||||
in_language: de
|
||||
- literal_form: "archivo acad\xE9mico"
|
||||
- literal_form: archivo académico
|
||||
in_language: es
|
||||
- literal_form: "archives acad\xE9miques"
|
||||
- literal_form: archives académiques
|
||||
in_language: fr
|
||||
- literal_form: archivio accademico
|
||||
in_language: it
|
||||
- literal_form: academisch archief
|
||||
in_language: nl
|
||||
- literal_form: "arquivo acad\xEAmico"
|
||||
- literal_form: arquivo acadêmico
|
||||
in_language: pt
|
||||
keywords:
|
||||
- administrative records
|
||||
|
|
@ -78,19 +82,26 @@ classes:
|
|||
equals_expression: '["hc:UniversityAdministrativeFonds", "hc:StudentRecordSeries", "hc:FacultyPaperCollection", "hc:CampusDocumentationCollection"]
|
||||
|
||||
'
|
||||
has_or_had_identifier:
|
||||
has_or_had_identifier: # was: wikidata_entity - migrated per Rule 53 (2026-01-16)
|
||||
pattern: ^Q[0-9]+$
|
||||
# equals_string removed 2026-01-17: incompatible with range uriorcurie; value Q27032435 in exact_mappings
|
||||
description: Wikidata identifier for Academic Archive concept (Q27032435)
|
||||
has_or_had_type:
|
||||
has_or_had_custodian_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType"]'
|
||||
is_or_was_related_to:
|
||||
is_or_was_related_to: # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
|
||||
range: WikidataAlignment
|
||||
inlined: true
|
||||
has_or_had_hypernym:
|
||||
description: MIGRATED from broader_concept (Rule 53). SKOS broader (parent) concept in the archive type hierarchy.
|
||||
description: >-
|
||||
MIGRATED from broader_concept (Rule 53).
|
||||
SKOS broader (parent) concept in the archive type hierarchy.
|
||||
equals_expression: '["wd:Q166118"]'
|
||||
has_or_had_label:
|
||||
description: Human-readable label for the broader concept. Stored for display to avoid repeated lookups. MIGRATED from broader_concept_label (2026-01-15) per Rule 53.
|
||||
description: >-
|
||||
Human-readable label for the broader concept.
|
||||
Stored for display to avoid repeated lookups.
|
||||
MIGRATED from broader_concept_label (2026-01-15) per Rule 53.
|
||||
# equals_string removed 2026-01-17: incompatible with range uriorcurie
|
||||
ifabsent: string(archive)
|
||||
dual_class_link:
|
||||
range: DualClassLink
|
||||
|
|
@ -118,8 +129,3 @@ classes:
|
|||
- wd:Q124762372
|
||||
- wd:Q1065413
|
||||
- AcademicArchiveRecordSetType
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -8,31 +8,31 @@ prefixes:
|
|||
rico: https://www.ica.org/standards/RiC/ontology#
|
||||
wd: http://www.wikidata.org/entity/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./CollectionType
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/dual_class_link
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_scope
|
||||
- ./Scope
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./DualClassLink
|
||||
- ./WikidataAlignment
|
||||
- linkml:types
|
||||
- ./CollectionType
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/dual_class_link
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ../slots/has_or_had_scope # was: type_scope - migrated per Rule 53 (2026-01-15)
|
||||
- ./Scope # for has_or_had_scope range (2026-01-15)
|
||||
- ../slots/is_or_was_related_to # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
|
||||
- ./DualClassLink # for DualClassLink range
|
||||
- ./WikidataAlignment # for WikidataAlignment range
|
||||
classes:
|
||||
AcademicArchiveRecordSetType:
|
||||
description: A rico:RecordSetType for classifying collections of academic and higher education institutional records.
|
||||
is_a: CollectionType
|
||||
class_uri: rico:RecordSetType
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_custodian_type
|
||||
- dual_class_link
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_scope
|
||||
- is_or_was_related_to
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- has_or_had_scope # was: type_scope - migrated per Rule 53 (2026-01-15)
|
||||
- is_or_was_related_to # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
|
||||
attributes:
|
||||
has_or_had_scope:
|
||||
has_or_had_scope: # was: type_scope - migrated per Rule 53 (2026-01-15)
|
||||
range: Scope
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
|
|
@ -47,26 +47,26 @@ classes:
|
|||
structured_aliases:
|
||||
- literal_form: Hochschularchivbestand
|
||||
in_language: de
|
||||
- literal_form: "fondo de archivo acad\xE9mico"
|
||||
- literal_form: fondo de archivo académico
|
||||
in_language: es
|
||||
- literal_form: "fonds d'archives acad\xE9miques"
|
||||
- literal_form: fonds d'archives académiques
|
||||
in_language: fr
|
||||
- literal_form: academisch archiefbestand
|
||||
in_language: nl
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
has_or_had_custodian_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType"]'
|
||||
is_or_was_related_to:
|
||||
is_or_was_related_to: # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
|
||||
range: WikidataAlignment
|
||||
inlined: true
|
||||
dual_class_link:
|
||||
range: DualClassLink
|
||||
inlined: true
|
||||
exact_mappings:
|
||||
- wd:Q27032435
|
||||
- rico:RecordSetType
|
||||
- wd:Q27032435 # Wikidata (was: slot_usage wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
- rico:RecordSetType
|
||||
broad_mappings:
|
||||
- wd:Q27032435
|
||||
- wd:Q27032435
|
||||
close_mappings:
|
||||
- skos:Concept
|
||||
see_also:
|
||||
|
|
@ -76,8 +76,3 @@ classes:
|
|||
- StudentRecordSeries
|
||||
- FacultyPaperCollection
|
||||
- CampusDocumentationCollection
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -15,12 +15,14 @@ imports:
|
|||
- linkml:types
|
||||
- ./AcademicArchiveRecordSetType
|
||||
- ./AcademicArchive
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
|
|
@ -29,7 +31,7 @@ imports:
|
|||
- ../slots/record_set_type
|
||||
- ../slots/scope_exclude
|
||||
- ../slots/scope_include
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/privacy_note
|
||||
|
|
@ -38,8 +40,8 @@ imports:
|
|||
- ../slots/scope_exclude
|
||||
- ../slots/scope_include
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/privacy_note
|
||||
|
|
@ -48,22 +50,29 @@ imports:
|
|||
- ../slots/scope_exclude
|
||||
- ../slots/scope_include
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
classes:
|
||||
UniversityAdministrativeFonds:
|
||||
is_a: AcademicArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for university administrative records organized as a fonds.\n\n**Definition**:\nRecords created or accumulated by a university's central administration in the \nexercise of governance, policy-making, and operational functions. Organized \naccording to archival principles of provenance (respect des fonds).\n\n**Typical Contents**:\n- Governance records (board minutes, resolutions, bylaws)\n- Committee records (senate, faculty councils, standing committees)\n- Policy records (institutional policies, procedures, guidelines)\n- Strategic planning documents\n- Accreditation and institutional assessment records\n- Executive correspondence\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records classified with this\ntype follow the fonds organizational principle as defined by rico-rst:Fonds\n(respect des fonds / provenance-based organization from university central administration).\n"
|
||||
description: "A rico:RecordSetType for university administrative records organized as a fonds.\n\n**Definition**:\nRecords\
|
||||
\ created or accumulated by a university's central administration in the \nexercise of governance, policy-making, and\
|
||||
\ operational functions. Organized \naccording to archival principles of provenance (respect des fonds).\n\n**Typical\
|
||||
\ Contents**:\n- Governance records (board minutes, resolutions, bylaws)\n- Committee records (senate, faculty councils,\
|
||||
\ standing committees)\n- Policy records (institutional policies, procedures, guidelines)\n- Strategic planning documents\n\
|
||||
- Accreditation and institutional assessment records\n- Executive correspondence\n\n**RiC-O Alignment**:\nThis class\
|
||||
\ is a specialized rico:RecordSetType. Records classified with this\ntype follow the fonds organizational principle\
|
||||
\ as defined by rico-rst:Fonds\n(respect des fonds / provenance-based organization from university central administration).\n"
|
||||
structured_aliases:
|
||||
- literal_form: Hochschulverwaltungsbestand
|
||||
in_language: de
|
||||
- literal_form: "fondo de administraci\xF3n universitaria"
|
||||
- literal_form: fondo de administración universitaria
|
||||
in_language: es
|
||||
- literal_form: fonds d'administration universitaire
|
||||
in_language: fr
|
||||
- literal_form: universiteitsbestuursarchief
|
||||
in_language: nl
|
||||
- literal_form: "fundo de administra\xE7\xE3o universit\xE1ria"
|
||||
- literal_form: fundo de administração universitária
|
||||
in_language: pt
|
||||
keywords:
|
||||
- governance records
|
||||
|
|
@ -89,9 +98,9 @@ classes:
|
|||
- rico:RecordSetType
|
||||
- rico-rst:Fonds
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_custodian_type
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- organizational_principle
|
||||
- organizational_principle_uri
|
||||
- record_note
|
||||
|
|
@ -99,7 +108,7 @@ classes:
|
|||
- scope_exclude
|
||||
- scope_include
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
has_or_had_custodian_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType"]'
|
||||
record_set_type:
|
||||
equals_string: UniversityAdministrativeFonds
|
||||
|
|
@ -108,30 +117,35 @@ classes:
|
|||
organizational_principle_uri:
|
||||
equals_string: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#Fonds
|
||||
record_note:
|
||||
equals_string: This RecordSetType classifies record sets following the fonds principle. The fonds structure reflects provenance from university central administration.
|
||||
equals_string: This RecordSetType classifies record sets following the fonds principle. The fonds structure reflects
|
||||
provenance from university central administration.
|
||||
scope_include:
|
||||
equals_string: '["governance records", "committee records", "policy records", "strategic planning", "accreditation records"]'
|
||||
equals_string: '["governance records", "committee records", "policy records", "strategic planning", "accreditation
|
||||
records"]'
|
||||
scope_exclude:
|
||||
equals_string: '["student records", "faculty papers", "research data"]'
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
AcademicStudentRecordSeries:
|
||||
is_a: AcademicArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for student records organized as archival series.\n\n**Definition**:\nRecords documenting the academic careers and activities of students, typically \norganized as series within a larger university fonds. Subject to retention \nschedules and privacy regulations (FERPA in US, GDPR in EU, AVG in NL).\n\n**Typical Contents**:\n- Enrollment and registration records\n- Academic transcripts and grade records\n- Graduation records and diploma registers\n- Disciplinary records\n- Financial aid records\n- Student organization records\n\n**Privacy Considerations**:\nAccess restrictions typically apply due to personally identifiable information.\nHistorical student records (typically 75+ years) may have fewer restrictions.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records classified with this\ntype follow the series organizational principle as defined by rico-rst:Series\n(organizational level within the university fonds).\n"
|
||||
description: "A rico:RecordSetType for student records organized as archival series.\n\n**Definition**:\nRecords documenting\
|
||||
\ the academic careers and activities of students, typically \norganized as series within a larger university fonds.\
|
||||
\ Subject to retention \nschedules and privacy regulations (FERPA in US, GDPR in EU, AVG in NL).\n\n**Typical Contents**:\n\
|
||||
- Enrollment and registration records\n- Academic transcripts and grade records\n- Graduation records and diploma registers\n\
|
||||
- Disciplinary records\n- Financial aid records\n- Student organization records\n\n**Privacy Considerations**:\nAccess\
|
||||
\ restrictions typically apply due to personally identifiable information.\nHistorical student records (typically 75+\
|
||||
\ years) may have fewer restrictions.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records\
|
||||
\ classified with this\ntype follow the series organizational principle as defined by rico-rst:Series\n(organizational\
|
||||
\ level within the university fonds).\n"
|
||||
structured_aliases:
|
||||
- literal_form: Studentenaktenserie
|
||||
in_language: de
|
||||
- literal_form: serie de expedientes estudiantiles
|
||||
in_language: es
|
||||
- literal_form: "s\xE9rie de dossiers \xE9tudiants"
|
||||
- literal_form: série de dossiers étudiants
|
||||
in_language: fr
|
||||
- literal_form: studentendossiers
|
||||
in_language: nl
|
||||
- literal_form: "s\xE9rie de registros de alunos"
|
||||
- literal_form: série de registros de alunos
|
||||
in_language: pt
|
||||
keywords:
|
||||
- enrollment records
|
||||
|
|
@ -158,9 +172,9 @@ classes:
|
|||
- rico-rst:Series
|
||||
- UniversityAdministrativeFonds
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_custodian_type
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- organizational_principle
|
||||
- organizational_principle_uri
|
||||
- privacy_note
|
||||
|
|
@ -169,7 +183,7 @@ classes:
|
|||
- scope_exclude
|
||||
- scope_include
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
has_or_had_custodian_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType"]'
|
||||
record_set_type:
|
||||
equals_string: AcademicStudentRecordSeries
|
||||
|
|
@ -178,18 +192,28 @@ classes:
|
|||
organizational_principle_uri:
|
||||
equals_string: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#Series
|
||||
record_note:
|
||||
equals_string: This RecordSetType classifies record sets following the series principle. Typically a series within the university administration fonds or registrar's office fonds.
|
||||
equals_string: This RecordSetType classifies record sets following the series principle. Typically a series within
|
||||
the university administration fonds or registrar's office fonds.
|
||||
scope_include:
|
||||
equals_string: '["enrollment records", "academic transcripts", "graduation records", "disciplinary records", "financial aid records"]'
|
||||
equals_string: '["enrollment records", "academic transcripts", "graduation records", "disciplinary records", "financial
|
||||
aid records"]'
|
||||
scope_exclude:
|
||||
equals_string: '["faculty records", "research records", "administrative policy"]'
|
||||
privacy_note:
|
||||
equals_string: Subject to educational records privacy laws (FERPA, GDPR, AVG). Access restrictions typically apply for records less than 75 years old.
|
||||
equals_string: Subject to educational records privacy laws (FERPA, GDPR, AVG). Access restrictions typically apply
|
||||
for records less than 75 years old.
|
||||
FacultyPaperCollection:
|
||||
is_a: AcademicArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for faculty papers and personal archives.\n\n**Definition**:\nPersonal papers of faculty members documenting their academic careers, research \nactivities, teaching, and professional service. These are typically acquired as \ndonations or bequests, distinct from official university records.\n\n**Typical Contents**:\n- Research documentation and notes\n- Correspondence (professional and personal)\n- Lecture notes and course materials\n- Manuscripts and drafts\n- Conference papers and presentations\n- Professional organization records\n- Photographs and audiovisual materials\n\n**Provenance**:\nUnlike administrative fonds, faculty papers are personal archives with the \nindividual faculty member as creator/accumulator. The university acquires \ncustody but respects original order where it exists.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records classified with this\ntype follow the fonds organizational principle as defined\
|
||||
\ by rico-rst:Fonds\n(personal papers fonds with the faculty member as creator/accumulator).\n"
|
||||
description: "A rico:RecordSetType for faculty papers and personal archives.\n\n**Definition**:\nPersonal papers of faculty\
|
||||
\ members documenting their academic careers, research \nactivities, teaching, and professional service. These are typically\
|
||||
\ acquired as \ndonations or bequests, distinct from official university records.\n\n**Typical Contents**:\n- Research\
|
||||
\ documentation and notes\n- Correspondence (professional and personal)\n- Lecture notes and course materials\n- Manuscripts\
|
||||
\ and drafts\n- Conference papers and presentations\n- Professional organization records\n- Photographs and audiovisual\
|
||||
\ materials\n\n**Provenance**:\nUnlike administrative fonds, faculty papers are personal archives with the \nindividual\
|
||||
\ faculty member as creator/accumulator. The university acquires \ncustody but respects original order where it exists.\n\
|
||||
\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records classified with this\ntype follow the\
|
||||
\ fonds organizational principle as defined by rico-rst:Fonds\n(personal papers fonds with the faculty member as creator/accumulator).\n"
|
||||
structured_aliases:
|
||||
- literal_form: Professorennachlass
|
||||
in_language: de
|
||||
|
|
@ -227,11 +251,12 @@ classes:
|
|||
- rico:RecordSetType
|
||||
- rico-rst:Fonds
|
||||
annotations:
|
||||
acquisition_note: Typically acquired through donation or bequest. May include restrictions on access or publication specified by donor agreement.
|
||||
acquisition_note: Typically acquired through donation or bequest. May include restrictions on access or publication
|
||||
specified by donor agreement.
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_custodian_type
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- organizational_principle
|
||||
- organizational_principle_uri
|
||||
- record_note
|
||||
|
|
@ -239,7 +264,7 @@ classes:
|
|||
- scope_exclude
|
||||
- scope_include
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
has_or_had_custodian_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType", "hc:LibraryType"]'
|
||||
record_set_type:
|
||||
equals_string: FacultyPaperCollection
|
||||
|
|
@ -248,7 +273,8 @@ classes:
|
|||
organizational_principle_uri:
|
||||
equals_string: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#Fonds
|
||||
record_note:
|
||||
equals_string: This RecordSetType classifies record sets following the fonds principle. Personal archives with individual faculty member as creator/accumulator.
|
||||
equals_string: This RecordSetType classifies record sets following the fonds principle. Personal archives with individual
|
||||
faculty member as creator/accumulator.
|
||||
scope_include:
|
||||
equals_string: '["research documentation", "correspondence", "lecture notes", "manuscripts", "conference papers"]'
|
||||
scope_exclude:
|
||||
|
|
@ -256,18 +282,26 @@ classes:
|
|||
CampusDocumentationCollection:
|
||||
is_a: AcademicArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for campus life and institutional documentation.\n\n**Definition**:\nMaterials documenting campus life, institutional identity, and university \nculture beyond formal administrative records. Often includes visual materials, \npublications, and ephemera that capture the lived experience of the institution.\n\n**Typical Contents**:\n- Campus photographs and audiovisual materials\n- University publications (yearbooks, newspapers, magazines)\n- Ephemera (programs, posters, invitations)\n- Memorabilia and artifacts\n- Oral histories\n- Event documentation\n- Building and facilities documentation\n\n**Collection Nature**:\nMay be assembled collections (artificial) rather than strictly provenance-based,\nespecially for ephemera and visual materials. Documentation value often takes\nprecedence over strict archival arrangement.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records classified with this\ntype follow the collection organizational\
|
||||
\ principle as defined by rico-rst:Collection\n(assembled/artificial collection organized by subject or documentation purpose).\n"
|
||||
description: "A rico:RecordSetType for campus life and institutional documentation.\n\n**Definition**:\nMaterials documenting\
|
||||
\ campus life, institutional identity, and university \nculture beyond formal administrative records. Often includes\
|
||||
\ visual materials, \npublications, and ephemera that capture the lived experience of the institution.\n\n**Typical\
|
||||
\ Contents**:\n- Campus photographs and audiovisual materials\n- University publications (yearbooks, newspapers, magazines)\n\
|
||||
- Ephemera (programs, posters, invitations)\n- Memorabilia and artifacts\n- Oral histories\n- Event documentation\n\
|
||||
- Building and facilities documentation\n\n**Collection Nature**:\nMay be assembled collections (artificial) rather\
|
||||
\ than strictly provenance-based,\nespecially for ephemera and visual materials. Documentation value often takes\nprecedence\
|
||||
\ over strict archival arrangement.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records\
|
||||
\ classified with this\ntype follow the collection organizational principle as defined by rico-rst:Collection\n(assembled/artificial\
|
||||
\ collection organized by subject or documentation purpose).\n"
|
||||
structured_aliases:
|
||||
- literal_form: Campus-Dokumentationssammlung
|
||||
in_language: de
|
||||
- literal_form: "colecci\xF3n de documentaci\xF3n del campus"
|
||||
- literal_form: colección de documentación del campus
|
||||
in_language: es
|
||||
- literal_form: collection de documentation du campus
|
||||
in_language: fr
|
||||
- literal_form: campusdocumentatiecollectie
|
||||
in_language: nl
|
||||
- literal_form: "cole\xE7\xE3o de documenta\xE7\xE3o do campus"
|
||||
- literal_form: coleção de documentação do campus
|
||||
in_language: pt
|
||||
keywords:
|
||||
- campus photographs
|
||||
|
|
@ -295,11 +329,12 @@ classes:
|
|||
- rico:RecordSetType
|
||||
- rico-rst:Collection
|
||||
annotations:
|
||||
collection_nature_note: Often includes artificial/assembled collections organized by subject, format, or documentation purpose rather than strict provenance.
|
||||
collection_nature_note: Often includes artificial/assembled collections organized by subject, format, or documentation
|
||||
purpose rather than strict provenance.
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_custodian_type
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- organizational_principle
|
||||
- organizational_principle_uri
|
||||
- record_note
|
||||
|
|
@ -307,7 +342,7 @@ classes:
|
|||
- scope_exclude
|
||||
- scope_include
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
has_or_had_custodian_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType", "hc:LibraryType", "hc:MuseumType"]'
|
||||
record_set_type:
|
||||
equals_string: CampusDocumentationCollection
|
||||
|
|
@ -316,7 +351,8 @@ classes:
|
|||
organizational_principle_uri:
|
||||
equals_string: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#Collection
|
||||
record_note:
|
||||
equals_string: This RecordSetType classifies record sets following the collection principle. May be assembled collection (artificial) organized by subject or documentation purpose.
|
||||
equals_string: This RecordSetType classifies record sets following the collection principle. May be assembled collection
|
||||
(artificial) organized by subject or documentation purpose.
|
||||
scope_include:
|
||||
equals_string: '["photographs", "audiovisual materials", "publications", "ephemera", "oral histories", "memorabilia"]'
|
||||
scope_exclude:
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AcademicInstitution
|
||||
name: AcademicInstitution
|
||||
title: AcademicInstitution
|
||||
description: An institution of higher education or research.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
classes:
|
||||
AcademicInstitution:
|
||||
class_uri: schema:EducationalOrganization
|
||||
description: Academic institution.
|
||||
slots:
|
||||
- has_or_had_name
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AcademicProgram
|
||||
name: AcademicProgram
|
||||
title: AcademicProgram
|
||||
description: An educational or research program offered by an academic institution.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
classes:
|
||||
AcademicProgram:
|
||||
class_uri: schema:EducationalOccupationalProgram
|
||||
description: Academic program.
|
||||
slots:
|
||||
- has_or_had_name
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,173 +0,0 @@
|
|||
# Access class
|
||||
# Structured access information for heritage collections and services
|
||||
#
|
||||
# Created per slot_fixes.yaml revision for collection_access migration
|
||||
# Generation date: 2026-01-19
|
||||
# Rule compliance: 53 (slot_fixes.yaml), 39 (RiC-O naming)
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Access
|
||||
name: Access
|
||||
title: Access Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ./TimeSpan
|
||||
- ../slots/has_or_had_frequency
|
||||
- ./Frequency
|
||||
- ../slots/condition_of_access
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_user_category
|
||||
- ../enums/AccessTypeEnum
|
||||
|
||||
classes:
|
||||
Access:
|
||||
class_uri: dcterms:RightsStatement
|
||||
description: |
|
||||
Structured access information for heritage collections, services, or facilities.
|
||||
|
||||
**Purpose**:
|
||||
Replaces simple string descriptions of access conditions with structured
|
||||
data capturing access types, eligible users, conditions, and restrictions.
|
||||
|
||||
**Key Properties**:
|
||||
- `has_or_had_type`: Type of access (PUBLIC, BY_APPOINTMENT, RESTRICTED, etc.)
|
||||
- `has_or_had_user_category`: Who can access (public, students, faculty, researchers)
|
||||
- `condition_of_access`: Conditions or requirements for access
|
||||
- `has_or_had_description`: Free-text description
|
||||
- `temporal_extent`: When this access policy applies
|
||||
|
||||
**Access Types**:
|
||||
- PUBLIC: Open to general public
|
||||
- BY_APPOINTMENT: Requires advance appointment
|
||||
- ACADEMIC: Restricted to academic community
|
||||
- RESEARCHER: Restricted to credentialed researchers
|
||||
- MEMBER: Requires membership
|
||||
- RESTRICTED: Limited access with specific conditions
|
||||
- CLOSED: Not currently accessible
|
||||
- DIGITAL_ONLY: Available only in digital form
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary**: `dcterms:RightsStatement` - Dublin Core rights statement
|
||||
- **Close**: `schema:publicAccess` - Schema.org access indicator
|
||||
- **Related**: `crm:E30_Right` - CIDOC-CRM rights
|
||||
|
||||
exact_mappings:
|
||||
- dcterms:RightsStatement
|
||||
|
||||
close_mappings:
|
||||
- schema:publicAccess
|
||||
|
||||
related_mappings:
|
||||
- crm:E30_Right
|
||||
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_user_category
|
||||
- condition_of_access
|
||||
- has_or_had_description
|
||||
- temporal_extent
|
||||
- is_digital_access
|
||||
- has_or_had_frequency
|
||||
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
range: AccessTypeEnum
|
||||
required: true
|
||||
description: Type of access offered
|
||||
|
||||
has_or_had_user_category:
|
||||
required: false
|
||||
description: |
|
||||
Categories of users eligible for this access.
|
||||
Examples: "enrolled students", "faculty", "visiting scholars",
|
||||
"credentialed researchers", "general public"
|
||||
examples:
|
||||
- value: "enrolled students"
|
||||
- value: "faculty and staff"
|
||||
- value: "visiting researchers with credentials"
|
||||
|
||||
temporal_extent:
|
||||
required: false
|
||||
range: TimeSpan
|
||||
inlined: true
|
||||
description: |
|
||||
Time period during which this access policy applies.
|
||||
Useful for temporary restrictions or seasonal access.
|
||||
|
||||
is_digital_access:
|
||||
required: false
|
||||
range: boolean
|
||||
description: Whether this is digital access
|
||||
has_or_had_frequency:
|
||||
required: false
|
||||
range: Frequency
|
||||
description: Frequency of access (e.g., daily, weekly, by appointment)
|
||||
inlined: true
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label: "Daily"
|
||||
description: Access available daily
|
||||
|
||||
annotations:
|
||||
specificity_score: 0.50
|
||||
specificity_rationale: "Moderately specific - applies to collection and service access contexts"
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: "All institution types offer some form of access"
|
||||
|
||||
comments:
|
||||
- "Created per slot_fixes.yaml revision for collection_access migration"
|
||||
- "Replaces string-based collection_access with structured access data"
|
||||
- "RULE 53: Part of collection_access → offers_or_offered_access + Access migration"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_type: PUBLIC
|
||||
has_or_had_description: "Open to general public during gallery hours"
|
||||
has_or_had_user_category:
|
||||
- "general public"
|
||||
condition_of_access:
|
||||
- "during posted gallery hours"
|
||||
description: "Public access during gallery hours"
|
||||
|
||||
- value:
|
||||
has_or_had_type: BY_APPOINTMENT
|
||||
has_or_had_user_category:
|
||||
- "credentialed researchers"
|
||||
- "graduate students with faculty sponsor"
|
||||
condition_of_access:
|
||||
- "48-hour advance booking required"
|
||||
- "handling training required for original materials"
|
||||
- "fragile materials limited to supervised viewing only"
|
||||
description: "Research access by appointment with conditions"
|
||||
|
||||
- value:
|
||||
has_or_had_type: ACADEMIC
|
||||
has_or_had_description: "Open to enrolled students and faculty; public by appointment"
|
||||
has_or_had_user_category:
|
||||
- "enrolled students"
|
||||
- "faculty"
|
||||
- "research staff"
|
||||
condition_of_access:
|
||||
- "valid university ID"
|
||||
is_digital_access: false
|
||||
description: "Academic community access with public by appointment"
|
||||
|
||||
- value:
|
||||
has_or_had_type: DIGITAL_ONLY
|
||||
has_or_had_description: "Collection accessible only through online database"
|
||||
has_or_had_user_category:
|
||||
- "anyone with internet access"
|
||||
is_digital_access: true
|
||||
description: "Digital-only access"
|
||||
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccessApplication
|
||||
name: AccessApplication
|
||||
title: Access Application
|
||||
description: An application or process for requesting access to materials. MIGRATED from has_access_application_url slot per Rule 53. Follows schema:Action.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_url
|
||||
- ./URL
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AccessApplication:
|
||||
class_uri: schema:Action
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_url
|
||||
slot_usage:
|
||||
has_or_had_url:
|
||||
range: URL
|
||||
inlined: true
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccessControl
|
||||
name: AccessControl
|
||||
title: AccessControl
|
||||
description: Mechanisms or policies for controlling access to resources.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
classes:
|
||||
AccessControl:
|
||||
class_uri: schema:DigitalDocumentPermission
|
||||
description: Access control policy.
|
||||
slots:
|
||||
- has_or_had_description
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccessInterface
|
||||
name: AccessInterface
|
||||
title: Access Interface
|
||||
description: An interface for accessing digital resources (e.g., API, portal). MIGRATED from has_access_interface_url slot per Rule 53. Follows dcat:DataService.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
dcat: http://www.w3.org/ns/dcat#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_url
|
||||
- ./URL
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AccessInterface:
|
||||
class_uri: dcat:DataService
|
||||
slots:
|
||||
- has_or_had_url
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
slot_usage:
|
||||
has_or_had_url:
|
||||
range: URL
|
||||
inlined: true
|
||||
required: true
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccessLevel
|
||||
name: AccessLevel
|
||||
title: AccessLevel
|
||||
description: A defined level of access permission (e.g., Public, Restricted, Confidential).
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
classes:
|
||||
AccessLevel:
|
||||
class_uri: skos:Concept
|
||||
description: Access level concept.
|
||||
slots:
|
||||
- has_or_had_label
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -12,47 +12,81 @@ prefixes:
|
|||
wd: http://www.wikidata.org/entity/
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
- ../slots/embargo_end_date
|
||||
- ../slots/policy_id
|
||||
- ../slots/policy_name
|
||||
- ../slots/has_or_had_description
|
||||
- ./Description
|
||||
- ../slots/has_or_had_level
|
||||
- ./AccessLevel
|
||||
- ../slots/requires_appointment
|
||||
- ../slots/poses_or_posed_condition
|
||||
- ./Condition
|
||||
- ../slots/credentials_required
|
||||
- ../slots/cultural_protocol_url
|
||||
- ../slots/embargo_reason
|
||||
- ../slots/imposes_or_imposed
|
||||
- ./Fee
|
||||
- ../slots/fee_required
|
||||
- ../slots/legal_basis
|
||||
- ../slots/registration_required
|
||||
- ../slots/review_date
|
||||
- ../slots/rights_statement
|
||||
- ../slots/rights_statement_url
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/condition_of_access
|
||||
- ../slots/requires_or_required
|
||||
- ./Appointment
|
||||
- linkml:types
|
||||
# Migrated per slot_fixes.yaml (Rule 53) - 2026-01-14
|
||||
# valid_from + valid_to → temporal_extent + TimeSpan (with begin_of_the_begin/end_of_the_end)
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
- ../slots/embargo_end_date
|
||||
- ../slots/contact_email
|
||||
- ../slots/policy_id
|
||||
- ../slots/policy_name
|
||||
- ../slots/has_or_had_access_description
|
||||
- ../slots/has_or_had_access_level
|
||||
# RESTORED 2026-01-15: requires_appointment has correct semantics (schema:reservationRequired)
|
||||
# The is_or_was_required slot was incorrectly using schema:isRequired which is for form field validation
|
||||
# KEPT for backward compatibility - simple boolean for basic use cases
|
||||
- ../slots/requires_appointment
|
||||
- ../slots/condition
|
||||
- ../slots/credentials_required
|
||||
- ../slots/cultural_protocol_url
|
||||
- ../slots/embargo_reason
|
||||
- ../slots/fee_amount
|
||||
- ../slots/fee_required
|
||||
- ../slots/legal_basis
|
||||
- ../slots/registration_required
|
||||
- ../slots/review_date
|
||||
- ../slots/rights_statement
|
||||
- ../slots/rights_statement_url
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
# ADDED 2026-01-17: Rich appointment modeling per slot_fixes.yaml revision for appointment_required
|
||||
# These enable structured access conditions with Appointment entities (vs. just boolean)
|
||||
- ../slots/condition_of_access
|
||||
- ../slots/requires_or_required
|
||||
- ./Appointment
|
||||
classes:
|
||||
AccessPolicy:
|
||||
class_uri: premis:RightsStatus
|
||||
description: "Access policy defining conditions under which heritage collections can be accessed.\n\n**PURPOSE**:\n\nAccessPolicy captures the access conditions governing a Collection:\n- WHO can access (public, researchers, staff only)\n- HOW access is granted (open, by appointment, with credentials)\n- WHEN access is available (opening hours, embargo periods)\n- WHAT restrictions apply (fragile materials, privacy, cultural sensitivity)\n\n1. **PREMIS**:\n - `premis:RightsStatus` - \"Information about the rights status of an object.\"\n - Links to Collection via premis:rightsStatus\n\n2. **Dublin Core**:\n - `dcterms:accessRights` - \"Information about who may access the resource\n or an indication of its security status.\"\n\n3. **RiC-O**:\n - `rico:hasOrHadAllMembersWithAccessConditions` - Links RecordSet to access\n conditions applying to all members\n\n4. **RightsStatements.org**:\n - Standardized rights statements for cultural heritage\n - E.g., \"In Copyright\"\
|
||||
, \"No Copyright\", \"Unknown Copyright\"\n\n**ACCESS LEVEL TAXONOMY**:\n\n```\nAccessPolicy (root)\n \u2502\n \u251C\u2500\u2500 OpenAccess\n \u2502 \u251C\u2500\u2500 PUBLIC_OPEN - No restrictions, walk-in access\n \u2502 \u251C\u2500\u2500 PUBLIC_REGISTRATION - Free registration required\n \u2502 \u2514\u2500\u2500 PUBLIC_ONLINE - Digital access freely available\n \u2502\n \u251C\u2500\u2500 RestrictedAccess\n \u2502 \u251C\u2500\u2500 RESEARCHERS_ONLY - Academic researchers with credentials\n \u2502 \u251C\u2500\u2500 BY_APPOINTMENT - Advance booking required\n \u2502 \u251C\u2500\u2500 STAFF_ONLY - Internal access only\n \u2502 \u2514\u2500\u2500 PERMISSION_REQUIRED - Written permission needed\n \u2502\n \u251C\u2500\u2500 ClosedAccess\n \u2502 \u251C\u2500\u2500 TEMPORARILY_CLOSED - Renovation, conservation\n \u2502 \u251C\u2500\u2500 EMBARGOED - Time-limited closure\n \u2502 \u251C\u2500\u2500 PERMANENTLY_CLOSED - Not accessible\n\
|
||||
\ \u2502 \u2514\u2500\u2500 REPATRIATED - Returned to community of origin\n \u2502\n \u2514\u2500\u2500 ConditionalAccess\n \u251C\u2500\u2500 CULTURALLY_SENSITIVE - Indigenous/sacred materials\n \u251C\u2500\u2500 PRIVACY_RESTRICTED - Personal data protection\n \u251C\u2500\u2500 FRAGILE_HANDLING - Special handling required\n \u2514\u2500\u2500 LEGAL_RESTRICTION - Copyright, legal constraints\n```\n\n**USE CASES**:\n\n1. **Archive Open Access**:\n ```yaml\n AccessPolicy:\n policy_id: \"hc:access-policy/nationaal-archief-open\"\n access_level: \"PUBLIC_OPEN\"\n access_description: \"Open to all visitors during reading room hours\"\n conditions: \"Valid ID required for registration\"\n ```\n\n2. **Restricted Research Materials**:\n ```yaml\n AccessPolicy:\n policy_id: \"hc:access-policy/university-special-collections\"\n access_level: \"RESEARCHERS_ONLY\"\n access_description: \"Academic researchers with institutional\
|
||||
\ affiliation\"\n conditions: \"Letter of introduction required from supervising institution\"\n requires_appointment: true\n ```\n\n3. **Embargoed Collection**:\n ```yaml\n AccessPolicy:\n policy_id: \"hc:access-policy/donor-embargo-2050\"\n access_level: \"EMBARGOED\"\n access_description: \"Closed until 2050 per donor agreement\"\n embargo_end_date: \"2050-01-01\"\n embargo_reason: \"Donor privacy restrictions\"\n ```\n\n4. **Culturally Sensitive**:\n ```yaml\n AccessPolicy:\n policy_id: \"hc:access-policy/indigenous-protocols\"\n access_level: \"CULTURALLY_SENSITIVE\"\n access_description: \"Access governed by Traditional Knowledge protocols\"\n conditions: \"Consultation with originating community required\"\n cultural_protocol_url: \"https://localcontexts.org/tk-labels/\"\n ```\n\n**RELATIONSHIP TO DIM ARCHIVE**:\n\nDimArchive (Dark archive / Preservation-only storage) uses AccessPolicy to express:\n- Materials stored\
|
||||
\ for preservation, not current access\n- Access restricted until triggering conditions (time, event)\n- \"Gray literature\" or un-catalogued backlogs awaiting processing\n"
|
||||
description: "Access policy defining conditions under which heritage collections can be accessed.\n\n**PURPOSE**:\n\n\
|
||||
AccessPolicy captures the access conditions governing a Collection:\n- WHO can access (public, researchers, staff only)\n\
|
||||
- HOW access is granted (open, by appointment, with credentials)\n- WHEN access is available (opening hours, embargo\
|
||||
\ periods)\n- WHAT restrictions apply (fragile materials, privacy, cultural sensitivity)\n\n1. **PREMIS**:\n - `premis:RightsStatus`\
|
||||
\ - \"Information about the rights status of an object.\"\n - Links\
|
||||
\ to Collection via premis:rightsStatus\n\n2. **Dublin Core**:\n - `dcterms:accessRights` - \"Information\
|
||||
\ about who may access the resource\n or an indication of its security status.\"\n\n3. **RiC-O**:\n - `rico:hasOrHadAllMembersWithAccessConditions`\
|
||||
\ - Links RecordSet to access\n conditions applying to all members\n\n4. **RightsStatements.org**:\n - Standardized\
|
||||
\ rights statements for cultural heritage\n - E.g., \"In Copyright\", \"No Copyright\", \"Unknown Copyright\"\n\n\
|
||||
**ACCESS LEVEL TAXONOMY**:\n\n```\nAccessPolicy (root)\n │\n ├── OpenAccess\n │ ├── PUBLIC_OPEN - No restrictions,\
|
||||
\ walk-in access\n │ ├── PUBLIC_REGISTRATION - Free registration required\n │ └── PUBLIC_ONLINE - Digital\
|
||||
\ access freely available\n │\n ├── RestrictedAccess\n │ ├── RESEARCHERS_ONLY - Academic researchers with credentials\n\
|
||||
\ │ ├── BY_APPOINTMENT - Advance booking required\n │ ├── STAFF_ONLY - Internal access only\n │ └── PERMISSION_REQUIRED\
|
||||
\ - Written permission needed\n │\n ├── ClosedAccess\n │ ├── TEMPORARILY_CLOSED - Renovation, conservation\n\
|
||||
\ │ ├── EMBARGOED - Time-limited closure\n │ ├── PERMANENTLY_CLOSED - Not accessible\n │ └── REPATRIATED\
|
||||
\ - Returned to community of origin\n │\n └── ConditionalAccess\n ├── CULTURALLY_SENSITIVE - Indigenous/sacred\
|
||||
\ materials\n ├── PRIVACY_RESTRICTED - Personal data protection\n ├── FRAGILE_HANDLING - Special handling\
|
||||
\ required\n └── LEGAL_RESTRICTION - Copyright, legal constraints\n```\n\n**USE CASES**:\n\n1. **Archive Open\
|
||||
\ Access**:\n ```yaml\n AccessPolicy:\n policy_id: \"hc:access-policy/nationaal-archief-open\"\n access_level:\
|
||||
\ \"PUBLIC_OPEN\"\n access_description: \"Open to all visitors during reading room hours\"\n conditions: \"\
|
||||
Valid ID required for registration\"\n ```\n\n2. **Restricted Research Materials**:\n ```yaml\n AccessPolicy:\n\
|
||||
\ policy_id: \"hc:access-policy/university-special-collections\"\n access_level: \"RESEARCHERS_ONLY\"\n \
|
||||
\ access_description: \"Academic researchers with institutional affiliation\"\n conditions: \"Letter of introduction\
|
||||
\ required from supervising institution\"\n requires_appointment: true\n ```\n\n3. **Embargoed Collection**:\n\
|
||||
\ ```yaml\n AccessPolicy:\n policy_id: \"hc:access-policy/donor-embargo-2050\"\n access_level: \"EMBARGOED\"\
|
||||
\n access_description: \"Closed until 2050 per donor agreement\"\n embargo_end_date: \"2050-01-01\"\n embargo_reason:\
|
||||
\ \"Donor privacy restrictions\"\n ```\n\n4. **Culturally Sensitive**:\n ```yaml\n AccessPolicy:\n policy_id:\
|
||||
\ \"hc:access-policy/indigenous-protocols\"\n access_level: \"CULTURALLY_SENSITIVE\"\n access_description: \"\
|
||||
Access governed by Traditional Knowledge protocols\"\n conditions: \"Consultation with originating community required\"\
|
||||
\n cultural_protocol_url: \"https://localcontexts.org/tk-labels/\"\n ```\n\n**RELATIONSHIP TO DIM ARCHIVE**:\n\
|
||||
\nDimArchive (Dark archive / Preservation-only storage) uses AccessPolicy to express:\n- Materials stored for preservation,\
|
||||
\ not current access\n- Access restricted until triggering conditions (time, event)\n- \"Gray literature\" or un-catalogued\
|
||||
\ backlogs awaiting processing\n"
|
||||
exact_mappings:
|
||||
- premis:RightsStatus
|
||||
- dcterms:accessRights
|
||||
|
|
@ -62,17 +96,21 @@ classes:
|
|||
related_mappings:
|
||||
- rico:hasOrHadAllMembersWithAccessConditions
|
||||
slots:
|
||||
- has_or_had_description
|
||||
- has_or_had_level
|
||||
- has_or_had_access_description
|
||||
- has_or_had_access_level
|
||||
# RESTORED 2026-01-15: requires_appointment - correct semantics (schema:reservationRequired)
|
||||
# KEPT for backward compatibility as simple boolean flag
|
||||
- requires_appointment
|
||||
- poses_or_posed_condition
|
||||
- condition
|
||||
# ADDED 2026-01-17: Rich access condition modeling per slot_fixes.yaml revision
|
||||
- condition_of_access
|
||||
- requires_or_required
|
||||
- contact_email
|
||||
- credentials_required
|
||||
- cultural_protocol_url
|
||||
- embargo_end_date
|
||||
- embargo_reason
|
||||
- imposes_or_imposed
|
||||
- fee_amount
|
||||
- fee_required
|
||||
- legal_basis
|
||||
- policy_id
|
||||
|
|
@ -82,8 +120,8 @@ classes:
|
|||
- rights_statement
|
||||
- rights_statement_url
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- temporal_extent
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- temporal_extent # was: valid_from + valid_to - migrated per Rule 53
|
||||
slot_usage:
|
||||
policy_id:
|
||||
range: uriorcurie
|
||||
|
|
@ -102,60 +140,29 @@ classes:
|
|||
description: Restricted to researchers
|
||||
- value: Embargoed until 2050
|
||||
description: Time-limited closure
|
||||
has_or_had_level:
|
||||
description: 'Access level of the policy.
|
||||
|
||||
MIGRATED from has_or_had_access_level per Rule 53.
|
||||
|
||||
Uses AccessLevel class.
|
||||
|
||||
'
|
||||
range: AccessLevel
|
||||
has_or_had_access_level:
|
||||
range: string
|
||||
required: true
|
||||
inlined: true
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label: PUBLIC_OPEN
|
||||
- value:
|
||||
has_or_had_label: RESEARCHERS_ONLY
|
||||
- value:
|
||||
has_or_had_label: EMBARGOED
|
||||
has_or_had_description:
|
||||
description: 'Description of the access policy.
|
||||
|
||||
MIGRATED from has_or_had_access_description per Rule 53.
|
||||
|
||||
Uses Description class.
|
||||
|
||||
'
|
||||
range: Description
|
||||
inlined: true
|
||||
- value: PUBLIC_OPEN
|
||||
- value: RESEARCHERS_ONLY
|
||||
- value: EMBARGOED
|
||||
has_or_had_access_description:
|
||||
range: string
|
||||
examples:
|
||||
- value:
|
||||
description_text: Open to all visitors during reading room hours (Mon-Fri 9-17)
|
||||
- value: Open to all visitors during reading room hours (Mon-Fri 9-17)
|
||||
description: Archive public access
|
||||
- value:
|
||||
description_text: Access restricted to academic researchers with institutional has_or_had_affiliation
|
||||
- value: Access restricted to academic researchers with institutional has_or_had_affiliation
|
||||
description: University special collections
|
||||
poses_or_posed_condition:
|
||||
range: Condition
|
||||
condition:
|
||||
range: string
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
description: 'Access conditions or requirements using structured Condition class.
|
||||
|
||||
MIGRATED from condition string slot per slot_fixes.yaml (Rule 53, 2026-01-22).
|
||||
|
||||
'
|
||||
examples:
|
||||
- value:
|
||||
- has_or_had_type: AccessCondition
|
||||
has_or_had_description:
|
||||
description_text: Valid government-issued ID required
|
||||
- has_or_had_type: AccessCondition
|
||||
has_or_had_description:
|
||||
description_text: Registration form must be completed
|
||||
description: Archive access conditions using Condition class
|
||||
- Valid government-issued ID required
|
||||
- Registration form must be completed
|
||||
- Bags and coats must be stored in lockers
|
||||
description: Archive access conditions
|
||||
rights_statement:
|
||||
range: string
|
||||
examples:
|
||||
|
|
@ -172,11 +179,9 @@ classes:
|
|||
description: No Copyright - United States
|
||||
requires_appointment:
|
||||
range: boolean
|
||||
description: 'Whether an appointment is required for access.
|
||||
|
||||
description: |
|
||||
Whether an appointment is required for access.
|
||||
Uses schema:reservationRequired which is semantically correct for access policies.
|
||||
|
||||
'
|
||||
examples:
|
||||
- value: true
|
||||
description: Appointment required
|
||||
|
|
@ -199,37 +204,13 @@ classes:
|
|||
description: Free access
|
||||
- value: true
|
||||
description: Fee required
|
||||
imposes_or_imposed:
|
||||
description: 'Fees imposed by the access policy.
|
||||
|
||||
MIGRATED from fee_amount per Rule 53.
|
||||
|
||||
Uses Fee class with structured Quantity.
|
||||
|
||||
'
|
||||
range: Fee
|
||||
inlined: true
|
||||
multivalued: true
|
||||
fee_amount:
|
||||
range: string
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
quantity_value: 5.0
|
||||
has_or_had_unit:
|
||||
unit_value: EUR
|
||||
has_or_had_description: Daily reading room fee
|
||||
description: "\u20AC5.00 per day"
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
quantity_value: 0
|
||||
has_or_had_description: Free for researchers
|
||||
description: Free for researchers
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
quantity_value: 10.0
|
||||
has_or_had_unit:
|
||||
unit_value: EUR
|
||||
has_or_had_description: General public fee
|
||||
description: "\u20AC10 for general public"
|
||||
- value: €5.00 per day
|
||||
description: Daily reading room fee
|
||||
- value: Free for researchers, €10 for general public
|
||||
description: Tiered fee structure
|
||||
embargo_end_date:
|
||||
range: date
|
||||
examples:
|
||||
|
|
@ -259,14 +240,16 @@ classes:
|
|||
examples:
|
||||
- value: '2025-12-31'
|
||||
description: Annual review date
|
||||
temporal_extent:
|
||||
description: 'Validity period for this access policy using CIDOC-CRM TimeSpan.
|
||||
|
||||
contact_email:
|
||||
range: string
|
||||
examples:
|
||||
- value: access@nationaalarchief.nl
|
||||
description: Access request contact
|
||||
temporal_extent: # was: valid_from + valid_to - migrated per Rule 53
|
||||
description: |
|
||||
Validity period for this access policy using CIDOC-CRM TimeSpan.
|
||||
MIGRATED from valid_from + valid_to per slot_fixes.yaml (Rule 53).
|
||||
|
||||
Uses begin_of_the_begin for policy start date and end_of_the_end for expiry.
|
||||
|
||||
'
|
||||
range: TimeSpan
|
||||
inlined: true
|
||||
required: false
|
||||
|
|
@ -275,46 +258,40 @@ classes:
|
|||
begin_of_the_begin: '2024-01-01'
|
||||
end_of_the_end: '2050-12-31'
|
||||
description: Policy valid from 2024 until end of 2050
|
||||
# ADDED 2026-01-17: Rich access condition modeling per slot_fixes.yaml revision
|
||||
condition_of_access:
|
||||
description: 'Textual conditions or requirements for access (RiC-O style).
|
||||
|
||||
description: |
|
||||
Textual conditions or requirements for access (RiC-O style).
|
||||
Use for human-readable access requirements. For structured appointment
|
||||
|
||||
data, use requires_or_required with Appointment instances.
|
||||
|
||||
'
|
||||
range: string
|
||||
multivalued: true
|
||||
examples:
|
||||
- value:
|
||||
- Appointment required 48 hours in advance
|
||||
- Valid researcher credentials required
|
||||
- Materials must be handled with cotton gloves
|
||||
- "Appointment required 48 hours in advance"
|
||||
- "Valid researcher credentials required"
|
||||
- "Materials must be handled with cotton gloves"
|
||||
description: Multiple access conditions
|
||||
requires_or_required:
|
||||
description: 'Links to structured Appointment entities for rich appointment modeling.
|
||||
|
||||
description: |
|
||||
Links to structured Appointment entities for rich appointment modeling.
|
||||
ADDED 2026-01-17 per slot_fixes.yaml revision for appointment_required.
|
||||
|
||||
|
||||
|
||||
Use this for detailed appointment requirements (lead time, booking method,
|
||||
|
||||
contact info). For simple boolean, use requires_appointment instead.
|
||||
|
||||
'
|
||||
range: Appointment
|
||||
multivalued: true
|
||||
inlined: true
|
||||
examples:
|
||||
- value:
|
||||
- appointment_id: hc:appointment/special-collections-48h
|
||||
has_or_had_label: Special Collections Appointment
|
||||
has_or_had_description: Book at least 48 hours in advance for manuscript access
|
||||
- appointment_id: "hc:appointment/special-collections-48h"
|
||||
has_or_had_label: "Special Collections Appointment"
|
||||
has_or_had_description: "Book at least 48 hours in advance for manuscript access"
|
||||
lead_time_hours: 48
|
||||
booking_method:
|
||||
- email
|
||||
- online_form
|
||||
booking_contact: bijzondere.collecties@archive.nl
|
||||
- email
|
||||
- online_form
|
||||
booking_contact: "bijzondere.collecties@archive.nl"
|
||||
appointment_required: true
|
||||
description: Structured appointment requirement with rich metadata
|
||||
comments:
|
||||
|
|
@ -332,33 +309,22 @@ classes:
|
|||
- value:
|
||||
policy_id: https://nde.nl/ontology/hc/access-policy/nationaal-archief-open
|
||||
policy_name: Nationaal Archief Public Access
|
||||
has_or_had_level:
|
||||
has_or_had_label: PUBLIC_OPEN
|
||||
has_or_had_description:
|
||||
description_text: Open to all visitors during reading room hours
|
||||
poses_or_posed_condition:
|
||||
- has_or_had_type: AccessCondition
|
||||
has_or_had_description:
|
||||
description_text: Valid government-issued ID required
|
||||
- has_or_had_type: AccessCondition
|
||||
has_or_had_description:
|
||||
description_text: Registration form must be completed
|
||||
- has_or_had_type: HandlingCondition
|
||||
has_or_had_description:
|
||||
description_text: Original materials handled with gloves
|
||||
access_level: PUBLIC_OPEN
|
||||
access_description: Open to all visitors during reading room hours
|
||||
condition:
|
||||
- Valid government-issued ID required
|
||||
- Registration form must be completed
|
||||
- Original materials handled with gloves
|
||||
registration_required: true
|
||||
requires_appointment: false
|
||||
requires_appointment: false # Walk-in access allowed
|
||||
fee_required: false
|
||||
has_or_had_contact_point:
|
||||
email: studiezaal@nationaalarchief.nl
|
||||
contact_email: studiezaal@nationaalarchief.nl
|
||||
description: Standard archive public access policy
|
||||
- value:
|
||||
policy_id: https://nde.nl/ontology/hc/access-policy/donor-embargo-2050
|
||||
policy_name: Embargoed until 2050
|
||||
has_or_had_level:
|
||||
has_or_had_label: EMBARGOED
|
||||
has_or_had_description:
|
||||
description_text: Collection closed until 2050 per donor agreement
|
||||
access_level: EMBARGOED
|
||||
access_description: Collection closed until 2050 per donor agreement
|
||||
embargo_end_date: '2050-01-01'
|
||||
embargo_reason: Donor privacy restrictions per deed of gift
|
||||
legal_basis: Deed of Gift clause 4.2
|
||||
|
|
@ -367,59 +333,42 @@ classes:
|
|||
- value:
|
||||
policy_id: https://nde.nl/ontology/hc/access-policy/dim-archive-preservation
|
||||
policy_name: DIM Archive - Preservation Only
|
||||
has_or_had_level:
|
||||
has_or_had_label: TEMPORARILY_CLOSED
|
||||
has_or_had_description:
|
||||
description_text: Materials in preservation storage, not currently accessible
|
||||
poses_or_posed_condition:
|
||||
- has_or_had_type: ProcessingCondition
|
||||
has_or_had_description:
|
||||
description_text: Awaiting processing and cataloging
|
||||
- has_or_had_type: AccessCondition
|
||||
has_or_had_description:
|
||||
description_text: Access may be arranged for urgent research needs
|
||||
requires_appointment: true
|
||||
access_level: TEMPORARILY_CLOSED
|
||||
access_description: Materials in preservation storage, not currently accessible
|
||||
condition:
|
||||
- Awaiting processing and cataloging
|
||||
- Access may be arranged for urgent research needs
|
||||
requires_appointment: true # Appointment required for DIM archive access
|
||||
credentials_required: PROFESSIONAL
|
||||
has_or_had_contact_point:
|
||||
email: preservation@archive.org
|
||||
contact_email: preservation@archive.org
|
||||
description: Dark archive / DIM access policy
|
||||
# ADDED 2026-01-17: Example with rich appointment modeling
|
||||
- value:
|
||||
policy_id: https://nde.nl/ontology/hc/access-policy/special-collections-rich
|
||||
policy_name: Special Collections - Rich Appointment Policy
|
||||
has_or_had_level:
|
||||
has_or_had_label: RESEARCHERS_ONLY
|
||||
has_or_had_description:
|
||||
description_text: Academic researchers with institutional affiliation
|
||||
access_level: RESEARCHERS_ONLY
|
||||
access_description: Academic researchers with institutional affiliation
|
||||
condition_of_access:
|
||||
- Valid institutional ID required
|
||||
- Letter of introduction from supervisor
|
||||
- Maximum 5 items per visit
|
||||
- "Valid institutional ID required"
|
||||
- "Letter of introduction from supervisor"
|
||||
- "Maximum 5 items per visit"
|
||||
requires_or_required:
|
||||
- appointment_id: hc:appointment/special-collections-booking
|
||||
has_or_had_label: Special Collections Appointment
|
||||
has_or_had_description: 'Appointments for manuscript and rare book collections must be made
|
||||
|
||||
- appointment_id: "hc:appointment/special-collections-booking"
|
||||
has_or_had_label: "Special Collections Appointment"
|
||||
has_or_had_description: |
|
||||
Appointments for manuscript and rare book collections must be made
|
||||
at least 48 hours in advance. Please specify which materials you
|
||||
|
||||
wish to consult.
|
||||
|
||||
'
|
||||
lead_time_hours: 48
|
||||
booking_method:
|
||||
- email
|
||||
- online_form
|
||||
booking_contact: bijzondere.collecties@archive.nl
|
||||
- email
|
||||
- online_form
|
||||
booking_contact: "bijzondere.collecties@archive.nl"
|
||||
confirmation_required: true
|
||||
cancellation_notice_hours: 24
|
||||
appointment_required: true
|
||||
registration_required: true
|
||||
credentials_required: INSTITUTIONAL
|
||||
fee_required: false
|
||||
has_or_had_contact_point:
|
||||
email: special.collections@archive.nl
|
||||
contact_email: special.collections@archive.nl
|
||||
description: Rich appointment modeling with structured Appointment entity
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -1,26 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccessTriggerEvent
|
||||
name: AccessTriggerEvent
|
||||
title: AccessTriggerEvent
|
||||
description: An event that triggers a change in access status (e.g. embargo expiration).
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
schema: http://schema.org/
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/temporal_extent
|
||||
classes:
|
||||
AccessTriggerEvent:
|
||||
class_uri: prov:Activity
|
||||
description: Access trigger event.
|
||||
slots:
|
||||
- has_or_had_description
|
||||
- temporal_extent
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccessibilityFeature
|
||||
name: AccessibilityFeature
|
||||
title: AccessibilityFeature
|
||||
description: >-
|
||||
A feature providing accessibility.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
|
||||
classes:
|
||||
AccessibilityFeature:
|
||||
class_uri: schema:LocationFeatureSpecification
|
||||
description: Accessibility feature.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccessionEvent
|
||||
name: AccessionEvent
|
||||
title: Accession Event
|
||||
description: The act of accessioning a record or object into a collection. MIGRATED from has_accession_date slot context per Rule 53. Follows rico:Instantiation.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
rico: https://www.ica.org/standards/RiC/ontology#
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_identifier
|
||||
- ./Identifier
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AccessionEvent:
|
||||
class_uri: rico:Instantiation
|
||||
slots:
|
||||
- temporal_extent
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_identifier
|
||||
slot_usage:
|
||||
temporal_extent:
|
||||
required: true
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccessionNumber
|
||||
name: AccessionNumber
|
||||
title: Accession Number
|
||||
description: A unique identifier assigned to an object or record upon accession. MIGRATED from has_accession_number slot per Rule 53. Follows rico:Identifier or crm:E42_Identifier.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
rico: https://www.ica.org/standards/RiC/ontology#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./Identifier
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AccessionNumber:
|
||||
is_a: Identifier
|
||||
class_uri: rico:Identifier
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
exact_mappings:
|
||||
- crm:E42_Identifier
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccountIdentifier
|
||||
name: AccountIdentifier
|
||||
title: AccountIdentifier
|
||||
description: >-
|
||||
Identifier for an account.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_value
|
||||
|
||||
classes:
|
||||
AccountIdentifier:
|
||||
class_uri: schema:PropertyValue
|
||||
description: Account identifier.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
slots:
|
||||
- has_or_had_value
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccountStatus
|
||||
name: AccountStatus
|
||||
title: AccountStatus
|
||||
description: >-
|
||||
Status of an account.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
|
||||
classes:
|
||||
AccountStatus:
|
||||
class_uri: skos:Concept
|
||||
description: Account status.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
slots:
|
||||
- has_or_had_label
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/Accreditation
|
||||
name: Accreditation
|
||||
title: Accreditation
|
||||
description: >-
|
||||
Accreditation status or certificate.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
|
||||
classes:
|
||||
Accreditation:
|
||||
class_uri: schema:Permit
|
||||
description: Accreditation.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
slots:
|
||||
- has_or_had_label
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccreditationBody
|
||||
name: AccreditationBody
|
||||
title: AccreditationBody
|
||||
description: >-
|
||||
Organization that grants accreditation.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
|
||||
classes:
|
||||
AccreditationBody:
|
||||
class_uri: schema:Organization
|
||||
description: Accreditation body.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
slots:
|
||||
- has_or_had_name
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccreditationEvent
|
||||
name: AccreditationEvent
|
||||
title: AccreditationEvent
|
||||
description: >-
|
||||
Event of granting accreditation.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/temporal_extent
|
||||
|
||||
classes:
|
||||
AccreditationEvent:
|
||||
class_uri: prov:Activity
|
||||
description: Accreditation event.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
slots:
|
||||
- temporal_extent
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
classes:
|
||||
Accumulation:
|
||||
class_uri: rico:Accumulation
|
||||
description: The period during which the records were accumulated.
|
||||
slots:
|
||||
- temporal_extent
|
||||
- has_or_had_description
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
classes:
|
||||
AccuracyLevel:
|
||||
class_uri: skos:Concept
|
||||
description: A qualitative or quantitative level of accuracy (e.g. for coordinates).
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_value
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,118 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/Acquisition
|
||||
name: acquisition_class
|
||||
title: Acquisition Class
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
schema: http://schema.org/
|
||||
dwc: http://rs.tdwg.org/dwc/terms/
|
||||
rico: https://www.ica.org/standards/RiC/ontology#
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
default_range: string
|
||||
enums:
|
||||
AcquisitionMethodEnum:
|
||||
description: Methods by which items are acquired for collections.
|
||||
permissible_values:
|
||||
FIELD_COLLECTION:
|
||||
description: Collected in the field (biological, geological specimens)
|
||||
meaning: dwc:Occurrence
|
||||
PURCHASE:
|
||||
description: Acquired through purchase
|
||||
meaning: schema:BuyAction
|
||||
DONATION:
|
||||
description: Given as a gift or donation
|
||||
meaning: schema:DonateAction
|
||||
BEQUEST:
|
||||
description: Received through will or estate
|
||||
TRANSFER:
|
||||
description: Transferred from another institution
|
||||
meaning: crm:E10_Transfer_of_Custody
|
||||
EXCHANGE:
|
||||
description: Exchanged with another institution (specimen exchange)
|
||||
EXCAVATION:
|
||||
description: Recovered through archaeological excavation
|
||||
LOAN:
|
||||
description: On long-term loan (not owned)
|
||||
CONFISCATION:
|
||||
description: Seized or confiscated (legal action)
|
||||
FOUND:
|
||||
description: Found object (no prior owner)
|
||||
COMMISSION:
|
||||
description: Commissioned work (created for the collection)
|
||||
UNKNOWN:
|
||||
description: Acquisition method unknown
|
||||
classes:
|
||||
Acquisition:
|
||||
class_uri: crm:E8_Acquisition
|
||||
description: 'Represents an acquisition event - how and when an object or specimen was obtained for a collection.
|
||||
|
||||
CIDOC-CRM E8 Acquisition models the transfer of legal ownership rights.
|
||||
|
||||
**Key properties**: - `temporal_extent`: When the acquisition occurred (TimeSpan with fuzzy boundaries for historical items) - `acquisition_method`: How the item was acquired (field collection, purchase, donation, etc.) - `acquisition_source`: From whom/where acquired (collector, dealer, previous owner, field location) - `acquisition_agent`: Who performed the acquisition (collector, curator, institution)
|
||||
|
||||
**Darwin Core alignment**: For biological specimens: - `temporal_extent` replaces `dwc:eventDate` (collection date) - `acquisition_source` can capture `dwc:locality` and `dwc:recordedBy`
|
||||
|
||||
**Use cases**: - Museum object provenance (purchase from dealer, 1923) - Biological specimen collection (field collection, Amazon basin, 1750s) - Archival transfer (transferred from ministry archives, 2001) - Art donation (donated by artist''s estate, 2015)'
|
||||
exact_mappings:
|
||||
- crm:E8_Acquisition
|
||||
close_mappings:
|
||||
- prov:Activity
|
||||
- schema:AcquireAction
|
||||
related_mappings:
|
||||
- rico:Event
|
||||
- dwc:Event
|
||||
slots:
|
||||
- temporal_extent
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
attributes:
|
||||
acquisition_method:
|
||||
range: AcquisitionMethodEnum
|
||||
description: Method by which the item was acquired (field collection, purchase, donation, etc.).
|
||||
acquisition_source:
|
||||
range: string
|
||||
description: 'Source from which item was acquired. Can be: - Person name (collector, donor, seller) - Institution name (transferring institution) - Location (field collection locality) - Dealer or auction house'
|
||||
acquisition_agent:
|
||||
range: string
|
||||
description: Agent who performed the acquisition (collector name, curator, institution). For biological specimens, maps to dwc:recordedBy.
|
||||
acquisition_location:
|
||||
range: string
|
||||
description: Location where acquisition occurred (field collection site, auction house location). For biological specimens, can capture field locality.
|
||||
acquisition_reference:
|
||||
range: string
|
||||
description: Reference number or identifier for the acquisition (accession number, lot number).
|
||||
acquisition_notes:
|
||||
range: string
|
||||
description: Additional notes about the acquisition event.
|
||||
acquisition_date_text:
|
||||
range: string
|
||||
description: Original date text as recorded (e.g., "1750s", "pre-1662", "circa 1900"). For backward compatibility with string-based collection_date. The structured date should be in temporal_extent.
|
||||
comments:
|
||||
- Created per slot_fixes.yaml revision for collection_date migration
|
||||
- Replaces simple collection_date string with structured acquisition event
|
||||
- "RULE 53: Part of collection_date \u2192 was_acquired_through + Acquisition migration"
|
||||
annotations:
|
||||
specificity_score: 0.7
|
||||
specificity_rationale: Fairly specific - applies to items with acquisition provenance
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
examples:
|
||||
- value: "# Biological specimen collected in the field\nacquisition_method: FIELD_COLLECTION\ntemporal_extent:\n begin_of_the_begin: \"1750-01-01\"\n end_of_the_end: \"1759-12-31\"\n notes: \"Collected sometime in the 1750s\"\nacquisition_source: \"Amazon basin, Brazil\"\nacquisition_agent: \"Unknown Dutch collector\"\nacquisition_date_text: \"1750s\"\n"
|
||||
- value: "# Museum object purchased from dealer\nacquisition_method: PURCHASE\ntemporal_extent:\n begin_of_the_begin: \"1923-03-15\"\n end_of_the_end: \"1923-03-15\"\nacquisition_source: \"Sotheby's London\"\nacquisition_reference: \"Lot 245, Sale of March 1923\"\n"
|
||||
- value: "# Historical specimen with uncertain date\nacquisition_method: FIELD_COLLECTION\ntemporal_extent:\n begin_of_the_begin: \"1600-01-01\"\n end_of_the_end: \"1662-12-31\"\n notes: \"Pre-1662 (before Great Fire of London)\"\nacquisition_date_text: \"pre-1662\"\n"
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AcquisitionBudget
|
||||
name: AcquisitionBudget
|
||||
title: AcquisitionBudget
|
||||
description: >-
|
||||
Budget allocated for acquisitions.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_amount
|
||||
|
||||
classes:
|
||||
AcquisitionBudget:
|
||||
class_uri: schema:MonetaryAmount
|
||||
description: Acquisition budget.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
slots:
|
||||
- has_or_had_amount
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AcquisitionEvent
|
||||
name: AcquisitionEvent
|
||||
title: Acquisition Event
|
||||
description: An event in which an entity is acquired. MIGRATED from has_acquisition_source per Rule 53. Follows rico:Instantiation.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
rico: https://www.ica.org/standards/RiC/ontology#
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_origin
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
- ../slots/has_or_had_method
|
||||
- ./AcquisitionMethod
|
||||
- ../slots/has_or_had_provenance
|
||||
- ./Provenance
|
||||
- ./Entity
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AcquisitionEvent:
|
||||
class_uri: rico:Instantiation
|
||||
slots:
|
||||
- has_or_had_origin
|
||||
- temporal_extent
|
||||
- has_or_had_method
|
||||
- has_or_had_provenance
|
||||
slot_usage:
|
||||
has_or_had_origin:
|
||||
range: Entity
|
||||
required: true
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AcquisitionMethod
|
||||
name: AcquisitionMethod
|
||||
title: Acquisition Method
|
||||
description: Method by which an object or collection was acquired. MIGRATED from has_acquisition_method slot context per Rule 53. Follows crm:E55_Type.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AcquisitionMethod:
|
||||
class_uri: crm:E55_Type
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,6 +1,20 @@
|
|||
# Activity - Base class for all heritage domain activities
|
||||
#
|
||||
# This is the main Activity class that uses generic slots for:
|
||||
# - Identifier (has_activity_identifier)
|
||||
# - Type (has_or_had_activity_type → ActivityType)
|
||||
# - Description (has_activity_description)
|
||||
# - Label (has_activity_name)
|
||||
# - Timespan (has_timespan → TimeSpan)
|
||||
# - Succession (is_or_was_succeeded_by, preceding_activity)
|
||||
#
|
||||
# Generation date: 2026-01-13
|
||||
# Rule compliance: 38, 39, 42, 43, 48
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Activity
|
||||
name: Activity
|
||||
title: Activity Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
|
|
@ -11,191 +25,266 @@ prefixes:
|
|||
dcterms: http://purl.org/dc/terms/
|
||||
aat: http://vocab.getty.edu/aat/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ./TimeSpan
|
||||
- ./ActivityType
|
||||
- ./ActivityTypes
|
||||
- ../slots/has_activity_identifier
|
||||
- ../slots/has_or_had_identifier
|
||||
- ./Identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ./Label
|
||||
- ../slots/has_or_had_description
|
||||
- ./Description
|
||||
- ../slots/has_activity_status
|
||||
- ../slots/note
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ./TimeSpan
|
||||
- ./ActivityType
|
||||
- ./ActivityTypes
|
||||
- ../slots/has_activity_identifier
|
||||
- ../slots/has_activity_name
|
||||
- ../slots/has_activity_description
|
||||
- ../slots/has_or_had_activity_type
|
||||
- ../slots/has_timespan
|
||||
- ../slots/is_or_was_succeeded_by
|
||||
- ../slots/preceding_activity
|
||||
- ../slots/start_date
|
||||
- ../slots/end_date
|
||||
- ../slots/status
|
||||
- ../slots/note
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
|
||||
classes:
|
||||
Activity:
|
||||
class_uri: prov:Activity
|
||||
description: "Base class for activities performed by heritage custodians.\n\n**DEFINITION**:\n\nAn Activity represents a discrete or ongoing action undertaken by a heritage\ncustodian. This is the base class for all activity instances in the ontology.\n\n**ONTOLOGICAL ALIGNMENT**:\n\n| Ontology | Class | Use Case |\n|----------|-------|----------|\n| PROV-O | prov:Activity | Primary - provenance tracking |\n| CIDOC-CRM | crm:E7_Activity | Cultural heritage domain |\n| RiC-O | rico:Activity | Archival activities |\n| Schema.org | schema:Action | Web semantics |\n\n**KEY RELATIONSHIPS**:\n\n```\nActivity\n \u2502\n \u251C\u2500\u2500 has_or_had_activity_type \u2192 ActivityType (classification)\n \u2502 \u2514\u2500\u2500 CurationActivityType, ConservationActivityType, etc.\n \u2502\n \u251C\u2500\u2500 has_timespan \u2192 TimeSpan (temporal extent)\n \u2502 \u2514\u2500\u2500 start_date, end_date, fuzzy bounds\n \u2502\n \u251C\u2500\u2500 is_or_was_succeeded_by\
|
||||
\ \u2192 Activity (succession)\n \u2502\n \u2514\u2500\u2500 preceding_activity \u2192 Activity (inverse succession)\n```\n\n**SPECIALIZATION**:\n\nThis base class is extended by domain-specific activity classes:\n- CurationActivity - Collection management (existing, to be refactored)\n- ConservationActivity - Preservation work\n- ExhibitionActivity - Exhibition planning and execution\n- DigitizationActivity - Digital transformation projects\n\n**PROVENANCE (PROV-O)**:\n\nActivities generate provenance information:\n- `prov:Activity` - The activity itself\n- `prov:wasAssociatedWith` - Responsible agents\n- `prov:used` - Entities processed\n- `prov:generated` - Entities created\n- `prov:atTime` - Temporal extent\n"
|
||||
description: |
|
||||
Base class for activities performed by heritage custodians.
|
||||
|
||||
**DEFINITION**:
|
||||
|
||||
An Activity represents a discrete or ongoing action undertaken by a heritage
|
||||
custodian. This is the base class for all activity instances in the ontology.
|
||||
|
||||
**ONTOLOGICAL ALIGNMENT**:
|
||||
|
||||
| Ontology | Class | Use Case |
|
||||
|----------|-------|----------|
|
||||
| PROV-O | prov:Activity | Primary - provenance tracking |
|
||||
| CIDOC-CRM | crm:E7_Activity | Cultural heritage domain |
|
||||
| RiC-O | rico:Activity | Archival activities |
|
||||
| Schema.org | schema:Action | Web semantics |
|
||||
|
||||
**KEY RELATIONSHIPS**:
|
||||
|
||||
```
|
||||
Activity
|
||||
│
|
||||
├── has_or_had_activity_type → ActivityType (classification)
|
||||
│ └── CurationActivityType, ConservationActivityType, etc.
|
||||
│
|
||||
├── has_timespan → TimeSpan (temporal extent)
|
||||
│ └── start_date, end_date, fuzzy bounds
|
||||
│
|
||||
├── is_or_was_succeeded_by → Activity (succession)
|
||||
│
|
||||
└── preceding_activity → Activity (inverse succession)
|
||||
```
|
||||
|
||||
**SPECIALIZATION**:
|
||||
|
||||
This base class is extended by domain-specific activity classes:
|
||||
- CurationActivity - Collection management (existing, to be refactored)
|
||||
- ConservationActivity - Preservation work
|
||||
- ExhibitionActivity - Exhibition planning and execution
|
||||
- DigitizationActivity - Digital transformation projects
|
||||
|
||||
**PROVENANCE (PROV-O)**:
|
||||
|
||||
Activities generate provenance information:
|
||||
- `prov:Activity` - The activity itself
|
||||
- `prov:wasAssociatedWith` - Responsible agents
|
||||
- `prov:used` - Entities processed
|
||||
- `prov:generated` - Entities created
|
||||
- `prov:atTime` - Temporal extent
|
||||
|
||||
exact_mappings:
|
||||
- prov:Activity
|
||||
- prov:Activity
|
||||
|
||||
close_mappings:
|
||||
- crm:E7_Activity
|
||||
- rico:Activity
|
||||
- schema:Action
|
||||
- crm:E7_Activity
|
||||
- rico:Activity
|
||||
- schema:Action
|
||||
|
||||
related_mappings:
|
||||
- aat:300054277
|
||||
- aat:300054277 # activities (functions)
|
||||
|
||||
slots:
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_activity_type
|
||||
- temporal_extent
|
||||
- is_or_was_succeeded_by
|
||||
- preceding_activity
|
||||
- has_or_had_status
|
||||
- note
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_activity_identifier
|
||||
- has_activity_name
|
||||
- has_activity_description
|
||||
- has_or_had_activity_type
|
||||
- has_timespan
|
||||
- start_date
|
||||
- end_date
|
||||
- is_or_was_succeeded_by
|
||||
- preceding_activity
|
||||
- status
|
||||
- note
|
||||
- specificity_annotation
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
description: 'Unique identifier for this activity instance.
|
||||
|
||||
MIGRATED from has_activity_identifier per Rule 53.
|
||||
|
||||
Format: URI following NDE Heritage Custodian ontology conventions.
|
||||
|
||||
Pattern: `https://nde.nl/ontology/hc/activity/{custodian-slug}-{type}-{year}-{sequence}`
|
||||
|
||||
'
|
||||
range: Identifier
|
||||
has_activity_identifier:
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
inlined: true
|
||||
description: |
|
||||
Unique identifier for this activity instance.
|
||||
Format: URI following NDE Heritage Custodian ontology conventions.
|
||||
Pattern: `https://nde.nl/ontology/hc/activity/{custodian-slug}-{type}-{year}-{sequence}`
|
||||
examples:
|
||||
- value:
|
||||
identifier_value: https://nde.nl/ontology/hc/activity/rijksmuseum-inventory-2025-001
|
||||
description: 2025 inventory at Rijksmuseum
|
||||
- value:
|
||||
identifier_value: https://nde.nl/ontology/hc/activity/nationaal-archief-digitization-voc-2024
|
||||
description: VOC digitization project at Nationaal Archief
|
||||
has_or_had_label:
|
||||
- value: https://nde.nl/ontology/hc/activity/rijksmuseum-inventory-2025-001
|
||||
description: "2025 inventory at Rijksmuseum"
|
||||
- value: https://nde.nl/ontology/hc/activity/nationaal-archief-digitization-voc-2024
|
||||
description: "VOC digitization project at Nationaal Archief"
|
||||
|
||||
has_activity_name:
|
||||
range: string
|
||||
required: true
|
||||
description: Human-readable name for this activity.
|
||||
examples:
|
||||
- value: 2025 Annual Collection Inventory
|
||||
description: Recurring annual inventory
|
||||
- value: VOC Archives Digitization Project Phase 2
|
||||
description: Multi-year digitization project
|
||||
has_or_had_description:
|
||||
- value: "2025 Annual Collection Inventory"
|
||||
description: "Recurring annual inventory"
|
||||
- value: "VOC Archives Digitization Project Phase 2"
|
||||
description: "Multi-year digitization project"
|
||||
|
||||
has_activity_description:
|
||||
range: string
|
||||
required: false
|
||||
description: Detailed description of the activity scope and objectives.
|
||||
examples:
|
||||
- value: "Annual physical inventory of the Dutch Masters collection, \ncovering approximately 450 paintings. Spot-check methodology \nwith 20% sample verified against catalog records.\n"
|
||||
description: Inventory activity description
|
||||
- value: |
|
||||
Annual physical inventory of the Dutch Masters collection,
|
||||
covering approximately 450 paintings. Spot-check methodology
|
||||
with 20% sample verified against catalog records.
|
||||
description: "Inventory activity description"
|
||||
|
||||
has_or_had_activity_type:
|
||||
range: ActivityType
|
||||
required: true
|
||||
multivalued: true
|
||||
description: 'The type classification(s) for this activity.
|
||||
|
||||
description: |
|
||||
The type classification(s) for this activity.
|
||||
Values are ActivityType subclasses from ActivityTypes.yaml.
|
||||
|
||||
'
|
||||
examples:
|
||||
- value: CurationActivityType
|
||||
description: Curation activity
|
||||
- value: '[DigitizationActivityType, ResearchActivityType]'
|
||||
description: Combined digitization and research project
|
||||
temporal_extent:
|
||||
- value: CurationActivityType
|
||||
description: "Curation activity"
|
||||
- value: "[DigitizationActivityType, ResearchActivityType]"
|
||||
description: "Combined digitization and research project"
|
||||
|
||||
has_timespan:
|
||||
range: TimeSpan
|
||||
required: false
|
||||
inlined: true
|
||||
description: 'Temporal extent of this activity.
|
||||
|
||||
Replaces has_timespan, start_date, end_date.
|
||||
|
||||
description: |
|
||||
Temporal extent of this activity.
|
||||
Uses CIDOC-CRM four-point temporal model for fuzzy bounds.
|
||||
|
||||
'
|
||||
examples:
|
||||
- value:
|
||||
begin_of_the_begin: '2025-01-15'
|
||||
end_of_the_end: '2025-03-31'
|
||||
description: Q1 2025 activity period
|
||||
- value:
|
||||
start_date: "2025-01-15"
|
||||
end_date: "2025-03-31"
|
||||
description: "Q1 2025 activity period"
|
||||
|
||||
start_date:
|
||||
range: date
|
||||
required: false
|
||||
description: Start date of the activity (convenience field).
|
||||
|
||||
end_date:
|
||||
range: date
|
||||
required: false
|
||||
description: End date of the activity (convenience field).
|
||||
|
||||
is_or_was_succeeded_by:
|
||||
range: Activity
|
||||
multivalued: true
|
||||
inlined: false
|
||||
description: Activity/activities that follow this one.
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/activity/conservation-treatment-2025
|
||||
description: Conservation follows condition survey
|
||||
- value: https://nde.nl/ontology/hc/activity/conservation-treatment-2025
|
||||
description: "Conservation follows condition survey"
|
||||
|
||||
preceding_activity:
|
||||
range: Activity
|
||||
inlined: false
|
||||
description: Activity that preceded this one.
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/activity/condition-survey-2024
|
||||
description: Condition survey informed this conservation treatment
|
||||
has_or_had_status:
|
||||
- value: https://nde.nl/ontology/hc/activity/condition-survey-2024
|
||||
description: "Condition survey informed this conservation treatment"
|
||||
|
||||
status:
|
||||
range: string
|
||||
required: false
|
||||
description: Current status of the activity.
|
||||
examples:
|
||||
- value: IN_PROGRESS
|
||||
description: Activity currently underway
|
||||
- value: COMPLETED
|
||||
description: Activity finished
|
||||
- value: PLANNED
|
||||
description: Activity scheduled for future
|
||||
- value: "IN_PROGRESS"
|
||||
description: "Activity currently underway"
|
||||
- value: "COMPLETED"
|
||||
description: "Activity finished"
|
||||
- value: "PLANNED"
|
||||
description: "Activity scheduled for future"
|
||||
|
||||
note:
|
||||
range: string
|
||||
multivalued: true
|
||||
description: Additional notes about the activity.
|
||||
|
||||
annotations:
|
||||
specificity_score: '0.50'
|
||||
specificity_rationale: Moderately specific - Activity is a core domain concept but broadly applicable across all heritage custodian types.
|
||||
has_or_had_score: null
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
specificity_score: "0.50"
|
||||
specificity_rationale: "Moderately specific - Activity is a core domain concept but broadly applicable across all heritage custodian types."
|
||||
has_or_had_score: # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
# NOTE: slot_usage may need manual review for range/description updates '{"collection_discovery": 0.65, "organizational_change": 0.55, "general_heritage": 0.50}'
|
||||
|
||||
comments:
|
||||
- Base class for all heritage domain activities
|
||||
- Extended by CurationActivity, ConservationActivity, etc.
|
||||
- 'Uses generic slots: has_activity_identifier, has_or_had_activity_type, has_timespan'
|
||||
- PROV-O primary alignment for provenance tracking
|
||||
- Supports activity chaining via is_or_was_succeeded_by/preceding_activity
|
||||
- "Base class for all heritage domain activities"
|
||||
- "Extended by CurationActivity, ConservationActivity, etc."
|
||||
- "Uses generic slots: has_activity_identifier, has_or_had_activity_type, has_timespan"
|
||||
- "PROV-O primary alignment for provenance tracking"
|
||||
- "Supports activity chaining via is_or_was_succeeded_by/preceding_activity"
|
||||
|
||||
see_also:
|
||||
- https://www.w3.org/TR/prov-o/
|
||||
- http://www.cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E7
|
||||
- https://www.ica.org/standards/RiC/ontology
|
||||
- https://www.w3.org/TR/prov-o/
|
||||
- http://www.cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E7
|
||||
- https://www.ica.org/standards/RiC/ontology
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_identifier:
|
||||
identifier_value: https://nde.nl/ontology/hc/activity/rijksmuseum-inventory-2025-001
|
||||
has_or_had_label: 2025 Annual Collection Inventory - Dutch Masters
|
||||
has_or_had_activity_type:
|
||||
- CurationActivityType
|
||||
has_or_had_description: "Annual physical inventory of the Dutch Masters collection \n(Gallery of Honour and adjacent galleries). Spot-check methodology \nwith 20% sample verification against CMS records.\n"
|
||||
temporal_extent:
|
||||
begin_of_the_begin: '2025-01-15'
|
||||
end_of_the_end: '2025-03-31'
|
||||
has_or_had_status: IN_PROGRESS
|
||||
description: Inventory activity at Rijksmuseum
|
||||
- value:
|
||||
has_or_had_identifier:
|
||||
identifier_value: https://nde.nl/ontology/hc/activity/kb-digitization-medieval-2024
|
||||
has_or_had_label: Medieval Manuscripts Digitization Project
|
||||
has_or_had_activity_type:
|
||||
- DigitizationActivityType
|
||||
- ResearchActivityType
|
||||
has_or_had_description: "High-resolution digitization of 342 medieval manuscripts with \nHTR processing and metadata enhancement. IIIF-compliant output.\n"
|
||||
temporal_extent:
|
||||
begin_of_the_begin: '2024-03-01'
|
||||
end_of_the_end: '2025-12-31'
|
||||
has_or_had_status: IN_PROGRESS
|
||||
preceding_activity: https://nde.nl/ontology/hc/activity/kb-condition-survey-2023
|
||||
description: Digitization and research project at KB
|
||||
- value:
|
||||
has_activity_identifier: https://nde.nl/ontology/hc/activity/rijksmuseum-inventory-2025-001
|
||||
has_activity_name: "2025 Annual Collection Inventory - Dutch Masters"
|
||||
has_or_had_activity_type:
|
||||
- CurationActivityType
|
||||
has_activity_description: |
|
||||
Annual physical inventory of the Dutch Masters collection
|
||||
(Gallery of Honour and adjacent galleries). Spot-check methodology
|
||||
with 20% sample verification against CMS records.
|
||||
has_timespan:
|
||||
start_date: "2025-01-15"
|
||||
end_date: "2025-03-31"
|
||||
status: "IN_PROGRESS"
|
||||
description: "Inventory activity at Rijksmuseum"
|
||||
|
||||
- value:
|
||||
has_activity_identifier: https://nde.nl/ontology/hc/activity/kb-digitization-medieval-2024
|
||||
has_activity_name: "Medieval Manuscripts Digitization Project"
|
||||
has_or_had_activity_type:
|
||||
- DigitizationActivityType
|
||||
- ResearchActivityType
|
||||
has_activity_description: |
|
||||
High-resolution digitization of 342 medieval manuscripts with
|
||||
HTR processing and metadata enhancement. IIIF-compliant output.
|
||||
start_date: "2024-03-01"
|
||||
end_date: "2025-12-31"
|
||||
status: "IN_PROGRESS"
|
||||
preceding_activity: https://nde.nl/ontology/hc/activity/kb-condition-survey-2023
|
||||
description: "Digitization and research project at KB"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,16 @@
|
|||
# ActivityType - Abstract base class for activity type classifications
|
||||
#
|
||||
# Following the Type/Types naming convention (Rule 0b):
|
||||
# - ActivityType.yaml: Abstract base class defining the type taxonomy
|
||||
# - ActivityTypes.yaml: File containing all concrete subclasses
|
||||
#
|
||||
# Generation date: 2026-01-13
|
||||
# Rule compliance: 0b (Type/Types naming), 37 (specificity scores), 50 (ontology mapping)
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/ActivityType
|
||||
name: ActivityType
|
||||
title: Activity Type Classification
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
|
|
@ -10,111 +20,186 @@ prefixes:
|
|||
schema: http://schema.org/
|
||||
aat: http://vocab.getty.edu/aat/
|
||||
wd: http://www.wikidata.org/entity/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/created
|
||||
- ../slots/modified
|
||||
- ../slots/has_or_had_identifier
|
||||
- ./WikiDataIdentifier
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- linkml:types
|
||||
- ../slots/created
|
||||
- ../slots/modified
|
||||
- ../slots/has_or_had_identifier # was: wikidata_entity - migrated per Rule 53 (2026-01-15)
|
||||
- ./WikiDataIdentifier # for has_or_had_identifier range
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ../slots/has_or_had_description # was: type_description - migrated per Rule 53/56 (2026-01-16)
|
||||
- ../slots/has_or_had_label # was: type_label - migrated per Rule 53
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
|
||||
classes:
|
||||
ActivityType:
|
||||
class_uri: skos:Concept
|
||||
description: "Abstract base class for activity type classifications in the heritage domain.\n\n**DEFINITION**:\n\nActivityType represents CATEGORIES of activities performed by heritage\ncustodians, not individual activity instances. Each subclass defines\ncharacteristics of an activity category (function, typical duration,\ndeliverables, etc.).\n\n**CRITICAL: TYPE vs INSTANCE**\n\n| Aspect | ActivityType (This Class) | Activity (Instance Class) |\n|--------|---------------------------|---------------------------|\n| **Nature** | Classification/category | Individual activity |\n| **Examples** | CURATION, CONSERVATION | \"2025 Inventory at Rijksmuseum\" |\n| **Properties** | Category metadata, typical standards | Dates, responsible actors |\n| **Cardinality** | ~20-30 types | Thousands of instances |\n\n**CATEGORY STRUCTURE**:\n\nActivity types are organized into high-level categories:\n\n1. **CURATION**: Collection management activities\n - Accessioning, Cataloging, Inventory, Deaccessioning\n\
|
||||
\ - Rehousing, Relocation, Storage Reorganization\n \n2. **CONSERVATION**: Preservation activities\n - Preventive Conservation, Condition Assessment\n - Restoration, Stabilization, Environmental Monitoring\n \n3. **COMMERCIAL**: Business activities\n - Sales, Licensing, Merchandising\n - Venue Rental, Event Hosting\n \n4. **RESEARCH**: Scholarly activities\n - Provenance Research, Cataloging Research\n - Scientific Analysis, Documentation\n \n5. **EDUCATION**: Educational activities\n - Guided Tours, Workshops, Lectures\n - Online Courses, Educational Programs\n \n6. **EXHIBITION**: Display activities\n - Permanent Exhibition, Temporary Exhibition\n - Traveling Exhibition, Virtual Exhibition\n \n7. **DIGITIZATION**: Digital transformation activities\n - Scanning, Photography, 3D Modeling\n - OCR/HTR Processing, Metadata Enhancement\n \n8. **ADMINISTRATIVE**: Governance activities\n - Audit, Valuation, Insurance\n - Loan Management, Rights\
|
||||
\ Management\n\n**ONTOLOGY ALIGNMENT**:\n\n- **SKOS Concept**: Activity types are concepts in a controlled vocabulary\n- **CIDOC-CRM E55_Type**: Cultural heritage domain type system\n- **AAT**: Getty Art & Architecture Thesaurus for activity terms\n- **SPECTRUM**: UK Collections Management Standard procedures\n\n**SUBCLASSES**:\n\nSee ActivityTypes.yaml for concrete activity type subclasses organized\nby category: CURATION, CONSERVATION, COMMERCIAL, RESEARCH, EDUCATION,\nEXHIBITION, DIGITIZATION, and ADMINISTRATIVE.\n"
|
||||
description: |
|
||||
Abstract base class for activity type classifications in the heritage domain.
|
||||
|
||||
**DEFINITION**:
|
||||
|
||||
ActivityType represents CATEGORIES of activities performed by heritage
|
||||
custodians, not individual activity instances. Each subclass defines
|
||||
characteristics of an activity category (function, typical duration,
|
||||
deliverables, etc.).
|
||||
|
||||
**CRITICAL: TYPE vs INSTANCE**
|
||||
|
||||
| Aspect | ActivityType (This Class) | Activity (Instance Class) |
|
||||
|--------|---------------------------|---------------------------|
|
||||
| **Nature** | Classification/category | Individual activity |
|
||||
| **Examples** | CURATION, CONSERVATION | "2025 Inventory at Rijksmuseum" |
|
||||
| **Properties** | Category metadata, typical standards | Dates, responsible actors |
|
||||
| **Cardinality** | ~20-30 types | Thousands of instances |
|
||||
|
||||
**CATEGORY STRUCTURE**:
|
||||
|
||||
Activity types are organized into high-level categories:
|
||||
|
||||
1. **CURATION**: Collection management activities
|
||||
- Accessioning, Cataloging, Inventory, Deaccessioning
|
||||
- Rehousing, Relocation, Storage Reorganization
|
||||
|
||||
2. **CONSERVATION**: Preservation activities
|
||||
- Preventive Conservation, Condition Assessment
|
||||
- Restoration, Stabilization, Environmental Monitoring
|
||||
|
||||
3. **COMMERCIAL**: Business activities
|
||||
- Sales, Licensing, Merchandising
|
||||
- Venue Rental, Event Hosting
|
||||
|
||||
4. **RESEARCH**: Scholarly activities
|
||||
- Provenance Research, Cataloging Research
|
||||
- Scientific Analysis, Documentation
|
||||
|
||||
5. **EDUCATION**: Educational activities
|
||||
- Guided Tours, Workshops, Lectures
|
||||
- Online Courses, Educational Programs
|
||||
|
||||
6. **EXHIBITION**: Display activities
|
||||
- Permanent Exhibition, Temporary Exhibition
|
||||
- Traveling Exhibition, Virtual Exhibition
|
||||
|
||||
7. **DIGITIZATION**: Digital transformation activities
|
||||
- Scanning, Photography, 3D Modeling
|
||||
- OCR/HTR Processing, Metadata Enhancement
|
||||
|
||||
8. **ADMINISTRATIVE**: Governance activities
|
||||
- Audit, Valuation, Insurance
|
||||
- Loan Management, Rights Management
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
- **SKOS Concept**: Activity types are concepts in a controlled vocabulary
|
||||
- **CIDOC-CRM E55_Type**: Cultural heritage domain type system
|
||||
- **AAT**: Getty Art & Architecture Thesaurus for activity terms
|
||||
- **SPECTRUM**: UK Collections Management Standard procedures
|
||||
|
||||
**SUBCLASSES**:
|
||||
|
||||
See ActivityTypes.yaml for concrete activity type subclasses organized
|
||||
by category: CURATION, CONSERVATION, COMMERCIAL, RESEARCH, EDUCATION,
|
||||
EXHIBITION, DIGITIZATION, and ADMINISTRATIVE.
|
||||
|
||||
abstract: true
|
||||
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
- skos:Concept
|
||||
|
||||
close_mappings:
|
||||
- crm:E55_Type
|
||||
- schema:DefinedTerm
|
||||
- crm:E55_Type
|
||||
- schema:DefinedTerm
|
||||
|
||||
related_mappings:
|
||||
- prov:Activity
|
||||
- aat:300054277
|
||||
- prov:Activity
|
||||
- aat:300054277 # activities (functions)
|
||||
|
||||
slots:
|
||||
- created
|
||||
- modified
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_description
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
- created
|
||||
- modified
|
||||
- specificity_annotation
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- has_or_had_description # was: type_description - migrated per Rule 53/56 (2026-01-16)
|
||||
- has_or_had_identifier # was: type_id, wikidata_entity - consolidated per Rule 56 (2026-01-16)
|
||||
- has_or_had_label # was: type_label
|
||||
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
has_or_had_identifier: # was: type_id - migrated per Rule 56 (2026-01-16)
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
multivalued: true
|
||||
description: 'Unique identifier(s) for this activity type.
|
||||
|
||||
description: |
|
||||
Unique identifier(s) for this activity type.
|
||||
MIGRATED from type_id per Rule 56 (2026-01-16).
|
||||
|
||||
Also includes Wikidata entity references (previously wikidata_entity).
|
||||
|
||||
'
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/activity-type/curation
|
||||
description: Internal type identifier for curation
|
||||
- value: wd:Q1348059
|
||||
description: Wikidata entity for curation
|
||||
has_or_had_label:
|
||||
- value: https://nde.nl/ontology/hc/activity-type/curation
|
||||
description: Internal type identifier for curation
|
||||
- value: wd:Q1348059
|
||||
description: Wikidata entity for curation
|
||||
|
||||
has_or_had_label: # was: type_label - migrated per Rule 53
|
||||
range: string
|
||||
required: true
|
||||
multivalued: true
|
||||
description: 'Human-readable label for this activity type.
|
||||
|
||||
description: |
|
||||
Human-readable label for this activity type.
|
||||
MIGRATED from type_label per slot_fixes.yaml (Rule 53).
|
||||
|
||||
'
|
||||
examples:
|
||||
- value:
|
||||
- Curation@en
|
||||
- curatie@nl
|
||||
- Kuration@de
|
||||
description: Multilingual labels for curation type
|
||||
has_or_had_description:
|
||||
- value: ["Curation@en", "curatie@nl", "Kuration@de"]
|
||||
description: Multilingual labels for curation type
|
||||
|
||||
has_or_had_description: # was: type_description - migrated per Rule 53/56 (2026-01-16)
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: Activities related to the ongoing management and care of collections
|
||||
description: Description of curation activity type
|
||||
- value: "Activities related to the ongoing management and care of collections"
|
||||
description: Description of curation activity type
|
||||
|
||||
created:
|
||||
range: datetime
|
||||
|
||||
modified:
|
||||
range: datetime
|
||||
|
||||
annotations:
|
||||
specificity_score: '0.40'
|
||||
specificity_rationale: Moderately specific - activity types are domain-relevant but not specific to any single conversation template.
|
||||
has_or_had_score: null
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
specificity_score: "0.40"
|
||||
specificity_rationale: "Moderately specific - activity types are domain-relevant but not specific to any single conversation template."
|
||||
has_or_had_score: # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
# NOTE: slot_usage may need manual review for range/description updates '{"collection_discovery": 0.60, "organizational_change": 0.50, "general_heritage": 0.40}'
|
||||
|
||||
comments:
|
||||
- Abstract base class - use specific subclasses (CurationType, ConservationType, etc.)
|
||||
- Represents ACTIVITY TYPES, not activity instances
|
||||
- Activity.has_or_had_activity_type references these type classes
|
||||
- Follows Type/Types naming convention (Rule 0b)
|
||||
- Organized by function, domain, and typical characteristics
|
||||
- "Abstract base class - use specific subclasses (CurationType, ConservationType, etc.)"
|
||||
- "Represents ACTIVITY TYPES, not activity instances"
|
||||
- "Activity.has_or_had_activity_type references these type classes"
|
||||
- "Follows Type/Types naming convention (Rule 0b)"
|
||||
- "Organized by function, domain, and typical characteristics"
|
||||
|
||||
see_also:
|
||||
- https://www.wikidata.org/
|
||||
- https://www.w3.org/2004/02/skos/
|
||||
- http://vocab.getty.edu/aat/
|
||||
- https://collectionstrust.org.uk/spectrum/
|
||||
- https://www.wikidata.org/
|
||||
- https://www.w3.org/2004/02/skos/
|
||||
- http://vocab.getty.edu/aat/
|
||||
- https://collectionstrust.org.uk/spectrum/
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_identifier:
|
||||
- https://nde.nl/ontology/hc/activity-type/curation
|
||||
- wd:Q1348059
|
||||
has_or_had_label:
|
||||
- Curation@en
|
||||
- curatie@nl
|
||||
has_or_had_description: Activities related to ongoing collection management
|
||||
description: Curation activity type with multilingual labels and identifiers
|
||||
- value:
|
||||
has_or_had_identifier: # was: type_id, wikidata_entity
|
||||
- https://nde.nl/ontology/hc/activity-type/curation
|
||||
- wd:Q1348059
|
||||
has_or_had_label:
|
||||
- Curation@en
|
||||
- curatie@nl
|
||||
has_or_had_description: "Activities related to ongoing collection management" # was: type_description
|
||||
description: "Curation activity type with multilingual labels and identifiers"
|
||||
|
|
|
|||
|
|
@ -1,12 +1,26 @@
|
|||
# ActivityTypes - Concrete activity type subclasses
|
||||
#
|
||||
# Following the Type/Types naming convention (Rule 0b):
|
||||
# - ActivityType.yaml: Abstract base class defining the type taxonomy
|
||||
# - ActivityTypes.yaml: File containing all concrete subclasses (THIS FILE)
|
||||
#
|
||||
# Generation date: 2026-01-13
|
||||
# Rule compliance: 0b (Type/Types naming), 37 (specificity scores), 50 (ontology mapping)
|
||||
# Migration: 2026-01-16 - wikidata_entity → wikidata_equivalent per Rule 53
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/ActivityTypes
|
||||
name: ActivityTypes
|
||||
title: ActivityTypes
|
||||
description: >-
|
||||
Container for ActivityType instances.
|
||||
title: Activity Type Subclasses
|
||||
|
||||
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/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
schema: http://schema.org/
|
||||
aat: http://vocab.getty.edu/aat/
|
||||
wd: http://www.wikidata.org/entity/ # Added for Wikidata mappings (2026-01-17)
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
|
|
@ -15,12 +29,347 @@ imports:
|
|||
- ./ActivityType
|
||||
|
||||
classes:
|
||||
ActivityTypes:
|
||||
class_uri: hc:ActivityTypes
|
||||
description: Activity types container.
|
||||
# ===========================================================================
|
||||
# CURATION ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
CurationActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: crm:E87_Curation_Activity
|
||||
description: |
|
||||
Activity type for ongoing collection management activities.
|
||||
|
||||
**CIDOC-CRM Definition**:
|
||||
E87_Curation_Activity comprises "the activities that result in the continuity of
|
||||
management and the preservation and evolution of instances of E78 Curated Holding."
|
||||
|
||||
**Subtypes**:
|
||||
- Accessioning, Deaccessioning
|
||||
- Cataloging, Inventory
|
||||
- Rehousing, Relocation, Storage Reorganization
|
||||
- Collection Development
|
||||
|
||||
**SPECTRUM Alignment**: Maps to SPECTRUM primary procedures
|
||||
exact_mappings:
|
||||
- crm:E87_Curation_Activity
|
||||
- wd:Q1348059 # Wikidata: curation (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300054277 # activities (functions)
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
tree_root: true
|
||||
activity_category: CURATION
|
||||
spectrum_procedures: "inventory, cataloguing, acquisition, deaccession-and-disposal"
|
||||
|
||||
# ===========================================================================
|
||||
# CONSERVATION ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
ConservationActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: crm:E11_Modification
|
||||
description: |
|
||||
Activity type for preservation and conservation activities.
|
||||
|
||||
**CIDOC-CRM Definition**:
|
||||
E11_Modification "comprises instances of E7 Activity that are undertaken to
|
||||
create, alter or change E24 Physical Human-Made Thing."
|
||||
|
||||
**Subtypes**:
|
||||
- Preventive Conservation
|
||||
- Condition Assessment, Condition Survey
|
||||
- Restoration, Stabilization
|
||||
- Environmental Monitoring
|
||||
- Disaster Planning and Response
|
||||
|
||||
**SPECTRUM Alignment**: Maps to SPECTRUM condition checking and collections care
|
||||
exact_mappings:
|
||||
- crm:E11_Modification
|
||||
- wd:Q217102 # Wikidata: conservation (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300053803 # conservation (activity)
|
||||
annotations:
|
||||
activity_category: CONSERVATION
|
||||
spectrum_procedures: "condition-checking, collections-care, conservation-assessment"
|
||||
|
||||
# ===========================================================================
|
||||
# COMMERCIAL ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
CommercialActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: schema:TradeAction
|
||||
description: |
|
||||
Activity type for commercial and business operations.
|
||||
|
||||
**Definition**:
|
||||
Commercial activities that generate revenue or involve commercial transactions
|
||||
for heritage institutions.
|
||||
|
||||
**Subtypes**:
|
||||
- Sales (museum shop, publications)
|
||||
- Licensing (image rights, reproductions)
|
||||
- Merchandising
|
||||
- Venue Rental
|
||||
- Event Hosting
|
||||
- Ticket Sales
|
||||
|
||||
**Note**: Distinct from non-commercial educational or public service activities.
|
||||
exact_mappings:
|
||||
- schema:TradeAction
|
||||
- wd:Q601401 # Wikidata: commerce (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300055704 # commerce
|
||||
annotations:
|
||||
activity_category: COMMERCIAL
|
||||
|
||||
# ===========================================================================
|
||||
# RESEARCH ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
ResearchActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: crm:E7_Activity
|
||||
description: |
|
||||
Activity type for scholarly and research activities.
|
||||
|
||||
**Definition**:
|
||||
Research activities undertaken by heritage custodians to increase knowledge
|
||||
about collections, provenance, or heritage subjects.
|
||||
|
||||
**Subtypes**:
|
||||
- Provenance Research
|
||||
- Scientific Analysis (dating, material analysis)
|
||||
- Historical Research
|
||||
- Cataloging Research (attribution, identification)
|
||||
- Documentation
|
||||
- Publication
|
||||
|
||||
**CIDOC-CRM**: Maps to E13_Attribute_Assignment for research outcomes
|
||||
exact_mappings:
|
||||
- crm:E7_Activity
|
||||
- wd:Q42240 # Wikidata: research (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300054608 # research (activity)
|
||||
related_mappings:
|
||||
- crm:E13_Attribute_Assignment
|
||||
annotations:
|
||||
activity_category: RESEARCH
|
||||
|
||||
# ===========================================================================
|
||||
# EDUCATION ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
EducationActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: schema:EducationEvent
|
||||
description: |
|
||||
Activity type for educational and public programming activities.
|
||||
|
||||
**Definition**:
|
||||
Educational activities designed to inform, educate, or engage the public
|
||||
with heritage collections and subjects.
|
||||
|
||||
**Subtypes**:
|
||||
- Guided Tours
|
||||
- Workshops
|
||||
- Lectures and Talks
|
||||
- Educational Programs (school visits)
|
||||
- Online Courses
|
||||
- Public Events
|
||||
- Outreach Programs
|
||||
|
||||
**Schema.org**: Maps to EducationEvent for structured data
|
||||
exact_mappings:
|
||||
- schema:EducationEvent
|
||||
- wd:Q8434 # Wikidata: education (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300054552 # education (activity)
|
||||
annotations:
|
||||
activity_category: EDUCATION
|
||||
|
||||
# ===========================================================================
|
||||
# EXHIBITION ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
ExhibitionActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: schema:ExhibitionEvent
|
||||
description: |
|
||||
Activity type for exhibition and display activities.
|
||||
|
||||
**Definition**:
|
||||
Activities related to the public display of heritage collections.
|
||||
|
||||
**Subtypes**:
|
||||
- Permanent Exhibition
|
||||
- Temporary Exhibition
|
||||
- Traveling Exhibition
|
||||
- Virtual Exhibition
|
||||
- Pop-up Exhibition
|
||||
- Installation
|
||||
|
||||
**Schema.org**: Maps to ExhibitionEvent for structured data
|
||||
exact_mappings:
|
||||
- schema:ExhibitionEvent
|
||||
- wd:Q464980 # Wikidata: exhibition (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300054766 # exhibitions (events)
|
||||
related_mappings:
|
||||
- crm:E7_Activity
|
||||
annotations:
|
||||
activity_category: EXHIBITION
|
||||
|
||||
# ===========================================================================
|
||||
# DIGITIZATION ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
DigitizationActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: crm:E65_Creation
|
||||
description: |
|
||||
Activity type for digital transformation activities.
|
||||
|
||||
**Definition**:
|
||||
Activities that create digital representations of physical heritage objects
|
||||
or enhance digital access to collections.
|
||||
|
||||
**Subtypes**:
|
||||
- Scanning (2D imaging)
|
||||
- Photography (high-resolution capture)
|
||||
- 3D Modeling (photogrammetry, laser scanning)
|
||||
- OCR/HTR Processing (text recognition)
|
||||
- Metadata Enhancement
|
||||
- Digital Preservation
|
||||
- IIIF Implementation
|
||||
|
||||
**CIDOC-CRM**: E65_Creation for creation of digital surrogates
|
||||
exact_mappings:
|
||||
- crm:E65_Creation
|
||||
- wd:Q1116930 # Wikidata: digitization (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300266022 # digitization
|
||||
annotations:
|
||||
activity_category: DIGITIZATION
|
||||
|
||||
# ===========================================================================
|
||||
# ADMINISTRATIVE ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
AdministrativeActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: prov:Activity
|
||||
description: |
|
||||
Activity type for governance and administrative activities.
|
||||
|
||||
**Definition**:
|
||||
Administrative activities related to collection governance, compliance,
|
||||
and institutional operations.
|
||||
|
||||
**Subtypes**:
|
||||
- Audit
|
||||
- Valuation
|
||||
- Insurance Assessment
|
||||
- Loan Management (incoming/outgoing)
|
||||
- Rights Management
|
||||
- Policy Development
|
||||
- Strategic Planning
|
||||
|
||||
**SPECTRUM Alignment**: Maps to SPECTRUM audit, valuation, loans procedures
|
||||
exact_mappings:
|
||||
- prov:Activity
|
||||
- wd:Q18643507 # Wikidata: administrative activity (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300055709 # administration
|
||||
annotations:
|
||||
activity_category: ADMINISTRATIVE
|
||||
spectrum_procedures: "audit, valuation, loans-out, loans-in, rights-management"
|
||||
|
||||
# ===========================================================================
|
||||
# ACQUISITION ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
AcquisitionActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: crm:E8_Acquisition
|
||||
description: |
|
||||
Activity type for acquisition and collection development activities.
|
||||
|
||||
**CIDOC-CRM Definition**:
|
||||
E8_Acquisition "comprises the activities that result in the acquisition of a
|
||||
E18 Physical Thing into the custody of an agent for a specific purpose."
|
||||
|
||||
**Subtypes**:
|
||||
- Purchase
|
||||
- Gift/Donation
|
||||
- Bequest
|
||||
- Transfer
|
||||
- Excavation
|
||||
- Field Collection
|
||||
|
||||
**SPECTRUM Alignment**: Maps to SPECTRUM acquisition procedure
|
||||
exact_mappings:
|
||||
- crm:E8_Acquisition
|
||||
- wd:Q17157817 # Wikidata: acquisition (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300055711 # acquisition (activity)
|
||||
annotations:
|
||||
activity_category: ACQUISITION
|
||||
spectrum_procedures: "acquisition"
|
||||
|
||||
# ===========================================================================
|
||||
# MEMBERSHIP ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
MembershipActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: schema:JoinAction
|
||||
description: |
|
||||
Activity type for membership and affiliation activities.
|
||||
|
||||
**Definition**:
|
||||
Activities related to institutional membership in professional organizations,
|
||||
consortia, or networks.
|
||||
|
||||
**Subtypes**:
|
||||
- Professional Membership (ICOM, ALA, SAA)
|
||||
- Consortium Membership
|
||||
- Network Participation
|
||||
- Partnership Agreement
|
||||
|
||||
**Schema.org**: Maps to JoinAction for joining organizations
|
||||
exact_mappings:
|
||||
- schema:JoinAction
|
||||
- wd:Q1141470 # Wikidata: membership (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- schema:OrganizationRole
|
||||
annotations:
|
||||
activity_category: MEMBERSHIP
|
||||
|
||||
# ===========================================================================
|
||||
# LOAN ACTIVITY TYPES
|
||||
# ===========================================================================
|
||||
|
||||
LoanActivityType:
|
||||
is_a: ActivityType
|
||||
class_uri: crm:E10_Transfer_of_Custody
|
||||
description: |
|
||||
Activity type for loan management activities.
|
||||
|
||||
**CIDOC-CRM Definition**:
|
||||
E10_Transfer_of_Custody "comprises activities that result in a change of
|
||||
custody of an E18 Physical Thing."
|
||||
|
||||
**Subtypes**:
|
||||
- Outgoing Loan
|
||||
- Incoming Loan
|
||||
- Long-term Loan
|
||||
- Exhibition Loan
|
||||
|
||||
**SPECTRUM Alignment**: Maps to SPECTRUM loans-out and loans-in procedures
|
||||
exact_mappings:
|
||||
- crm:E10_Transfer_of_Custody
|
||||
- wd:Q1332755 # Wikidata: loan (was: annotation wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
close_mappings:
|
||||
- aat:300312155 # loaning
|
||||
annotations:
|
||||
activity_category: LOAN
|
||||
spectrum_procedures: "loans-out, loans-in"
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/Actor
|
||||
name: Actor
|
||||
title: Actor
|
||||
description: An actor involved in an event or activity.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
- ../slots/has_or_had_role
|
||||
classes:
|
||||
Actor:
|
||||
class_uri: prov:Agent
|
||||
description: Involved actor.
|
||||
slots:
|
||||
- has_or_had_name
|
||||
- has_or_had_role
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -20,18 +20,16 @@ prefixes:
|
|||
|
||||
imports:
|
||||
- linkml:types
|
||||
# REMOVED 2026-01-22: ../slots/address_formatted - migrated to has_or_had_label + Label (Rule 53, Feedback F1)
|
||||
- ../slots/address_formatted
|
||||
# REMOVED: ../slots/address_type - migrated to has_or_had_type (2026-01-17, Rule 53/56)
|
||||
# Address component slots
|
||||
- ../slots/has_or_had_section
|
||||
- ../slots/house_number
|
||||
# REMOVED: ../slots/street_name - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56)
|
||||
# REMOVED: ../slots/street_address - migrated to has_or_had_address + Address class (2026-01-17, Rule 53/56)
|
||||
# street_address was a redundant string slot; full Address class captures street data via components
|
||||
- ../slots/postal_code
|
||||
|
||||
- ../slots/locality
|
||||
# REMOVED: ../slots/city - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
|
||||
- ../slots/is_or_was_located_in
|
||||
- ../slots/city
|
||||
- ../slots/region
|
||||
- ../slots/country_name
|
||||
# Shared slots (replacing address_formatted, address_type)
|
||||
|
|
@ -48,7 +46,6 @@ imports:
|
|||
- ./Country
|
||||
- ./Subregion
|
||||
- ./Settlement
|
||||
- ./City # Added for is_or_was_located_in range (2026-01-18, Rule 53)
|
||||
- ./CustodianObservation
|
||||
- ./ReconstructionActivity
|
||||
- ./AddressType
|
||||
|
|
@ -77,7 +74,7 @@ classes:
|
|||
An address consists of hierarchical components:
|
||||
```
|
||||
Address
|
||||
├── has_or_had_section (e.g., "1", "221B", "25-27")
|
||||
├── house_number (e.g., "1", "221B", "25-27")
|
||||
├── has_or_had_label (street name as Label, e.g., "Museumstraat")
|
||||
├── postal_code (e.g., "1071 XX")
|
||||
├── locality (e.g., "Amsterdam")
|
||||
|
|
@ -113,8 +110,7 @@ classes:
|
|||
- has_or_had_label:
|
||||
- has_or_had_label: "Museumstraat"
|
||||
language: "nl"
|
||||
has_or_had_section:
|
||||
- has_or_had_value: "1"
|
||||
house_number: "1"
|
||||
postal_code: "1071 XX"
|
||||
locality: "Amsterdam"
|
||||
region: "Noord-Holland"
|
||||
|
|
@ -151,15 +147,14 @@ classes:
|
|||
|
||||
slots:
|
||||
# Street-level components
|
||||
- has_or_had_section
|
||||
- house_number
|
||||
# REMOVED: street_name - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56)
|
||||
# REMOVED: street_address - redundant string slot; use house_number + has_or_had_label (2026-01-17, Rule 53/56)
|
||||
# Postal components
|
||||
- postal_code
|
||||
# Locality/geographic hierarchy
|
||||
- locality
|
||||
# REMOVED: city - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
|
||||
- is_or_was_located_in
|
||||
- city
|
||||
- region
|
||||
- country_name
|
||||
# Formatted representation (MIGRATED: address_formatted → has_or_had_label)
|
||||
|
|
@ -174,18 +169,15 @@ classes:
|
|||
- is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
|
||||
- is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
|
||||
slot_usage:
|
||||
has_or_had_section:
|
||||
range: HouseNumber
|
||||
house_number:
|
||||
range: string
|
||||
required: false
|
||||
description: House/building number within street.
|
||||
description: House/building number within street
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_value: "1"
|
||||
description: Rijksmuseum
|
||||
- value:
|
||||
has_or_had_value: "221B"
|
||||
description: Baker Street notation
|
||||
|
||||
- value: "1"
|
||||
description: Rijksmuseum
|
||||
- value: "221B"
|
||||
description: Baker Street notation
|
||||
# REMOVED: street_name slot_usage - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56)
|
||||
# Street names should now use Label class with language tagging via has_or_had_label
|
||||
# REMOVED: street_address slot_usage - redundant string slot removed (2026-01-17, Rule 53/56)
|
||||
|
|
@ -204,25 +196,10 @@ classes:
|
|||
examples:
|
||||
- value: "Amsterdam"
|
||||
description: City name
|
||||
# REMOVED: city slot_usage - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
|
||||
# city:
|
||||
# range: string
|
||||
# required: false
|
||||
# description: Alternative slot for locality (schema:addressLocality)
|
||||
is_or_was_located_in:
|
||||
range: City
|
||||
city:
|
||||
range: string
|
||||
required: false
|
||||
inlined: true
|
||||
description: |
|
||||
The city where this address is located, as a structured City entity.
|
||||
MIGRATED from city (string) slot (2026-01-18, Rule 53).
|
||||
Provides GeoNames ID, coordinates, and subregion linkage.
|
||||
examples:
|
||||
- value:
|
||||
settlement_name: "Amsterdam"
|
||||
geonames_id: 2759794
|
||||
country: "NL"
|
||||
description: Address located in Amsterdam
|
||||
description: Alternative slot for locality (schema:addressLocality)
|
||||
region:
|
||||
range: string
|
||||
required: false
|
||||
|
|
@ -241,32 +218,29 @@ classes:
|
|||
description: Full name
|
||||
- value: "NL"
|
||||
description: ISO 3166-1 alpha-2 code
|
||||
# REMOVED 2026-01-22: address_formatted - migrated to has_or_had_label + Label (Rule 53, Feedback F1)
|
||||
# Formatted address strings now use has_or_had_label slot_usage below
|
||||
# REMOVED: address_type slot_usage - migrated to has_or_had_type (2026-01-17, Rule 53/56)
|
||||
has_or_had_label: # was: address_formatted + street_name - migrated per Rule 53 (2026-01-17, 2026-01-22)
|
||||
range: Label
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
address_formatted:
|
||||
range: string
|
||||
required: false
|
||||
description: |
|
||||
Labels for this address, including:
|
||||
1. **Street name** as Label with language tag
|
||||
2. **Formatted address** as Label with language tag
|
||||
|
||||
MIGRATED from:
|
||||
- address_formatted (2026-01-22, Feedback F1) - formatted address strings
|
||||
- street_name (2026-01-17, Rule 53/56) - street name component
|
||||
|
||||
Use Label class with language_code for multilingual support.
|
||||
Full formatted address string.
|
||||
DEPRECATED: Use has_or_had_label instead.
|
||||
MIGRATION: 2026-01-13 - Replaced by has_or_had_label slot.
|
||||
deprecated: "Use has_or_had_label instead"
|
||||
examples:
|
||||
- value:
|
||||
- has_or_had_label: "Museumstraat"
|
||||
language: "nl"
|
||||
- has_or_had_label: "Museumstraat 1, 1071 XX Amsterdam, Netherlands"
|
||||
language: "nl"
|
||||
description: Street name and formatted address as labels
|
||||
- value: "Museumstraat 1, 1071 XX Amsterdam, Netherlands"
|
||||
description: Complete formatted address
|
||||
# REMOVED: address_type slot_usage - migrated to has_or_had_type (2026-01-17, Rule 53/56)
|
||||
# address_type:
|
||||
# range: string
|
||||
# required: false
|
||||
# description: |
|
||||
# Classification of address purpose.
|
||||
# DEPRECATED: Use has_or_had_type with AddressType class instead.
|
||||
# MIGRATION: 2026-01-13 - Replaced by has_or_had_type slot.
|
||||
# deprecated: "Use has_or_had_type with AddressType class instead"
|
||||
# examples:
|
||||
# - value: "HEADQUARTERS"
|
||||
# description: Main organizational address
|
||||
has_or_had_type: # was: address_type - migrated per Rule 53/56 (2026-01-17)
|
||||
range: AddressType
|
||||
required: false
|
||||
|
|
@ -327,15 +301,13 @@ classes:
|
|||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_section:
|
||||
- has_or_had_value: "1"
|
||||
house_number: "1"
|
||||
has_or_had_label:
|
||||
- has_or_had_label: "Museumstraat"
|
||||
language: "nl"
|
||||
- has_or_had_label: "Museumstraat 1, 1071 XX Amsterdam, Netherlands"
|
||||
language: "nl"
|
||||
# REMOVED: street_address - migrated to house_number + has_or_had_label (2026-01-17, Rule 53/56)
|
||||
|
||||
postal_code: "1071 XX"
|
||||
locality: "Amsterdam"
|
||||
region: "Noord-Holland"
|
||||
|
|
@ -347,10 +319,13 @@ classes:
|
|||
description: Rijksmuseum headquarters - fully structured address (street_name and street_address migrated to has_or_had_label)
|
||||
|
||||
- value:
|
||||
has_or_had_section:
|
||||
- has_or_had_value: "40"
|
||||
house_number: "40"
|
||||
has_or_had_label:
|
||||
- has_or_had_label: "Jansstraat"
|
||||
language: "nl"
|
||||
- has_or_had_label: "Jansstraat 40, 2011 RX Haarlem, Netherlands"
|
||||
language: "nl"
|
||||
# REMOVED: street_address - migrated to house_number + has_or_had_label (2026-01-17, Rule 53/56)
|
||||
|
||||
postal_code: "2011 RX"
|
||||
locality: "Haarlem"
|
||||
country_name: "NL"
|
||||
|
|
@ -373,8 +348,7 @@ classes:
|
|||
language: "nl"
|
||||
- has_or_had_label: "Euterpelaan 25, 3824 BK Amersfoort, Netherlands"
|
||||
language: "nl"
|
||||
has_or_had_section:
|
||||
- has_or_had_value: "25"
|
||||
house_number: "25"
|
||||
postal_code: "3824 BK"
|
||||
locality: "Amersfoort"
|
||||
region: "Utrecht"
|
||||
|
|
|
|||
|
|
@ -19,10 +19,7 @@ imports:
|
|||
# Centralized slots (Rule 38 compliant)
|
||||
- ../slots/long_name
|
||||
- ../slots/short_name
|
||||
# REMOVED 2026-01-22: ../slots/component_type - migrated to has_or_had_type + ComponentType (Rule 53)
|
||||
- ../slots/has_or_had_type
|
||||
- ./ComponentType
|
||||
- ./ComponentTypes
|
||||
- ../slots/component_type
|
||||
|
||||
default_range: string
|
||||
|
||||
|
|
@ -45,7 +42,7 @@ classes:
|
|||
Each AddressComponent has:
|
||||
- `long_name`: Full form of the value (e.g., "Netherlands", "Noord-Holland")
|
||||
- `short_name`: Abbreviated form (e.g., "NL", "NH") - may equal long_name
|
||||
- `has_or_had_type`: Semantic type(s) via ComponentType (e.g., Country, Locality)
|
||||
- `component_type`: Semantic type(s) of this component (e.g., "country", "locality")
|
||||
|
||||
**STANDARD COMPONENT TYPES**:
|
||||
|
||||
|
|
@ -82,20 +79,20 @@ classes:
|
|||
**USAGE EXAMPLES**:
|
||||
|
||||
```yaml
|
||||
# Street number component (MIGRATED 2026-01-22: Rule 53)
|
||||
# Street number component
|
||||
- long_name: "1"
|
||||
short_name: "1"
|
||||
has_or_had_type: [StreetNumber]
|
||||
component_type: ["street_number"]
|
||||
|
||||
# Province with abbreviation
|
||||
- long_name: "Noord-Holland"
|
||||
short_name: "NH"
|
||||
has_or_had_type: [Region]
|
||||
component_type: ["region"]
|
||||
|
||||
# Country with ISO code
|
||||
- long_name: "Netherlands"
|
||||
short_name: "NL"
|
||||
has_or_had_type: [Country]
|
||||
component_type: ["country"]
|
||||
```
|
||||
|
||||
**SOURCE-AGNOSTIC DESIGN**:
|
||||
|
|
@ -118,8 +115,7 @@ classes:
|
|||
slots:
|
||||
- long_name
|
||||
- short_name
|
||||
# REMOVED 2026-01-22: component_type - migrated to has_or_had_type + ComponentType (Rule 53)
|
||||
- has_or_had_type
|
||||
- component_type
|
||||
|
||||
attributes:
|
||||
types:
|
||||
|
|
@ -151,25 +147,20 @@ classes:
|
|||
description: Province abbreviation
|
||||
- value: "Museumstraat"
|
||||
description: Same as long_name when no abbreviation exists
|
||||
# MIGRATED 2026-01-22: component_type → has_or_had_type + ComponentType (Rule 53)
|
||||
has_or_had_type:
|
||||
description: |
|
||||
Semantic type(s) of this address component.
|
||||
MIGRATED from component_type per slot_fixes.yaml (Rule 53, 2026-01-22).
|
||||
|
||||
Uses ComponentType class hierarchy for structured classification.
|
||||
range: ComponentType
|
||||
component_type:
|
||||
range: string
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
required: false
|
||||
description: Semantic type(s) of this address component
|
||||
examples:
|
||||
- value: StreetNumber
|
||||
- value: ["street_number"]
|
||||
description: House/building number
|
||||
- value: Locality
|
||||
- value: ["locality"]
|
||||
description: City or town
|
||||
- value: Region
|
||||
- value: ["region"]
|
||||
description: State or province
|
||||
- value: Country
|
||||
- value: ["country"]
|
||||
description: Country
|
||||
|
||||
comments:
|
||||
|
|
@ -183,41 +174,40 @@ classes:
|
|||
- https://www.w3.org/ns/locn#Address
|
||||
|
||||
examples:
|
||||
# MIGRATED 2026-01-22: component_type → has_or_had_type + ComponentType (Rule 53)
|
||||
- value:
|
||||
long_name: "1"
|
||||
short_name: "1"
|
||||
has_or_had_type: [StreetNumber]
|
||||
component_type: ["street_number"]
|
||||
description: Street number component
|
||||
|
||||
- value:
|
||||
long_name: "Museumstraat"
|
||||
short_name: "Museumstraat"
|
||||
has_or_had_type: [Route]
|
||||
component_type: ["route"]
|
||||
description: Street name component
|
||||
|
||||
- value:
|
||||
long_name: "Amsterdam"
|
||||
short_name: "Amsterdam"
|
||||
has_or_had_type: [Locality]
|
||||
component_type: ["locality"]
|
||||
description: City component
|
||||
|
||||
- value:
|
||||
long_name: "Noord-Holland"
|
||||
short_name: "NH"
|
||||
has_or_had_type: [Region]
|
||||
component_type: ["region"]
|
||||
description: Province component with abbreviation
|
||||
|
||||
- value:
|
||||
long_name: "Netherlands"
|
||||
short_name: "NL"
|
||||
has_or_had_type: [Country]
|
||||
component_type: ["country"]
|
||||
description: Country component with ISO code
|
||||
|
||||
- value:
|
||||
long_name: "1071 XX"
|
||||
short_name: "1071 XX"
|
||||
has_or_had_type: [PostalCode]
|
||||
component_type: ["postal_code"]
|
||||
description: Dutch postal code component
|
||||
|
||||
annotations:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,18 @@
|
|||
# AddressType - Abstract base class for address type classifications
|
||||
#
|
||||
# Following the Type/Types naming convention (Rule 0b):
|
||||
# - AddressType.yaml: Abstract base class defining the type taxonomy
|
||||
# - AddressTypes.yaml: File containing all concrete subclasses
|
||||
#
|
||||
# Generation date: 2026-01-13 (migrated from address_type slot)
|
||||
# Rule compliance: 0b (Type/Types naming), 37 (specificity scores), 38 (slot centralization)
|
||||
#
|
||||
# MIGRATION: This file replaces address_type slot with has_or_had_type + AddressType class
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/AddressType
|
||||
name: address_type_class
|
||||
title: Address Type Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
|
|
@ -10,178 +22,235 @@ prefixes:
|
|||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_code
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_hypernym
|
||||
- ../slots/has_or_had_hyponym
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/is_or_was_equivalent_to
|
||||
- ./WikiDataIdentifier
|
||||
- linkml:types
|
||||
# Shared slots (centralized)
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_short_code
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_hypernym
|
||||
- ../slots/has_or_had_hyponym
|
||||
- ../slots/is_or_was_related_to
|
||||
# REMOVED 2026-01-15: wikidata_id - migrated to is_or_was_equivalent_to + WikiDataIdentifier (Rule 53)
|
||||
- ../slots/is_or_was_equivalent_to
|
||||
- ./WikiDataIdentifier
|
||||
|
||||
classes:
|
||||
AddressType:
|
||||
class_uri: skos:Concept
|
||||
description: "Classification type for Address purposes in heritage custodian contexts.\n\n**DEFINITION**:\n\nAddressType provides a SKOS-based classification hierarchy for categorizing\ndifferent types of addresses based on their purpose or function. This enables:\n- Rich metadata (descriptions, use cases)\n- Hierarchical relationships (broader/narrower types)\n- Extensibility (new types without enum modification)\n- Semantic alignment with vCard, GLEIF, and Schema.org ontologies\n\n**ONTOLOGY ALIGNMENT**:\n\n| Ontology | Class/Property | Notes |\n|----------|----------------|-------|\n| **vCard** | `vcard:Type` | RFC6350 type codes (Home, Work) |\n| **GLEIF** | `gleif_base:hasAddressLegal`, `gleif_base:hasAddressHeadquarters` | Legal entity addresses |\n| **CIDOC-CRM** | `crm:E55_Type` | General type classification |\n| **SKOS** | `skos:Concept` | Controlled vocabulary concept |\n\n**ADDRESS TYPES FOR HERITAGE CUSTODIANS**:\n\n| Type | Use Case |\n|------|----------|\n| `HEADQUARTERS`\
|
||||
\ | Main organizational address |\n| `LEGAL` | Registered legal/business address (KvK, Chamber of Commerce) |\n| `VISITING` | Public visitor entrance address |\n| `MAILING` | Correspondence/postal address |\n| `STORAGE` | Depot, warehouse, off-site storage facility |\n| `BRANCH` | Branch office location |\n| `READING_ROOM` | Public reading/research room entrance |\n\n**RELATIONSHIP TO OTHER CLASSES**:\n\n```\nAddress (physical address)\n \u2502\n \u2514\u2500\u2500 has_or_had_type \u2192 AddressType (THIS CLASS)\n \u251C\u2500\u2500 has_or_had_hypernym \u2192 AddressType (parent in hierarchy)\n \u251C\u2500\u2500 has_or_had_hyponym \u2192 AddressType[] (children)\n \u2514\u2500\u2500 has_or_had_description (text)\n```\n\n**SLOT MIGRATION** (2026-01-13):\n\nThis class replaces the address_type string slot with a proper class hierarchy.\nOld pattern: `address_type: HEADQUARTERS` (string)\nNew pattern: `has_or_had_type: AddressType` (object reference)\n"
|
||||
description: |
|
||||
Classification type for Address purposes in heritage custodian contexts.
|
||||
|
||||
**DEFINITION**:
|
||||
|
||||
AddressType provides a SKOS-based classification hierarchy for categorizing
|
||||
different types of addresses based on their purpose or function. This enables:
|
||||
- Rich metadata (descriptions, use cases)
|
||||
- Hierarchical relationships (broader/narrower types)
|
||||
- Extensibility (new types without enum modification)
|
||||
- Semantic alignment with vCard, GLEIF, and Schema.org ontologies
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
| Ontology | Class/Property | Notes |
|
||||
|----------|----------------|-------|
|
||||
| **vCard** | `vcard:Type` | RFC6350 type codes (Home, Work) |
|
||||
| **GLEIF** | `gleif_base:hasAddressLegal`, `gleif_base:hasAddressHeadquarters` | Legal entity addresses |
|
||||
| **CIDOC-CRM** | `crm:E55_Type` | General type classification |
|
||||
| **SKOS** | `skos:Concept` | Controlled vocabulary concept |
|
||||
|
||||
**ADDRESS TYPES FOR HERITAGE CUSTODIANS**:
|
||||
|
||||
| Type | Use Case |
|
||||
|------|----------|
|
||||
| `HEADQUARTERS` | Main organizational address |
|
||||
| `LEGAL` | Registered legal/business address (KvK, Chamber of Commerce) |
|
||||
| `VISITING` | Public visitor entrance address |
|
||||
| `MAILING` | Correspondence/postal address |
|
||||
| `STORAGE` | Depot, warehouse, off-site storage facility |
|
||||
| `BRANCH` | Branch office location |
|
||||
| `READING_ROOM` | Public reading/research room entrance |
|
||||
|
||||
**RELATIONSHIP TO OTHER CLASSES**:
|
||||
|
||||
```
|
||||
Address (physical address)
|
||||
│
|
||||
└── has_or_had_type → AddressType (THIS CLASS)
|
||||
├── has_or_had_hypernym → AddressType (parent in hierarchy)
|
||||
├── has_or_had_hyponym → AddressType[] (children)
|
||||
└── has_or_had_description (text)
|
||||
```
|
||||
|
||||
**SLOT MIGRATION** (2026-01-13):
|
||||
|
||||
This class replaces the address_type string slot with a proper class hierarchy.
|
||||
Old pattern: `address_type: HEADQUARTERS` (string)
|
||||
New pattern: `has_or_had_type: AddressType` (object reference)
|
||||
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
- skos:Concept
|
||||
|
||||
close_mappings:
|
||||
- vcard:Type
|
||||
- crm:E55_Type
|
||||
- vcard:Type
|
||||
- crm:E55_Type
|
||||
|
||||
related_mappings:
|
||||
- gleif_base:hasAddressLegal
|
||||
- gleif_base:hasAddressHeadquarters
|
||||
- gleif_base:hasAddressLegal
|
||||
- gleif_base:hasAddressHeadquarters
|
||||
|
||||
slots:
|
||||
- has_or_had_identifier
|
||||
- has_or_had_code
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_hypernym
|
||||
- has_or_had_hyponym
|
||||
- is_or_was_related_to
|
||||
- is_or_was_equivalent_to
|
||||
# Shared slots (from centralized slot files)
|
||||
- has_or_had_identifier
|
||||
- has_or_had_short_code
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_hypernym
|
||||
- has_or_had_hyponym
|
||||
- is_or_was_related_to
|
||||
# REMOVED 2026-01-15: wikidata_id - migrated to is_or_was_equivalent_to (Rule 53)
|
||||
- is_or_was_equivalent_to
|
||||
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
pattern: ^https://nde\.nl/ontology/hc/address-type/[a-z0-9-]+$
|
||||
pattern: "^https://nde\\.nl/ontology/hc/address-type/[a-z0-9-]+$"
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/address-type/headquarters
|
||||
description: Main organizational headquarters address type
|
||||
- value: https://nde.nl/ontology/hc/address-type/legal
|
||||
description: Registered legal address type
|
||||
has_or_had_code:
|
||||
- value: https://nde.nl/ontology/hc/address-type/headquarters
|
||||
description: Main organizational headquarters address type
|
||||
- value: https://nde.nl/ontology/hc/address-type/legal
|
||||
description: Registered legal address type
|
||||
|
||||
has_or_had_short_code:
|
||||
range: string
|
||||
required: true
|
||||
pattern: ^[A-Z][A-Z0-9_]*$
|
||||
pattern: "^[A-Z][A-Z0-9_]*$"
|
||||
examples:
|
||||
- value: HEADQUARTERS
|
||||
- value: LEGAL
|
||||
- value: VISITING
|
||||
- value: MAILING
|
||||
- value: STORAGE
|
||||
- value: BRANCH
|
||||
- value: HEADQUARTERS
|
||||
- value: LEGAL
|
||||
- value: VISITING
|
||||
- value: MAILING
|
||||
- value: STORAGE
|
||||
- value: BRANCH
|
||||
|
||||
has_or_had_label:
|
||||
range: string
|
||||
required: true
|
||||
multivalued: true
|
||||
examples:
|
||||
- value:
|
||||
- Headquarters@en
|
||||
- Hoofdkantoor@nl
|
||||
- value:
|
||||
- Legal Address@en
|
||||
- Juridisch adres@nl
|
||||
- value:
|
||||
- Visiting Address@en
|
||||
- Bezoekadres@nl
|
||||
- value: ["Headquarters@en", "Hoofdkantoor@nl"]
|
||||
- value: ["Legal Address@en", "Juridisch adres@nl"]
|
||||
- value: ["Visiting Address@en", "Bezoekadres@nl"]
|
||||
|
||||
has_or_had_description:
|
||||
range: string
|
||||
examples:
|
||||
- value: Main organizational address where primary operations occur.
|
||||
- value: "Main organizational address where primary operations occur."
|
||||
|
||||
has_or_had_hypernym:
|
||||
range: AddressType
|
||||
description: Parent address type in the classification hierarchy.
|
||||
description: "Parent address type in the classification hierarchy."
|
||||
|
||||
has_or_had_hyponym:
|
||||
range: AddressType
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
description: Child address types in the classification hierarchy.
|
||||
description: "Child address types in the classification hierarchy."
|
||||
|
||||
is_or_was_related_to:
|
||||
range: AddressType
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
description: Non-hierarchical associations with other address types.
|
||||
description: "Non-hierarchical associations with other address types."
|
||||
|
||||
is_or_was_equivalent_to:
|
||||
range: WikiDataIdentifier
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
description: 'Wikidata equivalence for this address type concept.
|
||||
|
||||
description: |
|
||||
Wikidata equivalence for this address type concept.
|
||||
MIGRATED 2026-01-15: Replaces wikidata_id slot per Rule 53.
|
||||
|
||||
'
|
||||
examples:
|
||||
- value:
|
||||
- qid: Q1234567
|
||||
label: Headquarters address
|
||||
description: Wikidata equivalence for headquarters address type
|
||||
- value:
|
||||
- qid: "Q1234567"
|
||||
label: "Headquarters address"
|
||||
description: Wikidata equivalence for headquarters address type
|
||||
|
||||
annotations:
|
||||
specificity_score: '0.30'
|
||||
specificity_rationale: Address types are broadly applicable - all heritage custodians have addresses.
|
||||
has_or_had_score: null
|
||||
slot_migration: "2026-01-13: Migrated from address_type string slot to AddressType class\n- address_type (string) \u2192 has_or_had_type (AddressType)\n"
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
specificity_score: "0.30"
|
||||
specificity_rationale: "Address types are broadly applicable - all heritage custodians have addresses."
|
||||
has_or_had_score: # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
# NOTE: slot_usage may need manual review for range/description updates '{"collection_discovery": 0.20, "organizational_change": 0.35, "general_heritage": 0.25}'
|
||||
slot_migration: |
|
||||
2026-01-13: Migrated from address_type string slot to AddressType class
|
||||
- address_type (string) → has_or_had_type (AddressType)
|
||||
|
||||
comments:
|
||||
- AddressType provides SKOS-based classification for Address instances
|
||||
- Supports hierarchical type relationships (has_or_had_hypernym/hyponym)
|
||||
- Richer semantics than flat address_type string slot
|
||||
- Aligned with vCard Type, GLEIF address distinctions
|
||||
- 'MIGRATED 2026-01-13: Now uses shared slots (Rule 38)'
|
||||
- "AddressType provides SKOS-based classification for Address instances"
|
||||
- "Supports hierarchical type relationships (has_or_had_hypernym/hyponym)"
|
||||
- "Richer semantics than flat address_type string slot"
|
||||
- "Aligned with vCard Type, GLEIF address distinctions"
|
||||
- "MIGRATED 2026-01-13: Now uses shared slots (Rule 38)"
|
||||
|
||||
see_also:
|
||||
- https://www.w3.org/TR/vcard-rdf/#d4e1769
|
||||
- https://www.gleif.org/ontology/Base/
|
||||
- https://www.w3.org/TR/vcard-rdf/#d4e1769
|
||||
- https://www.gleif.org/ontology/Base/
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/headquarters
|
||||
has_or_had_code: HEADQUARTERS
|
||||
has_or_had_label:
|
||||
- Headquarters@en
|
||||
- Hoofdkantoor@nl
|
||||
has_or_had_description: 'Main organizational address where primary operations occur.
|
||||
|
||||
This is typically where leadership and central administration
|
||||
|
||||
are located.
|
||||
|
||||
'
|
||||
description: Headquarters address type definition
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/legal
|
||||
has_or_had_code: LEGAL
|
||||
has_or_had_label:
|
||||
- Legal Address@en
|
||||
- Juridisch adres@nl
|
||||
- Statutaire zetel@nl
|
||||
has_or_had_description: 'Registered legal address for official correspondence and legal
|
||||
|
||||
purposes. May differ from operational headquarters.
|
||||
|
||||
For Dutch organizations, this is the address registered with KvK.
|
||||
|
||||
'
|
||||
description: Legal/statutory address type definition
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/visiting
|
||||
has_or_had_code: VISITING
|
||||
has_or_had_label:
|
||||
- Visiting Address@en
|
||||
- Bezoekadres@nl
|
||||
has_or_had_description: 'Public entrance for visitors. May include museums, archives,
|
||||
|
||||
or libraries with public reading rooms.
|
||||
|
||||
'
|
||||
description: Public visiting address type definition
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/storage
|
||||
has_or_had_code: STORAGE
|
||||
has_or_had_label:
|
||||
- Storage Facility@en
|
||||
- Opslaglocatie@nl
|
||||
- Depot@nl
|
||||
has_or_had_description: 'Off-site storage facility, depot, or warehouse for collections.
|
||||
|
||||
Not typically open to the public.
|
||||
|
||||
'
|
||||
is_or_was_related_to:
|
||||
- https://nde.nl/ontology/hc/address-type/branch
|
||||
description: Storage/depot address type definition
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/headquarters
|
||||
has_or_had_short_code: HEADQUARTERS
|
||||
has_or_had_label:
|
||||
- Headquarters@en
|
||||
- Hoofdkantoor@nl
|
||||
has_or_had_description: |
|
||||
Main organizational address where primary operations occur.
|
||||
This is typically where leadership and central administration
|
||||
are located.
|
||||
description: Headquarters address type definition
|
||||
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/legal
|
||||
has_or_had_short_code: LEGAL
|
||||
has_or_had_label:
|
||||
- Legal Address@en
|
||||
- Juridisch adres@nl
|
||||
- Statutaire zetel@nl
|
||||
has_or_had_description: |
|
||||
Registered legal address for official correspondence and legal
|
||||
purposes. May differ from operational headquarters.
|
||||
For Dutch organizations, this is the address registered with KvK.
|
||||
description: Legal/statutory address type definition
|
||||
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/visiting
|
||||
has_or_had_short_code: VISITING
|
||||
has_or_had_label:
|
||||
- Visiting Address@en
|
||||
- Bezoekadres@nl
|
||||
has_or_had_description: |
|
||||
Public entrance for visitors. May include museums, archives,
|
||||
or libraries with public reading rooms.
|
||||
description: Public visiting address type definition
|
||||
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/storage
|
||||
has_or_had_short_code: STORAGE
|
||||
has_or_had_label:
|
||||
- Storage Facility@en
|
||||
- Opslaglocatie@nl
|
||||
- Depot@nl
|
||||
has_or_had_description: |
|
||||
Off-site storage facility, depot, or warehouse for collections.
|
||||
Not typically open to the public.
|
||||
is_or_was_related_to:
|
||||
- https://nde.nl/ontology/hc/address-type/branch
|
||||
description: Storage/depot address type definition
|
||||
|
|
|
|||
|
|
@ -1,236 +1,239 @@
|
|||
# AddressTypes - Concrete subclasses for AddressType
|
||||
#
|
||||
# Following the Type/Types naming convention (Rule 0b):
|
||||
# - AddressType.yaml: Abstract base class defining the type taxonomy
|
||||
# - AddressTypes.yaml: This file contains all concrete subclasses
|
||||
#
|
||||
# Generation date: 2026-01-13 (migrated from address_type slot values)
|
||||
# Rule compliance: 0b (Type/Types naming), 37 (specificity scores)
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/AddressTypes
|
||||
name: address_types_classes
|
||||
title: Address Types Concrete Classes
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
vcard: http://www.w3.org/2006/vcard/ns#
|
||||
gleif_base: https://www.gleif.org/ontology/Base/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./AddressType
|
||||
- linkml:types
|
||||
- ./AddressType
|
||||
|
||||
classes:
|
||||
HeadquartersAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:HeadquartersAddress
|
||||
description: 'Main organizational headquarters address where primary operations occur.
|
||||
|
||||
description: |
|
||||
Main organizational headquarters address where primary operations occur.
|
||||
This is typically where leadership and central administration are located.
|
||||
|
||||
|
||||
|
||||
**Ontology Alignment**:
|
||||
|
||||
- GLEIF: `gleif_base:hasAddressHeadquarters`
|
||||
|
||||
'
|
||||
|
||||
close_mappings:
|
||||
- gleif_base:hasAddressHeadquarters
|
||||
- gleif_base:hasAddressHeadquarters
|
||||
|
||||
annotations:
|
||||
short_code: HEADQUARTERS
|
||||
specificity_score: '0.25'
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
specificity_score: "0.25"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: HEADQUARTERS
|
||||
has_or_had_label:
|
||||
- Headquarters@en
|
||||
- Hoofdkantoor@nl
|
||||
description: Rijksmuseum main headquarters
|
||||
- value:
|
||||
has_or_had_short_code: HEADQUARTERS
|
||||
has_or_had_label:
|
||||
- Headquarters@en
|
||||
- Hoofdkantoor@nl
|
||||
description: Rijksmuseum main headquarters
|
||||
|
||||
LegalAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:LegalAddress
|
||||
description: 'Registered legal address for official correspondence and legal purposes.
|
||||
|
||||
description: |
|
||||
Registered legal address for official correspondence and legal purposes.
|
||||
May differ from operational headquarters.
|
||||
|
||||
|
||||
|
||||
For Dutch organizations, this is the address registered with the
|
||||
|
||||
Chamber of Commerce (Kamer van Koophandel - KvK).
|
||||
|
||||
|
||||
|
||||
**Ontology Alignment**:
|
||||
|
||||
- GLEIF: `gleif_base:hasAddressLegal`
|
||||
|
||||
'
|
||||
|
||||
close_mappings:
|
||||
- gleif_base:hasAddressLegal
|
||||
- gleif_base:hasAddressLegal
|
||||
|
||||
annotations:
|
||||
short_code: LEGAL
|
||||
specificity_score: '0.30'
|
||||
specificity_score: "0.30"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: LEGAL
|
||||
has_or_had_label:
|
||||
- Legal Address@en
|
||||
- Juridisch adres@nl
|
||||
- Statutaire zetel@nl
|
||||
description: Registered legal address from KvK
|
||||
- value:
|
||||
has_or_had_short_code: LEGAL
|
||||
has_or_had_label:
|
||||
- Legal Address@en
|
||||
- Juridisch adres@nl
|
||||
- Statutaire zetel@nl
|
||||
description: Registered legal address from KvK
|
||||
|
||||
VisitingAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:VisitingAddress
|
||||
description: 'Public entrance address for visitors.
|
||||
|
||||
|
||||
description: |
|
||||
Public entrance address for visitors.
|
||||
|
||||
For heritage custodians, this is typically where the public enters
|
||||
|
||||
to visit exhibitions, reading rooms, or public services.
|
||||
|
||||
May include accessible entrances for persons with disabilities.
|
||||
|
||||
'
|
||||
|
||||
annotations:
|
||||
short_code: VISITING
|
||||
specificity_score: '0.25'
|
||||
specificity_score: "0.25"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: VISITING
|
||||
has_or_had_label:
|
||||
- Visiting Address@en
|
||||
- Bezoekadres@nl
|
||||
description: Public visitor entrance
|
||||
- value:
|
||||
has_or_had_short_code: VISITING
|
||||
has_or_had_label:
|
||||
- Visiting Address@en
|
||||
- Bezoekadres@nl
|
||||
description: Public visitor entrance
|
||||
|
||||
MailingAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:MailingAddress
|
||||
description: 'Postal correspondence address.
|
||||
|
||||
|
||||
description: |
|
||||
Postal correspondence address.
|
||||
|
||||
Address for receiving mail and correspondence. May be a P.O. Box
|
||||
|
||||
or differ from physical location addresses.
|
||||
|
||||
'
|
||||
|
||||
annotations:
|
||||
short_code: MAILING
|
||||
specificity_score: '0.25'
|
||||
specificity_score: "0.25"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: MAILING
|
||||
has_or_had_label:
|
||||
- Mailing Address@en
|
||||
- Postadres@nl
|
||||
- Correspondentieadres@nl
|
||||
description: Postal correspondence address
|
||||
- value:
|
||||
has_or_had_short_code: MAILING
|
||||
has_or_had_label:
|
||||
- Mailing Address@en
|
||||
- Postadres@nl
|
||||
- Correspondentieadres@nl
|
||||
description: Postal correspondence address
|
||||
|
||||
StorageAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:StorageAddress
|
||||
description: 'Off-site storage facility, depot, or warehouse address.
|
||||
|
||||
|
||||
description: |
|
||||
Off-site storage facility, depot, or warehouse address.
|
||||
|
||||
Not typically open to the public. May house collection items
|
||||
|
||||
not currently on display, archival materials, or preservation
|
||||
|
||||
facilities.
|
||||
|
||||
|
||||
|
||||
Related to StorageType for describing the type of storage facility.
|
||||
|
||||
'
|
||||
|
||||
annotations:
|
||||
short_code: STORAGE
|
||||
specificity_score: '0.40'
|
||||
specificity_score: "0.40"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: STORAGE
|
||||
has_or_had_label:
|
||||
- Storage Facility@en
|
||||
- Opslaglocatie@nl
|
||||
- Depot@nl
|
||||
description: Off-site collection depot
|
||||
- value:
|
||||
has_or_had_short_code: STORAGE
|
||||
has_or_had_label:
|
||||
- Storage Facility@en
|
||||
- Opslaglocatie@nl
|
||||
- Depot@nl
|
||||
description: Off-site collection depot
|
||||
|
||||
BranchAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:BranchAddress
|
||||
description: 'Branch office or satellite location address.
|
||||
|
||||
|
||||
description: |
|
||||
Branch office or satellite location address.
|
||||
|
||||
For heritage custodians with multiple locations, this identifies
|
||||
|
||||
addresses of branch offices, satellite reading rooms, or regional
|
||||
|
||||
service points.
|
||||
|
||||
'
|
||||
|
||||
annotations:
|
||||
short_code: BRANCH
|
||||
specificity_score: '0.35'
|
||||
specificity_score: "0.35"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: BRANCH
|
||||
has_or_had_label:
|
||||
- Branch Office@en
|
||||
- Vestiging@nl
|
||||
- Filiaal@nl
|
||||
description: Branch office location
|
||||
- value:
|
||||
has_or_had_short_code: BRANCH
|
||||
has_or_had_label:
|
||||
- Branch Office@en
|
||||
- Vestiging@nl
|
||||
- Filiaal@nl
|
||||
description: Branch office location
|
||||
|
||||
ReadingRoomAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:ReadingRoomAddress
|
||||
description: 'Public reading room or research room entrance address.
|
||||
|
||||
|
||||
description: |
|
||||
Public reading room or research room entrance address.
|
||||
|
||||
Specific to archives and libraries, this identifies where
|
||||
|
||||
researchers access original materials for consultation.
|
||||
|
||||
May differ from the main visiting address.
|
||||
|
||||
'
|
||||
|
||||
annotations:
|
||||
short_code: READING_ROOM
|
||||
specificity_score: '0.50'
|
||||
specificity_score: "0.50"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: READING_ROOM
|
||||
has_or_had_label:
|
||||
- Reading Room@en
|
||||
- Studiezaal@nl
|
||||
- Leeszaal@nl
|
||||
description: Archive/library reading room entrance
|
||||
- value:
|
||||
has_or_had_short_code: READING_ROOM
|
||||
has_or_had_label:
|
||||
- Reading Room@en
|
||||
- Studiezaal@nl
|
||||
- Leeszaal@nl
|
||||
description: Archive/library reading room entrance
|
||||
|
||||
DeliveryAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:DeliveryAddress
|
||||
description: 'Goods delivery and receiving address.
|
||||
|
||||
|
||||
description: |
|
||||
Goods delivery and receiving address.
|
||||
|
||||
Address for receiving deliveries, including acquisitions,
|
||||
|
||||
loans, and supplies. May include loading dock facilities.
|
||||
|
||||
'
|
||||
|
||||
annotations:
|
||||
short_code: DELIVERY
|
||||
specificity_score: '0.40'
|
||||
specificity_score: "0.40"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: DELIVERY
|
||||
has_or_had_label:
|
||||
- Delivery Address@en
|
||||
- Afleveradres@nl
|
||||
- Goederenontvangst@nl
|
||||
description: Delivery receiving dock
|
||||
- value:
|
||||
has_or_had_short_code: DELIVERY
|
||||
has_or_had_label:
|
||||
- Delivery Address@en
|
||||
- Afleveradres@nl
|
||||
- Goederenontvangst@nl
|
||||
description: Delivery receiving dock
|
||||
|
||||
ConservationLabAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:ConservationLabAddress
|
||||
description: 'Conservation laboratory or restoration facility address.
|
||||
|
||||
|
||||
description: |
|
||||
Conservation laboratory or restoration facility address.
|
||||
|
||||
May be separate from main facilities, housing specialized
|
||||
|
||||
equipment for preservation and restoration work.
|
||||
|
||||
'
|
||||
|
||||
annotations:
|
||||
short_code: CONSERVATION_LAB
|
||||
specificity_score: '0.55'
|
||||
specificity_score: "0.55"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: CONSERVATION_LAB
|
||||
has_or_had_label:
|
||||
- Conservation Laboratory@en
|
||||
- Restauratieatelier@nl
|
||||
- Conserveringslab@nl
|
||||
description: Restoration workshop facility
|
||||
- value:
|
||||
has_or_had_short_code: CONSERVATION_LAB
|
||||
has_or_had_label:
|
||||
- Conservation Laboratory@en
|
||||
- Restauratieatelier@nl
|
||||
- Conserveringslab@nl
|
||||
description: Restoration workshop facility
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
classes:
|
||||
Administration:
|
||||
class_uri: org:OrganizationalUnit
|
||||
description: An administrative unit or body.
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_identifier
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AdministrativeLevel
|
||||
name: AdministrativeLevel
|
||||
title: Administrative Level Class
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_code
|
||||
- ../slots/has_or_had_description
|
||||
classes:
|
||||
AdministrativeLevel:
|
||||
class_uri: skos:Concept
|
||||
description: 'A level or tier within an administrative or government hierarchy.
|
||||
|
||||
|
||||
**Examples**:
|
||||
|
||||
- National/Federal
|
||||
|
||||
- State/Provincial
|
||||
|
||||
- Regional
|
||||
|
||||
- Municipal/Local
|
||||
|
||||
|
||||
**Ontological Alignment**:
|
||||
|
||||
- `skos:Concept`: Concept in a hierarchy scheme.
|
||||
|
||||
'
|
||||
slots:
|
||||
- has_or_had_label
|
||||
- has_or_had_code
|
||||
- has_or_had_description
|
||||
slot_usage:
|
||||
has_or_had_label:
|
||||
description: Name of the level (e.g., "National")
|
||||
required: true
|
||||
has_or_had_code:
|
||||
description: Code for the level (e.g., "NAT", "ISO-3166-2")
|
||||
required: false
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
@ -2,32 +2,31 @@ id: https://nde.nl/ontology/hc/class/administrative-office
|
|||
name: administrative_office_class
|
||||
title: AdministrativeOffice Class
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./ReconstructedEntity
|
||||
- ./CustodianObservation
|
||||
- ./ReconstructionActivity
|
||||
- ./FunctionType
|
||||
- ../slots/is_or_was_derived_from
|
||||
- ../slots/is_or_was_generated_by
|
||||
- ../slots/has_or_had_access_restriction
|
||||
- ../slots/has_or_had_description
|
||||
- ../classes/Description
|
||||
- ../slots/has_or_had_label
|
||||
- ../classes/Label
|
||||
# has_or_had_admin_staff_count REMOVED - migrated to has_or_had_staff + Staff (Rule 53)
|
||||
- ../slots/has_or_had_staff
|
||||
- ./Staff
|
||||
- ../slots/has_or_had_function
|
||||
- ../slots/is_leased
|
||||
- ../slots/lease_expiry
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../classes/Identifier
|
||||
- linkml:types
|
||||
- ./ReconstructedEntity
|
||||
- ./CustodianObservation
|
||||
- ./ReconstructionActivity
|
||||
- ./FunctionType
|
||||
- ../slots/is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
|
||||
- ../slots/is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
|
||||
- ../slots/has_or_had_access_restriction
|
||||
- ../slots/has_admin_office_description
|
||||
- ../slots/has_admin_office_name
|
||||
- ../slots/has_or_had_admin_staff_count
|
||||
# administrative_functions REMOVED - migrated to has_or_had_function (Rule 53)
|
||||
# has_or_had_administrative_function REMOVED - bespoke slot replaced by generic has_or_had_function (Rule 53)
|
||||
- ../slots/has_or_had_function
|
||||
- ../slots/is_leased
|
||||
- ../slots/lease_expiry
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/has_admin_office_identifier
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
|
|
@ -42,9 +41,75 @@ classes:
|
|||
AdministrativeOffice:
|
||||
is_a: ReconstructedEntity
|
||||
class_uri: org:Site
|
||||
description: "Non-public administrative building or office space of a heritage custodian.\n**DEFINITION**:\nAn AdministrativeOffice is a secondary physical location where a heritage custodian performs back-office, administrative, or support functions that do not directly serve the public. These locations typically house staff performing finance, HR, IT, management, or other operational activities.\n**W3C ORG ALIGNMENT**:\n`org:Site` - \"An office or other premise at which the organization is located.\"\nAdministrativeOffice specializes org:Site for non-public administrative spaces: - Financial/accounting departments - Human resources offices - IT infrastructure locations - Executive/management offices\n**DISTINCTION FROM OTHER AUXILIARY PLACE TYPES**:\n| Type | Public Access | Primary Function | |------|---------------|------------------| | BranchOffice | Yes | Public service delivery | | **AdministrativeOffice** | No | Back-office operations | | ResearchCenter | Limited | Research/conservation\
|
||||
\ | | Storage | No | Collection storage |\n**TYPICAL CHARACTERISTICS**:\n- **Staff-only access**: No public visitors - **Administrative functions**: Finance, HR, IT, management - **Separate from collections**: No collection materials stored - **Cost center**: Often in lower-cost location than main building\n**USE CASES**:\n1. **Separate Administrative Building**:\n - Museum finance department in office park\n - Archive IT/digitization support center\n\n2. **Executive Offices**:\n - Foundation board meeting space\n - Director's office separate from main building\n\n3. **Support Services**:\n - Facilities management office\n - Marketing/communications department\n\n**Example - Administrative Annex**: ```yaml AdministrativeOffice:\n has_admin_office_identifier: \"https://nde.nl/ontology/hc/aux/rijksmuseum-admin-zuidas\"\n has_admin_office_name: \"Rijksmuseum Administrative Offices - Zuidas\"\n has_admin_office_description: |\n Administrative support offices housing finance,\
|
||||
\ HR, and IT departments.\n Staff access only. Located in Zuidas business district for cost efficiency.\n has_or_had_function:\n - function_category: ADMINISTRATIVE\n function_name: \"Finance and accounting\"\n - function_category: ADMINISTRATIVE\n function_name: \"Human resources\"\n - function_category: SUPPORT\n function_name: \"Information technology\"\n - function_category: ADMINISTRATIVE\n function_name: \"Legal affairs\"\n has_or_had_access_restriction: \"Staff badge required\"\n```"
|
||||
description: >-
|
||||
Non-public administrative building or office space of a heritage custodian.
|
||||
|
||||
**DEFINITION**:
|
||||
|
||||
An AdministrativeOffice is a secondary physical location where a heritage
|
||||
custodian performs back-office, administrative, or support functions that
|
||||
do not directly serve the public. These locations typically house staff
|
||||
performing finance, HR, IT, management, or other operational activities.
|
||||
|
||||
**W3C ORG ALIGNMENT**:
|
||||
|
||||
`org:Site` - "An office or other premise at which the organization is located."
|
||||
|
||||
AdministrativeOffice specializes org:Site for non-public administrative spaces:
|
||||
- Financial/accounting departments
|
||||
- Human resources offices
|
||||
- IT infrastructure locations
|
||||
- Executive/management offices
|
||||
|
||||
**DISTINCTION FROM OTHER AUXILIARY PLACE TYPES**:
|
||||
|
||||
| Type | Public Access | Primary Function |
|
||||
|------|---------------|------------------|
|
||||
| BranchOffice | Yes | Public service delivery |
|
||||
| **AdministrativeOffice** | No | Back-office operations |
|
||||
| ResearchCenter | Limited | Research/conservation |
|
||||
| Storage | No | Collection storage |
|
||||
|
||||
**TYPICAL CHARACTERISTICS**:
|
||||
|
||||
- **Staff-only access**: No public visitors
|
||||
- **Administrative functions**: Finance, HR, IT, management
|
||||
- **Separate from collections**: No collection materials stored
|
||||
- **Cost center**: Often in lower-cost location than main building
|
||||
|
||||
**USE CASES**:
|
||||
|
||||
1. **Separate Administrative Building**:
|
||||
- Museum finance department in office park
|
||||
- Archive IT/digitization support center
|
||||
|
||||
2. **Executive Offices**:
|
||||
- Foundation board meeting space
|
||||
- Director's office separate from main building
|
||||
|
||||
3. **Support Services**:
|
||||
- Facilities management office
|
||||
- Marketing/communications department
|
||||
|
||||
**Example - Administrative Annex**:
|
||||
```yaml
|
||||
AdministrativeOffice:
|
||||
has_admin_office_identifier: "https://nde.nl/ontology/hc/aux/rijksmuseum-admin-zuidas"
|
||||
has_admin_office_name: "Rijksmuseum Administrative Offices - Zuidas"
|
||||
has_admin_office_description: |
|
||||
Administrative support offices housing finance, HR, and IT departments.
|
||||
Staff access only. Located in Zuidas business district for cost efficiency.
|
||||
has_or_had_function:
|
||||
- function_category: ADMINISTRATIVE
|
||||
function_name: "Finance and accounting"
|
||||
- function_category: ADMINISTRATIVE
|
||||
function_name: "Human resources"
|
||||
- function_category: SUPPORT
|
||||
function_name: "Information technology"
|
||||
- function_category: ADMINISTRATIVE
|
||||
function_name: "Legal affairs"
|
||||
has_or_had_access_restriction: "Staff badge required"
|
||||
```
|
||||
exact_mappings:
|
||||
- org:Site
|
||||
close_mappings:
|
||||
|
|
@ -55,36 +120,48 @@ classes:
|
|||
- org:OrganizationalUnit
|
||||
slots:
|
||||
- has_or_had_access_restriction
|
||||
- has_or_had_description
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
# has_or_had_admin_staff_count REMOVED - migrated to has_or_had_staff (Rule 53)
|
||||
- has_or_had_staff
|
||||
- has_admin_office_description
|
||||
- has_admin_office_identifier
|
||||
- has_admin_office_name
|
||||
- has_or_had_admin_staff_count
|
||||
# administrative_functions REMOVED - use has_or_had_function (Rule 53)
|
||||
# has_or_had_administrative_function REMOVED - bespoke, use has_or_had_function (Rule 53)
|
||||
- has_or_had_function
|
||||
- is_leased
|
||||
- lease_expiry
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- is_or_was_derived_from
|
||||
- is_or_was_generated_by
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
|
||||
- is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
range: Identifier
|
||||
has_admin_office_identifier:
|
||||
range: uriorcurie
|
||||
required: true
|
||||
description: Identifier for the administrative office.
|
||||
has_or_had_label:
|
||||
range: Label
|
||||
identifier: true
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/aux/rijksmuseum-admin-zuidas
|
||||
description: Rijksmuseum administrative office
|
||||
has_admin_office_name:
|
||||
range: string
|
||||
required: true
|
||||
description: Name of the administrative office.
|
||||
has_or_had_description:
|
||||
range: Description
|
||||
description: Description of the administrative office.
|
||||
examples:
|
||||
- value: Rijksmuseum Administrative Offices - Zuidas
|
||||
description: Admin office with location
|
||||
- value: Noord-Hollands Archief Finance Department
|
||||
description: Admin office with function
|
||||
has_admin_office_description:
|
||||
range: string
|
||||
examples:
|
||||
- value: Administrative support offices housing finance, HR, and IT departments. Staff access only.
|
||||
description: Admin office description
|
||||
has_or_had_function:
|
||||
range: FunctionType
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
description: Organizational functions performed at this administrative office. Uses generic FunctionType class with function_category classification.
|
||||
description: >-
|
||||
Organizational functions performed at this administrative office.
|
||||
Uses generic FunctionType class with function_category classification.
|
||||
examples:
|
||||
- value:
|
||||
function_category: ADMINISTRATIVE
|
||||
|
|
@ -107,22 +184,10 @@ classes:
|
|||
description: Badge access
|
||||
- value: Management access only
|
||||
description: Restricted access
|
||||
has_or_had_staff:
|
||||
description: |
|
||||
Staff associated with the administrative office.
|
||||
MIGRATED from has_or_had_admin_staff_count per Rule 53.
|
||||
Uses Staff class (with Quantity).
|
||||
range: Staff
|
||||
multivalued: true
|
||||
inlined: true
|
||||
has_or_had_admin_staff_count:
|
||||
range: integer
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
has_or_had_value: 25
|
||||
has_or_had_unit:
|
||||
has_or_had_label: "FTE"
|
||||
has_or_had_type:
|
||||
has_or_had_label: "Administrative Staff"
|
||||
- value: 25
|
||||
description: Medium admin office
|
||||
is_leased:
|
||||
range: boolean
|
||||
|
|
@ -136,11 +201,11 @@ classes:
|
|||
examples:
|
||||
- value: '2028-12-31'
|
||||
description: Lease expires end of 2028
|
||||
is_or_was_derived_from:
|
||||
is_or_was_derived_from: # was: was_derived_from - migrated per Rule 53
|
||||
range: CustodianObservation
|
||||
multivalued: true
|
||||
required: false
|
||||
is_or_was_generated_by:
|
||||
is_or_was_generated_by: # was: was_generated_by - migrated per Rule 53
|
||||
range: ReconstructionActivity
|
||||
required: false
|
||||
comments:
|
||||
|
|
@ -149,21 +214,16 @@ classes:
|
|||
- W3C ORG org:Site specialized for administrative functions
|
||||
- Often in separate building from main heritage operations
|
||||
- May be leased rather than owned for cost efficiency
|
||||
- 'MIGRATION NOTE: has_or_had_administrative_function replaced by generic has_or_had_function (Rule 53)'
|
||||
- "MIGRATION NOTE: has_or_had_administrative_function replaced by generic has_or_had_function (Rule 53)"
|
||||
see_also:
|
||||
- https://www.w3.org/TR/vocab-org/#org:Site
|
||||
- https://schema.org/Corporation
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_identifier:
|
||||
identifier_value: https://nde.nl/ontology/hc/aux/rijksmuseum-admin-zuidas
|
||||
identifier_scheme: URI
|
||||
has_or_had_label:
|
||||
has_or_had_label: Rijksmuseum Administrative Offices - Zuidas
|
||||
has_or_had_description:
|
||||
has_or_had_content:
|
||||
has_or_had_description: Administrative support offices housing finance, HR, and IT departments. Staff access only. Located in Zuidas business district.
|
||||
description_type: admin_office
|
||||
has_admin_office_identifier: https://nde.nl/ontology/hc/aux/rijksmuseum-admin-zuidas
|
||||
has_admin_office_name: Rijksmuseum Administrative Offices - Zuidas
|
||||
has_admin_office_description: Administrative support offices housing finance, HR, and IT departments. Staff access only.
|
||||
Located in Zuidas business district.
|
||||
has_or_had_function:
|
||||
- function_category: ADMINISTRATIVE
|
||||
function_name: Finance and accounting
|
||||
|
|
@ -174,26 +234,15 @@ classes:
|
|||
- function_category: ADMINISTRATIVE
|
||||
function_name: Legal affairs
|
||||
has_or_had_access_restriction: Staff badge required
|
||||
has_or_had_staff:
|
||||
- has_or_had_quantity:
|
||||
has_or_had_value: 45
|
||||
has_or_had_unit:
|
||||
has_or_had_label: "FTE"
|
||||
has_or_had_type:
|
||||
has_or_had_label: "Administrative Staff"
|
||||
has_or_had_admin_staff_count: 45
|
||||
is_leased: true
|
||||
lease_expiry: '2028-12-31'
|
||||
description: Museum administrative office in business district
|
||||
- value:
|
||||
has_or_had_identifier:
|
||||
identifier_value: https://nde.nl/ontology/hc/aux/kb-digitization-center
|
||||
identifier_scheme: URI
|
||||
has_or_had_label:
|
||||
has_or_had_label: Koninklijke Bibliotheek Digitization Support Center
|
||||
has_or_had_description:
|
||||
has_or_had_content:
|
||||
has_or_had_description: Technical support center for digitization operations. Houses scanning equipment coordination and quality control.
|
||||
description_type: admin_office
|
||||
has_admin_office_identifier: https://nde.nl/ontology/hc/aux/kb-digitization-center
|
||||
has_admin_office_name: Koninklijke Bibliotheek Digitization Support Center
|
||||
has_admin_office_description: Technical support center for digitization operations. Houses scanning equipment coordination
|
||||
and quality control.
|
||||
has_or_had_function:
|
||||
- function_category: PROGRAM
|
||||
function_name: Digitization project management
|
||||
|
|
@ -202,18 +251,6 @@ classes:
|
|||
- function_category: SUPPORT
|
||||
function_name: Technical support
|
||||
has_or_had_access_restriction: Project staff only
|
||||
has_or_had_staff:
|
||||
- has_or_had_quantity:
|
||||
has_or_had_value: 12
|
||||
has_or_had_unit:
|
||||
has_or_had_label: "FTE"
|
||||
has_or_had_type:
|
||||
has_or_had_label: "Technical Staff"
|
||||
has_or_had_admin_staff_count: 12
|
||||
is_leased: false
|
||||
lease_expiry: null
|
||||
description: Library digitization support facility
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AdministrativeUnit
|
||||
name: AdministrativeUnit
|
||||
title: AdministrativeUnit
|
||||
description: >-
|
||||
An administrative division or unit.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
org: http://www.w3.org/ns/org#
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
|
||||
classes:
|
||||
AdministrativeUnit:
|
||||
class_uri: org:OrganizationalUnit
|
||||
description: Administrative unit.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
slots:
|
||||
- has_or_had_name
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
id: https://nde.nl/ontology/hc/class/AdmissionFee
|
||||
name: AdmissionFee
|
||||
title: AdmissionFee
|
||||
description: >-
|
||||
Fee charged for admission.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_amount
|
||||
|
||||
classes:
|
||||
AdmissionFee:
|
||||
class_uri: schema:PriceSpecification
|
||||
description: Admission fee.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
slots:
|
||||
- has_or_had_amount
|
||||
|
|
@ -1,32 +1,45 @@
|
|||
# AdmissionInfo - Structured admission price information from Google Maps
|
||||
# Extracted from custodian_source.yaml per Rule 38 (modular schema files)
|
||||
# Extraction date: 2026-01-08
|
||||
|
||||
id: https://nde.nl/ontology/hc/classes/AdmissionInfo
|
||||
name: AdmissionInfo
|
||||
title: AdmissionInfo
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- linkml:types
|
||||
|
||||
|
||||
default_range: string
|
||||
|
||||
classes:
|
||||
AdmissionInfo:
|
||||
description: "Structured admission price information from Google Maps including price value and notes about additional fees or conditions.\nOntology mapping rationale: - class_uri is schema:PriceSpecification because this represents\n structured price information for museum/institution admission\n- close_mappings includes schema:Offer for commercial offering context - related_mappings includes schema:MonetaryAmount for price values"
|
||||
class_uri: schema:PriceSpecification
|
||||
close_mappings:
|
||||
- schema:Offer
|
||||
related_mappings:
|
||||
- schema:MonetaryAmount
|
||||
attributes:
|
||||
price:
|
||||
range: string
|
||||
description: "Admission price (e.g., \"\u20AC9.00\")"
|
||||
note:
|
||||
range: string
|
||||
description: Additional notes about admission (e.g., "Additional fees might apply")
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
description: >-
|
||||
Structured admission price information from Google Maps including
|
||||
price value and notes about additional fees or conditions.
|
||||
|
||||
Ontology mapping rationale:
|
||||
- class_uri is schema:PriceSpecification because this represents
|
||||
structured price information for museum/institution admission
|
||||
- close_mappings includes schema:Offer for commercial offering context
|
||||
- related_mappings includes schema:MonetaryAmount for price values
|
||||
class_uri: schema:PriceSpecification
|
||||
close_mappings:
|
||||
- schema:Offer
|
||||
related_mappings:
|
||||
- schema:MonetaryAmount
|
||||
attributes:
|
||||
price:
|
||||
range: string
|
||||
description: Admission price (e.g., "€9.00")
|
||||
note:
|
||||
range: string
|
||||
description: Additional notes about admission (e.g., "Additional fees might
|
||||
apply")
|
||||
|
|
|
|||
|
|
@ -4,22 +4,25 @@ title: Advertising Radio Archive Type
|
|||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./ArchiveOrganizationType
|
||||
- ./CollectionType
|
||||
- ./AdvertisingRadioArchiveRecordSetTypes
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./WikidataAlignment
|
||||
- ./WikiDataEntry
|
||||
- ./AdvertisingRadioArchiveRecordSetType
|
||||
- linkml:types
|
||||
- ./ArchiveOrganizationType
|
||||
- ./CollectionType
|
||||
- ./AdvertisingRadioArchiveRecordSetTypes
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ../slots/is_or_was_related_to # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./WikidataAlignment
|
||||
- ./WikiDataEntry # for is_or_was_related_to range (2026-01-15)
|
||||
- ./AdvertisingRadioArchiveRecordSetType
|
||||
# wikidata_entity import REMOVED - inherits has_or_had_identifier from ArchiveOrganizationType (Rule 53, 2026-01-16)
|
||||
classes:
|
||||
AdvertisingRadioArchive:
|
||||
is_a: ArchiveOrganizationType
|
||||
|
|
@ -27,7 +30,7 @@ classes:
|
|||
slots:
|
||||
- hold_or_held_record_set_type
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
description: 'Sound archive specializing in advertising radio productions and commercials.
|
||||
|
||||
|
||||
|
|
@ -57,8 +60,9 @@ classes:
|
|||
|
||||
'
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
has_or_had_identifier: # was: wikidata_entity - migrated per Rule 53 (2026-01-16)
|
||||
pattern: ^Q[0-9]+$
|
||||
# equals_string removed: Q60658673 (incompatible with uriorcurie range)
|
||||
description: Wikidata identifier for Advertising Radio Archive concept
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
|
|
@ -73,8 +77,3 @@ classes:
|
|||
- SoundArchive
|
||||
- RadioArchive
|
||||
- MediaArchive
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -5,39 +5,35 @@ prefixes:
|
|||
linkml: https://w3id.org/linkml/
|
||||
wd: http://www.wikidata.org/entity/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./CollectionType
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./WikidataAlignment
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- linkml:types
|
||||
- ./CollectionType
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ../slots/is_or_was_related_to # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
|
||||
- ./WikidataAlignment # for WikidataAlignment range
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
classes:
|
||||
AdvertisingRadioArchiveRecordSetType:
|
||||
description: A rico:RecordSetType for classifying collections of advertising radio productions and commercials within heritage institutions.
|
||||
description: A rico:RecordSetType for classifying collections of advertising radio productions and commercials within
|
||||
heritage institutions.
|
||||
is_a: CollectionType
|
||||
class_uri: rico:RecordSetType
|
||||
exact_mappings:
|
||||
- wd:Q60658673
|
||||
- wd:Q60658673 # Wikidata (was: slot_usage wikidata_equivalent - migrated per Rule 53, 2026-01-17)
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
has_or_had_custodian_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType"]'
|
||||
is_or_was_related_to:
|
||||
is_or_was_related_to: # was: wikidata_alignment - migrated per Rule 53 (2026-01-15)
|
||||
range: WikidataAlignment
|
||||
inlined: true
|
||||
see_also:
|
||||
- AdvertisingRadioArchive
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_custodian_type
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- is_or_was_related_to
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
- 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)
|
||||
|
|
|
|||
|
|
@ -14,39 +14,42 @@ imports:
|
|||
- linkml:types
|
||||
- ./AdvertisingRadioArchiveRecordSetType
|
||||
- ./AdvertisingRadioArchive
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
|
||||
|
||||
- ./TemplateSpecificityType
|
||||
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- ../slots/has_or_had_custodian_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
classes:
|
||||
RadioAdvertisementCollection:
|
||||
is_a: AdvertisingRadioArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for Radio commercial recordings.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType following the collection \norganizational principle as defined by rico-rst:Collection.\n"
|
||||
description: "A rico:RecordSetType for Radio commercial recordings.\n\n**RiC-O Alignment**:\nThis class is a specialized\
|
||||
\ rico:RecordSetType following the collection \norganizational principle as defined by rico-rst:Collection.\n"
|
||||
exact_mappings:
|
||||
- rico:RecordSetType
|
||||
related_mappings:
|
||||
|
|
@ -57,16 +60,16 @@ classes:
|
|||
- AdvertisingRadioArchiveRecordSetType
|
||||
- rico:RecordSetType
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_custodian_type
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- organizational_principle
|
||||
- organizational_principle_uri
|
||||
- record_holder
|
||||
- record_holder_note
|
||||
- record_set_type
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
has_or_had_custodian_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType"]'
|
||||
record_set_type:
|
||||
equals_string: RadioAdvertisementCollection
|
||||
|
|
@ -78,15 +81,11 @@ classes:
|
|||
equals_string: AdvertisingRadioArchive
|
||||
record_holder_note:
|
||||
equals_string: This RecordSetType is typically held by AdvertisingRadioArchive custodians. Inverse of rico:isOrWasHolderOf.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
CampaignDocumentationSeries:
|
||||
is_a: AdvertisingRadioArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for Advertising campaign records.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType following the series \norganizational principle as defined by rico-rst:Series.\n"
|
||||
description: "A rico:RecordSetType for Advertising campaign records.\n\n**RiC-O Alignment**:\nThis class is a specialized\
|
||||
\ rico:RecordSetType following the series \norganizational principle as defined by rico-rst:Series.\n"
|
||||
exact_mappings:
|
||||
- rico:RecordSetType
|
||||
related_mappings:
|
||||
|
|
@ -97,16 +96,16 @@ classes:
|
|||
- AdvertisingRadioArchiveRecordSetType
|
||||
- rico:RecordSetType
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_custodian_type
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
|
||||
- organizational_principle
|
||||
- organizational_principle_uri
|
||||
- record_holder
|
||||
- record_holder_note
|
||||
- record_set_type
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
has_or_had_custodian_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType"]'
|
||||
record_set_type:
|
||||
equals_string: CampaignDocumentationSeries
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue