Add ImageTilingServiceEndpoint class and archive ID class

- Introduced the ImageTilingServiceEndpoint class for tiled high-resolution image delivery, including deep-zoom and transformation capabilities, with multilingual descriptions and structured aliases.
- Archived the ID class as a backwards-compatible alias for Identifier, marking it as deprecated to enforce the use of the canonical Identifier model.
This commit is contained in:
kempersc 2026-02-15 21:40:13 +01:00
parent 4b2d8e3fd9
commit 6e63465196
346 changed files with 9335 additions and 11460 deletions

View file

@ -0,0 +1,48 @@
# Rule: Capitalization Consistency for LinkML Names
## Purpose
Ensure naming is consistent across LinkML classes, slots, enums, and their files,
with special care for acronyms (for example: `GLAM`, `GHC`, `GHCID`, `GLEIF`).
## Mandatory Requirements
1. **Class names**
- Use `PascalCase`.
- Preserve canonical acronym casing.
- Example: `GHCIdentifier`, not `GhcidIdentifier`.
2. **Slot names**
- Use project slot naming convention consistently.
- If acronym appears in a slot, keep its canonical uppercase form.
- Example: `has_GHCID_history` (if acronymed slot is required), not `has_ghcid_history`.
3. **Enum names**
- Use `PascalCase` with `Enum` suffix where applicable.
- Preserve acronym casing in enum identifiers and permissible values.
- Example: `GLAMTypeEnum`.
4. **File names must match primary term exactly**
- Class file name must match class name (case-sensitive) plus `.yaml`.
- Enum file name must match enum name (case-sensitive) plus `.yaml`.
- Slot file name must match slot name (case-sensitive) plus `.yaml`.
5. **No mixed acronym variants in same schema branch**
- Do not mix forms like `Ghcid`, `GHCID`, and `ghcid` for the same concept.
- Pick canonical form once and use it everywhere.
## Refactoring Rule
When normalizing capitalization:
- Update term declaration (`name`, class/slot/enum key).
- Update file name to match.
- Update all imports and references transitively.
- Do not leave aliases as operational identifiers; keep aliases only for lexical metadata.
## Validation Checklist
- [ ] Class, slot, enum declarations use canonical casing.
- [ ] File names exactly match declaration names.
- [ ] Acronyms are consistent across declarations and references.
- [ ] Imports and references resolve after renaming.

View file

@ -0,0 +1,48 @@
# Rule: Capitalization Consistency for LinkML Names
## Purpose
Ensure naming is consistent across LinkML classes, slots, enums, and their files,
with special care for acronyms (for example: `GLAM`, `GHC`, `GHCID`, `GLEIF`).
## Mandatory Requirements
1. **Class names**
- Use `PascalCase`.
- Preserve canonical acronym casing.
- Example: `GHCIdentifier`, not `GhcidIdentifier`.
2. **Slot names**
- Use project slot naming convention consistently.
- If acronym appears in a slot, keep its canonical uppercase form.
- Example: `has_GHCID_history` (if acronymed slot is required), not `has_ghcid_history`.
3. **Enum names**
- Use `PascalCase` with `Enum` suffix where applicable.
- Preserve acronym casing in enum identifiers and permissible values.
- Example: `GLAMTypeEnum`.
4. **File names must match primary term exactly**
- Class file name must match class name (case-sensitive) plus `.yaml`.
- Enum file name must match enum name (case-sensitive) plus `.yaml`.
- Slot file name must match slot name (case-sensitive) plus `.yaml`.
5. **No mixed acronym variants in same schema branch**
- Do not mix forms like `Ghcid`, `GHCID`, and `ghcid` for the same concept.
- Pick canonical form once and use it everywhere.
## Refactoring Rule
When normalizing capitalization:
- Update term declaration (`name`, class/slot/enum key).
- Update file name to match.
- Update all imports and references transitively.
- Do not leave aliases as operational identifiers; keep aliases only for lexical metadata.
## Validation Checklist
- [ ] Class, slot, enum declarations use canonical casing.
- [ ] File names exactly match declaration names.
- [ ] Acronyms are consistent across declarations and references.
- [ ] Imports and references resolve after renaming.

View file

@ -0,0 +1,317 @@
# Rule 38: Slot Centralization and Semantic URI Requirements
🚨 **CRITICAL**: All LinkML slots MUST be centralized in `model/symbolic/schema/modules/slots/` and MUST have semantically sound `slot_uri` predicates from base ontologies.
---
## 1. Slot Centralization is Mandatory
**Location**: All slot definitions MUST be in `model/symbolic/schema/modules/slots/`
**File Naming**: `{slot_name}.yaml` (snake_case)
**Import Pattern**: Classes import slots via relative imports:
```yaml
# In modules/classes/Collection.yaml
imports:
- ../slots/collection_name
- ../slots/collection_type_ref
- ../slots/parent_collection
```
### Why Centralization?
1. **UML Visualization**: The frontend's schema service loads slots from the database in which `modules/slots/` files are ingested to determine aggregation edges. Inline slots in class files are NOT properly parsed for visualization.
2. **Reusability**: Slots can be used by multiple classes without duplication.
3. **Semantic Consistency**: Single source of truth for slot semantics prevents drift.
4. **Maintainability**: Changes to slot semantics propagate automatically to all classes.
### Anti-Pattern: Inline Slot Definitions
```yaml
# ❌ WRONG - Slots defined inline in class file
classes:
Collection:
slots:
- collection_name
- parent_collection
slots: # ← This section in a class file is WRONG
collection_name:
range: string
```
```yaml
# ✅ CORRECT - Slots imported from centralized files
# In modules/classes/Collection.yaml
imports:
- ../slots/collection_name
- ../slots/parent_collection
classes:
Collection:
slots:
- collection_name
- parent_collection
```
---
## 2. Every Slot MUST Have `slot_uri`
**`slot_uri`** provides the semantic meaning of the slot in a linked data context. It maps your slot to a predicate from an established ontology. Do avoid adding external uri in case there are no exact mapping! In this common case, the slot_uri should be a self-reference using the 'hc' prefix.
### Required Slot File Structure
```yaml
# Global slot definition for {slot_name}
# Used by: {list of classes}
id: https://nde.nl/ontology/hc/slot/{slot_name}
name: {slot_name}
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
# Add ontology prefixes as needed
rico: https://www.ica.org/standards/RiC/ontology#
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
slots:
{slot_name}:
slot_uri: {ontology_prefix}:{predicate} # ← REQUIRED
description: |
Description of the slot's semantic meaning.
{OntologyName}: {predicate} - "{definition from ontology}"
range: {ClassName or primitive}
required: true/false
multivalued: true/false
# Optional mappings for additional semantic relationships
exact_mappings:
- schema:alternatePredicate
close_mappings:
- dct:relatedPredicate
examples:
- value: {example}
description: {explanation}
```
### Ontology Sources for `slot_uri`
Consult these base ontology files in `/data/ontology/`:
| Ontology | File | Namespace | Use Cases |
|----------|------|-----------|-----------|
| **RiC-O** | `RiC-O_1-1.rdf` | `rico:` | Archival records, record sets, custody |
| **CIDOC-CRM** | `CIDOC_CRM_v7.1.3.rdf` | `crm:` | Cultural heritage objects, events |
| **Schema.org** | `schemaorg.owl` | `schema:` | Web semantics, general properties |
| **SKOS** | `skos.rdf` | `skos:` | Labels, concepts, mappings |
| **Dublin Core** | `dublin_core_elements.rdf` | `dcterms:` | Metadata properties |
| **PROV-O** | `prov-o.ttl` | `prov:` | Provenance tracking |
| **PAV** | `pav.rdf` | `pav:` | Provenance, authoring, versioning |
| **TOOI** | `tooiont.ttl` | `tooi:` | Dutch government organizations |
| **CPOV** | `core-public-organisation-ap.ttl` | `cpov:` | EU public sector |
| **ORG** | `org.rdf` | `org:` | Organizations, units, roles |
| **FOAF** | `foaf.ttl` | `foaf:` | People, agents, social network |
| **GLEIF** | `gleif_base.ttl` | `gleif_base:` | Legal entities |
### Example: Correct Slot with `slot_uri`
```yaml
# modules/slots/preferred_label.yaml
id: https://nde.nl/ontology/hc/slot/preferred_label
name: preferred_label_slot
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/
rdfs: http://www.w3.org/2000/01/rdf-schema#
slots:
preferred_label:
slot_uri: skos:prefLabel # ← REQUIRED
description: |
The primary display name for this entity.
SKOS: prefLabel - "A preferred lexical label for a resource."
This is the CANONICAL name - the standardized label accepted by the
entity itself for public representation.
range: string
required: false
exact_mappings:
- schema:name
- rdfs:label
examples:
- value: "Rijksmuseum"
description: Primary display name for the Rijksmuseum
```
---
## 3. Mappings Can Apply to Both Classes AND Slots
LinkML provides SKOS-based mapping predicates that work on **both classes and slots**:
| Mapping Type | Predicate | Use Case |
|--------------|-----------|----------|
| `exact_mappings` | `skos:exactMatch` | Identical meaning |
| `close_mappings` | `skos:closeMatch` | Very similar meaning |
| `related_mappings` | `skos:relatedMatch` | Semantically related |
| `narrow_mappings` | `skos:narrowMatch` | More specific |
| `broad_mappings` | `skos:broadMatch` | More general |
### When to Use Mappings vs. slot_uri
| Scenario | Use |
|----------|-----|
| **Primary semantic identity** | `slot_uri` (exactly one) |
| **Equivalent predicates in other ontologies** | `exact_mappings` (multiple allowed) |
| **Similar but not identical predicates** | `close_mappings` |
| **Related predicates with different scope** | `narrow_mappings` / `broad_mappings` |
### Example: Slot with Multiple Mappings
```yaml
slots:
website:
slot_uri: gleif_base:hasWebsite # Primary predicate
range: uri
description: |
Official website URL of the organization or entity.
gleif_base:hasWebsite - "A website associated with something"
exact_mappings:
- schema:url # Identical meaning in Schema.org
close_mappings:
- foaf:homepage # Similar but specifically "main" page
```
### Example: Class with Multiple Mappings
```yaml
classes:
Collection:
class_uri: rico:RecordSet # Primary class
exact_mappings:
- crm:E78_Curated_Holding # CIDOC-CRM equivalent
close_mappings:
- bf:Collection # BIBFRAME close match
narrow_mappings:
- edm:ProvidedCHO # Europeana (narrower - cultural heritage objects)
```
---
## 4. Workflow for Creating a New Slot
### Step 1: Search Base Ontologies
Before creating a slot, search for existing predicates:
```bash
# Search for relevant predicates
rg "website|homepage|url" /data/ontology/*.ttl /data/ontology/*.rdf /data/ontology/*.owl
# Check specific ontology
rg "rdfs:label|rdfs:comment" /data/ontology/schemaorg.owl | grep -i "name"
```
### Step 2: Document Ontology Alignment
In the slot file, document WHY you chose that predicate:
```yaml
slots:
source_url:
slot_uri: pav:retrievedFrom
description: |
URL of the web page from which data was retrieved.
pav:retrievedFrom - "The URI from which the resource was retrieved."
Chosen over:
- schema:url (too generic - refers to the entity's URL, not source)
- dct:source (refers to intellectual source, not retrieval location)
- prov:wasDerivedFrom (refers to entity derivation, not retrieval)
```
### Step 3: Create Centralized Slot File
```bash
# Create new slot file
touch schemas/20251121/linkml/modules/slots/new_slot_name.yaml
```
### Step 4: Update Manifest
Run the manifest regeneration script or manually add to manifest:
```bash
cd schemas/20251121/linkml
python3 scripts/regenerate_manifest.py
```
### Step 5: Import in Class Files
Add the import to classes that use this slot.
---
## 5. Validation Checklist
Before committing slot changes:
- [ ] Slot file is in `modules/slots/`
- [ ] Slot has `slot_uri` pointing to an established ontology predicate
- [ ] Predicate is from `data/ontology/` files or standard vocabularies
- [ ] Description includes ontology definition
- [ ] Rationale documented if multiple predicates were considered
- [ ] `exact_mappings`/`close_mappings` added for equivalent predicates
- [ ] Manifest updated to include new slot file
- [ ] Classes using the slot have been updated with import
- [ ] Frontend slot files synced: `frontend/public/schemas/20251121/linkml/modules/slots/`
---
## 6. Common Slot URI Mappings
| Slot Concept | Recommended `slot_uri` | Alternative Mappings |
|--------------|------------------------|---------------------|
| Preferred name | `skos:prefLabel` | `schema:name`, `rdfs:label` |
| Alternative names | `skos:altLabel` | `schema:alternateName` |
| Description | `dcterms:description` | `schema:description`, `rdfs:comment` |
| Identifier | `dcterms:identifier` | `schema:identifier` |
| Website URL | `gleif_base:hasWebsite` | `schema:url`, `foaf:homepage` |
| Source URL | `pav:retrievedFrom` | `prov:wasDerivedFrom` |
| Created date | `dcterms:created` | `schema:dateCreated`, `prov:generatedAtTime` |
| Modified date | `dcterms:modified` | `schema:dateModified` |
| Language | `schema:inLanguage` | `dcterms:language` |
| Part of | `dcterms:isPartOf` | `rico:isOrWasPartOf`, `schema:isPartOf` |
| Has part | `dcterms:hasPart` | `rico:hasOrHadPart`, `schema:hasPart` |
| Location | `schema:location` | `locn:address`, `crm:P53_has_former_or_current_location` |
| Start date | `schema:startDate` | `prov:startedAtTime`, `rico:hasBeginningDate` |
| End date | `schema:endDate` | `prov:endedAtTime`, `rico:hasEndDate` |
---
## See Also
- [LinkML slot_uri documentation](https://linkml.io/linkml-model/latest/docs/slot_uri/)
- [LinkML mappings documentation](https://linkml.io/linkml-model/latest/docs/mappings/)
- [LinkML URIs and Mappings guide](https://linkml.io/linkml/schemas/uris-and-mappings.html)
- Rule 1: Ontology Files Are Your Primary Reference
- Rule 0: LinkML Schemas Are the Single Source of Truth
---
**Version**: 1.0.0
**Created**: 2026-01-06
**Author**: OpenCODE

View file

@ -0,0 +1,29 @@
# Rule: Slot Fixes File is Authoritative
**Scope:** Schema Migration / Slot Fixes
**Description:**
The file `slot_fixes.yaml` is the **single authoritative source** for tracking slot migrations and fixes.
**Directives:**
1. **Authoritative Source:** Always read and update `slot_fixes.yaml`.
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.
```

View file

@ -0,0 +1,169 @@
# Rule: slot_fixes.yaml Revision Key Immutability
## Status: CRITICAL
## Summary
The `revision` key in `slot_fixes.yaml` is **IMMUTABLE**. AI agents MUST follow revision specifications exactly and are NEVER permitted to modify the content of revision entries.
## The Authoritative Source
The file `slot_fixes.yaml` serves as the **curated migration specification** for all slot consolidations in the Heritage Custodian Ontology. Each entry's `revision` section was manually curated based on:
- Ontology analysis (CIDOC-CRM, RiC-O, PROV-O, Schema.org alignment)
- Semantic correctness
- Pattern consistency (Rule 39: RiC-O style naming)
- Type/Types class hierarchy design (Rule 0b)
## What Agents CAN Do
| Action | Permitted | Location |
|--------|-----------|----------|
| Add completion notes | ✅ YES | `processed.notes` |
| Update status | ✅ YES | `processed.status` |
| Add feedback responses | ✅ YES | `feedback.response` |
| Mark feedback as done | ✅ YES | `feedback.done` |
| Execute the migration per revision | ✅ YES | Class/slot files |
## What Agents CANNOT Do
| Action | Permitted | Reason |
|--------|-----------|--------|
| Modify `revision` content | ❌ NEVER | Authoritative specification |
| Substitute different slots | ❌ NEVER | Violates curated design |
| Skip revision components | ❌ NEVER | Incomplete migration |
| Add new revision items | ❌ NEVER | Requires human curation |
| Change revision labels | ❌ NEVER | Breaks semantic mapping |
| Reorder revision items | ❌ NEVER | `link_branch` dependencies |
## Structure of slot_fixes.yaml Entries
```yaml
- original_slot_id: https://nde.nl/ontology/hc/slot/example_slot
original_slot_label: example_slot
revision: # ← IMMUTABLE - DO NOT MODIFY
- label: has_or_had_example # Generic slot to use
type: slot
- label: Example # Class for range
type: class
- label: has_or_had_attribute # Nested attribute (link_branch: 1)
type: slot
link_branch: 1
processed:
status: false # ← CAN UPDATE to true
notes: "" # ← CAN ADD notes here
feedback: # ← CAN ADD responses here
user: "Simon C. Kemper"
date: "2026-01-17"
message: "Migration incomplete"
done: false # ← CAN UPDATE to true
response: "" # ← CAN ADD response here
```
## Understanding `link_branch` in Revisions
The `link_branch` field indicates **nested class attributes**:
| Revision Item | Meaning |
|---------------|---------|
| Items **WITHOUT** `link_branch` | PRIMARY slot and class to create |
| Items **WITH** `link_branch: 1` | First attribute the primary class needs |
| Items **WITH** `link_branch: 2` | Second attribute the primary class needs |
**Example**:
```yaml
revision:
- label: has_or_had_quantity # PRIMARY SLOT
type: slot
- label: Quantity # PRIMARY CLASS
type: class
- label: has_or_had_measurement_unit # Quantity.has_or_had_measurement_unit
type: slot
link_branch: 1
- label: MeasureUnit # Range of branch 1 slot
type: class
link_branch: 1
```
## Migration Workflow
1. **READ** the `revision` section completely
2. **VERIFY** all referenced slots/classes exist (or create them)
3. **REMOVE** old slot from imports, slots list, and slot_usage in consuming classes
4. **ADD** new slot(s) and class import(s) per revision specification
5. **UPDATE** slot_usage to narrow range to specified class
6. **VALIDATE** with `linkml-lint` or `gen-owl`
7. **UPDATE** slot_fixes.yaml:
- Set `processed.status: true`
- Add completion note to `processed.notes`
- If feedback exists, set `feedback.done: true` and add `feedback.response`
## Anti-Patterns
### WRONG - Modifying Revision Content
```yaml
# Agent incorrectly "improves" the revision
revision:
- label: has_description # ❌ CHANGED from has_or_had_description
type: slot
- label: TextDescription # ❌ CHANGED from Description
type: class
```
### WRONG - Substituting Different Slots
```yaml
# Agent uses a different slot than specified
# Revision says: has_or_had_type + BindingType
# Agent uses: binding_classification + BindingClassification ❌ WRONG
```
### WRONG - Partial Migration
```yaml
# Agent only creates the slot, ignores the class
revision:
- label: has_or_had_type # ✅ Agent created this
type: slot
- label: BindingType # ❌ Agent ignored this
type: class
```
### CORRECT - Following Revision Exactly
```yaml
# Revision specifies:
revision:
- label: has_or_had_description
type: slot
- label: Description
type: class
# Agent creates/uses EXACTLY:
# 1. Import ../slots/has_or_had_description
# 2. Import ../classes/Description
# 3. slot_usage: has_or_had_description with range: Description
```
## Rationale
1. **Curated Quality**: Revisions were manually designed with ontology expertise
2. **Consistency**: Same patterns applied across all migrations
3. **Auditability**: Clear record of intended vs. actual changes
4. **Reversibility**: Original specifications preserved for review
5. **Trust**: Users can rely on revision specifications being stable
## Related Rules
- **Rule 53**: Full Slot Migration - slot_fixes.yaml is AUTHORITATIVE
- **Rule 56**: Semantic Consistency Over Simplicity
- **Rule 39**: Slot Naming Convention (RiC-O Style)
- **Rule 38**: Slot Centralization and Semantic URI Requirements
- **Rule 0b**: Type/Types File Naming Convention
## See Also
- `schemas/20251121/linkml/modules/slots/slot_fixes.yaml` - The authoritative file
- `.opencode/rules/full-slot-migration-rule.md` - Migration execution rules
- `.opencode/rules/semantic-consistency-over-simplicity.md` - Why revisions must be followed

View file

@ -0,0 +1,69 @@
# Rule: Slot Naming Convention (Current Style)
🚨 **CRITICAL**: New LinkML slot names MUST follow the current verb-first naming style used in active slot files under `modules/slots/`.
## Core Naming Rules
1. Use `snake_case`.
2. Prefer short, descriptive verb predicates as canonical names.
3. Keep names ontology-neutral (no ontology namespace prefixes in slot names).
4. Use singular nouns in object positions (including multivalued slots).
5. Keep temporal semantics in mappings/definitions when needed, not by forcing a legacy prefix.
## Preferred Patterns
### 1) Simple verb predicates (default)
Use a single verb when it clearly expresses the relation.
Examples from active slots:
- `accept`
- `contain`
- `catalogue`
- `exhibit`
### 2) Verb + particle/preposition when needed
Use compact phrasal forms when a preposition carries core meaning.
Examples:
- `belong_to`
- `located_in`
- `derived_from`
### 3) Symmetric or directional pair pattern
Use `<present>_or_<past_participle>` when both directions/states are intentionally modeled in one predicate label.
Examples:
- `contains_or_contained`
- `includes_or_included`
- `operates_or_operated`
## Legacy Compatibility
- For migrations, keep backward compatibility via `aliases` when renaming to current-style canonical names.
- Do not rename canonical slots opportunistically; follow migration plans and canonical-slot protection rules.
## Anti-Patterns
- ❌ `rico_has_or_had_holder` (ontology prefix in name)
- ❌ `collections` (plural noun predicate)
- ❌ `has_museum_visitor_count` (class-specific slot name)
- ❌ Creating new `has_or_had_*` names by default when a verb predicate is clearer
## Quick Checklist
- [ ] Is the canonical slot name verb-first and descriptive?
- [ ] Is it `snake_case`?
- [ ] Is the noun part singular?
- [ ] Is the name ontology-neutral?
- [ ] If renaming legacy slots, are aliases/migration constraints handled?
## See Also
- `.opencode/rules/archive/DEPRECATED-slot-naming-convention-rico-style.md`
- `.opencode/rules/no-ontology-prefix-in-slot-names.md`
- `.opencode/rules/slot-noun-singular-convention.md`
- `.opencode/rules/generic-slots-specific-classes.md`
- `.opencode/rules/canonical-slot-protection-rule.md`

View file

@ -0,0 +1,80 @@
# Rule: Slot Nouns Must Be Singular
🚨 **CRITICAL**: LinkML slot names MUST use singular nouns, even for multivalued slots. The `multivalued: true` property indicates cardinality, not the slot name.
## Rationale
1. **Predicate semantics**: Slots represent predicates/relationships. In RDF, `hasCollection` can have multiple objects without changing the predicate name.
2. **Consistency**: Singular names work for both single-valued and multivalued slots.
3. **Ontology alignment**: Standard ontologies use singular predicates (`skos:broader`, `org:hasMember`, `rico:hasOrHadHolder`).
4. **Readability**: `custodian.has_or_had_custodian_type` reads naturally as "custodian has (or had) custodian type".
## Correct Pattern
```yaml
slots:
has_or_had_custodian_type: # ✅ CORRECT - singular noun
slot_uri: org:classification
range: CustodianType
multivalued: true # Cardinality expressed here, not in name
has_or_had_collection: # ✅ CORRECT - singular noun
slot_uri: rico:hasOrHadPart
range: CustodianCollection
multivalued: true
has_or_had_member: # ✅ CORRECT - singular noun
slot_uri: org:hasMember
range: Custodian
multivalued: true
```
## Incorrect Pattern
```yaml
slots:
has_or_had_custodian_types: # ❌ WRONG - plural noun
multivalued: true
collections: # ❌ WRONG - plural noun
multivalued: true
members: # ❌ WRONG - plural noun
multivalued: true
```
## Migration Examples
| Old (Plural) | New (Singular) |
|--------------|----------------|
| `custodian_types` | `has_or_had_custodian_type` |
| `collections` | `has_or_had_collection` |
| `identifiers` | `identifier` |
| `alternative_names` | `alternative_name` |
| `staff_members` | `staff_member` |
## Exceptions
**Compound concepts** where the plural is part of the concept name itself:
- `archives_regionales` - French administrative term (proper noun)
- `united_states` - Geographic proper noun
**NOT exceptions** (still use singular):
- `has_or_had_identifier` not `has_or_had_identifiers` (even if institution has multiple)
- `broader_type` not `broader_types` (even if multiple broader types)
## Implementation
When creating or renaming slots:
1. Extract the noun from the slot name
2. Convert to singular form
3. Combine with relationship prefix (`has_or_had_`, `is_or_was_`, etc.)
4. Set `multivalued: true` if multiple values are expected
## See Also
- `.opencode/rules/slot-naming-convention-current-style.md` - Current slot naming patterns
- `.opencode/rules/slot-centralization-and-semantic-uri-rule.md` - Slot centralization requirements

View file

@ -0,0 +1,174 @@
# Rule 49: Slot Usage Minimization - No Redundant Overrides
## Summary
LinkML `slot_usage` entries MUST provide meaningful modifications to the generic slot definition. Redundant `slot_usage` entries that merely re-declare the same values as the generic slot MUST be removed.
## Background
### What is slot_usage?
In LinkML, [`slot_usage`](https://linkml.io/linkml-model/latest/docs/slot_usage/) allows a class to customize how an inherited slot behaves within that specific class context. It enables:
- Narrowing the `range` to a more specific type
- Adding class-specific `required`, `multivalued`, or `identifier` constraints
- Providing class-specific `description`, `examples`, or `pattern` overrides
- Adding class-specific semantic mappings (`exact_mappings`, `close_mappings`, etc.)
### The Problem
A code generation process created **874 redundant `slot_usage` entries** across **374 class files** that simply re-declare the same `range` and `inlined` values already defined in the generic slot:
```yaml
# In modules/slots/template_specificity.yaml (GENERIC DEFINITION)
slots:
template_specificity:
slot_uri: hc:templateSpecificity
range: TemplateSpecificityScores
inlined: true
# In modules/classes/AdministrativeOffice.yaml (REDUNDANT OVERRIDE)
slot_usage:
template_specificity:
range: TemplateSpecificityScores # Same as generic!
inlined: true # Same as generic!
```
This creates:
1. **Visual noise** in the schema viewer (slot_usage badge displayed when nothing is actually customized)
2. **Maintenance burden** (changes to generic slot must be mirrored in 374 files)
3. **Semantic confusion** (suggests customization where none exists)
## The Rule
### MUST Remove: Truly Redundant Overrides
A `slot_usage` entry is **truly redundant** and MUST be removed if:
1. **All properties match the generic slot definition exactly**
2. **No additional properties are added** (no extra `examples`, `description`, `required`, etc.)
```yaml
# REDUNDANT - Remove this entire slot_usage entry
slot_usage:
template_specificity:
range: TemplateSpecificityScores
inlined: true
```
### MAY Keep: Description-Only Modifications
A `slot_usage` entry that ONLY modifies the `description` by adding articles or context MAY be kept if it provides **semantic value** by referring to a specific entity rather than a general concept.
**Tolerated Example** (adds definiteness):
```yaml
# Generic slot
slots:
has_or_had_record_set:
description: Record sets associated with a custodian.
range: RecordSet
# Class-specific slot_usage - TOLERABLE
slot_usage:
has_or_had_record_set:
description: The record sets held by this archive. # "The" makes it definite
```
**Rationale**: "The record sets" (definite) vs "record sets" (indefinite) conveys that this class specifically requires/expects record sets, rather than merely allowing them. This is a **semantic distinction** in linguistic terms (definiteness marking).
### MUST Keep: Meaningful Modifications
A `slot_usage` entry MUST be kept if it provides ANY of the following:
| Modification Type | Example |
|-------------------|---------|
| **Range narrowing** | `range: MuseumCollection` (from generic `Collection`) |
| **Required constraint** | `required: true` (when generic is optional) |
| **Pattern override** | `pattern: "^NL-.*"` (Dutch ISIL codes only) |
| **Examples addition** | Class-specific examples not in generic |
| **Inlined change** | `inlined: true` when generic is `false` |
| **Identifier designation** | `identifier: true` for primary key |
## Decision Matrix
| Scenario | Action |
|----------|--------|
| All properties match generic exactly | **REMOVE** |
| Only `range` and/or `inlined` match generic | **REMOVE** |
| Only `description` differs by adding articles | **TOLERATE** (but consider removing) |
| `description` provides substantive new information | **KEEP** |
| Any other property modified | **KEEP** |
## Implementation
### Cleanup Script
Use the following to identify and remove redundant overrides:
```python
# scripts/cleanup_redundant_slot_usage.py
import yaml
import glob
SLOTS_TO_CHECK = ['template_specificity', 'specificity_annotation']
for class_file in glob.glob('schemas/20251121/linkml/modules/classes/*.yaml'):
with open(class_file) as f:
content = yaml.safe_load(f)
modified = False
for cls_name, cls_def in content.get('classes', {}).items():
slot_usage = cls_def.get('slot_usage', {})
for slot_name in SLOTS_TO_CHECK:
if slot_name in slot_usage:
override = slot_usage[slot_name]
# Check if redundant (only range/inlined matching generic)
if is_redundant(override, slot_name):
del slot_usage[slot_name]
modified = True
# Remove empty slot_usage
if not slot_usage:
del cls_def['slot_usage']
if modified:
with open(class_file, 'w') as f:
yaml.dump(content, f, allow_unicode=True, sort_keys=False)
```
### Validation
After cleanup, validate that:
1. `linkml-validate` passes for all schemas
2. Generated RDF/OWL output is unchanged (redundant overrides have no semantic effect)
3. Frontend slot viewer shows fewer `slot_usage` badges
## Frontend UX Implications
The frontend LinkML viewer should:
1. **Display "Slot Usage"** (with space, no underscore) instead of `slot_usage`
2. **Add tooltip** explaining what slot_usage means, linking to [LinkML documentation](https://linkml.io/linkml-model/latest/docs/slot_usage/)
3. **Only show badge** when `slot_usage` contains meaningful modifications
4. **Comparison view** should highlight actual differences, not redundant re-declarations
## Affected Slots
Current analysis found redundant overrides for:
| Slot | Redundant Overrides | Files Affected |
|------|---------------------|----------------|
| `template_specificity` | 873 | 374 |
| `specificity_annotation` | 874 | 374 |
## References
- [LinkML slot_usage documentation](https://linkml.io/linkml-model/latest/docs/slot_usage/)
- Rule 38: Slot Centralization and Semantic URI Requirements
- Rule 48: Class Files Must Not Define Inline Slots
## Version History
| Date | Change |
|------|--------|
| 2026-01-12 | Initial rule created after identifying 874 redundant slot_usage entries |

View file

@ -0,0 +1,401 @@
# Rule: Specificity Score Convention for LinkML Schema Annotations
**Version**: 1.0.0
**Created**: 2025-01-04
**Status**: Active
**Applies to**: `schemas/20251121/linkml/modules/classes/*.yaml`
---
## Rule Statement
Every class in the Heritage Custodian Ontology MUST have specificity score annotations to enable intelligent filtering for RAG retrieval and UML visualization.
---
## Annotation Schema
### Required Annotations
Every class YAML file MUST include these annotations:
```yaml
classes:
ClassName:
annotations:
specificity_score: 0.75 # Required: General specificity (0.0-1.0)
specificity_rationale: "..." # Required: Why this score was assigned
```
### Optional Annotations
Template-specific scores for context-aware filtering:
```yaml
classes:
ClassName:
annotations:
specificity_score: 0.75
specificity_rationale: "..."
template_specificity: # Optional: Template-specific scores
archive_search: 0.95
museum_search: 0.20
person_research: 0.30
```
---
## Score Semantics
### General Specificity Score
The `specificity_score` measures how **context-dependent** a class is:
| Score Range | Meaning | Example Classes |
|-------------|---------|-----------------|
| 0.00-0.20 | **Universal** - relevant in almost all contexts | `HeritageCustodian`, `CustodianName`, `Location` |
| 0.20-0.40 | **Broadly useful** - relevant in most contexts | `Collection`, `Identifier`, `GHCID` |
| 0.40-0.60 | **Moderately specific** - relevant in several contexts | `ChangeEvent`, `PersonProfile`, `DigitalPlatform` |
| 0.60-0.80 | **Fairly specific** - relevant in limited contexts | `Archive`, `Museum`, `Library`, `FindingAid` |
| 0.80-1.00 | **Highly specific** - relevant only in specialized contexts | `LinkedInConnectionExtraction`, `GHCIDHistoryEntry` |
**Key Insight**: Lower scores = MORE generally relevant (always useful in RAG); Higher scores = MORE specific (only useful in specialized queries).
---
### Template Specificity Scores
The `template_specificity` maps class relevance to 10 conversation templates:
| Template ID | Focus Area | Example High-Score Classes |
|-------------|------------|---------------------------|
| `archive_search` | Archives and archival holdings | `Archive`, `RecordSet`, `Fonds` |
| `museum_search` | Museums and exhibitions | `Museum`, `Gallery`, `Exhibition` |
| `library_search` | Libraries and catalogs | `Library`, `Catalog`, `BibliographicCollection` |
| `collection_discovery` | Collections and holdings | `Collection`, `Accession`, `Extent` |
| `person_research` | People and staff | `PersonProfile`, `Staff`, `Role` |
| `location_browse` | Geographic information | `Location`, `Address`, `GeoCoordinates` |
| `identifier_lookup` | Identifiers (ISIL, Wikidata) | `Identifier`, `GHCID`, `ISIL` |
| `organizational_change` | History and changes | `ChangeEvent`, `Founding`, `Merger` |
| `digital_platform` | Online resources | `DigitalPlatform`, `Website`, `API` |
| `general_heritage` | Fallback/general | Uses `specificity_score` directly |
---
## Examples
### Example 1: Universal Class (Low Specificity)
```yaml
# modules/classes/HeritageCustodian.yaml
classes:
HeritageCustodian:
description: >-
Base class for all heritage custodian institutions.
annotations:
specificity_score: 0.15
specificity_rationale: >-
Universal base class relevant in virtually all heritage contexts.
Every query about heritage institutions implicitly involves this class.
template_specificity:
archive_search: 0.65
museum_search: 0.65
library_search: 0.65
collection_discovery: 0.70
person_research: 0.70
location_browse: 0.75
identifier_lookup: 0.70
organizational_change: 0.75
digital_platform: 0.70
general_heritage: 0.15
```
### Example 2: Domain-Specific Class (High Specificity)
```yaml
# modules/classes/Archive.yaml
classes:
Archive:
is_a: HeritageCustodian
description: >-
An archive institution holding historical records and documents.
annotations:
specificity_score: 0.70
specificity_rationale: >-
Domain-specific institution type. Highly relevant for archival research
but not needed for museum or library queries.
template_specificity:
archive_search: 0.95
museum_search: 0.20
library_search: 0.25
collection_discovery: 0.75
person_research: 0.40
location_browse: 0.65
identifier_lookup: 0.50
organizational_change: 0.60
digital_platform: 0.45
general_heritage: 0.70
```
### Example 3: Technical Class (Very High Specificity)
```yaml
# modules/classes/LinkedInConnectionExtraction.yaml
classes:
LinkedInConnectionExtraction:
description: >-
Technical class for extracting LinkedIn connection data.
annotations:
specificity_score: 0.95
specificity_rationale: >-
Internal extraction class with no semantic significance for end users.
Only relevant when specifically researching data extraction processes.
template_specificity:
archive_search: 0.05
museum_search: 0.05
library_search: 0.05
collection_discovery: 0.05
person_research: 0.40
location_browse: 0.05
identifier_lookup: 0.10
organizational_change: 0.05
digital_platform: 0.15
general_heritage: 0.95
```
---
## Score Assignment Guidelines
### Factors That LOWER Specificity Score
| Factor | Impact | Example |
|--------|--------|---------|
| Base/parent class | -0.20 to -0.30 | `HeritageCustodian` is parent of all |
| Used in identifiers | -0.10 to -0.15 | `CustodianName` used in GHCID |
| Geographic component | -0.10 to -0.15 | `Location` needed for all institutions |
| Universal attribute | -0.10 to -0.15 | `Provenance` applies to all data |
### Factors That RAISE Specificity Score
| Factor | Impact | Example |
|--------|--------|---------|
| Institution type | +0.30 to +0.40 | `Archive`, `Museum`, `Library` |
| Technical/extraction | +0.30 to +0.40 | `LinkedInConnectionExtraction` |
| Event subtype | +0.20 to +0.30 | `Merger`, `Founding`, `Closure` |
| Domain terminology | +0.15 to +0.25 | `Fonds`, `FindingAid`, `RecordSet` |
### Cross-Class Consistency Rules
1. **Inheritance**: Child classes should have equal or higher specificity than parents
2. **Siblings**: Classes at same hierarchy level should have similar base scores
3. **Competing types**: Institution types should reduce each other's template scores
```yaml
# CORRECT: Archive (0.70) inherits from HeritageCustodian (0.15)
Archive:
is_a: HeritageCustodian # Parent: 0.15
annotations:
specificity_score: 0.70 # Child: 0.70 >= 0.15 ✓
# WRONG: Child less specific than parent
Archive:
is_a: HeritageCustodian # Parent: 0.15
annotations:
specificity_score: 0.10 # Child: 0.10 < 0.15
```
---
## Validation Rules
### Required Validations
1. **Range Check**: `0.0 <= specificity_score <= 1.0`
2. **Rationale Present**: `specificity_rationale` must not be empty
3. **Inheritance Consistency**: Child score >= parent score
4. **Template Score Range**: All template scores must be 0.0-1.0
### Recommended Validations
1. **No Orphan Scores**: Every class should have annotations (warn if missing)
2. **Score Distribution**: Flag if >50% of classes have same score (lack of differentiation)
3. **Template Coverage**: Warn if template_specificity omits common templates
### Validation Script
```python
# scripts/validate_specificity_scores.py
from linkml_runtime import SchemaView
from pathlib import Path
import sys
REQUIRED_TEMPLATES = [
"archive_search", "museum_search", "library_search",
"collection_discovery", "person_research", "location_browse",
"identifier_lookup", "organizational_change", "digital_platform",
"general_heritage"
]
def validate_specificity_scores(schema_path: Path) -> list[str]:
"""Validate all specificity score annotations."""
errors = []
schema = SchemaView(str(schema_path))
for class_name in schema.all_classes():
cls = schema.get_class(class_name)
# Check required annotations
score = cls.annotations.get("specificity_score")
rationale = cls.annotations.get("specificity_rationale")
if score is None:
errors.append(f"{class_name}: Missing specificity_score")
continue
# Validate score range
try:
score_val = float(score.value)
if not 0.0 <= score_val <= 1.0:
errors.append(f"{class_name}: Score {score_val} out of range [0.0, 1.0]")
except (ValueError, TypeError):
errors.append(f"{class_name}: Invalid score value: {score.value}")
# Check rationale
if rationale is None or not rationale.value.strip():
errors.append(f"{class_name}: Missing or empty specificity_rationale")
# Check inheritance consistency
if cls.is_a:
parent = schema.get_class(cls.is_a)
parent_score = parent.annotations.get("specificity_score")
if parent_score and float(score.value) < float(parent_score.value):
errors.append(
f"{class_name}: Score {score.value} < parent {cls.is_a} score {parent_score.value}"
)
return errors
if __name__ == "__main__":
schema_path = Path("schemas/20251121/linkml/01_custodian_name.yaml")
errors = validate_specificity_scores(schema_path)
if errors:
print("Validation errors:")
for error in errors:
print(f" - {error}")
sys.exit(1)
else:
print("All specificity scores valid!")
sys.exit(0)
```
---
## Anti-Patterns
### What NOT to Do
| Anti-Pattern | Why It's Wrong | Correct Approach |
|--------------|----------------|------------------|
| Score without rationale | No audit trail for decisions | Always include rationale |
| All scores = 0.5 | No differentiation, useless for filtering | Differentiate based on semantics |
| Child < parent score | Violates specificity inheritance | Child should be equal or more specific |
| Template score > 1.0 | Invalid score value | Keep all scores in [0.0, 1.0] |
| Empty rationale | Fails validation, no documentation | Write meaningful rationale |
### Example of Incorrect Annotation
```yaml
# WRONG - Multiple issues
classes:
Archive:
annotations:
specificity_score: 1.5 # Out of range!
specificity_rationale: "" # Empty rationale!
template_specificity:
archive_search: 0.95
# Missing other templates - incomplete coverage
```
### Example of Correct Annotation
```yaml
# CORRECT
classes:
Archive:
annotations:
specificity_score: 0.70
specificity_rationale: >-
Domain-specific institution type for archives. Highly relevant
for archival research queries but less useful for museum or
library-focused questions.
template_specificity:
archive_search: 0.95
museum_search: 0.20
library_search: 0.25
collection_discovery: 0.75
person_research: 0.40
location_browse: 0.65
identifier_lookup: 0.50
organizational_change: 0.60
digital_platform: 0.45
general_heritage: 0.70
```
---
## Migration Checklist
When adding specificity scores to existing classes:
### Phase 1: Assessment
- [ ] Count classes without annotations
- [ ] Identify class hierarchy (parents → children order)
- [ ] Review existing descriptions for scoring hints
### Phase 2: Annotation
- [ ] Start with root classes (lowest specificity)
- [ ] Work down hierarchy (increasing specificity)
- [ ] Assign template scores based on domain alignment
- [ ] Write rationale explaining score decisions
### Phase 3: Validation
- [ ] Run validation script
- [ ] Check inheritance consistency
- [ ] Verify score distribution (not all same value)
- [ ] Review edge cases (technical classes, mixins)
### Phase 4: Documentation
- [ ] Update class count in plan documents
- [ ] Document any scoring decisions that were difficult
- [ ] Create PR with all changes
---
## Related Rules
- **Rule 0**: LinkML Schemas Are the Single Source of Truth
- **Rule 4**: Technical Classes Are Excluded from Visualizations
- **Rule 13**: Custodian Type Annotations on LinkML Schema Elements
---
## References
- `docs/plan/specificity_score/README.md` - System overview
- `docs/plan/specificity_score/04-prompt-conversation-templates.md` - Template definitions
- `docs/plan/specificity_score/06-uml-visualization.md` - UML filtering integration
---
## Changelog
| Date | Version | Change |
|------|---------|--------|
| 2025-01-04 | 1.0.0 | Initial rule created for specificity score system |

View file

@ -0,0 +1,223 @@
# Rule: LinkML Type/Types File Naming Convention
**Version**: 1.0.0
**Created**: 2025-01-04
**Status**: Active
**Applies to**: `schemas/20251121/linkml/modules/classes/`
---
## Rule Statement
When creating class hierarchies that replace enums in LinkML schemas, follow the **Type/Types** naming pattern to clearly distinguish abstract base classes from their concrete subclasses.
---
## Pattern Definition
| File Name Pattern | Purpose | Contains |
|-------------------|---------|----------|
| `[Entity]Type.yaml` (singular) | Abstract base class | Single abstract class defining the type taxonomy |
| `[Entity]Types.yaml` (plural) | Concrete subclasses | All concrete subclasses inheriting from the base |
---
## Class Naming Convention
🚨 **CRITICAL**: Follow these naming rules for classes within the files:
1. **Abstract Base Class** (`[Entity]Type.yaml`):
* **MUST** end with `Type` suffix.
* *Example*: `DigitalPlatformType`, `WarehouseType`.
2. **Concrete Subclasses** (`[Entity]Types.yaml`):
* **MUST NOT** end with `Type` suffix.
* Use the natural entity name.
* *Example*: `DigitalLibrary` (✅), `CentralDepot` (✅).
* *Incorrect*: `DigitalLibraryType` (❌), `CentralDepotType` (❌).
**Rationale**: The file context (`WarehouseTypes.yaml`) already establishes these are types. Repeating "Type" in the class name is redundant and makes the class name less natural when used as an object instance (e.g., "This object is a CentralDepot").
---
## Examples
### Current Implementations
| Base Class File | Subclasses File | Subclass Count | Description |
|-----------------|-----------------|----------------|-------------|
| `DigitalPlatformType.yaml` | `DigitalPlatformTypes.yaml` | 69 | Digital platform type taxonomy |
| `WebPortalType.yaml` | `WebPortalTypes.yaml` | ~15 | Web portal type taxonomy |
| `CustodianType.yaml` | `CustodianTypes.yaml` | 19 | Heritage custodian type taxonomy (GLAMORCUBESFIXPHDNT) |
| `DataServiceEndpointType.yaml` | `DataServiceEndpointTypes.yaml` | 7 | API/data service endpoint types |
### File Structure Example
```
modules/classes/
├── DigitalPlatformType.yaml # Abstract base class
├── DigitalPlatformTypes.yaml # 69 concrete subclasses
├── WebPortalType.yaml # Abstract base class
├── WebPortalTypes.yaml # ~15 concrete subclasses
├── CustodianType.yaml # Abstract base class
└── CustodianTypes.yaml # 19 concrete subclasses
```
---
## Import Pattern
The subclasses file MUST import the base class file:
```yaml
# In DigitalPlatformTypes.yaml (subclasses file)
id: https://w3id.org/heritage-custodian/linkml/digital_platform_types
name: digital_platform_types
imports:
- linkml:types
- ./DigitalPlatformType # Import base class (singular)
classes:
DigitalLibrary:
is_a: DigitalPlatformType # Inherit from base
description: >-
A digital library platform providing access to digitized collections.
class_uri: schema:DigitalDocument
DigitalArchive:
is_a: DigitalPlatformType
description: >-
A digital archive for born-digital or digitized archival materials.
```
---
## Slot Range Pattern
When other classes reference the type taxonomy, use the **base class** (singular) as the range:
```yaml
# In DigitalPlatform.yaml
imports:
- ./DigitalPlatformType # Import base class for range
- ./DigitalPlatformTypes # Import subclasses for validation
classes:
DigitalPlatform:
slots:
- platform_type
slot_usage:
platform_type:
range: DigitalPlatformType # Use base class as range
description: >-
The type of digital platform. Value must be one of the
concrete subclasses defined in DigitalPlatformTypes.
```
---
## Anti-Patterns
### What NOT to Do
| Anti-Pattern | Why It's Wrong | Correct Alternative |
|--------------|----------------|---------------------|
| `DigitalPlatformTypeBase.yaml` | "Base" suffix is redundant; singular "Type" already implies base class | `DigitalPlatformType.yaml` |
| `DigitalPlatformTypeClasses.yaml` | "Classes" is less intuitive than "Types" for a type taxonomy | `DigitalPlatformTypes.yaml` |
| All types in single file | Large files are hard to navigate; separation clarifies architecture | Split into Type.yaml + Types.yaml |
| `DigitalPlatformEnum.yaml` | Enums lack extensibility; class hierarchies are preferred | Use class hierarchy pattern |
| `CentralDepotType` (Class Name) | Redundant "Type" suffix on concrete subclass | `CentralDepot` |
### Example of Incorrect Naming
```yaml
# WRONG - Don't use "Base" suffix
# File: DigitalPlatformTypeBase.yaml
classes:
DigitalPlatformTypeBase: # Redundant "Base"
abstract: true
```
```yaml
# CORRECT - Use singular "Type"
# File: DigitalPlatformType.yaml
classes:
DigitalPlatformType: # Clean, clear naming
abstract: true
```
---
## Rationale
1. **Clarity**: "Type" (singular) = one abstract concept; "Types" (plural) = many concrete implementations
2. **Discoverability**: Related files appear adjacent in alphabetical directory listings
3. **Consistency**: Follows established pattern across entire schema
4. **Semantics**: Mirrors natural language ("a platform type" vs "the platform types")
5. **Scalability**: Easy to add new types without modifying base class file
---
## Migration Checklist
When renaming existing files to follow this convention:
### Pre-Migration
- [ ] Identify all files referencing the old name
- [ ] Create backup or ensure version control is clean
- [ ] Document the old → new name mapping
### File Rename
- [ ] Rename file: `[Entity]TypeBase.yaml``[Entity]Type.yaml`
- [ ] Update `id:` field in renamed file
- [ ] Update `name:` field in renamed file
- [ ] Update class name inside the file
- [ ] Update all internal documentation references
### Update References
- [ ] Update imports in `[Entity]Types.yaml` (subclasses file)
- [ ] Update `is_a:` in all subclasses
- [ ] Update imports in consuming classes (e.g., `DigitalPlatform.yaml`)
- [ ] Update `range:` in slot definitions
- [ ] Update any `slot_usage:` references
### Documentation
- [ ] Update AGENTS.md if convention is documented there
- [ ] Update any design documents
- [ ] Add migration note to changelog
### Verification
```bash
# Verify no references to old name remain
grep -r "OldClassName" schemas/20251121/linkml/
# Verify new file exists
ls -la schemas/20251121/linkml/modules/classes/NewClassName.yaml
# Verify old file is removed
ls -la schemas/20251121/linkml/modules/classes/OldClassName.yaml # Should fail
# Validate schema
linkml-validate schemas/20251121/linkml/01_custodian_name.yaml
```
---
## Related Rules
- **Rule 0**: LinkML Schemas Are the Single Source of Truth
- **Rule 9**: Enum-to-Class Promotion - Single Source of Truth
---
## Changelog
| Date | Version | Change |
|------|---------|--------|
| 2025-01-04 | 1.0.0 | Initial rule created after DigitalPlatformType refactoring |

View file

@ -0,0 +1,332 @@
# Rule: LinkML "Types" Classes Define SPARQL Template Variables
**Created**: 2025-01-08
**Status**: Active
**Applies to**: SPARQL template design, RAG pipeline slot extraction
## Core Principle
LinkML classes following the `*Type` / `*Types` naming pattern (Rule 0b) serve as the **single source of truth** for valid values in SPARQL template slot variables.
When designing SPARQL templates, **extract variables from the schema** rather than hardcoding values. This enables:
- **Flexibility**: Same template works across all institution types
- **Extensibility**: Adding new types to schema automatically extends templates
- **Consistency**: Variable values always align with ontology
- **Multilingual support**: Type labels in multiple languages available from schema
## Template Variable Sources
### 1. Institution Type Variable (`institution_type`)
**Schema Source**: `CustodianType` abstract class and its 19 subclasses
| Subclass | Code | Description |
|----------|------|-------------|
| `ArchiveOrganizationType` | A | Archives |
| `BioCustodianType` | B | Botanical gardens, zoos |
| `CommercialOrganizationType` | C | Corporations |
| `DigitalPlatformType` | D | Digital platforms |
| `EducationProviderType` | E | Universities, schools |
| `FeatureCustodianType` | F | Geographic features |
| `GalleryType` | G | Art galleries |
| `HolySacredSiteType` | H | Religious sites |
| `IntangibleHeritageGroupType` | I | Folklore organizations |
| `LibraryType` | L | Libraries |
| `MuseumType` | M | Museums |
| `NonProfitType` | N | NGOs |
| `OfficialInstitutionType` | O | Government agencies |
| `PersonalCollectionType` | P | Private collectors |
| `ResearchOrganizationType` | R | Research centers |
| `HeritageSocietyType` | S | Historical societies |
| `TasteScentHeritageType` | T | Culinary heritage |
| `UnspecifiedType` | U | Unknown |
| `MixedCustodianType` | X | Multiple types |
**Template Slot Definition**:
```yaml
slots:
institution_type:
type: institution_type
required: true
schema_source: "modules/classes/CustodianType.yaml"
# Valid values derived from CustodianType subclasses
```
### 2. Geographic Scope Variable (`location`)
Geographic scope is a **hierarchical variable** with three levels:
| Level | Schema Source | SPARQL Property | Example |
|-------|---------------|-----------------|---------|
| Country | ISO 3166-1 alpha-2 | `hc:countryCode` | NL, DE, BE |
| Subregion | ISO 3166-2 | `hc:subregionCode` | NL-NH, DE-BY |
| Settlement | GeoNames | `hc:settlementName` | Amsterdam, Berlin |
**Template Slot Definition**:
```yaml
slots:
location:
type: location
required: true
schema_source:
- "modules/enums/CountryCodeEnum.yaml" (if exists)
- "data/reference/geonames.db"
resolution_order: [settlement, subregion, country]
# SlotExtractor detects which level user specified
```
### 3. Digital Platform Type Variable (`platform_type`)
**Schema Source**: `DigitalPlatformType` abstract class and 69+ subclasses in `DigitalPlatformTypes.yaml`
Categories include:
- REPOSITORY: DigitalLibrary, DigitalArchivePlatform, OpenAccessRepository
- AGGREGATOR: Europeana-type aggregators, BibliographicDatabasePlatform
- DISCOVERY: WebPortal, OnlineDatabase, OpenDataPortal
- VIRTUAL_HERITAGE: VirtualMuseum, VirtualLibrary, OnlineArtGallery
- RESEARCH: DisciplinaryRepository, PrePrintServer, GenealogyDatabase
- ...and many more
**Template Slot Definition**:
```yaml
slots:
platform_type:
type: platform_type
required: false
schema_source: "modules/classes/DigitalPlatformTypes.yaml"
```
## Template Design Pattern
### Before (Hardcoded - WRONG)
```yaml
# Separate templates for each institution type - DO NOT DO THIS
templates:
count_museums_in_region:
sparql: |
SELECT (COUNT(?s) AS ?count) WHERE {
?s hc:institutionType "M" ;
hc:subregionCode "{{ region }}" .
}
count_archives_in_region:
sparql: |
SELECT (COUNT(?s) AS ?count) WHERE {
?s hc:institutionType "A" ;
hc:subregionCode "{{ region }}" .
}
```
### After (Parameterized - CORRECT)
```yaml
# Single template with institution_type as variable
templates:
count_institutions_by_type_location:
description: "Count heritage institutions by type and location"
slots:
institution_type:
type: institution_type
required: true
schema_source: "modules/classes/CustodianType.yaml"
location:
type: location
required: true
resolution_order: [settlement, subregion, country]
# Multiple SPARQL variants based on location resolution
sparql_template: |
SELECT (COUNT(DISTINCT ?institution) AS ?count) WHERE {
?institution a hcc:Custodian ;
hc:institutionType "{{ institution_type }}" ;
hc:settlementName "{{ location }}" .
}
sparql_template_region: |
SELECT (COUNT(DISTINCT ?institution) AS ?count) WHERE {
?institution a hcc:Custodian ;
hc:institutionType "{{ institution_type }}" ;
hc:subregionCode "{{ location }}" .
}
sparql_template_country: |
SELECT (COUNT(DISTINCT ?institution) AS ?count) WHERE {
?institution a hcc:Custodian ;
hc:institutionType "{{ institution_type }}" ;
hc:countryCode "{{ location }}" .
}
```
## SlotExtractor Responsibilities
The SlotExtractor module must:
1. **Detect institution type** from user query:
- "musea" → M (Dutch plural)
- "archives" → A (English)
- "bibliotheken" → L (Dutch)
- Use synonyms from `_slot_types.institution_type.synonyms`
2. **Detect location level** from user query:
- "Amsterdam" → settlement level → use `sparql_template`
- "Noord-Holland" → subregion level → use `sparql_template_region`
- "Nederland" → country level → use `sparql_template_country`
3. **Normalize values** to schema-compliant codes:
- "Noord-Holland" → "NL-NH"
- "museum" → "M"
## Dynamic Label Resolution (NO HARDCODING)
**CRITICAL**: Labels MUST be resolved at runtime from schema/reference files, NOT hardcoded in templates or code.
### Institution Type Labels
The `CustodianType` classes contain multilingual labels via `type_label` slot:
```yaml
MuseumType:
type_label:
- "Museum"@en
- "museum"@nl
- "Museum"@de
- "museo"@es
```
**Label Resolution Chain**:
1. Load `CustodianType.yaml` and subclass files
2. Parse `type_label` slot for each type code (M, L, A, etc.)
3. Build runtime label dictionary keyed by code + language
### Geographic Labels
Subregion/settlement names come from **reference data files**, not hardcoded:
```yaml
label_sources:
- "data/reference/iso_3166_2_{country}.json" # e.g., iso_3166_2_nl.json
- "data/reference/geonames.db" # GeoNames database
- "data/reference/admin1CodesASCII.txt" # GeoNames fallback
```
**Example**: `iso_3166_2_nl.json` contains:
```json
{
"provinces": {
"Noord-Holland": "NH",
"Zuid-Holland": "ZH",
"North Holland": "NH" // English synonym
}
}
```
### SlotExtractor Label Loading
```python
class SlotExtractor:
def __init__(self, schema_path: str, reference_path: str):
# Load institution type labels from schema
self.type_labels = self._load_custodian_type_labels(schema_path)
# Load geographic labels from reference files
self.subregion_labels = self._load_subregion_labels(reference_path)
def _load_custodian_type_labels(self, schema_path: str) -> dict:
"""Load multilingual labels from CustodianType schema files."""
# Parse YAML, extract type_label slots
# Return: {"M": {"nl": "musea", "en": "museums"}, ...}
def _load_subregion_labels(self, reference_path: str) -> dict:
"""Load subregion labels from ISO 3166-2 JSON files."""
# Load iso_3166_2_nl.json, iso_3166_2_de.json, etc.
# Return: {"NL-NH": {"nl": "Noord-Holland", "en": "North Holland"}, ...}
```
### UI Template Interpolation
```yaml
ui_template:
nl: "Er zijn {{ count }} {{ institution_type_nl }} in {{ location }}."
en: "There are {{ count }} {{ institution_type_en }} in {{ location }}."
```
The RAG pipeline populates `institution_type_nl` / `institution_type_en` from dynamically loaded labels:
```python
# At runtime, NOT hardcoded
template_context["institution_type_nl"] = slot_extractor.type_labels[type_code]["nl"]
template_context["institution_type_en"] = slot_extractor.type_labels[type_code]["en"]
```
## Adding New Types
When the schema gains new institution types:
1. **No template changes needed** - parameterized templates automatically support new types
2. **Update synonyms** in `_slot_types.institution_type.synonyms` for NLP recognition
3. **Labels auto-discovered** from schema files - no code changes needed
## Anti-Patterns (FORBIDDEN)
### Hardcoded Labels in Templates
```yaml
# WRONG - Hardcoded labels
labels:
NL-NH: {nl: "Noord-Holland", en: "North Holland"}
NL-ZH: {nl: "Zuid-Holland", en: "South Holland"}
```
```python
# WRONG - Hardcoded labels in code
INSTITUTION_TYPE_LABELS_NL = {
"M": "musea", "L": "bibliotheken", ...
}
```
### Correct Approach
```yaml
# CORRECT - Reference to schema/data source
label_sources:
- "schemas/20251121/linkml/modules/classes/CustodianType.yaml"
- "data/reference/iso_3166_2_{country}.json"
```
```python
# CORRECT - Load labels at runtime
type_labels = load_labels_from_schema("CustodianType.yaml")
region_labels = load_labels_from_reference("iso_3166_2_nl.json")
```
**Why?**
1. **Single source of truth** - Labels defined once in schema/reference files
2. **Automatic sync** - Schema changes automatically propagate to UI
3. **Extensibility** - Adding new countries/types doesn't require code changes
4. **Multilingual** - All language variants come from same source
## Validation
Templates MUST validate slot values against schema:
```python
def validate_institution_type(value: str) -> bool:
"""Validate institution_type against CustodianType schema."""
valid_codes = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'X']
return value in valid_codes
```
## Related Rules
- **Rule 0b**: Type/Types file naming convention
- **Rule 13**: Custodian type annotations on LinkML schema elements
- **Rule 37**: Specificity score annotations for template filtering
## References
- Schema: `schemas/20251121/linkml/modules/classes/CustodianType.yaml`
- Types: `schemas/20251121/linkml/modules/classes/*Types.yaml`
- Enums: `schemas/20251121/linkml/modules/enums/InstitutionTypeCodeEnum.yaml`
- Templates: `data/sparql_templates.yaml`

View file

@ -0,0 +1,323 @@
# Rule: Verified Ontology Mapping Requirements
## Overview
All LinkML slot files MUST include ontology mappings that are **verified against the actual ontology files** in `data/ontology/`. Never use hallucinated or assumed ontology terms.
---
## 1. Source Ontology Files
The following ontology files are available for verification:
| Prefix | Namespace | File | Key Properties |
|--------|-----------|------|----------------|
| `crm:` | `http://www.cidoc-crm.org/cidoc-crm/` | `CIDOC_CRM_v7.1.3.rdf` | P1, P2, P22, P23, P70, P82, etc. |
| `rico:` | `https://www.ica.org/standards/RiC/ontology#` | `RiC-O_1-1.rdf` | hasOrHadHolder, isOrWasPartOf, etc. |
| `prov:` | `http://www.w3.org/ns/prov#` | `prov.ttl` | wasInfluencedBy, wasDerivedFrom, used, etc. |
| `schema:` | `http://schema.org/` | `schemaorg.owl` | url, name, description, etc. |
| `dcterms:` | `http://purl.org/dc/terms/` | `dcterms.rdf` | format, rights, source, etc. |
| `skos:` | `http://www.w3.org/2004/02/skos/core#` | `skos.rdf` | prefLabel, notation, inScheme, etc. |
| `foaf:` | `http://xmlns.com/foaf/0.1/` | `foaf.ttl` | page, homepage, name, etc. |
| `dcat:` | `http://www.w3.org/ns/dcat#` | `dcat3.ttl` | mediaType, downloadURL, etc. |
| `time:` | `http://www.w3.org/2006/time#` | `time.ttl` | hasBeginning, hasEnd, etc. |
| `org:` | `http://www.w3.org/ns/org#` | `org.rdf` | siteOf, hasSite, subOrganizationOf, etc. |
| `sosa:` | `http://www.w3.org/ns/sosa/` | `sosa.ttl` | madeBySensor, observes, etc. |
---
## 2. Required Header Documentation
Every slot file MUST include a header comment block with an ontology alignment table:
```yaml
# ==============================================================================
# LinkML Slot Definition: {slot_name}
# ==============================================================================
# {Brief description - one line}
#
# ONTOLOGY ALIGNMENT (verified against data/ontology/):
#
# | Ontology | Property | File/Line | Mapping | Notes |
# |---------------|-----------------------|----------------------|---------|------------------------------------|
# | **PROV-O** | `prov:used` | prov.ttl:1046-1057 | exact | Entity used by activity |
# | **PROV-O** | `prov:wasInfluencedBy`| prov.ttl:1099-1121 | broad | Parent property (subPropertyOf) |
#
# HIERARCHY: prov:used rdfs:subPropertyOf prov:wasInfluencedBy (line 1046)
#
# CREATED: YYYY-MM-DD
# UPDATED: YYYY-MM-DD - Description of changes
# ==============================================================================
```
---
## 3. Mapping Types
Use the correct mapping type based on semantic relationship:
| Mapping Type | Usage | Example |
|--------------|-------|---------|
| `slot_uri` | Primary RDF predicate for this slot | `slot_uri: prov:used` |
| `exact_mappings` | Semantically equivalent properties | `- schema:dateRetrieved` |
| `close_mappings` | Very similar but slightly different semantics | `- prov:wasGeneratedBy` |
| `broad_mappings` | Parent/broader properties (slot is subPropertyOf these) | `- prov:wasInfluencedBy` |
| `narrow_mappings` | Child/narrower properties (these are subPropertyOf slot) | `- prov:qualifiedUsage` |
| `related_mappings` | Conceptually related but different scope | `- dcterms:source` |
---
## 4. Hierarchy Discovery Process
### Step 1: Search for subPropertyOf relationships
```bash
# Find if our property is subPropertyOf something (-> broad_mapping)
grep -n "OUR_PROPERTY.*subPropertyOf\|subPropertyOf.*OUR_PROPERTY" data/ontology/*.ttl
# Find properties that are subPropertyOf our property (-> narrow_mappings)
grep -n "subPropertyOf.*OUR_PROPERTY" data/ontology/*.rdf
```
### Step 2: Document the hierarchy
When you find a hierarchy, document it in:
1. The header comment block (HIERARCHY line)
2. The appropriate mapping field (`broad_mappings` or `narrow_mappings`)
3. Inline comments with file/line references
---
## 5. Key Ontology Hierarchies Reference
### PROV-O (`prov.ttl`)
```
prov:wasInfluencedBy (parent of many)
├── prov:wasDerivedFrom
│ ├── prov:hadPrimarySource
│ ├── prov:wasQuotedFrom
│ └── prov:wasRevisionOf
├── prov:wasGeneratedBy
├── prov:used
├── prov:wasAssociatedWith
├── prov:wasAttributedTo
└── prov:wasInformedBy
prov:influenced (inverse direction)
├── prov:generated
└── prov:invalidated
```
### CIDOC-CRM (`CIDOC_CRM_v7.1.3.rdf`)
```
crm:P1_is_identified_by
├── crm:P48_has_preferred_identifier
└── crm:P168_place_is_defined_by
crm:P82_at_some_time_within
├── crm:P82a_begin_of_the_begin
└── crm:P82b_end_of_the_end
crm:P81_ongoing_throughout
├── crm:P81a_end_of_the_begin
└── crm:P81b_begin_of_the_end
crm:P67_refers_to
└── crm:P70_documents
```
### RiC-O (`RiC-O_1-1.rdf`)
```
rico:isOrWasUnderAuthorityOf
├── rico:hasOrHadManager
│ └── rico:hasOrHadHolder
└── (other authority relationships)
rico:hasOrHadPart
└── rico:containsOrContained
└── rico:containsTransitive
rico:isSuccessorOf
├── rico:hasAncestor
├── rico:resultedFromTheMergerOf
└── rico:resultedFromTheSplitOf
```
### Dublin Core Terms (`dcterms.rdf`)
```
dcterms:rights
└── dcterms:accessRights
```
### DCAT (`dcat3.ttl`)
```
dcterms:format
├── dcat:mediaType
├── dcat:compressFormat
└── dcat:packageFormat
```
### FOAF (`foaf.ttl`)
```
foaf:page
├── foaf:homepage
├── foaf:weblog
├── foaf:interest
├── foaf:workplaceHomepage
└── foaf:schoolHomepage
```
### Schema.org (`schemaorg.owl`)
```
schema:workFeatured
├── schema:workPerformed
└── schema:workPresented
```
---
## 6. Verification Commands
### Check if a property exists
```bash
grep -n "PROPERTY_NAME" data/ontology/FILE.ttl
```
### Find all subPropertyOf for a property
```bash
grep -B5 -A5 "subPropertyOf" data/ontology/FILE.ttl | grep -A5 -B5 "PROPERTY_NAME"
```
### Validate YAML after editing
```bash
python3 -c "import yaml; yaml.safe_load(open('FILENAME.yaml')); print('✅ valid')"
```
---
## 7. Complete Slot File Example
```yaml
# ==============================================================================
# LinkML Slot Definition: retrieved_through
# ==============================================================================
# To denote the specific method, protocol, or mechanism by which a resource
# or data was accessed, fetched, or collected.
#
# ONTOLOGY ALIGNMENT (verified against data/ontology/):
#
# | Ontology | Property | File/Line | Mapping | Notes |
# |------------|--------------------------|--------------------|---------|------------------------------------|
# | **PROV-O** | `prov:used` | prov.ttl:1046-1057 | exact | Entity used by activity |
# | **PROV-O** | `prov:wasInfluencedBy` | prov.ttl:1099-1121 | broad | Parent property (subPropertyOf) |
# | **PROV-O** | `prov:qualifiedUsage` | prov.ttl:788-798 | narrow | Qualified usage with details |
#
# HIERARCHY: prov:used rdfs:subPropertyOf prov:wasInfluencedBy (line 1046)
#
# CREATED: 2026-01-26
# UPDATED: 2026-02-03 - Added broad/narrow mappings, header documentation
# ==============================================================================
id: https://nde.nl/ontology/hc/slot/retrieved_through
name: retrieved_through
title: Retrieved Through
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
retrieved_through:
slot_uri: prov:used
description: |
To denote the specific method, protocol, or mechanism by which a resource or data was accessed, fetched, or collected.
range: string
exact_mappings:
- prov:used # prov.ttl:1046-1057
broad_mappings:
- prov:wasInfluencedBy # prov.ttl:1099-1121 - parent (used subPropertyOf wasInfluencedBy)
narrow_mappings:
- prov:qualifiedUsage # prov.ttl:788-798 - qualified form with details
comments:
- |
**ONTOLOGY ALIGNMENT** (verified against data/ontology/):
| Ontology | Property | Line | Mapping | Notes |
|----------|----------|------|---------|-------|
| PROV-O | prov:used | 1046-1057 | exact | Entity used by activity |
| PROV-O | prov:wasInfluencedBy | 1099-1121 | broad | Parent property |
| PROV-O | prov:qualifiedUsage | 788-798 | narrow | Qualified usage |
```
---
## 8. Anti-Patterns
### ❌ WRONG: Hallucinated ontology terms
```yaml
exact_mappings:
- prov:retrievedWith # ❌ Does not exist in PROV-O!
- rico:wasObtainedBy # ❌ Not a real RiC-O property!
```
### ❌ WRONG: No verification references
```yaml
exact_mappings:
- prov:used # No file/line reference - how do we know this is correct?
```
### ✅ CORRECT: Verified with references
```yaml
exact_mappings:
- prov:used # prov.ttl:1046-1057 - "Entity used by activity"
broad_mappings:
- prov:wasInfluencedBy # prov.ttl:1099-1121 - parent property (verified subPropertyOf)
```
---
## 9. Validation Checklist
Before completing a slot file, verify:
- [ ] Header comment block includes ontology alignment table
- [ ] All mappings verified against actual ontology files in `data/ontology/`
- [ ] File/line references provided for each mapping
- [ ] `rdfs:subPropertyOf` relationships checked for broad/narrow mappings
- [ ] HIERARCHY line documents any property hierarchies
- [ ] No hallucinated or assumed ontology terms
- [ ] YAML validates correctly
---
## See Also
- Rule 1: Ontology Files Are Your Primary Reference (`no-hallucinated-ontology-references.md`)
- Rule: Verified Ontology Terms (`verified-ontology-terms.md`)
- Ontology files: `data/ontology/`
---
**Version**: 1.0.0
**Created**: 2026-02-03
**Author**: OpenCODE

View file

@ -0,0 +1,68 @@
# 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.**

View file

@ -0,0 +1,162 @@
# Wikidata Mapping Discovery Rule
## Rule: Use Wikidata MCP to Discover and Verify Mappings Carefully
When adding Wikidata mappings to class files, you MUST verify the semantic meaning and relationship before adding any mapping.
### 🚨 CRITICAL: Always Verify Before Adding
**NEVER add a Wikidata QID without verifying:**
1. What the entity actually IS (not just the label)
2. That it's the SAME TYPE as your class (organization→organization, NOT organization→building)
3. That the semantic relationship makes sense
### Workflow
#### Step 1: VERIFY Existing Mappings First
Before trusting any existing mapping, verify it:
```sparql
SELECT ?item ?itemLabel ?itemDescription WHERE {
VALUES ?item { wd:Q22075301 wd:Q1643722 wd:Q185583 }
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
```
**Example of WRONG mappings found in codebase:**
| QID | Label | Was Mapped To | WHY WRONG |
|-----|-------|---------------|-----------|
| Q22075301 | textile artwork | FacultyPaperCollection | Not related at all! |
| Q1643722 | building in Vienna | UniversityAdministrativeFonds | Not an archival concept! |
| Q185583 | candy | AcademicStudentRecordSeries | Completely unrelated! |
#### Step 2: Search for Candidates
Search for relevant Wikidata entities by keyword or hierarchy:
```sparql
SELECT ?item ?itemLabel ?itemDescription WHERE {
?item wdt:P279 wd:Q166118 . # subclasses of "archives"
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
```
#### Step 3: VERIFY Each Candidate
For EVERY candidate found, verify:
1. **Read the description** - does it match your class?
2. **Check instance of (P31)** - is it the same type?
3. **Check subclass of (P279)** - is it in a relevant hierarchy?
```sparql
SELECT ?item ?itemLabel ?itemDescription ?instanceLabel ?subclassLabel WHERE {
VALUES ?item { wd:Q9388534 }
OPTIONAL { ?item wdt:P31 ?instance. }
OPTIONAL { ?item wdt:P279 ?subclass. }
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
```
#### Step 4: Confirm Semantic Relationship
Ask: **Would a domain expert agree this mapping makes sense?**
| Your Class | Wikidata Entity | Verdict |
|------------|-----------------|---------|
| FacultyPaperCollection | Q22075301 (textile artwork) | ❌ NO - completely unrelated |
| CampusDocumentationCollection | Q9388534 (archival collection) | ✅ YES - semantically related |
| AcademicArchive | Q27032435 (academic archive) | ✅ YES - exact match |
### Type Compatibility Rules
| Your Class Type | Valid Wikidata Types | Invalid Wikidata Types |
|-----------------|---------------------|------------------------|
| Organization | organization, institution | building, person, artwork |
| Record Set Type | collection, fonds, series | building, candy, textile |
| Event | activity, occurrence | organization, place |
| Type/Category | type, concept, class | specific instances |
### Common Mistakes to Avoid
❌ **WRONG: Adding any QID found in search without verification**
```
"Found Q1643722 in search results, adding it as mapping"
→ Result: Mapping a "building in Vienna" to "UniversityAdministrativeFonds"
```
✅ **CORRECT: Verify description and type before adding**
```
1. Search finds Q1643722
2. Verify: Q1643722 = "building in Vienna, Austria"
3. Check: Is a building related to "UniversityAdministrativeFonds"?
4. Decision: NO - do not add this mapping
```
### When to Add Wikidata Mappings
Add Wikidata mappings ONLY when:
- [ ] You verified the entity's label AND description
- [ ] The entity is the same type as your class
- [ ] The semantic relationship is clear (exact, broader, narrower, related)
- [ ] A domain expert would agree the mapping makes sense
### When NOT to Add Wikidata Mappings
Do NOT add Wikidata mappings when:
- You only searched but didn't verify the description
- The entity type doesn't match (e.g., building vs. organization)
- The relationship is unclear or forced
- You're just trying to "fill in" mappings
### Mapping Categories
| Category | Wikidata Property | When to Use |
|----------|-------------------|-------------|
| `exact_mappings` | - | Same semantic meaning (rare!) |
| `close_mappings` | - | Similar but not identical |
| `broad_mappings` | P279 (subclass of) | Wikidata entity is BROADER |
| `narrow_mappings` | inverse of P279 | Wikidata entity is NARROWER |
| `related_mappings` | - | Non-hierarchical but semantically related |
### Checklist
For each Wikidata mapping:
- [ ] Verified entity label matches expected meaning
- [ ] Verified entity description confirms semantic fit
- [ ] Entity type is compatible with class type
- [ ] Mapping category (exact/close/broad/narrow/related) is correct
- [ ] A domain expert would agree this makes sense
### Example: Proper Verification for FacultyPaperCollection
**Step 1: What are we looking for?**
- Personal papers of faculty members
- Academic archives
- Manuscript collections
**Step 2: Search**
```sparql
SELECT ?item ?itemLabel ?itemDescription WHERE {
?item ?prop ?value .
?value bif:contains "'personal papers' OR 'faculty papers'" .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
} LIMIT 10
```
**Step 3: Verify candidates**
- If no exact match found → DO NOT add a wrong mapping
- Better to have NO Wikidata mapping than a WRONG one
**Step 4: Decision**
- No exact Wikidata match for "FacultyPaperCollection"
- Keep ontology mappings only (rico-rst:Fonds, bf:Archival)
- Do NOT add unrelated QIDs like Q22075301 (textile artwork!)
### Integration with Other Rules
This rule complements:
- **mapping-specificity-hypernym-rule.md**: Rules for choosing mapping type
- **wikidata-mapping-verification-rule.md**: Rules for verifying QIDs exist
- **verified-ontology-mapping-requirements.md**: General ontology verification

View file

@ -0,0 +1,97 @@
# Wikidata Mapping Verification Rule
## Rule: Always Verify Wikidata Mappings Using Authenticated Tools
When adding or reviewing Wikidata mappings (wd:Qxxxxx), you MUST verify the entity exists and is semantically appropriate using the available tools.
### Verification Methods (in order of preference)
#### 1. Wikidata SPARQL Query (Primary)
Use `wikidata-authenticated_execute_sparql` to verify entity labels and descriptions:
```sparql
SELECT ?item ?itemLabel ?itemDescription WHERE {
VALUES ?item { wd:Q38723 wd:Q2385804 }
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
```
#### 2. Wikidata Metadata API
Use `wikidata-authenticated_get_metadata` to retrieve label and description:
```
entity_id: Q38723
language: en
```
#### 3. Web Search as Fallback
If authenticated tools fail, use `linkup_linkup-search` or `exa_web_search_exa`:
```
query: "Wikidata Q38723 higher education institution"
```
### Common Errors to Avoid
| Error | Example | Fix |
|-------|---------|-----|
| **Wrong QID** | Q600875 (a person) for "academic program" | Q600134 (course) |
| **Too broad** | Q35120 (entity) for specific class | Use appropriate subclass |
| **Too narrow** | Q3918 (university) for general academic institution | Use Q38723 (higher education institution) |
| **Different concept** | Q416703 (museum building) for museum organization | Use appropriate organizational class |
### Verification Checklist
Before committing any Wikidata mapping:
- [ ] QID exists (not 404)
- [ ] Label matches expected concept
- [ ] Description confirms semantic alignment
- [ ] Mapping specificity follows Rule 63 (exact/broad/narrow/close)
- [ ] Not a duplicate of another mapping in the same class
### Example Verification
**WRONG:**
```yaml
# Q600875 was not verified - it's actually a person
close_mappings:
- wd:Q600875 # Juan Lindolfo Cuestas - President of Uruguay!
```
**CORRECT:**
```yaml
# Verified via SPARQL: Q600134 = "course"
close_mappings:
- wd:Q600134 # program of study, or unit of teaching
```
### SPARQL Query Template
```sparql
SELECT ?item ?itemLabel ?itemDescription ?itemAltLabel WHERE {
VALUES ?item { wd:Q38723 }
OPTIONAL { ?item skos:altLabel ?itemAltLabel. FILTER(LANG(?itemAltLabel) = "en") }
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
```
### Batch Verification
For multiple QIDs in a file, verify all at once:
```sparql
SELECT ?item ?itemLabel ?itemDescription WHERE {
VALUES ?item { wd:Q38723 wd:Q2385804 wd:Q600134 wd:Q3918 }
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
```
### Integration with Other Rules
This rule complements:
- **Rule 63** (mapping-specificity-hypernym-rule.md): Determines mapping type (exact/broad/narrow)
- **no-hallucinated-ontology-references.md**: Prevents fake ontology terms
- **verified-ontology-terms.md**: General ontology verification

Binary file not shown.

View file

@ -3,10 +3,10 @@
**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.
The file `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).
1. **Authoritative Source:** Always read and update `slot_fixes.yaml`.
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'`

View file

@ -4,7 +4,7 @@
## Summary
The `revision` key in `schemas/20251121/linkml/modules/slots/slot_fixes.yaml` is **IMMUTABLE**. AI agents MUST follow revision specifications exactly and are NEVER permitted to modify the content of revision entries.
The `revision` key in `slot_fixes.yaml` is **IMMUTABLE**. AI agents MUST follow revision specifications exactly and are NEVER permitted to modify the content of revision entries.
## The Authoritative Source

View file

@ -1,11 +1,6 @@
# Rule: Slot Naming Convention (Current Style)
🚨 **CRITICAL**: New LinkML slot names MUST follow the current verb-first naming style used in active slot files under `schemas/20251121/linkml/modules/slots/`.
## Status
- This rule **replaces** the deprecated RiC-O naming rule.
- The old `has_or_had_*` / `is_or_was_*` requirement is not mandatory for new slot names.
🚨 **CRITICAL**: New LinkML slot names MUST follow the current verb-first naming style used in active slot files under `modules/slots/`.
## Core Naming Rules
@ -47,7 +42,6 @@ Examples:
## Legacy Compatibility
- Existing `has_or_had_*` and `is_or_was_*` slots can remain where already established.
- For migrations, keep backward compatibility via `aliases` when renaming to current-style canonical names.
- Do not rename canonical slots opportunistically; follow migration plans and canonical-slot protection rules.

View file

@ -359,7 +359,7 @@ classes:
range: WikidataEnrichment
description: Full Wikidata enrichment data
ghcid:
range: GhcidBlock
range: GHCIDBlock
description: GHCID generation metadata with history
web_claims:
range: WebClaimsBlock
@ -1174,7 +1174,7 @@ classes:
# GHCID BLOCK - Heritage Custodian ID with history
# ---------------------------------------------------------------------------
GhcidBlock:
GHCIDBlock:
description: GHCID generation metadata and history
attributes:
ghcid_current:
@ -1203,7 +1203,7 @@ classes:
range: datetime
description: When GHCID was generated
ghcid_history:
range: GhcidHistoryEntry
range: GHCIDHistoryEntry
multivalued: true
inlined_as_list: true
description: History of GHCID changes
@ -1220,7 +1220,7 @@ classes:
range: boolean
description: Whether a collision was detected and resolved
GhcidHistoryEntry:
GHCIDHistoryEntry:
description: Historical GHCID entry with validity period
attributes:
ghcid:

View file

@ -75,8 +75,8 @@ imports:
- ./modules/classes/ProvenanceSources
- ./modules/classes/SourceRecord
# Identifiers Domain
- ./modules/classes/GhcidBlock
- ./modules/classes/GhcidHistoryEntry
- ./modules/classes/GHCIDBlock
- ./modules/classes/GHCIDHistoryEntry
- ./modules/classes/Identifier
# Location Domain
- ./modules/classes/CoordinateProvenance

View file

@ -66,7 +66,7 @@ instances:
examples:
- name: Private art collector
description: Individual maintaining personal art collection
ghcid_type: P # Personal collection
GHCID_type: P # Personal collection
- name: Family archivist
description: Individual preserving family papers and photographs
- name: Independent researcher

View file

@ -1143,13 +1143,13 @@
"category": "classes"
},
{
"name": "GhcidBlock",
"path": "modules/classes/GhcidBlock.yaml",
"name": "GHCIDBlock",
"path": "modules/classes/GHCIDBlock.yaml",
"category": "classes"
},
{
"name": "GhcidHistoryEntry",
"path": "modules/classes/GhcidHistoryEntry.yaml",
"name": "GHCIDHistoryEntry",
"path": "modules/classes/GHCIDHistoryEntry.yaml",
"category": "classes"
},
{

View file

@ -24,7 +24,7 @@ imports:
- ./CustodianNameConsensus
- ./DigitalPlatform
- ./GenealogiewerkbalkEnrichment
- ./GhcidBlock
- ./GHCIDBlock
- ./GoogleMapsEnrichment
- ./GoogleMapsPlaywrightEnrichment
- ./Identifier
@ -94,7 +94,7 @@ classes:
range: WikidataEnrichment
description: Full Wikidata enrichment data
ghcid:
range: GhcidBlock
range: GHCIDBlock
description: GHCID generation metadata with history
has_or_had_web_claim:
range: WebClaimsBlock

View file

@ -1,10 +1,10 @@
# GhcidBlock - GHCID generation metadata and history
# GHCIDBlock - GHCID generation metadata and history
# Extracted from custodian_source.yaml per Rule 38 (modular schema files)
# Extraction date: 2026-01-08
id: https://nde.nl/ontology/hc/classes/GhcidBlock
name: GhcidBlock
title: GhcidBlock
id: https://nde.nl/ontology/hc/classes/GHCIDBlock
name: GHCIDBlock
title: GHCIDBlock
prefixes:
linkml: https://w3id.org/linkml/
@ -17,12 +17,12 @@ imports:
- linkml:types
- ./GhcidHistoryEntry
- ./GHCIDHistoryEntry
- ./LocationResolution
default_range: string
classes:
GhcidBlock:
GHCIDBlock:
description: GHCID generation metadata and history
attributes:
ghcid_current:
@ -51,7 +51,7 @@ classes:
range: datetime
description: When GHCID was generated
ghcid_history:
range: GhcidHistoryEntry
range: GHCIDHistoryEntry
multivalued: true
inlined_as_list: true
description: History of GHCID changes

View file

@ -1,10 +1,10 @@
# GhcidHistoryEntry - Historical GHCID entry with validity period
# GHCIDHistoryEntry - Historical GHCID entry with validity period
# Extracted from custodian_source.yaml per Rule 38 (modular schema files)
# Extraction date: 2026-01-08
id: https://nde.nl/ontology/hc/classes/GhcidHistoryEntry
name: GhcidHistoryEntry
title: GhcidHistoryEntry
id: https://nde.nl/ontology/hc/classes/GHCIDHistoryEntry
name: GHCIDHistoryEntry
title: GHCIDHistoryEntry
prefixes:
linkml: https://w3id.org/linkml/
@ -20,7 +20,7 @@ imports:
default_range: string
classes:
GhcidHistoryEntry:
GHCIDHistoryEntry:
description: Historical GHCID entry with validity period
attributes:
ghcid:

View file

@ -1,6 +1,6 @@
id: https://nde.nl/ontology/hc/slot/ghcid
name: ghcid_slot
title: Ghcid Slot
title: GHCID Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/

View file

@ -359,7 +359,7 @@ classes:
range: WikidataEnrichment
description: Full Wikidata enrichment data
ghcid:
range: GhcidBlock
range: GHCIDBlock
description: GHCID generation metadata with history
web_claims:
range: WebClaimsBlock
@ -1174,7 +1174,7 @@ classes:
# GHCID BLOCK - Heritage Custodian ID with history
# ---------------------------------------------------------------------------
GhcidBlock:
GHCIDBlock:
description: GHCID generation metadata and history
attributes:
ghcid_current:
@ -1203,7 +1203,7 @@ classes:
range: datetime
description: When GHCID was generated
ghcid_history:
range: GhcidHistoryEntry
range: GHCIDHistoryEntry
multivalued: true
inlined_as_list: true
description: History of GHCID changes
@ -1220,7 +1220,7 @@ classes:
range: boolean
description: Whether a collision was detected and resolved
GhcidHistoryEntry:
GHCIDHistoryEntry:
description: Historical GHCID entry with validity period
attributes:
ghcid:

View file

@ -75,8 +75,8 @@ imports:
- ./modules/classes/ProvenanceSources
- ./modules/classes/SourceRecord
# Identifiers Domain
- ./modules/classes/GhcidBlock
- ./modules/classes/GhcidHistoryEntry
- ./modules/classes/GHCIDBlock
- ./modules/classes/GHCIDHistoryEntry
- ./modules/classes/Identifier
# Location Domain
- ./modules/classes/CoordinateProvenance

View file

@ -66,7 +66,7 @@ instances:
examples:
- name: Private art collector
description: Individual maintaining personal art collection
ghcid_type: P # Personal collection
GHCID_type: P # Personal collection
- name: Family archivist
description: Individual preserving family papers and photographs
- name: Independent researcher

View file

@ -3066,8 +3066,8 @@
"category": "class"
},
{
"name": "GhcidBlock",
"path": "modules/classes/GhcidBlock.yaml",
"name": "GHCIDBlock",
"path": "modules/classes/GHCIDBlock.yaml",
"category": "class"
},
{
@ -3076,8 +3076,8 @@
"category": "class"
},
{
"name": "GhcidHistoryEntry",
"path": "modules/classes/GhcidHistoryEntry.yaml",
"name": "GHCIDHistoryEntry",
"path": "modules/classes/GHCIDHistoryEntry.yaml",
"category": "class"
},
{

View file

@ -1,6 +1,6 @@
id: https://nde.nl/ontology/hc/classes/GhcidBlock
name: GhcidBlock
title: GhcidBlock
id: https://nde.nl/ontology/hc/classes/GHCIDBlock
name: GHCIDBlock
title: GHCIDBlock
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
@ -16,7 +16,7 @@ imports:
- linkml:types
# default_range: string
classes:
GhcidBlock:
GHCIDBlock:
description: "GHCID (Global Heritage Custodian Identifier) generation metadata\
\ and history. Contains current GHCID string, UUID variants (v5, v8), numeric\
\ form, generation timestamp, and history of GHCID changes due to relocations,\

View file

@ -1,6 +1,6 @@
id: https://nde.nl/ontology/hc/classes/GhcidHistoryEntry
name: GhcidHistoryEntry
title: GhcidHistoryEntry
id: https://nde.nl/ontology/hc/classes/GHCIDHistoryEntry
name: GHCIDHistoryEntry
title: GHCIDHistoryEntry
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
@ -12,7 +12,7 @@ imports:
- linkml:types
# default_range: string
classes:
GhcidHistoryEntry:
GHCIDHistoryEntry:
description: "Historical GHCID entry with validity period tracking the evolution\
\ of a Global Heritage Custodian Identifier over time, including reasons for\
\ changes and supersession relationships.\nOntology mapping rationale: - class_uri\

View file

@ -1,6 +1,6 @@
id: https://nde.nl/ontology/hc/slot/ghcid
name: ghcid_slot
title: Ghcid Slot
title: GHCID Slot
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/

View file

@ -359,7 +359,7 @@ classes:
range: WikidataEnrichment
description: Full Wikidata enrichment data
ghcid:
range: GhcidBlock
range: GHCIDBlock
description: GHCID generation metadata with history
web_claims:
range: WebClaimsBlock
@ -1174,7 +1174,7 @@ classes:
# GHCID BLOCK - Heritage Custodian ID with history
# ---------------------------------------------------------------------------
GhcidBlock:
GHCIDBlock:
description: GHCID generation metadata and history
attributes:
ghcid_current:
@ -1203,7 +1203,7 @@ classes:
range: datetime
description: When GHCID was generated
ghcid_history:
range: GhcidHistoryEntry
range: GHCIDHistoryEntry
multivalued: true
inlined_as_list: true
description: History of GHCID changes
@ -1220,7 +1220,7 @@ classes:
range: boolean
description: Whether a collision was detected and resolved
GhcidHistoryEntry:
GHCIDHistoryEntry:
description: Historical GHCID entry with validity period
attributes:
ghcid:

View file

@ -75,8 +75,8 @@ imports:
- ./modules/classes/ProvenanceSources
- ./modules/classes/SourceRecord
# Identifiers Domain
- ./modules/classes/GhcidBlock
- ./modules/classes/GhcidHistoryEntry
- ./modules/classes/GHCIDBlock
- ./modules/classes/GHCIDHistoryEntry
- ./modules/classes/Identifier
# Location Domain
- ./modules/classes/CoordinateProvenance

View file

@ -66,7 +66,7 @@ instances:
examples:
- name: Private art collector
description: Individual maintaining personal art collection
ghcid_type: P # Personal collection
GHCID_type: P # Personal collection
- name: Family archivist
description: Individual preserving family papers and photographs
- name: Independent researcher

View file

@ -1,5 +1,5 @@
{
"generated": "2026-02-15T18:20:10.034Z",
"generated": "2026-02-15T20:40:13.702Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2369,
"categoryCounts": {
@ -3066,8 +3066,8 @@
"category": "class"
},
{
"name": "GhcidBlock",
"path": "modules/classes/GhcidBlock.yaml",
"name": "GHCIDBlock",
"path": "modules/classes/GHCIDBlock.yaml",
"category": "class"
},
{
@ -3076,8 +3076,8 @@
"category": "class"
},
{
"name": "GhcidHistoryEntry",
"path": "modules/classes/GhcidHistoryEntry.yaml",
"name": "GHCIDHistoryEntry",
"path": "modules/classes/GHCIDHistoryEntry.yaml",
"category": "class"
},
{

View file

@ -1,6 +1,6 @@
id: https://w3id.org/nde/ontology/GLAM
name: GLAM
title: GLAM (Galleries, Libraries, Archives, and Museums)
title: GLAM Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
@ -12,31 +12,17 @@ imports:
- ../slots/has_score
classes:
GLAM:
description: Acronym for "Galleries, Libraries, Archives, and Museums" that refers to cultural institutions that have providing access to knowledge as their mission. GLAM institutions share common goals around preservation, access, and cultural heritage stewardship, though they differ in their primary materials and methodologies. The term is used to describe both the sector collectively and institutions that combine multiple GLAM functions.
is_a: ArchiveOrganizationType
class_uri: skos:Concept
description: Sector concept grouping galleries, libraries, archives, and museums.
broad_mappings:
- skos:Concept
slots:
- has_score
- identified_by
slot_usage:
identified_by:
- has_score
annotations:
skos:prefLabel: GLAM
skos:altLabel: Galleries, Libraries, Archives, and Museums, GLAM institution, Memory institution, Cultural heritage institution
sector_term: 'yes'
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
see_also:
- GalleryType
- LibraryType
- ArchiveOrganizationType
- MuseumType
- MixedType
comments:
- GLAM (de)
- GLAM (es)
- GLAM (fr)
- Sector-wide term encompassing heritage custodian types
- Sometimes extended to GLAMR (adding Research) or GLAMS (adding Science)
- Core concept for this ontology's domain scope
specificity_score: 0.35
specificity_rationale: Sector umbrella concept for memory institutions.
custodian_types: '["*"]'

View file

@ -1,23 +1,25 @@
id: https://nde.nl/ontology/hc/class/GLAMORCUBESFIXPHDNTCode
name: GLAMORCUBESFIXPHDNTCode
title: GLAMORCUBESFIXPHDNT Code
description: A code from the GLAMORCUBESFIXPHDNT taxonomy. MIGRATED from glamorcubesfixphdnt_code slot per Rule 53. Follows skos:Concept.
title: GLAMORCUBESFIXPHDNT Code Class
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_description
- ../slots/has_label
default_prefix: hc
- ../slots/has_description
classes:
GLAMORCUBESFIXPHDNTCode:
class_uri: skos:Concept
description: Controlled code value in the GLAMORCUBESFIXPHDNT taxonomy.
broad_mappings:
- skos:Concept
slots:
- has_label
- has_description
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.3
specificity_rationale: Taxonomy code class for institutional categorization.
custodian_types: '["*"]'

View file

@ -1,28 +1,24 @@
id: https://nde.nl/ontology/hc/class/GLEIFIdentifier
name: GLEIFIdentifier
title: GLEIF Identifier
description: Global Legal Entity Identifier Foundation (GLEIF) Registration Authority code. MIGRATED from gleif_ra_code slot per Rule 53. Follows gleif:RegistrationAuthorityCode.
title: GLEIF Identifier Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
gleif: https://www.gleif.org/ontology/Base/
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
default_prefix: hc
classes:
GLEIFIdentifier:
is_a: Identifier
class_uri: gleif:RegistrationAuthorityCode
description: A code identifying a registration authority in the GLEIF system.
class_uri: hc:GLEIFIdentifier
description: Identifier referencing a legal-entity record in the GLEIF ecosystem.
close_mappings:
- dcterms:Identifier
related_mappings:
- gleif:RegistrationAuthorityCode
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.3
specificity_rationale: External legal-entity identifier for governance and compliance linking.
custodian_types: '["*"]'

View file

@ -1,6 +1,6 @@
id: https://nde.nl/ontology/hc/classes/GhcidBlock
name: GhcidBlock
title: Ghcid Block Class
id: https://nde.nl/ontology/hc/classes/GHCIDBlock
name: GHCIDBlock
title: GHCID Block Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
@ -12,7 +12,7 @@ imports:
- linkml:types
- ../slots/identified_by
classes:
GhcidBlock:
GHCIDBlock:
class_uri: dcterms:Identifier
description: Identifier metadata block capturing assignment, variants, and lifecycle history for GHCID values.
exact_mappings:

View file

@ -1,32 +1,23 @@
id: https://nde.nl/ontology/hc/classes/GhcidHistoryEntry
name: GhcidHistoryEntry
title: GhcidHistoryEntry
id: https://nde.nl/ontology/hc/classes/GHCIDHistoryEntry
name: GHCIDHistoryEntry
title: GHCID History Entry Class
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#
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
# default_range: string
classes:
GhcidHistoryEntry:
description: "Historical GHCID entry with validity period tracking the evolution\
\ of a Global Heritage Custodian Identifier over time, including reasons for\
\ changes and supersession relationships.\nOntology mapping rationale: - class_uri\
\ is prov:Entity because this represents a historical state\n of an identifier\
\ entity with temporal validity bounds\n- close_mappings includes dcterms:Identifier\
\ for identifier semantics - related_mappings includes prov:Revision for versioning\
\ context"
GHCIDHistoryEntry:
class_uri: prov:Entity
description: Historical identifier state entry with temporal validity and change context.
close_mappings:
- dcterms:Identifier
related_mappings:
- prov:Revision
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
slots: []
specificity_score: 0.3
specificity_rationale: Identifier history component for lifecycle tracking.
custodian_types: '["*"]'

View file

@ -1,54 +1,46 @@
id: https://nde.nl/ontology/hc/class/gift-shop
name: gift_shop_class
title: GiftShop Class
imports:
- linkml:types
- ../enums/GiftShopTypeEnum
- ../enums/ProductCategoryEnum
- ../slots/accept
- ../slots/has_description
- ../slots/identified_by
- ../slots/has_label
- ../slots/has_quantity
- ../slots/has_range
- ../slots/has_revenue
- ../slots/has_score
- ../slots/has_supplier
- ../slots/derive_from
- ../slots/generated_by
- ../slots/managed_by
- ../slots/has_digital_platform
- ../slots/has_operating_hours
- ../slots/located_at
- ../slots/has_currency
- ../slots/refer_to
- ../slots/has_type
- ../slots/temporal_extent
id: https://nde.nl/ontology/hc/class/GiftShop
name: GiftShop
title: Gift Shop 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/
prov: http://www.w3.org/ns/prov#
gr: http://purl.org/goodrelations/v1#
org: http://www.w3.org/ns/org#
crm: http://www.cidoc-crm.org/cidoc-crm/
foaf: http://xmlns.com/foaf/0.1/
default_prefix: hc
imports:
- linkml:types
- ../enums/GiftShopTypeEnum
- ../slots/identified_by
- ../slots/has_label
- ../slots/has_description
- ../slots/has_type
- ../slots/located_at
- ../slots/has_digital_platform
- ../slots/accept
- ../slots/has_currency
- ../slots/has_range
- ../slots/has_revenue
- ../slots/has_supplier
- ../slots/has_operating_hours
- ../slots/managed_by
- ../slots/refer_to
- ../slots/has_quantity
- ../slots/temporal_extent
- ../slots/has_score
- ../slots/derive_from
- ../slots/generated_by
classes:
GiftShop:
is_a: ReconstructedEntity
class_uri: schema:Store
description: "Retail operation associated with a heritage custodian for selling merchandise,\nreproductions, books, and heritage-related products.\n\n**PURPOSE AND SCOPE**:\n\nMuseum gift shops, archive bookshops, and library retail spaces are important\nrevenue-generating operations that also serve educational and cultural missions:\n\n- **Revenue generation**: Support institutional operations through merchandise sales\n- **Mission extension**: Offer products related to collections and exhibitions\n- **Visitor experience**: Complete the visit with memorable takeaways\n- **Brand communication**: Extend institutional identity through products\n- **Educational outreach**: Books, educational materials, replicas for learning\n\n**PHYSICAL vs. DIGITAL PRESENCE**:\n\nGift shops can exist in multiple forms:\n\n1. **Physical shop** (on-site): Located within museum/archive building\n - Links to AuxiliaryPlace (physical location)\n - Has opening_hours, accept (PaymentMethod)\n\
\ \n2. **Physical shop** (separate): Stand-alone retail location\n - Links to AuxiliaryPlace with type RETAIL_SPACE\n - May have separate street address, hours\n \n3. **Online shop** (e-commerce): Web-based retail platform\n - Links to AuxiliaryDigitalPlatform with type WEBSHOP\n - Has platform_url, shipping policies\n \n4. **Hybrid**: Both physical and online presence\n - Multiple links to AuxiliaryPlace AND AuxiliaryDigitalPlatform\n\n**SCHEMA.ORG ALIGNMENT**:\n\n`schema:Store` - \"A retail good store.\"\n\nKey properties:\n- `schema:openingHours` - Operating hours\n- `schema:acceptedPaymentMethod` - Payment options\n- `schema:priceRange` - Price level indication\n- `schema:currenciesAccepted` - Currency codes\n\n**GoodRelations Integration**:\n\nFor detailed product/offer modeling, GiftShop can link to:\n- `gr:Offering` - Specific product offers\n- `gr:BusinessEntity` - Shop as business entity\n- `gr:PaymentMethod` - Payment options\n\n**RELATIONSHIP TO CUSTODIAN\
\ HUB**:\n\n```\nCustodian (hub)\n \u251C\u2500\u2500 gift_shop \u2192 GiftShop (retail operations)\n \u2502 \u251C\u2500\u2500 physical_location \u2192 AuxiliaryPlace (shop location)\n \u2502 \u251C\u2500\u2500 online_shop \u2192 AuxiliaryDigitalPlatform (e-commerce)\n \u2502 \u251C\u2500\u2500 product_categories \u2192 ProductCategoryEnum[]\n \u2502 \u2514\u2500\u2500 revenue_data \u2192 Annual sales, visitor conversion\n \u2502\n \u2514\u2500\u2500 commercial_activities (broader commercial operations)\n```\n\n**USE CASES**:\n\n1. **Museum Shop** (Rijksmuseum):\n - Physical shop in museum foyer\n - Online shop at rijksmuseumshop.nl\n - Products: Reproductions, books, design objects\n \n2. **Archive Bookshop** (National Archives):\n - Small shop near reading room\n - Publications, finding aids, historical maps\n \n3. **Library Retail** (British Library):\n - Multiple retail spaces (shop, cafe, bookshop)\n - Extensive publication program\n \n4. **Pop-up\
\ Shop** (Exhibition):\n - Temporary retail for special exhibition\n - Exhibition catalog, themed merchandise\n\n**Example - Rijksmuseum Gift Shop**:\n```yaml\nCustodian:\n identified_by: \"https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804\"\n preferred_label: \"Rijksmuseum\"\n gift_shop:\n - identified_by: \"https://nde.nl/ontology/hc/gift-shop/rijksmuseum-shop\" # was: shop_id\n has_label: # was: shop_name\n label_text: \"Rijksmuseum Shop\"\n shop_type: MUSEUM_SHOP\n has_description: # was: shop_description\n description_text: |\n Award-winning museum shop offering reproductions, design objects,\n books, and exclusive Rijksmuseum merchandise.\n physical_location:\n - place_name: \"Rijksmuseum Shop - Main Hall\"\n auxiliary_place_type: RETAIL_SPACE\n street_address: \"Museumstraat 1, Amsterdam\"\n online_shop:\n - platform_name: \"Rijksmuseum Online Shop\"\n \
\ platform_url: \"https://www.rijksmuseumshop.nl/\"\n auxiliary_platform_type: WEBSHOP\n product_categories:\n - REPRODUCTIONS\n - BOOKS\n - DESIGN_OBJECTS\n - JEWELRY\n - HOME_DECOR\n price_currency: EUR\n accepts_payment_methods:\n - CASH\n - CREDIT_CARD\n - DEBIT_CARD\n - MOBILE_PAYMENT\n opening_hours: \"09:00-18:00\"\n```\n\n**TEMPORAL VALIDITY**:\n\nGift shops can open/close independently of the main institution:\n- New shop location opened 2013 after renovation\n- Temporary pop-up during exhibition\n- Online shop launched 2010\n\nTrack with valid_from/valid_to dates.\n"
description: Retail operation associated with a custodian, including physical and online shop channels.
exact_mappings:
- schema:Store
- gr:BusinessEntity
close_mappings:
- schema:LocalBusiness
- schema:ShoppingCenter
- gr:BusinessEntity
- crm:E39_Actor
- foaf:Organization
related_mappings:
@ -56,267 +48,61 @@ classes:
- gr:Offering
- schema:Product
slots:
- accept
- has_revenue
- has_range
- managed_by
- has_digital_platform
- has_opening_hour
- located_at
- has_currency
- refer_to
- identified_by
- has_label
- has_description
- has_type
- has_quantity
- has_quantity
- located_at
- has_digital_platform
- accept
- has_currency
- has_range
- has_revenue
- has_supplier
- has_score
- has_operating_hours
- managed_by
- refer_to
- has_quantity
- temporal_extent
- has_score
- derive_from
- generated_by
slot_usage:
identified_by:
# range: string # uriorcurie
required: true
identifier: true
examples:
- value: https://nde.nl/ontology/hc/gift-shop/rijksmuseum-shop
has_label:
# range: string
inlined: false # Fixed invalid inline for primitive type
required: true
examples:
- value:
label_text: Rijksmuseum Shop
- value:
label_text: British Library Bookshop
has_description:
# range: string
inlined: false # Fixed invalid inline for primitive type
examples:
- value:
description_text: Award-winning museum shop offering reproductions and design objects
has_type:
range: GiftShopTypeEnum
required: true
examples:
- value: MUSEUM_SHOP
- value: BOOKSHOP
has_currency:
pattern: ^[A-Z]{3}$
located_at:
range: AuxiliaryPlace
multivalued: true
inlined_as_list: true
required: false
examples:
- value:
place_name: Rijksmuseum Shop - Main Hall
auxiliary_place_type: RETAIL_SPACE
has_digital_platform:
range: AuxiliaryDigitalPlatform
multivalued: true
inlined_as_list: true
required: false
examples:
- value:
platform_name: Rijksmuseum Online Shop
platform_url: https://www.rijksmuseumshop.nl/
auxiliary_platform_type: WEBSHOP
has_currency:
# range: string
required: true
pattern: ^[A-Z]{3}$
examples:
- value: EUR
- value: USD
accept:
range: PaymentMethod
multivalued: true
inlined: true
has_range:
range: PriceRange
inlined: true
required: false
examples:
- value:
has_symbol: $$
has_description: Mid-range pricing
- value:
has_label: "\u20AC5-\u20AC500"
has_description: Price range in euros
accept:
range: PaymentMethod
inlined: true
multivalued: true
required: false
examples:
- value:
- method_type: credit_card
- method_type: digital
has_opening_hour:
# range: string
required: false
examples:
- value: Mo-Su 09:00-18:00
- value: Mo-Fr 10:00-17:00, Sa-Su 10:00-18:00
has_revenue:
range: Revenue
inlined: true
multivalued: true
examples:
- value:
has_quantity: 5000000.0
has_currency:
currency_code: EUR
has_time_interval:
- value: "has_conversion_rate:\n - rate_value: 0.35\n has_type:\n has_label: \"Visitor to Purchase\"\n temporal_extent:\n begin_of_the_begin: \"2024-01-01\"\n end_of_the_end: \"2024-12-31\"\n"
has_quantity:
range: integer
inlined: false # Fixed invalid inline for primitive type
has_quantity:
range: float
required: false
examples:
- value: 250.0
managed_by:
# range: string
required: false
examples:
- value: In-house (Rijksmuseum BV)
- value: Outsourced (Culture Shops Ltd)
inlined: true
has_supplier:
range: Supplier
multivalued: true
inlined_as_list: true
multivalued: true
required: false
examples:
- value:
- has_label:
label_text: King & McGaw
has_type:
- has_label:
label_text: Print Supplier
has_description:
description_text: Art prints supplier
- has_label:
label_text: Museum Reproductions Ltd
has_type:
- has_label:
label_text: Reproduction Supplier
temporal_extent:
range: TimeSpan
required: false
examples:
- value:
begin_of_the_begin: '2010-01-01'
end_of_the_begin: '2013-04-13'
derive_from:
range: CustodianObservation
multivalued: true
required: false
generated_by:
range: ReconstructionActivity
required: false
refer_to:
range: Custodian
required: true
examples:
- value: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
comments:
- GiftShop models retail operations of heritage custodians
- Can have physical location (AuxiliaryPlace) and/or online presence (AuxiliaryDigitalPlatform)
- Schema.org schema:Store for retail business modeling
- GoodRelations (gr:) can be used for detailed product/offer modeling
- Revenue and conversion metrics support institutional planning
- Temporal validity tracks shop lifecycle (opening, renovation, closure)
- May be in-house or outsourced to third-party operators
see_also:
- https://schema.org/Store
- https://schema.org/LocalBusiness
- http://purl.org/goodrelations/v1#
- https://schema.org/Offer
examples:
- value:
identified_by: https://nde.nl/ontology/hc/gift-shop/rijksmuseum-shop
has_label:
label_text: Rijksmuseum Shop
shop_type: MUSEUM_SHOP
has_description:
description_text: Award-winning museum shop offering reproductions, design objects, books, and exclusive Rijksmuseum merchandise. Located in the redesigned entrance hall.
located_at:
- place_name: Rijksmuseum Shop - Main Hall
auxiliary_place_type: RETAIL_SPACE
postal_code: 1071 XX
country: https://nde.nl/ontology/hc/country/NL
has_digital_platform:
- platform_name: Rijksmuseum Online Shop
platform_url: https://www.rijksmuseumshop.nl/
auxiliary_platform_type: WEBSHOP
price_currency: EUR
has_range:
has_symbol: $$
has_description: Mid-range pricing
accept:
- method_type: CASH
- method_type: CREDIT_CARD
- method_type: DEBIT_CARD
- method_type: MOBILE_PAYMENT
- method_type: MUSEUM_CARD
opening_hours: Mo-Su 09:00-18:00
has_quantity:
range: integer
inlined: false # Fixed invalid inline for primitive type
square_meters: 450.0
managed_by: In-house (Rijksmuseum BV)
has_supplier:
- has_label:
label_text: King & McGaw
has_type:
- has_label:
label_text: Print Supplier
has_description:
description_text: Fine art prints supplier for museum reproductions
- has_label:
label_text: Museum Reproductions Ltd
has_type:
- has_label:
label_text: Reproduction Supplier
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
- value:
identified_by: https://nde.nl/ontology/hc/gift-shop/british-library-shop
has_label:
label_text: British Library Shop
shop_type: BOOKSHOP
has_description:
description_text: Specialist bookshop focusing on rare book facsimiles, literary merchandise, and British Library publications.
located_at:
- place_name: British Library Shop
auxiliary_place_type: RETAIL_SPACE
country: https://nde.nl/ontology/hc/country/GB
has_digital_platform:
- platform_name: British Library Shop Online
platform_url: https://shop.bl.uk/
auxiliary_platform_type: WEBSHOP
price_currency: GBP
has_range:
has_symbol: $$
has_description: Mid-range pricing
accept:
- method_type: CASH
- method_type: CREDIT_CARD
- method_type: DEBIT_CARD
opening_hours: Mo-Fr 09:30-18:00, Sa 09:30-17:00, Su 11:00-17:00
refers_to_custodian: https://nde.nl/ontology/hc/gb-british-library
- value:
identified_by: https://nde.nl/ontology/hc/gift-shop/vermeer-exhibition-popup
has_label:
label_text: Vermeer Exhibition Pop-up Shop
shop_type: POP_UP
has_description:
description_text: Temporary retail for the 2023 Vermeer exhibition with exclusive exhibition merchandise and catalog.
located_at:
- place_name: Vermeer Exhibition Shop
auxiliary_place_type: RETAIL_SPACE
price_currency: EUR
refers_to_custodian: https://nde.nl/ontology/hc/nl-nh-ams-m-rm-q190804
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.6
specificity_rationale: Commercial operations model for institutional retail channels.
custodian_types: '["*"]'

View file

@ -1,26 +1,27 @@
id: https://nde.nl/ontology/hc/class/GivenName
name: GivenName
title: Given Name
description: A given name, first name, or forename. MIGRATED from given_name slot per Rule 53. Follows foaf:givenName or schema:givenName.
title: Given Name Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
foaf: http://xmlns.com/foaf/0.1/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_description
- ../slots/has_label
default_prefix: hc
- ../slots/has_description
classes:
GivenName:
class_uri: hc:GivenName
close_mappings:
description: Personal given-name value used in human name modeling.
related_mappings:
- foaf:givenName
- schema:givenName
slots:
- has_label
- has_description
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.25
specificity_rationale: Atomic personal-name component.
custodian_types: '["*"]'

View file

@ -1,56 +1,46 @@
id: https://nde.nl/ontology/hc/classes/GoogleMapsEnrichment
name: GoogleMapsEnrichment
title: GoogleMapsEnrichment
title: Google Maps Enrichment Class
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#
dcterms: http://purl.org/dc/terms/
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#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_name
- ../slots/has_label
- ../slots/has_note
- ../slots/has_coordinates
- ../slots/has_latitude
- ../slots/has_longitude
- ../slots/has_url
- ../slots/has_source
- ../slots/has_operating_hours
# default_range: string
classes:
GoogleMapsEnrichment:
class_uri: prov:Entity
description: 'Full Google Maps Places API enrichment data for a heritage custodian
location.
prov:Entity - "An entity is a physical, digital, conceptual, or other kind of
thing with some fixed aspects; entities may be real or imaginary."
This class represents ENRICHMENT DATA extracted from Google Maps API about a
place, not the place itself. It captures metadata like ratings, reviews, photos,
opening hours, and address components that describe a heritage institution''s
physical location.
Mapping rationale: - Uses prov:Entity because this is data derived from an external
source (Google Maps API) - The enrichment has clear provenance (API call, timestamp,
place_id) - NOT schema:Place - that would represent the actual location, not
metadata about it - Related to schema:Place as the subject being described'
description: Enrichment payload derived from Google Maps data for a location record.
exact_mappings:
- prov:Entity
close_mappings:
- schema:PropertyValue
related_mappings:
- schema:Place
- schema:LocalBusiness
- prov:Generation
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
slots:
- has_name
- has_coordinates
- has_url
- has_opening_hour
- has_latitude
- has_longitude
- has_source
- has_label
- has_note
- has_coordinates
- has_latitude
- has_longitude
- has_url
- has_source
- has_operating_hours
annotations:
specificity_score: 0.45
specificity_rationale: External-source enrichment entity for place metadata.
custodian_types: '["*"]'

View file

@ -1,36 +1,37 @@
id: https://nde.nl/ontology/hc/classes/GoogleMapsPlaywrightEnrichment
name: GoogleMapsPlaywrightEnrichment
title: GoogleMapsPlaywrightEnrichment
title: Google Maps Playwright Enrichment Class
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#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_method
- ../slots/has_url
- ../slots/has_name
- ../slots/has_description
- ../slots/has_operating_hours
# default_range: string
classes:
GoogleMapsPlaywrightEnrichment:
description: "Google Maps data extracted via Playwright browser automation including\
\ place details, ratings, reviews, opening hours, photos, and popular times.\n\
Ontology mapping rationale: - class_uri is prov:Entity because this represents\
\ enrichment data\n (an entity) derived from Google Maps via automated extraction\n\
- close_mappings includes schema:Place for location/place semantics - related_mappings\
\ includes schema:LocalBusiness for business attributes"
class_uri: prov:Entity
description: Browser-automation extraction result from Google Maps interfaces.
exact_mappings:
- prov:Entity
close_mappings:
- schema:Place
- schema:PropertyValue
related_mappings:
- schema:Place
- schema:LocalBusiness
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
slots:
- has_method
- has_url
- has_name
- has_description
- has_opening_hour
- has_operating_hours
annotations:
specificity_score: 0.45
specificity_rationale: Enrichment entity documenting browser-mediated extraction.
custodian_types: '["*"]'

View file

@ -1,31 +1,25 @@
id: https://nde.nl/ontology/hc/classes/GooglePhoto
name: GooglePhoto
title: GooglePhoto
title: Google Photo Class
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#
default_prefix: hc
imports:
- linkml:types
# default_range: string
classes:
GooglePhoto:
description: "Photo metadata from Google Places API including reference string,\
\ dimensions, and URL. Represents image resources associated with heritage institution\
\ place listings.\nOntology mapping rationale: - class_uri is schema:ImageObject\
\ because this represents image content with\n dimensions (height, width) and\
\ URL - the core properties of ImageObject\n- close_mappings includes schema:Photograph\
\ as a more specific image type - related_mappings includes prov:Entity as this\
\ is data retrieved from an\n external API with provenance implications"
class_uri: schema:ImageObject
description: Image metadata record associated with a Google place listing.
exact_mappings:
- schema:ImageObject
close_mappings:
- schema:Photograph
related_mappings:
- prov:Entity
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
slots: []
specificity_score: 0.35
specificity_rationale: External image metadata entity for enrichment workflows.
custodian_types: '["*"]'

View file

@ -1,17 +1,12 @@
id: https://nde.nl/ontology/hc/classes/GoogleReview
name: GoogleReview
title: GoogleReview
title: Google Review Class
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#
dcterms: http://purl.org/dc/terms/
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#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_author
@ -20,16 +15,17 @@ imports:
- ../slots/has_description
- ../slots/has_text
- ../slots/published_on
# default_range: string
classes:
GoogleReview:
description: "Google Maps review for a heritage institution. Contains author information, rating (1-5 stars), review text, and publication timestamp. Used for crowd-sourced quality assessment data.\nOntology mapping rationale: - class_uri is schema:Review which is the standard Schema.org\n type for user reviews and ratings\n- close_mappings includes schema:UserReview (specific review subtype) - related_mappings includes prov:Entity (review as traceable data)\n and schema:Rating (the numeric rating component)"
class_uri: schema:Review
description: Crowd-authored review metadata for a place profile.
exact_mappings:
- schema:Review
close_mappings:
- schema:UserReview
related_mappings:
- prov:Entity
- schema:Rating
- prov:Entity
slots:
- has_author
- has_url
@ -38,20 +34,9 @@ classes:
- has_text
- published_on
slot_usage:
has_author:
description: Author/Reviewer name
has_url:
description: Author profile URL
has_rating:
range: integer
description: Rating value (1-5 stars)
has_description:
description: Relative time description (e.g., "a week ago")
has_text:
description: Review content
published_on:
description: Timestamp of review
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.45
specificity_rationale: Review entity for reputational and quality-signal enrichment.
custodian_types: '["*"]'

View file

@ -1,27 +1,30 @@
id: https://nde.nl/ontology/hc/class/GovernanceAuthority
name: GovernanceAuthority
title: Governance Authority
description: The authority that exercises governance over the entity or institution.
title: Governance Authority Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
org: http://www.w3.org/ns/org#
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
rico: https://www.ica.org/standards/RiC/ontology#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/identified_by
- ../slots/has_name
- ../slots/has_description
classes:
GovernanceAuthority:
class_uri: org:Organization
description: The authority that exercises governance over the entity or institution.
description: Organization that holds formal governance authority over an entity.
exact_mappings:
- org:Organization
close_mappings:
- schema:Organization
slots:
- identified_by
- has_name
- has_description
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
imports:
- linkml:types
- ../slots/has_description
- ../slots/identified_by
- ../slots/has_name
specificity_score: 0.4
specificity_rationale: Governance actor model for formal oversight relationships.
custodian_types: '["*"]'

View file

@ -1,27 +1,30 @@
id: https://nde.nl/ontology/hc/class/GovernanceRole
name: GovernanceRole
title: Governance Role
description: A role within a governance structure (e.g., Voting Member, Observer).
title: Governance Role Class
prefixes:
linkml: https://w3id.org/linkml/
schema: http://schema.org/
hc: https://nde.nl/ontology/hc/
org: http://www.w3.org/ns/org#
skos: http://www.w3.org/2004/02/skos/core#
rico: https://www.ica.org/standards/RiC/ontology#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_description
- ../slots/identified_by
- ../slots/has_label
- ../slots/has_description
classes:
GovernanceRole:
class_uri: org:Role
description: A role within a governance structure (e.g., Voting Member, Observer).
description: Role type used within governance membership and decision structures.
exact_mappings:
- org:Role
close_mappings:
- skos:Concept
slots:
- identified_by
- has_label
- has_description
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.35
specificity_rationale: Role vocabulary for governance composition and mandates.
custodian_types: '["*"]'

View file

@ -1,27 +1,27 @@
id: https://nde.nl/ontology/hc/class/GovernanceStructure
name: GovernanceStructure
title: Governance Structure
description: The internal governance and organizational structure.
title: Governance Structure Class
prefixes:
linkml: https://w3id.org/linkml/
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
rico: https://www.ica.org/standards/RiC/ontology#
wd: http://www.wikidata.org/entity/
hc: https://nde.nl/ontology/hc/
org: http://www.w3.org/ns/org#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_description
- ../slots/identified_by
- ../slots/has_type
- ../slots/has_description
classes:
GovernanceStructure:
class_uri: org:OrganizationalUnit
description: The internal governance and organizational structure.
description: Structural governance unit used to describe internal authority arrangement.
exact_mappings:
- org:OrganizationalUnit
slots:
- has_description
- has_type
- identified_by
- has_type
- has_description
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.4
specificity_rationale: Structural model for governance topology and units.
custodian_types: '["*"]'

View file

@ -1,13 +1,14 @@
id: https://nde.nl/ontology/hc/class/GoverningBody
name: GoverningBody
title: Governing Body
description: The organisation or body that established and governs this agenda or entity.
title: Governing Body Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
org: http://www.w3.org/ns/org#
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
cpov: http://data.europa.eu/m8g/
rico: https://www.ica.org/standards/RiC/ontology#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/identified_by
@ -15,14 +16,17 @@ imports:
classes:
GoverningBody:
class_uri: org:Organization
description: Body responsible for establishing and governing an entity.
exact_mappings:
- org:Organization
close_mappings:
- cpov:PublicOrganisation
- rico:CorporateBody
description: The organisation or body that established and governs this agenda or entity.
- schema:Organization
slots:
- identified_by
- has_name
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.45
specificity_rationale: Governance body model for institutional authority attribution.
custodian_types: '["*"]'

View file

@ -1,56 +1,38 @@
id: https://w3id.org/nde/ontology/GovernmentArchive
name: GovernmentArchive
title: Government Archive
title: Government Archive Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
rico: https://www.ica.org/standards/RiC/ontology#
skos: http://www.w3.org/2004/02/skos/core#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/identified_by
- ../slots/has_scope
- ../slots/has_score
- ../slots/has_type
- ../slots/hold_record_set
- ../slots/has_score
classes:
GovernmentArchive:
description: Official archive of a government. Government archives preserve records created or received by governmental bodies in the course of their activities. They document the functions, policies, decisions, and operations of the state at various levels (national, regional, local). Government archives are typically public institutions with legal mandates to preserve and provide access to official records.
is_a: ArchiveOrganizationType
class_uri: schema:ArchiveOrganization
description: Public archive organization mandated to preserve and provide access to government records.
exact_mappings:
- schema:ArchiveOrganization
close_mappings:
- wd:Q119712417
- rico:CorporateBody
broad_mappings:
- wd:Q166118
slots:
- identified_by
- has_type
- hold_record_set
- has_score
- identified_by
exact_mappings:
- wd:Q119712417
close_mappings:
- rico:CorporateBody
- skos:Concept
broad_mappings:
- wd:Q166118
slot_usage:
identified_by: null
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
annotations:
skos:prefLabel: Government Archive
skos:altLabel: Staatsarchiv, archivos gubernamentales, archives gouvernementales, State Archive, Public Records Office
custodian_status: governmental
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
see_also:
- NationalArchive
- StateArchive
- RegionalArchive
- MunicipalArchive
comments:
- Staatsarchiv (de)
- archivos gubernamentales (es)
- archives gouvernementales (fr)
- Broad category encompassing archives at all government levels
- Subject to public records and freedom of information legislation
- Distinct from private or non-governmental archives
specificity_score: 0.65
specificity_rationale: Archive organization type defined by legal public-records stewardship.
custodian_types: '["*"]'

View file

@ -1,34 +1,28 @@
id: https://nde.nl/ontology/hc/class/GovernmentArchiveRecordSetType
name: GovernmentArchiveRecordSetType
title: GovernmentArchive Record Set Type
title: Government Archive Record Set Type Class
prefixes:
linkml: https://w3id.org/linkml/
schema: http://schema.org/
hc: https://nde.nl/ontology/hc/
rico: https://www.ica.org/standards/RiC/ontology#
skos: http://www.w3.org/2004/02/skos/core#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_type
- ../slots/has_scope
- ../slots/has_score
- ../slots/has_type
classes:
GovernmentArchiveRecordSetType:
description: 'A rico:RecordSetType for classifying collections held by GovernmentArchive custodians.
'
is_a: CollectionType
class_uri: rico:RecordSetType
description: Record-set type used to classify holdings typically preserved by government archives.
exact_mappings:
- rico:RecordSetType
slots:
- has_type
- has_score
- has_scope
see_also:
- GovernmentArchive
- rico:RecordSetType
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
- has_score
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.55
specificity_rationale: Domain record-set typing for public-sector archival holdings.
custodian_types: '["*"]'

View file

@ -1,117 +1,60 @@
id: https://nde.nl/ontology/hc/class/GovernmentArchiveRecordSetTypes
name: GovernmentArchiveRecordSetTypes
title: GovernmentArchive Record Set Type Subclasses
title: Government Archive Record Set Types Class Module
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#
rico: https://www.ica.org/standards/RiC/ontology#
rico-rst: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#
wd: http://www.wikidata.org/entity/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- ./GovernmentArchiveRecordSetType
- linkml:types
- ../slots/has_score
- ../slots/has_type
- ../slots/has_score
- ../slots/has_custodian
- ../slots/has_note
classes:
AgencyAdministrativeFonds:
is_a: GovernmentArchiveRecordSetType
class_uri: rico:RecordSetType
description: "A rico:RecordSetType for Government agency operational records.\n\
\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType following\
\ the fonds \norganizational principle as defined by rico-rst:Fonds.\n"
description: Fonds-level record set for agency administrative operations.
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Fonds
close_mappings:
- skos:Concept
see_also:
- GovernmentArchiveRecordSetType
- rico:RecordSetType
slots:
- has_type
- has_score
- has_custodian
- record_holder_note
- has_type
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
has_type:
equals_string: AgencyAdministrativeFonds
has_custodian:
equals_string: GovernmentArchive
record_holder_note:
equals_string: This RecordSetType is typically held by GovernmentArchive custodians.
Inverse of rico:isOrWasHolderOf.
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
- has_note
PolicyDocumentCollection:
is_a: GovernmentArchiveRecordSetType
class_uri: rico:RecordSetType
description: "A rico:RecordSetType for Government policy documentation.\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: Collection-level record set for policy and regulatory documentation.
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
close_mappings:
- skos:Concept
see_also:
- GovernmentArchiveRecordSetType
- rico:RecordSetType
slots:
- has_type
- has_score
- has_custodian
- record_holder_note
- has_type
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
has_type:
equals_string: PolicyDocumentCollection
has_custodian:
equals_string: GovernmentArchive
record_holder_note:
equals_string: This RecordSetType is typically held by GovernmentArchive custodians.
Inverse of rico:isOrWasHolderOf.
- has_note
PublicServiceRecordSeries:
is_a: GovernmentArchiveRecordSetType
class_uri: rico:RecordSetType
description: "A rico:RecordSetType for Public service delivery 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: Series-level record set for public service delivery records.
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Series
close_mappings:
- skos:Concept
see_also:
- GovernmentArchiveRecordSetType
- rico:RecordSetType
slots:
- has_type
- has_score
- has_custodian
- record_holder_note
- has_type
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
has_type:
equals_string: PublicServiceRecordSeries
has_custodian:
equals_string: GovernmentArchive
record_holder_note:
equals_string: This RecordSetType is typically held by GovernmentArchive custodians.
Inverse of rico:isOrWasHolderOf.
- has_note

View file

@ -5,7 +5,6 @@ prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
org: http://www.w3.org/ns/org#
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
@ -14,18 +13,9 @@ imports:
classes:
GovernmentHierarchy:
class_uri: org:OrganizationalUnit
description: 'A structural unit or level within a government hierarchy.
Used to model the administrative context of official institutions.
**Structure**:
- Links to AdministrativeLevel via has_tier.
- Can be used with part_of to place an institution in the hierarchy.
'
description: Administrative hierarchy unit used to model governmental tier placement.
exact_mappings:
- org:OrganizationalUnit
slots:
- has_label
- has_tier
@ -33,8 +23,7 @@ classes:
has_tier:
range: AdministrativeLevel
required: true
has_label:
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
specificity_score: 0.35
specificity_rationale: Structural hierarchy unit for public administration context.
custodian_types: '["*"]'

View file

@ -1,35 +1,20 @@
id: https://nde.nl/ontology/hc/class/GrantRange
name: grant_range_class
title: GrantRange Class
name: GrantRange
title: Grant Range Class
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
crm: http://www.cidoc-crm.org/cidoc-crm/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../enums/MeasureUnitEnum
- ../slots/maximum_of_maximum
- ../slots/minimum_of_minimum
default_prefix: hc
- ../slots/maximum_of_maximum
classes:
GrantRange:
class_uri: crm:E54_Dimension
description: "Structured representation of a funding or grant amount range.\n\n\
**PURPOSE**:\nReplaces string-based grant ranges like \"€100K-€500K\" with structured\
\ data\nenabling comparison, filtering, and currency-aware analytics.\n\n**STRUCTURE**\
\ (per slot_fixes.yaml):\n- `minimal_of_minimal` → Quantity (branch 1): Lower\
\ bound with amount and currency\n- `maximal_of_maximal` → Quantity (branch\
\ 2): Upper bound with amount and currency\n\n**CIDOC-CRM Alignment**:\nMaps\
\ to E54_Dimension which represents quantifiable properties,\nusing P90a/P90b\
\ for lower/upper value limits.\n\n**USE CASES**:\n- Heritage grant programs\
\ (Mondriaan Fund, EU Creative Europe)\n- Digitization funding ranges\n- Conservation\
\ project budgets\n- Research grant parameters\n\n**EXAMPLE** - Creative Europe\
\ Grant:\n```yaml\nhas_range:\n - minimal_of_minimal:\n quantity_value:\
\ 60000\n has_measurement_unit:\n unit_label: \"EUR\"\n \
\ maximal_of_maximal:\n quantity_value: 200000\n has_measurement_unit:\n\
\ unit_label: \"EUR\"\n range_description: \"Small-scale cooperation\
\ projects\"\n```\n"
description: Structured lower and upper monetary bounds for grant or funding eligibility.
exact_mappings:
- crm:E54_Dimension
close_mappings:
@ -41,35 +26,9 @@ classes:
slot_usage:
minimum_of_minimum:
range: integer
inlined: false # Fixed invalid inline for primitive type
required: false
maximum_of_maximum:
range: integer
inlined: false # Fixed invalid inline for primitive type
required: false
comments:
- Created from slot_fixes.yaml migration (2026-01-14)
- Replaces string-based typical_grant_range slot
- Enables structured comparison and filtering of funding opportunities
- Currency-aware through Quantity class integration
see_also:
- https://cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E54
examples:
- value:
minimum_of_minimum:
has_measurement_unit:
unit_label: EUR
maximum_of_maximum:
has_measurement_unit:
unit_label: EUR
- value:
minimum_of_minimum:
has_measurement_unit:
unit_label: GBP
maximum_of_maximum:
has_measurement_unit:
unit_label: GBP
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
specificity_score: 0.45
specificity_rationale: Structured funding range model for comparison and filtering.
custodian_types: '["*"]'

View file

@ -12,28 +12,31 @@ imports:
classes:
Group:
class_uri: org:OrganizationalUnit
description: 'An organizational group or team.
**USAGE**:
Used for:
- Management groups
- Teams
- Departments
- Committees
'
description: >-
Organizational unit used to represent teams, departments, committees, or
other internal coordination bodies.
alt_descriptions:
nl: {text: Organisatorische eenheid voor teams, afdelingen, commissies of andere interne samenwerkingsverbanden., language: nl}
de: {text: Organisationseinheit zur Abbildung von Teams, Abteilungen, Ausschuessen oder anderen internen Koordinationsstrukturen., language: de}
fr: {text: Unite organisationnelle representant equipes, departements, comites ou autres structures internes de coordination., language: fr}
es: {text: Unidad organizativa para representar equipos, departamentos, comites u otras estructuras internas de coordinacion., language: es}
ar: {text: وحدة تنظيمية لتمثيل الفرق والأقسام واللجان وغيرها من هياكل التنسيق الداخلية., language: ar}
id: {text: Unit organisasi untuk merepresentasikan tim, departemen, komite, atau struktur koordinasi internal lainnya., language: id}
zh: {text: 用于表示团队、部门、委员会等内部协作结构的组织单元。, language: zh}
structured_aliases:
nl: [{literal_form: organisatie-eenheid, language: nl}]
de: [{literal_form: Organisationseinheit, language: de}]
fr: [{literal_form: unite organisationnelle, language: fr}]
es: [{literal_form: unidad organizativa, language: es}]
ar: [{literal_form: وحدة تنظيمية, language: ar}]
id: [{literal_form: unit organisasi, language: id}]
zh: [{literal_form: 组织单元, language: zh}]
exact_mappings:
- org:OrganizationalUnit
close_mappings:
- schema:Organization
annotations:
specificity_score: '0.35'
specificity_score: 0.35
specificity_rationale: Low specificity - groups are common organizational concept.
custodian_types: '[''*'']'
examples:

View file

@ -14,6 +14,27 @@ default_prefix: hc
classes:
GrowthRate:
class_uri: schema:QuantitativeValue
description: >-
Quantitative change indicator expressing increase or decrease over a
defined period.
alt_descriptions:
nl: {text: Kwantitatieve veranderindicator die toename of afname over een bepaalde periode uitdrukt., language: nl}
de: {text: Quantitativer Veraenderungsindikator fuer Zu- oder Abnahme ueber einen definierten Zeitraum., language: de}
fr: {text: Indicateur quantitatif de variation exprimant hausse ou baisse sur une periode definie., language: fr}
es: {text: Indicador cuantitativo de cambio que expresa aumento o disminucion en un periodo definido., language: es}
ar: {text: مؤشر كمي للتغير يعبّر عن الزيادة أو الانخفاض خلال فترة محددة., language: ar}
id: {text: Indikator perubahan kuantitatif yang menyatakan kenaikan atau penurunan selama periode tertentu., language: id}
zh: {text: 表示在特定时期内增减变化的量化指标。, language: zh}
structured_aliases:
nl: [{literal_form: groeipercentage, language: nl}]
de: [{literal_form: Wachstumsrate, language: de}]
fr: [{literal_form: taux de croissance, language: fr}]
es: [{literal_form: tasa de crecimiento, language: es}]
ar: [{literal_form: معدل نمو, language: ar}]
id: [{literal_form: laju pertumbuhan, language: id}]
zh: [{literal_form: 增长率, language: zh}]
exact_mappings:
- schema:QuantitativeValue
slots:
- has_description
annotations:

View file

@ -14,7 +14,27 @@ classes:
HALCAdm1Code:
is_a: Identifier
class_uri: skos:Concept
description: HALC administrative level 1 code.
description: >-
Code identifier for first-level administrative subdivision in the HALC
geographic coding system.
alt_descriptions:
nl: {text: Code-identificatie voor eerstelijns administratieve indeling in het HALC geografische coderingssysteem., language: nl}
de: {text: Codekennung fuer Verwaltungseinheiten der ersten Ebene im HALC-Geocodierungssystem., language: de}
fr: {text: Code identifiant la subdivision administrative de premier niveau dans le systeme de codage geographique HALC., language: fr}
es: {text: Codigo identificador para la subdivision administrativa de primer nivel en el sistema geografico HALC., language: es}
ar: {text: رمز معرّف للتقسيم الإداري من المستوى الأول ضمن نظام الترميز الجغرافي HALC., language: ar}
id: {text: Pengidentifikasi kode untuk subdivisi administratif tingkat pertama dalam sistem kode geografis HALC., language: id}
zh: {text: HALC 地理编码体系中一级行政区划的代码标识。, language: zh}
structured_aliases:
nl: [{literal_form: HALC adm1-code, language: nl}]
de: [{literal_form: HALC Adm1-Code, language: de}]
fr: [{literal_form: code HALC niveau 1, language: fr}]
es: [{literal_form: codigo HALC nivel 1, language: es}]
ar: [{literal_form: رمز HALC للمستوى الأول, language: ar}]
id: [{literal_form: kode HALC tingkat 1, language: id}]
zh: [{literal_form: HALC 一级代码, language: zh}]
broad_mappings:
- skos:Concept
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration

View file

@ -14,6 +14,27 @@ default_prefix: hc
classes:
HALCAdm2Name:
class_uri: skos:Concept
description: >-
Name label for second-level administrative subdivision represented in the
HALC geographic framework.
alt_descriptions:
nl: {text: Naamlabel voor administratieve indeling op tweede niveau binnen het HALC geografische kader., language: nl}
de: {text: Namensbezeichnung fuer Verwaltungseinheiten der zweiten Ebene im HALC-Georahmen., language: de}
fr: {text: Libelle de nom pour la subdivision administrative de deuxieme niveau dans le cadre geographique HALC., language: fr}
es: {text: Etiqueta de nombre para la subdivision administrativa de segundo nivel en el marco geografico HALC., language: es}
ar: {text: تسمية اسم للتقسيم الإداري من المستوى الثاني ضمن إطار HALC الجغرافي., language: ar}
id: {text: Label nama untuk subdivisi administratif tingkat kedua dalam kerangka geografis HALC., language: id}
zh: {text: HALC 地理框架中二级行政区划的名称标签。, language: zh}
structured_aliases:
nl: [{literal_form: HALC adm2-naam, language: nl}]
de: [{literal_form: HALC Adm2-Name, language: de}]
fr: [{literal_form: nom HALC niveau 2, language: fr}]
es: [{literal_form: nombre HALC nivel 2, language: es}]
ar: [{literal_form: اسم HALC للمستوى الثاني, language: ar}]
id: [{literal_form: nama HALC tingkat 2, language: id}]
zh: [{literal_form: HALC 二级名称, language: zh}]
broad_mappings:
- skos:Concept
slots:
- has_label
- has_description

View file

@ -17,7 +17,27 @@ imports:
classes:
HCID:
class_uri: schema:PropertyValue
description: HCID.
description: >-
Persistent identifier value assigned to a heritage custodian entity for
cross-system reference and reconciliation.
alt_descriptions:
nl: {text: Persistente identificatiewaarde toegekend aan een erfgoedbeheerder voor koppeling en reconciliatie tussen systemen., language: nl}
de: {text: Persistenter Identifikationswert fuer eine Kulturerbe-Institution zur systemuebergreifenden Referenz und Abgleichung., language: de}
fr: {text: Valeur d identifiant persistant attribuee a une institution patrimoniale pour reference et rapprochement entre systemes., language: fr}
es: {text: Valor identificador persistente asignado a una entidad custodio de patrimonio para referencia y conciliacion entre sistemas., language: es}
ar: {text: قيمة معرّف دائم تُسند لجهة حفظ التراث للمرجعية والمواءمة بين الأنظمة., language: ar}
id: {text: Nilai pengenal persisten yang ditetapkan untuk entitas kustodian warisan guna referensi dan rekonsiliasi lintas sistem., language: id}
zh: {text: 分配给遗产保管机构实体的持久标识值,用于跨系统引用与对齐。, language: zh}
structured_aliases:
nl: [{literal_form: erfgoedbeheerder-ID, language: nl}]
de: [{literal_form: Kulturerbe-Kustoden-ID, language: de}]
fr: [{literal_form: identifiant du detenteur patrimonial, language: fr}]
es: [{literal_form: identificador de custodio patrimonial, language: es}]
ar: [{literal_form: معرّف جهة حفظ التراث, language: ar}]
id: [{literal_form: pengenal kustodian warisan, language: id}]
zh: [{literal_form: 遗产保管机构标识, language: zh}]
exact_mappings:
- schema:PropertyValue
annotations:
specificity_score: 0.1
specificity_rationale: "Generic utility class created during migration"

View file

@ -17,7 +17,27 @@ imports:
classes:
HCPresetURI:
class_uri: schema:URL
description: HC Preset URI.
description: >-
Canonical preconfigured URI pattern used to mint or reference heritage
custodian resources.
alt_descriptions:
nl: {text: Canoniek vooraf geconfigureerd URI-patroon voor het uitgeven of verwijzen naar erfgoedbeheerderbronnen., language: nl}
de: {text: Kanonisches vorkonfiguriertes URI-Muster zur Vergabe oder Referenzierung von Kulturerbe-Kustodenressourcen., language: de}
fr: {text: Motif URI canonique preconfigure pour creer ou referencer des ressources de detenteurs patrimoniaux., language: fr}
es: {text: Patron URI canonico preconfigurado para emitir o referenciar recursos de custodios patrimoniales., language: es}
ar: {text: نمط URI معياري مُعد مسبقا لإنشاء موارد جهة حفظ التراث أو الإحالة إليها., language: ar}
id: {text: Pola URI kanonik pra-konfigurasi untuk menerbitkan atau merujuk sumber daya kustodian warisan., language: id}
zh: {text: 用于生成或引用遗产保管机构资源的规范预设 URI 模式。, language: zh}
structured_aliases:
nl: [{literal_form: standaard HC-URI, language: nl}]
de: [{literal_form: HC-Standard-URI, language: de}]
fr: [{literal_form: URI predefinie de detenteur patrimonial, language: fr}]
es: [{literal_form: URI predefinida de custodio patrimonial, language: es}]
ar: [{literal_form: URI مُعد مسبقا لجهة التراث, language: ar}]
id: [{literal_form: URI baku kustodian warisan, language: id}]
zh: [{literal_form: 遗产保管预设URI, language: zh}]
close_mappings:
- schema:URL
annotations:
specificity_score: 0.1
specificity_rationale: "Generic utility class created during migration"

View file

@ -1,17 +1,11 @@
id: https://nde.nl/ontology/hc/class/HTMLFile
name: HTMLFile
title: HTML File Class
description: >-
An HTML file resource (e.g. a snapshot of a webpage).
MIGRATED from html_snapshot_path (Rule 53).
title: HTML File
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/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_description
@ -19,13 +13,36 @@ imports:
- ../slots/has_label
classes:
HTMLFile:
class_uri: skos:Concept
description: An HTML file.
class_uri: hc:HTMLFile
description: >-
Digital document resource storing HyperText Markup Language content,
typically captured as a web snapshot or export artifact.
alt_descriptions:
nl: Digitaal document met HTML-inhoud, doorgaans vastgelegd als websnapshot of exportbestand.
de: Digitales Dokument mit HTML-Inhalt, typischerweise als Web-Snapshot oder Exportartefakt erfasst.
fr: Ressource documentaire numerique contenant du HTML, generalement capturee comme instantane web ou export.
es: Recurso documental digital con contenido HTML, normalmente capturado como instantanea web o artefacto de exportacion.
ar: مورد وثائقي رقمي يحفظ محتوى HTML، غالبا كلقطة ويب أو ملف تصدير.
id: Sumber dokumen digital yang menyimpan konten HTML, biasanya ditangkap sebagai cuplikan web atau artefak ekspor.
zh: 存储 HTML 内容的数字文档资源,常见于网页快照或导出文件。
structured_aliases:
- literal_form: HTML-bestand
in_language: nl
- literal_form: HTML-Datei
in_language: de
- literal_form: fichier HTML
in_language: fr
- literal_form: archivo HTML
in_language: es
- literal_form: ملف HTML
in_language: ar
- literal_form: berkas HTML
in_language: id
- literal_form: HTML 文件
in_language: zh
slots:
- has_label
- has_description
- has_file_location
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: '["*"]'
broad_mappings:
- schema:DigitalDocument

View file

@ -1,23 +1,21 @@
id: https://nde.nl/ontology/hc/class/HTTPMethod
name: HTTPMethod
title: HTTP Method
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_type
classes:
HTTPMethod:
description: Represents an HTTP request method supported by a heritage institution's API or web service. Common methods
include GET (retrieve), POST (create), PUT (update), DELETE (remove), and PATCH (partial update).
class_uri: schema:Thing
class_uri: hc:HTTPMethod
description: >-
Request-verb descriptor used in web interactions to indicate retrieval,
creation, update, or deletion behavior.
slots:
- has_type
slot_usage:
has_type:
# range: string # uriorcurie
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
broad_mappings:
- schema:DefinedTerm

View file

@ -1,9 +1,11 @@
id: https://nde.nl/ontology/hc/class/HTTPMethodType
name: HTTPMethodType
title: HTTP Method Type
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_description
@ -11,14 +13,14 @@ imports:
- ../slots/has_label
classes:
HTTPMethodType:
description: Abstract base class for HTTP method type taxonomy. Classifies HTTP request methods (GET, POST, PUT, DELETE, PATCH, etc.) used by heritage institution APIs and web services.
class_uri: skos:Concept
class_uri: hc:HTTPMethodType
abstract: true
description: >-
Controlled vocabulary root for classifying HTTP request verbs used by
APIs and web services.
slots:
- identified_by
- has_label
- has_description
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
broad_mappings:
- skos:Concept

View file

@ -1,38 +1,42 @@
id: https://nde.nl/ontology/hc/class/HTTPMethodTypes
name: HTTPMethodTypes
title: HTTP Method Types
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:
- ./HTTPMethodType
- linkml:types
classes:
GETMethod:
is_a: HTTPMethodType
description: HTTP GET method
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
class_uri: hc:GETMethod
description: Method for retrieving representations without server-side mutation.
broad_mappings:
- skos:Concept
POSTMethod:
is_a: HTTPMethodType
description: HTTP POST method
class_uri: hc:POSTMethod
description: Method for submitting payloads to create or trigger server actions.
broad_mappings:
- skos:Concept
PUTMethod:
is_a: HTTPMethodType
description: HTTP PUT method
class_uri: hc:PUTMethod
description: Method for full replacement or creation of a target resource state.
broad_mappings:
- skos:Concept
DELETEMethod:
is_a: HTTPMethodType
description: HTTP DELETE method
class_uri: hc:DELETEMethod
description: Method for removing or deactivating a target resource.
broad_mappings:
- skos:Concept
PATCHMethod:
is_a: HTTPMethodType
description: HTTP PATCH method
class_uri: hc:PATCHMethod
description: Method for partial modification of an existing resource representation.
broad_mappings:
- skos:Concept

View file

@ -1,17 +1,11 @@
id: https://nde.nl/ontology/hc/class/HTTPStatus
name: HTTPStatus
title: HTTP Status Class
description: >-
An HTTP status code and description.
MIGRATED from http_status_code (Rule 53).
title: HTTP Status
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/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_description
@ -19,13 +13,13 @@ imports:
- ../slots/has_value
classes:
HTTPStatus:
class_uri: skos:Concept
description: An HTTP status.
class_uri: hc:HTTPStatus
description: >-
Response state descriptor combining numeric status code and reason phrase
for HTTP transaction outcomes.
slots:
- has_value
- has_label
- has_description
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: '["*"]'
broad_mappings:
- schema:DefinedTerm

View file

@ -1,29 +1,23 @@
id: https://nde.nl/ontology/hc/class/HTTPStatusCode
name: HTTPStatusCode
title: HTTP Status Code Class
description: >-
An HTTP status code.
MIGRATED from http_status_code (Rule 53).
title: HTTP Status Code
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/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_label
- ../slots/has_value
classes:
HTTPStatusCode:
class_uri: skos:Concept
description: An HTTP status code.
class_uri: hc:HTTPStatusCode
description: >-
Numeric code token representing protocol-level result classes for HTTP
request processing.
slots:
- has_value
- has_label
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: '["*"]'
broad_mappings:
- schema:DefinedTerm

View file

@ -15,6 +15,25 @@ default_prefix: hc
classes:
Habitat:
class_uri: hc:Habitat
description: >-
Environmental context where a biological specimen or observation is found,
collected, or recorded.
alt_descriptions:
nl: {text: Omgevingscontext waarin een biologisch specimen of waarneming is gevonden, verzameld of geregistreerd., language: nl}
de: {text: Umweltkontext, in dem ein biologisches Exemplar oder eine Beobachtung gefunden, gesammelt oder dokumentiert wurde., language: de}
fr: {text: Contexte environnemental dans lequel un specimen biologique ou une observation est trouve, collecte ou consigne., language: fr}
es: {text: Contexto ambiental donde un especimen biologico u observacion fue hallado, recolectado o registrado., language: es}
ar: {text: السياق البيئي الذي وُجدت أو جُمعت أو سُجلت فيه عينة بيولوجية أو ملاحظة., language: ar}
id: {text: Konteks lingkungan tempat spesimen biologis atau observasi ditemukan, dikumpulkan, atau dicatat., language: id}
zh: {text: 生物标本或观测被发现、采集或记录时所处的环境背景。, language: zh}
structured_aliases:
nl: [{literal_form: leefomgeving, language: nl}]
de: [{literal_form: Lebensraum, language: de}]
fr: [{literal_form: habitat, language: fr}]
es: [{literal_form: habitat, language: es}]
ar: [{literal_form: موطن, language: ar}]
id: [{literal_form: habitat, language: id}]
zh: [{literal_form: 生境, language: zh}]
close_mappings:
- dwc:habitat
slots:

View file

@ -13,7 +13,27 @@ imports:
classes:
HandsOnFacility:
class_uri: schema:AmenityFeature
description: Hands-on facility.
description: >-
Amenity feature indicating availability of interactive, practical learning
or handling spaces for visitors and participants.
alt_descriptions:
nl: {text: Voorzieningskenmerk dat aangeeft dat interactieve en praktische leer- of werkruimten beschikbaar zijn., language: nl}
de: {text: Ausstattungsmerkmal fuer verfuegbare interaktive und praktische Lern- oder Arbeitsraeume., language: de}
fr: {text: Caracteristique d equipement indiquant la disponibilite d espaces interactifs et pratiques pour apprentissage ou manipulation., language: fr}
es: {text: Caracteristica de equipamiento que indica disponibilidad de espacios interactivos y practicos de aprendizaje o manipulacion., language: es}
ar: {text: سمة مرفقية تشير إلى توفر مساحات تفاعلية وعملية للتعلم أو التعامل المباشر., language: ar}
id: {text: Fitur amenitas yang menunjukkan ketersediaan ruang interaktif dan praktik untuk pembelajaran atau penanganan langsung., language: id}
zh: {text: 表示是否提供互动式实践学习或操作空间的设施特征。, language: zh}
structured_aliases:
nl: [{literal_form: doe-faciliteit, language: nl}]
de: [{literal_form: Mitmachbereich, language: de}]
fr: [{literal_form: espace pratique interactif, language: fr}]
es: [{literal_form: espacio practico interactivo, language: es}]
ar: [{literal_form: مرفق تفاعلي عملي, language: ar}]
id: [{literal_form: fasilitas praktik interaktif, language: id}]
zh: [{literal_form: 互动实践设施, language: zh}]
broad_mappings:
- schema:AmenityFeature
slots:
- has_description
annotations:

View file

@ -2,7 +2,7 @@ id: https://nde.nl/ontology/hc/class/Hazard
name: Hazard
title: Hazard
description: >-
A has_risk or risk.
Potential source of harm or damage relevant to preservation, safety, or operational continuity.
prefixes:
linkml: https://w3id.org/linkml/
@ -17,7 +17,27 @@ imports:
classes:
Hazard:
class_uri: schema:Text
description: Hazard.
description: >-
Potential source of harm or damage relevant to preservation, safety, or
operational continuity.
alt_descriptions:
nl: {text: Potentiele bron van schade of gevaar die relevant is voor behoud, veiligheid of operationele continuiteit., language: nl}
de: {text: Potenzielle Gefahren- oder Schadensquelle mit Relevanz fuer Erhaltung, Sicherheit oder betriebliche Kontinuitaet., language: de}
fr: {text: Source potentielle de dommage ou de danger pertinente pour conservation, securite ou continuite operationnelle., language: fr}
es: {text: Fuente potencial de dano o peligro relevante para conservacion, seguridad o continuidad operativa., language: es}
ar: {text: مصدر محتمل للضرر أو الخطر ذي صلة بالحفظ أو السلامة أو استمرارية التشغيل., language: ar}
id: {text: Sumber potensi bahaya atau kerusakan yang relevan bagi pelestarian, keselamatan, atau kesinambungan operasional., language: id}
zh: {text: 与保存、安全或运营连续性相关的潜在危害或损害来源。, language: zh}
structured_aliases:
nl: [{literal_form: risicofactor, language: nl}]
de: [{literal_form: Gefaehrdung, language: de}]
fr: [{literal_form: danger potentiel, language: fr}]
es: [{literal_form: peligro potencial, language: es}]
ar: [{literal_form: خطر محتمل, language: ar}]
id: [{literal_form: potensi bahaya, language: id}]
zh: [{literal_form: 潜在风险源, language: zh}]
related_mappings:
- schema:riskFactor
annotations:
specificity_score: 0.1
specificity_rationale: "Generic utility class created during migration"

View file

@ -17,7 +17,25 @@ imports:
classes:
Heading:
class_uri: schema:Text
description: Heading.
description: >-
Structured textual heading used to label sections and support document
navigation.
alt_descriptions:
nl: {text: Gestructureerde koptekst om secties te benoemen en documentnavigatie te ondersteunen., language: nl}
de: {text: Strukturierte Ueberschrift zur Kennzeichnung von Abschnitten und zur Unterstuetzung der Dokumentnavigation., language: de}
fr: {text: Intitule textuel structure utilise pour nommer des sections et faciliter la navigation documentaire., language: fr}
es: {text: Encabezado textual estructurado para nombrar secciones y facilitar la navegacion del documento., language: es}
ar: {text: عنوان نصي منظم لتسمية الأقسام ودعم التنقل داخل المستند., language: ar}
id: {text: Judul teks terstruktur untuk menamai bagian dan mendukung navigasi dokumen., language: id}
zh: {text: 用于标注章节并支持文档导航的结构化标题文本。, language: zh}
structured_aliases:
nl: [{literal_form: kopregel, language: nl}]
de: [{literal_form: Ueberschrift, language: de}]
fr: [{literal_form: titre de section, language: fr}]
es: [{literal_form: encabezado, language: es}]
ar: [{literal_form: عنوان قسم, language: ar}]
id: [{literal_form: judul bagian, language: id}]
zh: [{literal_form: 标题文本, language: zh}]
annotations:
specificity_score: 0.1
specificity_rationale: "Generic utility class created during migration"

View file

@ -17,7 +17,25 @@ imports:
classes:
HeadingLevel:
class_uri: schema:Integer
description: Heading level.
description: >-
Numeric hierarchy level assigned to a heading to indicate document
structure depth.
alt_descriptions:
nl: {text: Numeriek hierarchieniveau van een kop om de diepte van documentstructuur aan te geven., language: nl}
de: {text: Numerische Hierarchieebene einer Ueberschrift zur Kennzeichnung der Dokumentstrukturtiefe., language: de}
fr: {text: Niveau hierarchique numerique attribue a un titre pour indiquer la profondeur structurelle du document., language: fr}
es: {text: Nivel jerarquico numerico asignado a un encabezado para indicar la profundidad de la estructura documental., language: es}
ar: {text: مستوى هرمي رقمي يُسند إلى العنوان لبيان عمق بنية المستند., language: ar}
id: {text: Tingkat hierarki numerik yang diberikan pada heading untuk menunjukkan kedalaman struktur dokumen., language: id}
zh: {text: 分配给标题的数字层级,用于表示文档结构深度。, language: zh}
structured_aliases:
nl: [{literal_form: kopniveau, language: nl}]
de: [{literal_form: Ueberschriftenebene, language: de}]
fr: [{literal_form: niveau de titre, language: fr}]
es: [{literal_form: nivel de encabezado, language: es}]
ar: [{literal_form: مستوى العنوان, language: ar}]
id: [{literal_form: tingkat heading, language: id}]
zh: [{literal_form: 标题层级, language: zh}]
annotations:
specificity_score: 0.1
specificity_rationale: "Generic utility class created during migration"

View file

@ -16,8 +16,28 @@ imports:
classes:
Heritage:
class_uri: skos:Concept
description: "The domain of heritage (Cultural, Natural, Intangible).\n\nUsed to tag organizations, projects, or activities as heritage-related."
exact_mappings:
description: >-
Broad conceptual category used to mark entities, activities, or resources
as relevant to cultural, natural, or intangible heritage contexts.
alt_descriptions:
nl: {text: Brede conceptuele categorie om entiteiten, activiteiten of bronnen als cultureel, natuurlijk of immaterieel erfgoedrelevant te markeren., language: nl}
de: {text: Breite konzeptionelle Kategorie zur Kennzeichnung von Entitaeten, Aktivitaeten oder Ressourcen als kultur-, natur- oder immateriell-erberelevant., language: de}
fr: {text: Categorie conceptuelle large pour marquer entites, activites ou ressources comme pertinentes pour les contextes patrimoniaux., language: fr}
es: {text: Categoria conceptual amplia para marcar entidades, actividades o recursos como relevantes para contextos patrimoniales., language: es}
ar: {text: فئة مفاهيمية واسعة لتمييز الكيانات أو الأنشطة أو الموارد ذات الصلة بسياقات التراث الثقافي أو الطبيعي أو غير المادي., language: ar}
id: {text: Kategori konseptual luas untuk menandai entitas, aktivitas, atau sumber daya sebagai relevan bagi konteks warisan budaya, alam, atau takbenda., language: id}
zh: {text: 用于标记实体、活动或资源与文化、自然或非物质遗产情境相关性的广义概念类别。, language: zh}
structured_aliases:
nl: [{literal_form: erfgoeddomein, language: nl}]
de: [{literal_form: Erbebereich, language: de}]
fr: [{literal_form: domaine patrimonial, language: fr}]
es: [{literal_form: dominio patrimonial, language: es}]
ar: [{literal_form: مجال التراث, language: ar}]
id: [{literal_form: ranah warisan, language: id}]
zh: [{literal_form: 遗产领域, language: zh}]
broad_mappings:
- skos:Concept
related_mappings:
- crm:E1_CRM_Entity
slots:
- has_label

View file

@ -18,24 +18,29 @@ imports:
classes:
HeritageCustodianPlace:
class_uri: schema:Place
description: 'A place associated with a heritage custodian.
**USAGE**:
Used for:
- Archive locations
- Storage locations
- Exhibition venues
'
description: >-
Place associated with a heritage custodian, such as repository,
storage, service, or exhibition location.
alt_descriptions:
nl: {text: Plaats geassocieerd met een erfgoedbeheerder, zoals depot-, opslag-, dienstverlenings- of tentoonstellingslocatie., language: nl}
de: {text: Ort mit Bezug zu einer Kulturerbe-Institution, etwa Depot-, Lager-, Service- oder Ausstellungsstandort., language: de}
fr: {text: Lieu associe a un detenteur patrimonial, par exemple depot, stockage, service ou exposition., language: fr}
es: {text: Lugar asociado a un custodio patrimonial, como repositorio, almacenamiento, servicio o sede de exposicion., language: es}
ar: {text: مكان مرتبط بجهة حفظ التراث مثل موقع الإيداع أو التخزين أو الخدمة أو العرض., language: ar}
id: {text: Tempat yang terkait dengan kustodian warisan, seperti repositori, penyimpanan, layanan, atau lokasi pameran., language: id}
zh: {text: 与遗产保管机构相关的地点,如库房、存储、服务或展陈场所。, language: zh}
structured_aliases:
nl: [{literal_form: erfgoedlocatie beheerder, language: nl}]
de: [{literal_form: Ort der Kulturerbe-Institution, language: de}]
fr: [{literal_form: lieu du detenteur patrimonial, language: fr}]
es: [{literal_form: lugar de custodio patrimonial, language: es}]
ar: [{literal_form: موقع جهة التراث, language: ar}]
id: [{literal_form: lokasi kustodian warisan, language: id}]
zh: [{literal_form: 遗产保管机构地点, language: zh}]
exact_mappings:
- schema:Place
annotations:
specificity_score: '0.50'
specificity_score: 0.5
specificity_rationale: Moderately specific - custodian places heritage-domain.
custodian_types: '[''*'']'
examples:

View file

@ -9,12 +9,30 @@ prefixes:
xsd: http://www.w3.org/2001/XMLSchema#
org: http://www.w3.org/ns/org#
imports:
- linkml:types []
- linkml:types
# default_range: string
classes:
HeritageExperienceEntry:
is_a: Entity
description: "Heritage sector specific work experience entry."
description: >-
Work-history entry describing professional roles, responsibilities, or
projects within heritage-sector contexts.
alt_descriptions:
nl: {text: Werkervaringsitem dat professionele rollen, verantwoordelijkheden of projecten binnen erfgoedcontexten beschrijft., language: nl}
de: {text: Berufsverlaufs-Eintrag fuer Rollen, Verantwortlichkeiten oder Projekte in Kulturerbe-Kontexten., language: de}
fr: {text: Entree d experience professionnelle decrivant des roles, responsabilites ou projets dans des contextes patrimoniaux., language: fr}
es: {text: Entrada de experiencia laboral que describe funciones, responsabilidades o proyectos en contextos patrimoniales., language: es}
ar: {text: مدخل خبرة مهنية يصف الأدوار أو المسؤوليات أو المشاريع ضمن سياقات قطاع التراث., language: ar}
id: {text: Entri riwayat kerja yang menjelaskan peran, tanggung jawab, atau proyek dalam konteks sektor warisan., language: id}
zh: {text: 描述遗产领域职业角色、职责或项目的工作经历条目。, language: zh}
structured_aliases:
nl: [{literal_form: erfgoed werkervaring, language: nl}]
de: [{literal_form: Kulturerbe-Berufserfahrungseintrag, language: de}]
fr: [{literal_form: entree d experience patrimoniale, language: fr}]
es: [{literal_form: entrada de experiencia patrimonial, language: es}]
ar: [{literal_form: مدخل خبرة تراثية, language: ar}]
id: [{literal_form: entri pengalaman kerja warisan, language: id}]
zh: [{literal_form: 遗产领域经历条目, language: zh}]
class_uri: org:Membership
close_mappings:
- schema:OrganizationRole

View file

@ -14,7 +14,27 @@ imports:
classes:
HeritageForm:
class_uri: skos:Concept
description: A form of heritage.
description: >-
Taxonomy concept for classifying heritage manifestations, such as
tangible, intangible, documentary, or mixed forms.
alt_descriptions:
nl: {text: Taxonomieconcept voor classificatie van erfgoedmanifestaties, zoals tastbare, immateriele, documentaire of gemengde vormen., language: nl}
de: {text: Taxonomiekonzept zur Klassifikation von Erbeauspraegungen wie materiellen, immateriellen, dokumentarischen oder gemischten Formen., language: de}
fr: {text: Concept taxonomique pour classifier les manifestations patrimoniales, materielles, immaterielles, documentaires ou mixtes., language: fr}
es: {text: Concepto taxonomico para clasificar manifestaciones patrimoniales, tangibles, intangibles, documentales o mixtas., language: es}
ar: {text: مفهوم تصنيفي لتصنيف تمظهرات التراث مثل الأشكال المادية وغير المادية والوثائقية أو المختلطة., language: ar}
id: {text: Konsep taksonomi untuk mengklasifikasikan bentuk perwujudan warisan, seperti berwujud, takbenda, dokumenter, atau campuran., language: id}
zh: {text: 用于分类遗产呈现形态(如有形、无形、文献型或混合型)的分类学概念。, language: zh}
structured_aliases:
nl: [{literal_form: erfgoedvorm, language: nl}]
de: [{literal_form: Erbeform, language: de}]
fr: [{literal_form: forme patrimoniale, language: fr}]
es: [{literal_form: forma patrimonial, language: es}]
ar: [{literal_form: شكل تراثي, language: ar}]
id: [{literal_form: bentuk warisan, language: id}]
zh: [{literal_form: 遗产形态, language: zh}]
broad_mappings:
- skos:Concept
slots:
- has_label
- has_description

View file

@ -23,8 +23,25 @@ classes:
HeritageObject:
class_uri: crm:E18_Physical_Thing
abstract: true
description: "Abstract base class for all physical heritage objects that may be stored,\nexhibited, or managed by heritage custodians.\n\n**CIDOC-CRM Alignment**:\n\nMaps to `crm:E18_Physical_Thing` - \"All persistent physical items with a \nrelatively stable form, human-made or natural.\"\n\n**Class Hierarchy**:\n\n```\nHeritageObject (crm:E18_Physical_Thing) - THIS CLASS (abstract)\n \u2502\n \u251C\u2500\u2500 ExhibitedObject (crm:E22_Human-Made_Object)\n \u2502 \u2502\n \u2502 \u2514\u2500\u2500 BiologicalObject (crm:E20_Biological_Object)\n \u2502\n \u2514\u2500\u2500 (future: ArchivalObject, DigitalObject, etc.)\n```\n\n**Purpose**:\n\nHeritageObject serves as:\n1. Common parent for all heritage object types\n2. Typed range for storage relationships (e.g., stores_or_stored slot)\n3. Base for polymorphic queries across object types\n\n**Core Slots Defined**:\n\nAll heritage objects inherit these fundamental properties:\n- `object_id` - Unique identifier\
\ (required)\n- `object_name` - Human-readable name (required)\n- `object_description` - Descriptive text\n- `current_keeper` - Institution currently holding the object\n- `current_location` - Physical location\n- `identified_by` - External identifiers (Wikidata, etc.)\n\n**Usage**:\n\nDo NOT instantiate HeritageObject directly (it is abstract).\nUse concrete subclasses:\n- `ExhibitedObject` for museum objects, artworks, artifacts\n- `BiologicalObject` for natural history specimens\n\n**Example Use Case**:\n\nA StorageUnit.stores_or_stored slot can reference any HeritageObject:\n```yaml\nstores_or_stored:\n - https://nde.nl/ontology/hc/object/painting-001 # ExhibitedObject\n - https://nde.nl/ontology/hc/object/specimen-042 # BiologicalObject\n```\n"
description: >-
Abstract parent class for persistent physical items managed by heritage
custodians, used as a common typing anchor across object subclasses.
alt_descriptions:
nl: {text: Abstracte bovenklasse voor duurzame fysieke items die door erfgoedbeheerders worden beheerd, als gemeenschappelijk typeanker voor subklassen., language: nl}
de: {text: Abstrakte Oberklasse fuer bestaendige physische Objekte, die von Kulturerbe-Institutionen verwaltet werden, als gemeinsamer Typanker., language: de}
fr: {text: Classe parente abstraite pour les objets physiques persistants geres par des detenteurs patrimoniaux, servant d ancrage de typage commun., language: fr}
es: {text: Clase padre abstracta para objetos fisicos persistentes gestionados por custodios patrimoniales, usada como ancla comun de tipado., language: es}
ar: {text: فئة أصلية مجردة للعناصر المادية المستمرة التي تديرها جهات حفظ التراث، وتستخدم كمرتكز تصنيفي مشترك للفئات الفرعية., language: ar}
id: {text: Kelas induk abstrak untuk objek fisik persisten yang dikelola kustodian warisan, sebagai jangkar pengetikan bersama lintas subkelas., language: id}
zh: {text: 由遗产保管机构管理的持久性实体物件之抽象父类,用作各子类共享的类型锚点。, language: zh}
structured_aliases:
nl: [{literal_form: abstract erfgoedobject, language: nl}]
de: [{literal_form: abstraktes Erbeobjekt, language: de}]
fr: [{literal_form: objet patrimonial abstrait, language: fr}]
es: [{literal_form: objeto patrimonial abstracto, language: es}]
ar: [{literal_form: كائن تراثي مجرد, language: ar}]
id: [{literal_form: objek warisan abstrak, language: id}]
zh: [{literal_form: 抽象遗产实体物, language: zh}]
exact_mappings:
- crm:E18_Physical_Thing
close_mappings:
@ -38,59 +55,25 @@ classes:
- identified_by
- has_label
- has_description
- current_keeper
- has_custodian
- located_at
- identified_by
- has_score
slot_usage:
identified_by:
identifier: true
required: true
# range: string # uriorcurie
examples:
- value: https://nde.nl/ontology/hc/object/rijksmuseum-night-watch
- value: https://nde.nl/ontology/hc/object/naturalis-dodo-001
identifier: true
multivalued: true
has_label:
required: true
# range: string
examples:
- value: The Night Watch
- value: Oxford Dodo
- value: Rosetta Stone
has_description:
required: false
# range: string
current_keeper:
required: false
# range: string # uriorcurie
has_custodian:
inlined: false
examples:
- value: https://nde.nl/ontology/hc/custodian/nl/rijksmuseum
- value: https://nde.nl/ontology/hc/custodian/uk/british-museum
located_at:
required: false
range: CustodianPlace
inlined: true
examples:
- value:
place_name: Gallery 15
country: NL
identified_by:
required: false
# range: string # uriorcurie
multivalued: true
comments:
- HeritageObject is ABSTRACT - do not instantiate directly
- Use ExhibitedObject for museum objects, artworks, artifacts
- Use BiologicalObject for natural history specimens
- Future subclasses may include ArchivalObject, DigitalObject
- Maps to CIDOC-CRM E18_Physical_Thing as common ancestor
- Created 2026-01-15 to provide typed range for stores_or_stored slot
see_also:
- https://cidoc-crm.org/html/cidoc_crm_v7.1.3.html#E18
- https://nde.nl/ontology/hc/HeritageObject
- Abstract superclass; instantiate concrete subclasses for operational data.
- Supports polymorphic querying across physical heritage object types.
annotations:
specificity_score: 0.1
specificity_rationale: Universal parent class for all heritage objects. Very low specificity as it applies to all object types.
has_score: null
specificity_rationale: Universal parent class for physical heritage object types.
custodian_types: "['*']"

View file

@ -19,7 +19,27 @@ imports:
classes:
HeritagePractice:
class_uri: skos:Concept
description: A heritage practice.
description: >-
Practice-oriented concept for techniques, routines, or methods involved in
transmission, care, or continuation of heritage.
alt_descriptions:
nl: {text: Praktijkgericht concept voor technieken, routines of methoden bij overdracht, zorg of voortzetting van erfgoed., language: nl}
de: {text: Praxisorientiertes Konzept fuer Techniken, Routinen oder Methoden der Weitergabe, Pflege oder Fortfuehrung von Erbe., language: de}
fr: {text: Concept oriente vers les pratiques pour techniques, routines ou methodes de transmission, soin ou continuation du patrimoine., language: fr}
es: {text: Concepto orientado a practicas para tecnicas, rutinas o metodos de transmision, cuidado o continuidad del patrimonio., language: es}
ar: {text: مفهوم موجه للممارسات يصف التقنيات أو الإجراءات أو الأساليب المعنية بنقل التراث أو صونه أو استمراريته., language: ar}
id: {text: Konsep berorientasi praktik untuk teknik, rutinitas, atau metode dalam transmisi, perawatan, atau keberlanjutan warisan., language: id}
zh: {text: 面向实践的概念,用于描述遗产传承、照护或延续中的技术、流程与方法。, language: zh}
structured_aliases:
nl: [{literal_form: erfgoedpraktijk, language: nl}]
de: [{literal_form: Erbepraxis, language: de}]
fr: [{literal_form: pratique patrimoniale, language: fr}]
es: [{literal_form: practica patrimonial, language: es}]
ar: [{literal_form: ممارسة تراثية, language: ar}]
id: [{literal_form: praktik warisan, language: id}]
zh: [{literal_form: 遗产实践, language: zh}]
broad_mappings:
- skos:Concept
annotations:
specificity_score: 0.1
specificity_rationale: "Generic utility class created during migration"

View file

@ -19,34 +19,25 @@ imports:
classes:
HeritageRelevanceAssessment:
class_uri: hc:HeritageRelevanceAssessment
description: 'Classification of a person''s professional relevance to heritage sectors.
Captures whether a person works in or is connected to heritage institutions,
which heritage types they relate to, and the reasoning for classification.
**Use Cases**:
- LinkedIn profile heritage sector classification
- Staff has_affiliation analysis
- Heritage professional network mapping
**Scoring Guidelines** (per AGENTS.md Rule 30):
- 0.90-0.95: Senior heritage role, clear title, named institution
- 0.75-0.85: Mid-level role, good institutional context
- 0.60-0.70: Entry-level/support role, technical role
- 0.50-0.55: Intern, unclear relationship
'
description: >-
Structured assessment describing how strongly a profile or entity is
connected to heritage domains, including type assignment and rationale.
alt_descriptions:
nl: {text: Gestructureerde beoordeling van hoe sterk een profiel of entiteit verbonden is met erfgoeddomeinen, inclusief type en motivatie., language: nl}
de: {text: Strukturierte Bewertung, wie stark ein Profil oder eine Entitaet mit Erbedomaenen verbunden ist, inklusive Typzuordnung und Begruendung., language: de}
fr: {text: Evaluation structuree du degre de lien d un profil ou d une entite avec les domaines patrimoniaux, avec type et justification., language: fr}
es: {text: Evaluacion estructurada de cuan fuertemente un perfil o entidad se vincula a dominios patrimoniales, con tipo y justificacion., language: es}
ar: {text: تقييم منظم يوضح مدى ارتباط ملف شخصي أو كيان بمجالات التراث، مع نوع التصنيف ومبرراته., language: ar}
id: {text: Penilaian terstruktur tentang seberapa kuat profil atau entitas terhubung ke ranah warisan, termasuk jenis dan alasan., language: id}
zh: {text: 结构化评估,用于说明某档案或实体与遗产领域关联程度,并记录类型归类及依据。, language: zh}
structured_aliases:
nl: [{literal_form: beoordeling erfgoedrelevantie, language: nl}]
de: [{literal_form: Erberelevanzbewertung, language: de}]
fr: [{literal_form: evaluation de pertinence patrimoniale, language: fr}]
es: [{literal_form: evaluacion de relevancia patrimonial, language: es}]
ar: [{literal_form: تقييم الصلة بالتراث, language: ar}]
id: [{literal_form: asesmen relevansi warisan, language: id}]
zh: [{literal_form: 遗产相关性评估, language: zh}]
close_mappings:
- skos:Concept
- schema:DefinedTerm

View file

@ -14,7 +14,25 @@ imports:
classes:
HeritageRelevanceScore:
class_uri: schema:Rating
description: "Quantitative assessment of heritage relevance."
description: >-
Numeric rating expressing degree of relevance to heritage-related
contexts.
alt_descriptions:
nl: {text: Numerieke waardering die de mate van relevantie voor erfgoedgerelateerde contexten uitdrukt., language: nl}
de: {text: Numerische Bewertung, die den Grad der Relevanz fuer erberelevante Kontexte ausdrueckt., language: de}
fr: {text: Evaluation numerique exprimant le degre de pertinence pour des contextes lies au patrimoine., language: fr}
es: {text: Valoracion numerica que expresa el grado de relevancia para contextos relacionados con patrimonio., language: es}
ar: {text: تصنيف رقمي يعبّر عن درجة الصلة بسياقات مرتبطة بالتراث., language: ar}
id: {text: Penilaian numerik yang menyatakan tingkat relevansi terhadap konteks terkait warisan., language: id}
zh: {text: 表示与遗产相关情境关联程度的数值评分。, language: zh}
structured_aliases:
nl: [{literal_form: score erfgoedrelevantie, language: nl}]
de: [{literal_form: Erberelevanzwert, language: de}]
fr: [{literal_form: score de pertinence patrimoniale, language: fr}]
es: [{literal_form: puntuacion de relevancia patrimonial, language: es}]
ar: [{literal_form: درجة الصلة بالتراث, language: ar}]
id: [{literal_form: skor relevansi warisan, language: id}]
zh: [{literal_form: 遗产相关性评分, language: zh}]
slots:
- has_value
- has_description

View file

@ -14,6 +14,25 @@ default_prefix: hc
classes:
HeritageScore:
class_uri: schema:Rating
description: >-
Numeric score representing assessed heritage value, significance, or
priority in an evaluation context.
alt_descriptions:
nl: {text: Numerieke score die beoordeelde erfgoedwaarde, betekenis of prioriteit in een evaluatiecontext weergeeft., language: nl}
de: {text: Numerischer Wert zur Darstellung von bewerteter Erbe-Bedeutung, Signifikanz oder Prioritaet im Bewertungskontext., language: de}
fr: {text: Score numerique representant la valeur, l importance ou la priorite patrimoniale evaluee dans un contexte d evaluation., language: fr}
es: {text: Puntuacion numerica que representa valor, importancia o prioridad patrimonial evaluada en un contexto de evaluacion., language: es}
ar: {text: درجة رقمية تمثل قيمة التراث أو أهميته أو أولويته ضمن سياق تقييم., language: ar}
id: {text: Skor numerik yang merepresentasikan nilai, signifikansi, atau prioritas warisan dalam konteks evaluasi., language: id}
zh: {text: 在评估情境中表示遗产价值、重要性或优先级的数值评分。, language: zh}
structured_aliases:
nl: [{literal_form: erfgoedscore, language: nl}]
de: [{literal_form: Erbewert, language: de}]
fr: [{literal_form: score patrimonial, language: fr}]
es: [{literal_form: puntuacion patrimonial, language: es}]
ar: [{literal_form: درجة التراث, language: ar}]
id: [{literal_form: skor warisan, language: id}]
zh: [{literal_form: 遗产评分, language: zh}]
slots:
- has_score
- has_description

View file

@ -1,30 +1,46 @@
id: https://nde.nl/ontology/hc/class/HeritageSector
name: HeritageSector
title: Heritage Sector Class
description: >-
A sector or domain within the cultural heritage field.
MIGRATED from heritage_sector_usage (Rule 53).
Used to classify usage, relevance, or applicability to specific heritage domains (e.g., Museums, Archives, Libraries, Archaeology).
title: Heritage Sector
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_description
- ../slots/has_label
classes:
HeritageSector:
class_uri: skos:Concept
description: "A specific sector within cultural heritage."
class_uri: hc:HeritageSector
description: >-
Controlled category used to group institutions and activities by major
heritage domain.
alt_descriptions:
nl: Gecontroleerde categorie om instellingen en activiteiten per erfgoeddomein te groeperen.
de: Kontrollierte Kategorie zur Gruppierung von Einrichtungen und Taetigkeiten nach Erbebereich.
fr: Categorie controlee servant a regrouper institutions et activites par domaine patrimonial.
es: Categoria controlada para agrupar instituciones y actividades por dominio patrimonial.
ar: فئة مضبوطة لتجميع المؤسسات والأنشطة حسب مجال التراث.
id: Kategori terkendali untuk mengelompokkan institusi dan aktivitas menurut domain warisan.
zh: 用于按遗产领域归类机构与活动的受控类别。
structured_aliases:
- literal_form: erfgoedsector
in_language: nl
- literal_form: Erbesektor
in_language: de
- literal_form: secteur du patrimoine
in_language: fr
- literal_form: sector patrimonial
in_language: es
- literal_form: قطاع التراث
in_language: ar
- literal_form: sektor warisan
in_language: id
- literal_form: 遗产领域
in_language: zh
slots:
- has_label
- has_description
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: '["*"]'
broad_mappings:
- skos:Concept

View file

@ -1,206 +1,51 @@
id: https://nde.nl/ontology/hc/HeritageSocietyType
name: HeritageSocietyType
title: Heritage Society Type
description: 'Specialized custodian type for voluntary heritage societies, historical
associations, and collecting societies that preserve and promote local, specialized,
or thematic heritage. Heritage societies are membership-based organizations (often
volunteer-driven) that maintain collections, conduct research, publish findings,
and engage communities in heritage preservation. They differ from professional museums
(M), archives (A), or research centers (R) by their community-based, volunteer nature
and focus on specialized collecting or local heritage. Key Characteristics: - Membership-based
organizations (dues-paying members) - Volunteer-driven or minimal professional staff
- Focus on specialized collecting (numismatics, philately, genealogy, local history)
- Community engagement and public education mission - Publication activities (journals,
newsletters, monographs) - Often maintain small collections or archives Wikidata
Coverage: - Base concepts: Q10294527 (heemkundekring - Dutch heritage society) -
Historical societies: Q5773836 (Historical Association), local history societies
- Collecting societies: Q55174682 (numismatic society), Q3446009 (philatelic society)
- Genealogical societies: Q2077377 (genealogical society) - Archaeological societies:
Q15755503 (archaeological society) - Learned societies: Q371160 (learned society)
- when focused on heritage This class represents ''S'' (Collecting Society) in the
GLAMORCUBEPSXHFN taxonomy. '
from_schema: https://nde.nl/ontology/hc/HeritageSocietyType
see_also:
- https://www.wikidata.org/wiki/Q10294527
- https://www.wikidata.org/wiki/Q5773836
- https://www.wikidata.org/wiki/Q55174682
- https://www.wikidata.org/wiki/Q3446009
- https://www.wikidata.org/wiki/Q2077377
- https://www.wikidata.org/wiki/Q15755503
imports:
- ../classes/AgentType
- linkml:types
- ../enums/HeritageSocietyTypeEnum
- ../slots/has_activity
- ../slots/has_hyponym
- ../slots/has_scope
- ../slots/has_score
- ../slots/has_type
- ../slots/published_at
- ../slots/has_quantity
- ../slots/focus_on
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
wd: http://www.wikidata.org/entity/
wdt: http://www.wikidata.org/prop/direct/
foaf: http://xmlns.com/foaf/0.1/
default_prefix: hc
imports:
- linkml:types
- ./CustodianType
- ../slots/has_activity
- ../slots/has_scope
- ../slots/has_score
- ../slots/has_type
- ../slots/has_quantity
- ../slots/focus_on
classes:
HeritageSocietyType:
is_a: CustodianType
class_uri: skos:Concept
annotations:
skos:prefLabel: Heritage Society
skos:altLabel: historical society, heemkundekring, historische vereniging
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
class_uri: hc:HeritageSocietyType
description: >-
Membership-based custodian type for volunteer-led societies preserving and
promoting local, thematic, or collecting heritage.
alt_descriptions:
nl: Lidmaatschapsgebaseerd bewaarderstype voor vrijwilligersverenigingen die lokaal of thematisch erfgoed behouden en uitdragen.
de: Mitgliederbasiertes Verwahrerprofil fuer ehrenamtlich getragene Vereine, die lokales oder thematisches Erbe bewahren und vermitteln.
fr: Type de depositaire associatif, fonde sur l'adhesion, pour des societes benevoles de preservation du patrimoine local ou thematique.
es: Tipo de custodio asociativo y de membresia para sociedades voluntarias que preservan y difunden patrimonio local o tematico.
ar: نوع حارس قائم على العضوية لجمعيات تطوعية تصون التراث المحلي أو الموضوعي وتروّج له.
id: Tipe kustodian berbasis keanggotaan untuk komunitas sukarela yang melestarikan dan mempromosikan warisan lokal atau tematik.
zh: 以成员制和志愿参与为基础、用于保护和传播地方或专题遗产的保管者类型。
structured_aliases:
- literal_form: heemkundekring
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: heemkundige kring
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: historische vereniging
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: oudheidkundige kring
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: genealogische vereniging
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: numismatische vereniging
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: erfgoedvereniging
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: oudheidkamer
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: historisch genootschap
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: verzamelvereniging
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: historical society
predicate: EXACT_SYNONYM
in_language: en
- literal_form: heritage society
predicate: EXACT_SYNONYM
in_language: en
- literal_form: genealogical society
predicate: EXACT_SYNONYM
in_language: en
- literal_form: numismatic society
predicate: EXACT_SYNONYM
in_language: en
- literal_form: philatelic society
predicate: EXACT_SYNONYM
in_language: en
- literal_form: antiquarian society
predicate: EXACT_SYNONYM
in_language: en
- literal_form: archaeological society
predicate: EXACT_SYNONYM
in_language: en
- literal_form: local history society
predicate: EXACT_SYNONYM
in_language: en
- literal_form: collecting society
predicate: EXACT_SYNONYM
in_language: en
- literal_form: Geschichtsverein
predicate: EXACT_SYNONYM
in_language: de
- literal_form: Heimatverein
predicate: EXACT_SYNONYM
in_language: de
- literal_form: historischer Verein
predicate: EXACT_SYNONYM
in_language: de
- literal_form: Altertumsverein
predicate: EXACT_SYNONYM
in_language: de
- literal_form: genealogische Gesellschaft
predicate: EXACT_SYNONYM
in_language: de
- literal_form: numismatische Gesellschaft
predicate: EXACT_SYNONYM
in_language: de
- literal_form: société historique
predicate: EXACT_SYNONYM
- literal_form: societe historique
in_language: fr
- literal_form: société d'histoire
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: société généalogique
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: société numismatique
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: cercle d'histoire
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: sociedad histórica
predicate: EXACT_SYNONYM
- literal_form: sociedad historica
in_language: es
- literal_form: asociación histórica
predicate: EXACT_SYNONYM
in_language: es
- literal_form: sociedad genealógica
predicate: EXACT_SYNONYM
in_language: es
- literal_form: sociedad numismática
predicate: EXACT_SYNONYM
in_language: es
- literal_form: società storica
predicate: EXACT_SYNONYM
in_language: it
- literal_form: società di storia
predicate: EXACT_SYNONYM
in_language: it
- literal_form: società genealogica
predicate: EXACT_SYNONYM
in_language: it
- literal_form: società numismatica
predicate: EXACT_SYNONYM
in_language: it
- literal_form: sociedade histórica
predicate: EXACT_SYNONYM
in_language: pt
- literal_form: associação histórica
predicate: EXACT_SYNONYM
in_language: pt
- literal_form: sociedade genealógica
predicate: EXACT_SYNONYM
in_language: pt
- literal_form: sociedade numismática
predicate: EXACT_SYNONYM
in_language: pt
description: "Heritage societies, historical associations, and collecting societies\
\ that preserve\nspecialized or local heritage through volunteer engagement,\
\ collecting, research, and\ncommunity education.\n\nOntology Alignment:\n-\
\ SKOS: skos:Concept (classification term in GLAM taxonomy)\n- Schema.org:\n\
\ - schema:Organization (general organization type)\n - schema:NGO (non-profit,\
\ non-governmental organization)\n - schema:SportsOrganization (adapted for\
\ hobby/collecting organizations)\n- FOAF: foaf:Organization (Friend of a Friend\
\ ontology for membership networks)\n\nKey Distinctions:\n- From MUSEUM (M):\
\ Heritage societies are volunteer-driven membership organizations with\n small\
\ collections, not professional museums with paid curatorial staff and large\
\ exhibitions.\n- From ARCHIVE (A): Heritage societies may maintain small archives,\
\ but are volunteer-based\n and community-focused, not professional archival\
\ institutions with trained archivists.\n- From RESEARCH_CENTER (R): Societies\
\ conduct amateur research (genealogy, local history),\n not professional academic\
\ research with peer-reviewed publications.\n- From NGO (N): Heritage societies\
\ are NGOs, but classified as S (Society) when focused on\n collecting or heritage\
\ preservation with membership structure.\n"
- literal_form: جمعية تراثية
in_language: ar
- literal_form: komunitas warisan
in_language: id
- literal_form: 遗产协会
in_language: zh
slots:
- has_type
- has_activity
@ -208,46 +53,9 @@ classes:
- has_score
- focus_on
- has_quantity
- published_at
slot_usage:
has_type:
equals_expression: '["hc:HeritageSocietyType"]'
# range: string # uriorcurie
# range: Program
inlined: false # Fixed invalid inline for primitive type
multivalued: true
examples:
- value: null
has_activity:
# range: string
multivalued: true
inlined: false # Fixed invalid inline for primitive type
inlined_as_list: false # Fixed invalid inline for primitive type
examples:
- value:
- has_activity_identifier: https://nde.nl/ontology/hc/activity/oud-leiden-lectures-2025
has_activity_name: Monthly Lecture Series (Sept-June)
has_activity_description: 'Monthly evening lectures on local history topics,
featuring guest speakers from academia, museums, and member experts. '
temporal_extent:
begin_of_the_begin: '2024-09-01'
end_of_the_end: '2025-06-30'
- has_activity_identifier: https://nde.nl/ontology/hc/activity/oud-leiden-walk-2025
has_activity_name: Annual Heritage Walk
has_activity_description: 'Annual guided heritage walk through historic
Leiden neighborhoods. Open to public, attracts 50-100 participants. '
temporal_extent:
begin_of_the_begin: '2025-05-15'
end_of_the_end: '2025-05-15'
has_scope:
# range: string # uriorcurie
# range: CollectionScope
multivalued: true
inlined: false # Fixed invalid inline for primitive type
inlined_as_list: false # Fixed invalid inline for primitive type
examples:
- value:
- scope_description: 5,000 photographs of Leiden 1850-2000; 200 linear meters
local archives
- scope_description: 12,000 Dutch coins and medals; 500 reference books
on numismatics
equals_string: hc:HeritageSocietyType
broad_mappings:
- skos:Concept
- schema:Organization

View file

@ -1,12 +1,10 @@
id: https://nde.nl/ontology/hc/class/HeritageStatus
name: HeritageStatus
title: Heritage Status Class
description: "The legal or official heritage protection status of a site or object.\n\n**MIGRATED** from heritage_status (Rule 53).\n\nExamples: National Monument (Rijksmonument), World Heritage Site, Municipal Monument."
title: Heritage Status
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/
default_prefix: hc
imports:
- linkml:types
@ -15,13 +13,36 @@ imports:
- ../slots/has_label
classes:
HeritageStatus:
class_uri: skos:Concept
description: "Official designation status."
class_uri: hc:HeritageStatus
description: >-
Official designation category indicating legal protection or recognition
level of a heritage asset.
alt_descriptions:
nl: Officiele statusaanduiding die het niveau van wettelijke bescherming of erkenning van erfgoed aangeeft.
de: Offizielle Statuskategorie fuer den Grad rechtlicher Sicherung oder Anerkennung eines Erbeguts.
fr: Categorie de designation officielle indiquant le niveau de protection juridique ou de reconnaissance d'un bien patrimonial.
es: Categoria de designacion oficial que indica el nivel de proteccion legal o reconocimiento de un bien patrimonial.
ar: فئة تصنيف رسمية تشير إلى مستوى الحماية القانونية أو الاعتراف بالأصل التراثي.
id: Kategori penetapan resmi yang menunjukkan tingkat perlindungan hukum atau pengakuan suatu aset warisan.
zh: 表示遗产资产法律保护或官方认定级别的正式状态类别。
structured_aliases:
- literal_form: erfgoedstatus
in_language: nl
- literal_form: Denkmalstatus
in_language: de
- literal_form: statut patrimonial
in_language: fr
- literal_form: estatus patrimonial
in_language: es
- literal_form: حالة التراث
in_language: ar
- literal_form: status warisan
in_language: id
- literal_form: 遗产状态
in_language: zh
slots:
- has_label
- has_description
- identified_by
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: "['*']"
broad_mappings:
- skos:Concept

View file

@ -1,19 +1,11 @@
id: https://nde.nl/ontology/hc/class/HeritageType
name: HeritageType
title: Heritage Type Class
description: >-
Classification of heritage type (e.g. Cultural, Natural, Intangible, Historic).
MIGRATED from heritage_type_classification (Rule 53).
Used to classify heritage objects, places, or practices.
title: Heritage Type
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/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_description
@ -21,13 +13,36 @@ imports:
- ../slots/has_label
classes:
HeritageType:
class_uri: skos:Concept
description: "Heritage classification concept."
class_uri: hc:HeritageType
description: >-
Controlled classification used to distinguish major categories of heritage
assets, practices, or environments.
alt_descriptions:
nl: Gecontroleerde classificatie om hoofdtypen van erfgoedobjecten, praktijken of omgevingen te onderscheiden.
de: Kontrollierte Klassifikation zur Unterscheidung zentraler Kategorien von Erbeguetern, Praktiken oder Umgebungen.
fr: Classification controlee pour distinguer les grandes categories d'actifs, de pratiques ou d'environnements patrimoniaux.
es: Clasificacion controlada para distinguir categorias principales de bienes, practicas o entornos patrimoniales.
ar: تصنيف مضبوط للتمييز بين الفئات الرئيسة للأصول أو الممارسات أو البيئات التراثية.
id: Klasifikasi terkendali untuk membedakan kategori utama aset, praktik, atau lingkungan warisan.
zh: 用于区分遗产资产、实践或环境主要类别的受控分类。
structured_aliases:
- literal_form: erfgoedtype
in_language: nl
- literal_form: Erbetyp
in_language: de
- literal_form: type de patrimoine
in_language: fr
- literal_form: tipo de patrimonio
in_language: es
- literal_form: نوع التراث
in_language: ar
- literal_form: tipe warisan
in_language: id
- literal_form: 遗产类型
in_language: zh
slots:
- has_label
- has_description
- identified_by
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: '["*"]'
broad_mappings:
- skos:Concept

View file

@ -1,7 +1,6 @@
id: https://nde.nl/ontology/hc/class/HeritageTypeCode
name: HeritageTypeCode
title: Heritage Type Code Class
description: "Code representing a heritage type from the GLAMORCUBESFIXPHDNT taxonomy.\n\n**MIGRATED** from heritage_type_code (Rule 53).\n\nValues: G, L, A, M, O, R, C, U, B, E, S, F, I, X, P, H, D, N, T."
title: Heritage Type Code
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
@ -14,12 +13,14 @@ imports:
- ../slots/has_label
classes:
HeritageTypeCode:
class_uri: skos:Concept
description: "Heritage taxonomy code."
class_uri: hc:HeritageTypeCode
description: >-
Compact symbolic code representing a heritage category within controlled
classification schemes.
slots:
- has_label
- has_description
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class.
custodian_types: "['*']"
broad_mappings:
- skos:Concept
close_mappings:
- schema:DefinedTerm

View file

@ -1,21 +1,23 @@
id: https://nde.nl/ontology/hc/class/HeritageTypeCount
name: heritage_type_count_class
title: Heritage Type Count Class
version: 1.0.0
name: HeritageTypeCount
title: Heritage Type Count
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ./HeritageTypeCode
- ../slots/has_quantity
- ../slots/has_score
- ../slots/has_code
default_prefix: hc
classes:
HeritageTypeCount:
class_uri: schema:DataFeedItem
description: "Count of connections for a specific heritage type.\n\nUsed in NetworkAnalysis to provide breakdown by GLAM type.\n\n**Example**:\n```json\n{\n \"heritage_type_code\": \"M\",\n \"count\": 89\n}\n```\n"
class_uri: hc:HeritageTypeCount
description: >-
Quantified tally linking one heritage type code to the number of matching
entities in a given analysis context.
slots:
- has_code
- has_quantity
@ -24,15 +26,8 @@ classes:
has_code:
range: HeritageTypeCode
required: true
examples:
- value: M
- value: A
has_quantity:
range: integer
required: true
examples:
- value: "Quantity:\n value: 89\n unit: \"connections\"\n"
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
broad_mappings:
- schema:PropertyValue

View file

@ -1,9 +1,14 @@
id: https://nde.nl/ontology/hc/class/historic-building
name: historic_building_class
title: HistoricBuilding Class
id: https://nde.nl/ontology/hc/class/HistoricBuilding
name: HistoricBuilding
title: Historic Building
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
- ../enums/FeatureTypeEnum
- ../slots/constructed_on
- ../slots/used_for
- ../slots/in_area
@ -20,42 +25,19 @@ imports:
- ../slots/generated_by
- ../slots/part_of
- ../slots/identified_by
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
org: http://www.w3.org/ns/org#
dcterms: http://purl.org/dc/terms/
crm: http://www.cidoc-crm.org/cidoc-crm/
prov: http://www.w3.org/ns/prov#
skos: http://www.w3.org/2004/02/skos/core#
aat: http://vocab.getty.edu/aat/
wd: http://www.wikidata.org/entity/
classes:
HistoricBuilding:
is_a: ReconstructedEntity
class_uri: aat:300005425
description: "Historic building owned, managed, or stewarded by a heritage custodian.\n\n**DEFINITION**:\n\nA HistoricBuilding is a building of historical, architectural, or cultural\nsignificance that is owned or managed by a heritage custodian as a secondary\nproperty. This may be a historic house museum, heritage property, monument,\nor protected building separate from the custodian's main facility.\n\n**GETTY AAT ALIGNMENT**:\n\n`aat:300005425` (historic buildings) - \"Buildings that are historically\nsignificant, typically old, and often protected or preserved.\"\n\n**WIKIDATA TYPE LINKAGE (FeatureTypeEnum Subset)**:\n\nHistoric buildings can be classified using relevant types from FeatureTypeEnum\n(298 types). Relevant building-related types include:\n\n- Q35112 (monument)\n- Q811979 (architectural structure)\n- Q4989906 (monument)\n- Q1081138 (historic house museum)\n- Q3947 (house)\n- Q16560 (palace)\n- Q23413 (castle)\n- Q44539 (temple)\n- Q317557 (manor house)\n\n**DISTINCTION\
\ FROM CustodianPlace**:\n\n| Property | CustodianPlace | HistoricBuilding |\n|----------|----------------|------------------|\n| **Role** | Main headquarters | Secondary property |\n| **Operations** | Primary operations | May be separate from operations |\n| **Visitation** | Primary visitor destination | May be separate attraction |\n\n**USE CASES**:\n\n1. **Historic House Museum Property**:\n ```yaml\n HistoricBuilding:\n historic_building_id: \"https://nde.nl/ontology/hc/aux/mauritshuis-johan-de-witt\"\n historic_building_name: \"Johan de Witthuis\"\n feature_type_classification: HISTORIC_HOUSE_MUSEUM\n construction_date: \"1650\"\n architectural_style: \"Dutch Golden Age\"\n ```\n\n2. **Heritage Foundation Property**:\n ```yaml\n HistoricBuilding:\n historic_building_name: \"Kasteel Amerongen\"\n feature_type_classification: CASTLE\n heritage_status: \"Rijksmonument\"\n monument_number: \"521814\"\n ```\n\n3. **Abbey Buildings**:\n\
\ ```yaml\n HistoricBuilding:\n historic_building_name: \"Klooster Ter Apel - Gasthuis\"\n feature_type_classification: MONASTERY\n construction_date: \"1465\"\n is_part_of_complex: true\n ```\n"
exact_mappings:
- aat:300005425
close_mappings:
- crm:E24_Physical_Human-Made_Thing
- schema:LandmarksOrHistoricalBuildings
- wd:Q811979
related_mappings:
- crm:E22_Human-Made_Object
- schema:Place
- hc:FeaturePlace
class_uri: hc:HistoricBuilding
description: >-
Architecturally or historically significant building maintained as a
heritage asset and documented with conservation and access metadata.
slots:
- has_style
- designed_by
- in_area
- has_label
- has_condition
- constructed_at
- constructed_at
- constructed_on
- used_for
- has_type
- has_status
@ -63,206 +45,13 @@ classes:
- part_of
- identified_by
- has_score
- has_opening_hour
- has_operating_hours
- derive_from
- generated_by
slot_usage:
has_type:
range: FeatureType
required: true
any_of:
- range: Building
examples:
- value: HISTORIC_HOUSE_MUSEUM
- value: CASTLE
- value: MANOR_HOUSE
constructed_at:
# range: string
examples:
- value: '1650'
- value: ca. 1465
- value: 15th century
constructed_at:
# range: string
examples:
- value: EXACT
- value: APPROXIMATE
has_style:
range: ArchitecturalStyle
inlined: true
examples:
- value:
has_label: Dutch Golden Age
- value:
has_label: Neo-Gothic
- value:
has_label: Amsterdam School
designed_by:
range: Architect
inlined: true
examples:
- value:
has_label: Jacob van Campen
- value:
has_label: P.J.H. Cuypers
has_status:
range: HeritageStatus
inlined: true
examples:
- value:
has_label: Rijksmonument
- value:
has_label: Gemeentelijk monument
identified_by:
# range: string
examples:
- value: '521814'
has_access_policy:
range: boolean
examples:
- value: true
- value: false
has_opening_hour:
range: OpeningHour
inlined: true
multivalued: true
examples:
- value:
opens: '11:00'
closes: '17:00'
- value:
opens: '10:00'
closes: '16:00'
part_of:
range: boolean
examples:
- value: true
has_label:
range: Label
inlined: true
multivalued: true
required: true
examples:
- value:
has_label: Johan de Witthuis
has_type: preferred_name
- value:
has_label: Klooster Ter Apel
has_type: complex_name
in_area:
range: Area
inlined: true
multivalued: true
examples:
- value:
area_value: 450.0
has_measurement_unit:
has_type: SQUARE_METER
has_symbol: "m\xB2"
has_label: Building floor area
- value:
area_value: 1200.0
has_measurement_unit:
has_type: SQUARE_METER
has_symbol: "m\xB2"
is_estimate: true
measurement_method: Historical records
has_label: Total floor area
used_for:
# range: string
examples:
- value: Museum and events
- value: Administrative offices
- value: UNDER_RESTORATION
has_condition:
range: Condition
inlined: true
examples:
- value:
has_type: EXCELLENT
has_description:
description_text: Well-maintained historic fabric
description_type: condition
- value:
has_type: GOOD
has_description:
description_text: Minor wear consistent with age
description_type: condition
- value:
has_type: UNDER_RESTORATION
has_description:
description_text: Major restoration project 2024-2025
description_type: condition
derive_from:
range: CustodianObservation
multivalued: true
required: false
generated_by:
range: ReconstructionActivity
required: false
comments:
- HistoricBuilding models secondary historic properties of heritage custodians
- Getty AAT 300005425 for historic buildings
- Links to FeatureTypeEnum for Wikidata-sourced building classification
- Distinguished from CustodianPlace (main headquarters)
- May be open to public or used for operations/events
- 'MIGRATION NOTE: in_area replaced building_floor_area_sqm (Rule 53)'
- 'MIGRATION NOTE: has_label replaced historic_building_name (Rule 53)'
see_also:
- http://vocab.getty.edu/aat/300005425
- https://schema.org/LandmarksOrHistoricalBuildings
- https://monumentenregister.cultureelerfgoed.nl/
examples:
- value:
historic_building_id: https://nde.nl/ontology/hc/aux/mauritshuis-johan-de-witt
has_label:
- has_label: Johan de Witthuis
has_type: preferred_name
has_type: HISTORIC_HOUSE_MUSEUM
construction_date: '1650'
construction_date_precision: APPROXIMATE
has_style:
has_label: Dutch Golden Age
has_status:
has_label: Rijksmonument
monument_number: '16284'
is_open_to_public: false
current_use: Administrative offices and events
has_condition:
has_type: EXCELLENT
has_description:
description_text: Well-maintained historic fabric
description_type: condition
in_area:
- area_value: 450.0
has_unit:
has_type: SQUARE_METER
has_symbol: "m\xB2"
has_label: Total floor area
- value:
historic_building_id: https://nde.nl/ontology/hc/aux/klooster-ter-apel
has_label:
- has_label: Klooster Ter Apel - Gasthuis
has_type: preferred_name
- has_label: Kasteel Amerongen landgoed
has_type: complex_name
has_type: MONASTERY
construction_date: '1465'
is_part_of_complex: true
current_use: Museum and events
has_condition:
has_type: GOOD
has_description:
description_text: Historic castle in good preservation state
description_type: condition
in_area:
- area_value: 2500.0
has_unit:
has_type: SQUARE_METER
has_symbol: "m\xB2"
is_estimate: true
has_label: Castle floor area
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
broad_mappings:
- schema:LandmarksOrHistoricalBuildings
close_mappings:
- crm:E24_Physical_Human-Made_Thing

View file

@ -3,53 +3,60 @@ name: HistoricalArchive
title: Historical Archive
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
rico: https://www.ica.org/standards/RiC/ontology#
skos: http://www.w3.org/2004/02/skos/core#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../classes/ArchiveOrganizationType
- ../slots/identified_by
- ../slots/has_scope
- ../slots/has_score
- ../slots/has_type
- ../slots/hold_record_set
classes:
HistoricalArchive:
description: "Historical archive (archivo hist\xF3rico, archive historique). An archive that specifically focuses on preserving records of historical value, typically older materials that have passed beyond active administrative use. Historical archives may be independent institutions or divisions within larger archival systems. They emphasize long-term preservation and scholarly access to historical documentation."
class_uri: hc:HistoricalArchive
is_a: ArchiveOrganizationType
class_uri: schema:ArchiveOrganization
description: >-
Archival institution focused on long-term preservation and scholarly access
to records retained for enduring historical value.
alt_descriptions:
nl: Archiefinstelling gericht op duurzame bewaring en wetenschappelijke raadpleging van documenten met blijvende historische waarde.
de: Archiveinrichtung mit Schwerpunkt auf dauerhafter Bewahrung und wissenschaftlichem Zugang zu Unterlagen mit bleibendem historischem Wert.
fr: Institution archivistique axee sur la conservation a long terme et l'acces scientifique a des documents de valeur historique durable.
es: Institucion archivistica centrada en la preservacion a largo plazo y el acceso academico a documentos de valor historico permanente.
ar: مؤسسة أرشيفية تركز على الحفظ طويل الأمد وإتاحة البحث في السجلات ذات القيمة التاريخية الدائمة.
id: Lembaga arsip yang berfokus pada pelestarian jangka panjang dan akses ilmiah terhadap rekaman bernilai sejarah berkelanjutan.
zh: 以长期保存和学术利用永久历史价值记录为核心的档案机构。
structured_aliases:
- literal_form: historisch archief
in_language: nl
- literal_form: Historisches Archiv
in_language: de
- literal_form: archives historiques
in_language: fr
- literal_form: archivo historico
in_language: es
- literal_form: أرشيف تاريخي
in_language: ar
- literal_form: arsip historis
in_language: id
- literal_form: 历史档案馆
in_language: zh
slots:
- has_type
- hold_record_set
- has_score
- identified_by
slot_usage:
has_type:
equals_string: hc:ArchiveOrganizationType
exact_mappings:
- wd:Q3621673
broad_mappings:
- schema:ArchiveOrganization
- wd:Q166118
close_mappings:
- rico:CorporateBody
- skos:Concept
broad_mappings:
- wd:Q166118
slot_usage:
identified_by: null
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
annotations:
skos:prefLabel: Historical Archive
skos:altLabel: "Historisches Archiv, archivo hist\xF3rico, archive historique, archives historiques"
temporal_focus: historical records
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
see_also:
- CurrentArchive
- NationalArchive
- RegionalArchive
comments:
- Historisches Archiv (de)
- "archivo hist\xF3rico (es)"
- archive historique (fr)
- Contrasts with current/active archives (Zwischenarchiv)
- Records typically have permanent retention value
- Primary audience is researchers and historians

View file

@ -1,34 +1,27 @@
id: https://nde.nl/ontology/hc/class/HistoricalArchiveRecordSetType
name: HistoricalArchiveRecordSetType
title: HistoricalArchive Record Set Type
title: Historical Archive Record Set Type
prefixes:
linkml: https://w3id.org/linkml/
schema: http://schema.org/
hc: https://nde.nl/ontology/hc/
rico: https://www.ica.org/standards/RiC/ontology#
skos: http://www.w3.org/2004/02/skos/core#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../classes/CollectionType
- ../slots/has_scope
- ../slots/has_score
- ../slots/has_type
classes:
HistoricalArchiveRecordSetType:
description: 'A rico:RecordSetType for classifying collections held by HistoricalArchive custodians.
'
class_uri: hc:HistoricalArchiveRecordSetType
is_a: CollectionType
class_uri: rico:RecordSetType
description: >-
Classification root for record-set categories typically curated by
historically focused archival institutions.
slots:
- has_type
- has_score
- has_scope
see_also:
- HistoricalArchive
broad_mappings:
- rico:RecordSetType
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"

View file

@ -1,14 +1,11 @@
id: https://nde.nl/ontology/hc/class/HistoricalArchiveRecordSetTypes
name: HistoricalArchiveRecordSetTypes
title: HistoricalArchive Record Set Type Subclasses
title: Historical Archive Record Set Type Subclasses
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#
rico: https://www.ica.org/standards/RiC/ontology#
rico-rst: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- ./HistoricalArchiveRecordSetType
@ -20,67 +17,33 @@ imports:
classes:
HistoricalDocumentFonds:
is_a: HistoricalArchiveRecordSetType
class_uri: rico:RecordSetType
description: "A rico:RecordSetType for Historical documents.\n\n**RiC-O Alignment**:\n\
This class is a specialized rico:RecordSetType following the fonds \norganizational\
\ principle as defined by rico-rst:Fonds.\n"
class_uri: hc:HistoricalDocumentFonds
description: Fonds-level grouping for provenance-bound historical documentation.
slots:
- has_type
- has_score
- has_custodian
- has_note
slot_usage:
has_custodian:
equals_string: HistoricalArchive
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Fonds
close_mappings:
- skos:Concept
see_also:
- HistoricalArchiveRecordSetType
- rico:RecordSetType
HistoricalManuscriptCollection:
is_a: HistoricalArchiveRecordSetType
class_uri: hc:HistoricalManuscriptCollection
description: Collection-level grouping for assembled manuscript heritage resources.
slots:
- has_type
- has_score
- has_custodian
- record_holder_note
- has_type
- has_note
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
has_type:
equals_string: HistoricalDocumentFonds
has_custodian:
equals_string: HistoricalArchive
record_holder_note:
equals_string: This RecordSetType is typically held by HistoricalArchive custodians.
Inverse of rico:isOrWasHolderOf.
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
HistoricalManuscriptCollection:
is_a: HistoricalArchiveRecordSetType
class_uri: rico:RecordSetType
description: "A rico:RecordSetType for Historical manuscripts.\n\n**RiC-O Alignment**:\n\
This class is a specialized rico:RecordSetType following the collection \norganizational\
\ principle as defined by rico-rst:Collection.\n"
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
close_mappings:
- skos:Concept
see_also:
- HistoricalArchiveRecordSetType
- rico:RecordSetType
slots:
- has_type
- has_score
- has_custodian
- record_holder_note
- has_type
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
has_type:
equals_string: HistoricalManuscriptCollection
has_custodian:
equals_string: HistoricalArchive
record_holder_note:
equals_string: This RecordSetType is typically held by HistoricalArchive custodians.
Inverse of rico:isOrWasHolderOf.

View file

@ -1,15 +1,12 @@
id: https://nde.nl/ontology/hc/class/HistoricalRegion
name: historical_region_class
title: Historical Region Class
name: HistoricalRegion
title: Historical Region
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/
skos: http://www.w3.org/2004/02/skos/core#
gn: http://www.geonames.org/ontology#
rdfs: http://www.w3.org/2000/01/rdf-schema#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_description
@ -18,16 +15,12 @@ imports:
- ../slots/has_type
- ../slots/located_in
- ../slots/temporal_extent
default_prefix: hc
classes:
HistoricalRegion:
class_uri: schema:Place
description: "A geographic region that existed in the past (e.g., Duchy of Burgundy, Prussia, Austria-Hungary).\n\n**MIGRATED** from historical_region slot (2026-01-28).\n\n**USE CASE**:\nFinding aids often refer to regions that no longer exist or whose boundaries have changed.\nThis class allows capturing the historical name, type, and temporal extent of such regions.\n"
exact_mappings:
- schema:Place
close_mappings:
- crm:E53_Place
- gn:Feature
class_uri: hc:HistoricalRegion
description: >-
Geographic area definition valid for a past period, used when historical
boundaries or polity names differ from current geography.
slots:
- has_label
- has_type
@ -37,18 +30,10 @@ classes:
- has_description
slot_usage:
has_label:
# range: string
required: true
examples:
- value: Duchy of Brabant
- value: Prussia
has_type:
# range: string
temporal_extent:
range: TimeSpan
located_in:
# range: string
annotations:
specificity_score: 0.3
specificity_rationale: Specialized geographic concept for historical archives.
custodian_types: "['*']"
broad_mappings:
- schema:Place
close_mappings:
- crm:E53_Place

View file

@ -1,19 +1,15 @@
id: https://nde.nl/ontology/hc/class/holy-sacred-site-type
name: holy_sacred_site_type
title: HolySacredSiteType
description: 'Specialized CustodianType for religious institutions and sacred sites that function
as heritage custodians by maintaining cultural collections (archives, libraries,
artifacts, art, liturgical objects).
Coverage: Corresponds to ''H'' (HOLY_SITES) in GLAMORCUBESFIXPHDNT taxonomy.
'
id: https://nde.nl/ontology/hc/class/HolySacredSiteType
name: HolySacredSiteType
title: Holy Sacred Site Type
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/
default_prefix: hc
imports:
- linkml:types
- ../enums/HolySiteTypeEnum
- ./CustodianType
- ../slots/has_content
- ../slots/has_hyponym
- ../slots/has_policy
@ -23,209 +19,36 @@ imports:
- ../slots/has_function
- ../slots/has_tradition
- ../slots/has_status
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/
crm: http://www.cidoc-crm.org/cidoc-crm/
dcterms: http://purl.org/dc/terms/
foaf: http://xmlns.com/foaf/0.1/
wd: http://www.wikidata.org/entity/
classes:
HolySacredSiteType:
is_a: CustodianType
class_uri: skos:Concept
annotations:
skos:prefLabel: Holy/Sacred Site
skos:altLabel: church, cathedral, mosque, synagogue, temple, kerk, kathedraal
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
class_uri: hc:HolySacredSiteType
description: >-
Custodian type for active worship sites that also steward archives,
libraries, objects, and other religious heritage collections.
alt_descriptions:
nl: Bewaarderstype voor actieve gebedsplaatsen die ook archieven, bibliotheken en religieuze erfgoedcollecties beheren.
de: Verwahrerprofil fuer aktive Gottesdienstorte, die zugleich Archive, Bibliotheken und religioese Sammlungen verwalten.
fr: Type de depositaire pour des lieux de culte actifs qui gerent aussi archives, bibliotheques et collections patrimoniales religieuses.
es: Tipo de custodio para lugares de culto activos que ademas gestionan archivos, bibliotecas y colecciones patrimoniales religiosas.
ar: نوع حارس لمواقع العبادة النشطة التي تدير كذلك أرشيفات ومكتبات ومجموعات تراث ديني.
id: Tipe kustodian untuk situs ibadah aktif yang juga mengelola arsip, perpustakaan, dan koleksi warisan keagamaan.
zh: 适用于仍在礼拜使用且同时保管宗教遗产档案、文献与藏品的保管者类型。
structured_aliases:
- literal_form: kerk
predicate: EXACT_SYNONYM
- literal_form: religieuze erfgoedlocatie
in_language: nl
- literal_form: kerken
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: kathedraal
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: moskee
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: synagoge
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: tempel
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: klooster
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: abdij
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: religieus erfgoed
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: heilige plaats
predicate: EXACT_SYNONYM
in_language: nl
- literal_form: church
predicate: EXACT_SYNONYM
in_language: en
- literal_form: cathedral
predicate: EXACT_SYNONYM
in_language: en
- literal_form: mosque
predicate: EXACT_SYNONYM
in_language: en
- literal_form: synagogue
predicate: EXACT_SYNONYM
in_language: en
- literal_form: temple
predicate: EXACT_SYNONYM
in_language: en
- literal_form: monastery
predicate: EXACT_SYNONYM
in_language: en
- literal_form: abbey
predicate: EXACT_SYNONYM
in_language: en
- literal_form: convent
predicate: EXACT_SYNONYM
in_language: en
- literal_form: religious heritage
predicate: EXACT_SYNONYM
in_language: en
- literal_form: sacred site
predicate: EXACT_SYNONYM
in_language: en
- literal_form: holy site
predicate: EXACT_SYNONYM
in_language: en
- literal_form: place of worship
predicate: EXACT_SYNONYM
in_language: en
- literal_form: Kirche
predicate: EXACT_SYNONYM
- literal_form: religioeser Erbeort
in_language: de
- literal_form: Kathedrale
predicate: EXACT_SYNONYM
in_language: de
- literal_form: Moschee
predicate: EXACT_SYNONYM
in_language: de
- literal_form: Synagoge
predicate: EXACT_SYNONYM
in_language: de
- literal_form: Tempel
predicate: EXACT_SYNONYM
in_language: de
- literal_form: Kloster
predicate: EXACT_SYNONYM
in_language: de
- literal_form: Abtei
predicate: EXACT_SYNONYM
in_language: de
- literal_form: "\xE9glise"
predicate: EXACT_SYNONYM
- literal_form: site patrimonial sacre
in_language: fr
- literal_form: "cath\xE9drale"
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: "mosqu\xE9e"
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: synagogue
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: temple
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: "monast\xE8re"
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: abbaye
predicate: EXACT_SYNONYM
in_language: fr
- literal_form: iglesia
predicate: EXACT_SYNONYM
- literal_form: sitio patrimonial sagrado
in_language: es
- literal_form: catedral
predicate: EXACT_SYNONYM
in_language: es
- literal_form: mezquita
predicate: EXACT_SYNONYM
in_language: es
- literal_form: sinagoga
predicate: EXACT_SYNONYM
in_language: es
- literal_form: templo
predicate: EXACT_SYNONYM
in_language: es
- literal_form: monasterio
predicate: EXACT_SYNONYM
in_language: es
- literal_form: chiesa
predicate: EXACT_SYNONYM
in_language: it
- literal_form: cattedrale
predicate: EXACT_SYNONYM
in_language: it
- literal_form: moschea
predicate: EXACT_SYNONYM
in_language: it
- literal_form: sinagoga
predicate: EXACT_SYNONYM
in_language: it
- literal_form: tempio
predicate: EXACT_SYNONYM
in_language: it
- literal_form: monastero
predicate: EXACT_SYNONYM
in_language: it
- literal_form: igreja
predicate: EXACT_SYNONYM
in_language: pt
- literal_form: catedral
predicate: EXACT_SYNONYM
in_language: pt
- literal_form: mesquita
predicate: EXACT_SYNONYM
in_language: pt
- literal_form: sinagoga
predicate: EXACT_SYNONYM
in_language: pt
- literal_form: templo
predicate: EXACT_SYNONYM
in_language: pt
- literal_form: mosteiro
predicate: EXACT_SYNONYM
in_language: pt
description: "Specialized custodian type for religious institutions and sacred sites managing\nheritage collections (archives, libraries, artifacts, liturgical objects, art).\n\n**CRITICAL DISTINCTION - Religious Site vs. Religious Heritage Museum**:\n\n**HolySacredSite** (this type):\n- PRIMARY function = ACTIVE WORSHIP (religious practice)\n- SECONDARY function = Heritage collection (supports religious mission)\n- Example: Vatican Apostolic Archive (papal archive supporting Church operations)\n- Example: Canterbury Cathedral Library (church library for clergy and scholars)\n\n**Museum** (MuseumType, not this type):\n- PRIMARY function = PUBLIC EXHIBITION (heritage presentation)\n- SECONDARY function = Religious theme (subject matter)\n- Example: Museum Catharijneconvent (secular museum about religious art)\n- Example: Bible Museum Amsterdam (educational museum, not worship site)\n\n**Decision Rule**: Is the site's PRIMARY function active religious worship?\n- YES \u2192 HolySacredSiteType\n\
- NO \u2192 MuseumType (with religious theme)\n\n1. **Structural Layer** (W3C Standards):\n - skos:Concept - Thesaurus classification\n - Classification within CustodianType hierarchy\n\n2. **Domain Layer** (Heritage Ontologies):\n - crm:E39_Actor - CIDOC-CRM actor (religious institution)\n - schema:PlaceOfWorship - Religious site entity\n - schema:ArchiveOrganization - For sites with archival collections\n\n3. **Web Layer** (Schema.org):\n - schema:Organization - Generic organization type\n - schema:Church / schema:Mosque / schema:Temple / schema:Synagogue - Specific types\n - schema:ReligiousOrganization - Religious entity classification\n\n**Wikidata Coverage** (70+ religious heritage custodian entities):\n\nChristian Heritage Sites:\n- Q16970 (church) - Christian worship buildings with archives/libraries\n- Q44613 (monastery) - Monastic communities with manuscript collections\n- Q2977 (cathedral) - Episcopal churches with treasuries/archives\n- Q515 (abbey) - Religious\
\ communities with historical libraries\n- Q44539 (convent) - Female religious communities with collections\n- Q56242215 (parish church archive) - Local church historical records\n\nIslamic Heritage Sites:\n- Q32815 (mosque) - Islamic worship sites with manuscript libraries\n- Q5874 (madrasa) - Islamic educational institutions with collections\n- Q4468076 (zawiya) - Sufi lodges with spiritual texts\n- Q215380 (Islamic library) - Mosque-attached manuscript collections\n\nJewish Heritage Sites:\n- Q34627 (synagogue) - Jewish worship sites with Torah scrolls/archives\n- Q1128637 (yeshiva) - Jewish religious schools with Talmudic libraries\n- Q2179958 (geniza) - Jewish document repositories\n- Q215380 (synagogue archive) - Community historical records\n\nBuddhist Heritage Sites:\n- Q44539 (temple) - Buddhist worship sites with sutra collections\n- Q44613 (monastery) - Monastic communities with Buddhist texts\n- Q1457 (pagoda) - Buddhist structures with relic collections\n- Q215380 (temple\
\ library) - Buddhist manuscript collections\n\nHindu Heritage Sites:\n- Q44539 (temple) - Hindu worship sites with Sanskrit manuscripts\n- Q5870 (ashram) - Hindu spiritual communities with libraries\n- Q215380 (temple archive) - Hindu community records\n\nMulti-Faith Heritage:\n- Q1370598 (religious archive) - Interfaith archival institutions\n- Q5638360 (religious library) - Multi-denominational collections\n- Q839954 (pilgrimage site) - Sacred sites with votive collections\n\nVatican and Papal Collections:\n- Q213322 (Vatican Apostolic Archive) - Papal historical archive\n- Q213333 (Vatican Apostolic Library) - Papal manuscript library\n- Q2943 (Vatican Museums) - [NOTE: This is MuseumType, not HolySacredSite]\n\nSikh Heritage Sites:\n- Q33881 (gurdwara) - Sikh worship sites with historical manuscripts\n- Q5190359 (Sikh archive) - Gurdwara community records\n\n**Key Distinctions from Other Types**:\n\nvs. Museum:\n- HolySacredSite: ACTIVE WORSHIP site with collections supporting\
\ religious mission\n- Museum: PUBLIC EXHIBITION institution (secular, even if religious theme)\n- Example: Canterbury Cathedral (worship) vs. Museum Catharijneconvent (museum about religion)\n\nvs. Archive:\n- HolySacredSite: RELIGIOUS INSTITUTION with archival holdings\n- Archive: SECULAR/GOVERNMENT archive (even if holds church records)\n- Example: Parish church archive vs. Diocesan archive (transferred to state archive)\n\nvs. Library:\n- HolySacredSite: RELIGIOUS LIBRARY for clergy/scholars (theological focus)\n- Library: PUBLIC/ACADEMIC library (secular lending institution)\n- Example: Monastery library vs. Theology faculty library at university\n\nvs. IntangibleHeritageGroup:\n- HolySacredSite: INSTITUTIONALIZED religion with physical collections\n- IntangibleHeritageGroup: LIVING PRACTICES and community traditions\n- Example: Cathedral with archives vs. Folk religion practitioners\n\nvs. FeatureCustodian:\n- HolySacredSite: Religious institution MANAGING heritage collections\n\
- FeatureCustodian: Organization managing PHYSICAL monument (building itself)\n- Example: Church clergy (managing archives) vs. Monument trust (managing building)\n\n**Collection Types in Religious Heritage**:\n\n1. **Archival Collections**:\n - Parish registers (baptisms, marriages, deaths)\n - Church administrative records\n - Correspondence (bishops, clergy, parishioners)\n - Property deeds and financial records\n - Ecclesiastical court records\n\n2. **Library Collections**:\n - Sacred texts (Bibles, Qurans, Torahs, Sutras)\n - Theological treatises and commentaries\n - Liturgical books (missals, prayer books, hymnals)\n - Medieval manuscripts and illuminations\n - Religious history and philosophy\n\n3. **Artifact Collections**:\n - Liturgical vessels (chalices, patens, thuribles)\n - Vestments and textiles (chasubles, altar cloths)\n - Religious art (icons, statues, paintings, stained glass)\n - Relics and reliquaries\n - Votive offerings and ex-votos\n\
\n4. **Architectural Heritage**:\n - Historic building fabric (original construction)\n - Architectural fragments (capitals, columns, screens)\n - Building archives (construction documents, plans)\n - Archaeological remains (crypts, foundations)\n\n**Access and Stewardship Challenges**:\n\nReligious heritage collections face unique issues:\n- **Sacred vs. Cultural**: Items may be sacred objects, not just cultural heritage\n- **Active Use**: Collections still in liturgical use (not just preservation)\n- **Restricted Access**: Security, sacredness, or privacy concerns\n- **Volunteer Management**: Often maintained by clergy/volunteers, not professionals\n- **Secularization**: Church closures transfer collections to secular archives\n- **Interfaith Sensitivity**: Respectful representation of diverse traditions\n\n**RDF Serialization Example**:\n\n```turtle\n@prefix hc: <https://nde.nl/ontology/hc/> .\n@prefix skos: <http://www.w3.org/2004/02/skos/core#> .\n@prefix schema: <http://schema.org/>\
\ .\n@prefix crm: <http://www.cidoc-crm.org/cidoc-crm/> .\n\nhc:HolySacredSiteType\n a skos:Concept, hc:CustodianType ;\n skos:prefLabel \"Holy/Sacred Site Type\"@en,\n \"Religieuze Erfgoedlocatie Type\"@nl,\n \"Religi\xF6se St\xE4tte Typ\"@de,\n \"Type de Site Sacr\xE9\"@fr ;\n skos:definition \"Religious institutions managing heritage collections\"@en ;\n skos:broader hc:CustodianType ;\n skos:narrower hc:ChurchArchive,\n hc:MonasteryLibrary,\n hc:TempleCollection ;\n schema:url <https://nde.nl/ontology/hc/class/holy-sacred-site-type> .\n\n# Example: Vatican Apostolic Archive (papal archive)\n<https://w3id.org/heritage/custodian/va/vatican-apostolic-archive>\n a schema:PlaceOfWorship, schema:ArchiveOrganization, crm:E39_Actor, hc:HolySacredSite ;\n hc:custodian_type hc:HolySacredSiteType ;\n hc:religious_tradition \"Roman Catholic Christianity\" ;\n hc:has_content [ hc:content_description\
\ \"Archival records, Papal documents, Medieval manuscripts, Correspondence\" ] ;\n hc:religious_function \"Support papal governance\", \"Document Church history\", \"Preserve canon law\" ;\n hc:access_policy \"Restricted access by appointment\", \"Scholars and researchers only\", \"No browsing\" ;\n hc:managed_by \"Prefect of Vatican Apostolic Archive\", \"Papal administrative authority\" ;\n hc:secularization_status \"Active religious institution, No secularization\" ;\n schema:name \"Vatican Apostolic Archive\"@en, \"Archivum Apostolicum Vaticanum\"@la ;\n schema:alternateName \"Vatican Secret Archives (former name until 2019)\" ;\n schema:foundingDate \"1612\" ;\n schema:location \"Vatican City\" ;\n schema:description \"Central repository for papal and Vatican documents, holding over 85 km of shelving with records dating back to the 8th century\" ;\n schema:url <https://www.archiviosegretovaticano.va/> .\n```\n"
exact_mappings:
- skos:Concept
close_mappings:
- schema:PlaceOfWorship
- crm:E39_Actor
- schema:ReligiousOrganization
related_mappings:
- schema:Church
- schema:Mosque
- schema:Temple
- schema:Synagogue
- schema:ArchiveOrganization
- literal_form: موقع تراث ديني
in_language: ar
- literal_form: situs warisan suci
in_language: id
- literal_form: 宗教圣地类型
in_language: zh
slots:
- has_policy
- has_content
@ -237,67 +60,9 @@ classes:
- managed_by
- has_score
slot_usage:
has_tradition:
# range: string
required: true
examples:
- value: Roman Catholic Christianity
- value: Sunni Islam, Hanafi school
- value: Theravada Buddhism
has_content:
# range: string # uriorcurie
# range: CollectionContent
multivalued: true
inlined: false # Fixed invalid inline for primitive type
inlined_as_list: false # Fixed invalid inline for primitive type
required: true
examples:
- value:
has_type:
- type_label: Archival
- type_label: Library
- value:
has_type:
- type_label: Archival
- type_label: Liturgical
- value:
has_type:
- type_label: Library
- type_label: Art
has_function:
# range: string
required: true
examples:
- value: Papal governance, Church history, Canon law
- value: Clergy education, Liturgical support
- value: Community genealogy, Ritual preparation
has_policy:
# range: string
required: true
examples:
- value: Restricted, Scholars by appointment, No browsing
- value: Public viewing hours, No photography, Guided tours
- value: Digitized online, Physical access by permission
managed_by:
# range: string # uriorcurie
required: true
examples:
- value: Prefect of Vatican Archive, Papal authority
- value: Parish priest, Volunteer committee
- value: Monastic community, Brother librarian
has_status:
# range: string
required: true
examples:
- value: Active religious institution, No secularization
- value: Partially secularized, Collections transferred to state archive
- value: Deconsecrated, Converted to museum
has_type:
equals_expression: '["hc:HolySacredSiteType"]'
has_hyponym:
# range: string # uriorcurie
# range: HolySiteType
examples:
- value:
has_label: Church
equivalent_to:
equals_string: hc:HolySacredSiteType
broad_mappings:
- skos:Concept
close_mappings:
- schema:PlaceOfWorship

View file

@ -1,25 +1,23 @@
id: https://nde.nl/ontology/hc/class/HolySiteType
name: holy_site_type_class
title: Holy Site Type Class
name: HolySiteType
title: Holy Site Type
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
schema: http://schema.org/
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_description
- ../slots/identified_by
- ../slots/has_label
- ../slots/equivalent_to
default_prefix: hc
classes:
HolySiteType:
class_uri: skos:Concept
description: "Classification of a holy or sacred site type (e.g., Church, Mosque, Synagogue).\n\n**MIGRATED** from holy_site_subtype slot (2026-01-28) per Rule 53.\n\n**Purpose**:\nProvides structured classification for religious heritage sites beyond the top-level 'H' code.\nLinks to Wikidata entities for semantic grounding.\n"
broad_mappings:
- skos:Concept
class_uri: hc:HolySiteType
description: >-
Controlled subtype vocabulary for categorizing specific forms of sacred
or worship-related heritage sites.
slots:
- identified_by
- has_label
@ -27,25 +25,8 @@ classes:
- equivalent_to
slot_usage:
identified_by:
# range: string # uriorcurie
required: true
examples:
- value: hc:HolySiteType/CHURCH
- value: hc:HolySiteType/MOSQUE
has_label:
# range: string
required: true
examples:
- value: Church
- value: Mosque
- value: Synagogue
equivalent_to:
range: WikiDataIdentifier
examples:
- value:
- value:
annotations:
specificity_score: 0.2
specificity_rationale: Classification for religious heritage sites.
custodian_types: "['H']"
custodian_types_rationale: Specific to Holy Sites (Type H).
broad_mappings:
- skos:Concept

View file

@ -3,65 +3,60 @@ name: HospitalArchive
title: Hospital Archive
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
rico: https://www.ica.org/standards/RiC/ontology#
skos: http://www.w3.org/2004/02/skos/core#
wd: http://www.wikidata.org/entity/
hc: https://nde.nl/ontology/hc/
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
- ../classes/ArchiveOrganizationType
- ../slots/identified_by
- ../slots/has_scope
- ../slots/has_score
- ../slots/has_type
- ../slots/hold_record_set
classes:
HospitalArchive:
description: "Hospital archive (Krankenhausarchiv, archivo hospitalario, archives hospitali\xE8res). Archives that preserve records created by hospitals and healthcare institutions. These may include administrative records, patient records (subject to privacy regulations), medical research documentation, photographs, and institutional histories. Hospital archives are valuable for medical history, genealogy, and understanding the evolution of healthcare practices."
class_uri: hc:HospitalArchive
is_a: ArchiveOrganizationType
class_uri: schema:ArchiveOrganization
exact_mappings:
- wd:Q17301917
close_mappings:
- rico:CorporateBody
- skos:Concept
broad_mappings:
- wd:Q166118
description: >-
Archival institution within healthcare governance that preserves
administrative, clinical, and research records under medical privacy rules.
alt_descriptions:
nl: Archiefinstelling binnen de zorg die bestuurlijke, klinische en onderzoeksdocumentatie bewaart onder medische privacyregels.
de: Archiveinrichtung im Gesundheitswesen zur Bewahrung administrativer, klinischer und forschungsbezogener Unterlagen unter medizinischem Datenschutz.
fr: Institution archivistique du secteur hospitalier conservant des dossiers administratifs, cliniques et de recherche sous contraintes de confidentialite medicale.
es: Institucion archivistica del ambito hospitalario que conserva registros administrativos, clinicos y de investigacion bajo normas de privacidad medica.
ar: مؤسسة أرشيفية في قطاع الرعاية الصحية تحفظ سجلات إدارية وسريرية وبحثية مع التقيد بمتطلبات سرية البيانات الطبية.
id: Lembaga arsip dalam tata kelola kesehatan yang melestarikan rekaman administratif, klinis, dan riset dengan aturan privasi medis.
zh: 隶属医疗体系、在医学隐私规范下保存行政、临床与研究记录的档案机构。
structured_aliases:
- literal_form: ziekenhuisarchief
in_language: nl
- literal_form: Krankenhausarchiv
in_language: de
- literal_form: archives hospitalieres
in_language: fr
- literal_form: archivo hospitalario
in_language: es
- literal_form: أرشيف المستشفى
in_language: ar
- literal_form: arsip rumah sakit
in_language: id
- literal_form: 医院档案馆
in_language: zh
slots:
- has_type
- hold_record_set
- has_score
- identified_by
slot_usage:
identified_by: null
hold_record_set:
equals_expression: '["hc:HospitalAdministrationFonds", "hc:PatientRecordsSeries", "hc:MedicalResearchCollection", "hc:NursingRecordsCollection", "hc:MedicalPhotographyCollection"]
'
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
annotations:
skos:prefLabel: Hospital Archive
skos:altLabel: "Krankenhausarchiv, archivo hospitalario, archives hospitali\xE8res, Medical Archive, Healthcare Archive"
subject_domain: healthcare/medical
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
see_also:
- MedicalArchive
- InstitutionalArchive
- HealthcareRecords
- HospitalArchiveRecordSetType
comments:
- Krankenhausarchiv (de)
- archivo hospitalario (es)
- "archives hospitali\xE8res (fr)"
- Patient records subject to strict privacy and retention regulations
- Important for history of medicine and public health research
- May include records from associated medical schools or research
equals_string: hc:ArchiveOrganizationType
exact_mappings:
- wd:Q17301917
broad_mappings:
- schema:ArchiveOrganization
- wd:Q166118
close_mappings:
- rico:CorporateBody

View file

@ -3,38 +3,26 @@ name: HospitalArchiveRecordSetType
title: Hospital Archive Record Set Type
prefixes:
linkml: https://w3id.org/linkml/
schema: http://schema.org/
skos: http://www.w3.org/2004/02/skos/core#
hc: https://nde.nl/ontology/hc/
rico: https://www.ica.org/standards/RiC/ontology#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../classes/CollectionType
- ../slots/has_scope
- ../slots/has_score
- ../slots/has_type
- ../slots/related_to
classes:
HospitalArchiveRecordSetType:
abstract: true
class_uri: rico:RecordSetType
description: "Abstract base class for all hospital archive record set types.\n\n**Definition**:\nA rico:RecordSetType that classifies collections held by hospital and healthcare \narchives. Hospital archives preserve records documenting patient care, medical \nadministration, research activities, and institutional history.\n\n**Subclasses**:\n- HospitalAdministrationFonds (institutional governance and administration)\n- PatientRecordsSeries (patient care documentation)\n- MedicalResearchCollection (clinical research and trials)\n- NursingRecordsCollection (nursing administration and education)\n- MedicalPhotographyCollection (medical imaging and documentation)\n\n**RiC-O Alignment**:\nThis is an abstract type classifier. Subclasses specify both the domain \n(type of healthcare records) and organizational principle (fonds, series, collection).\n\n**Dual-Class Pattern**:\nHospitalArchive (ArchiveOrganizationType) = the custodian institution.\nHospitalArchiveRecordSetType (rico:RecordSetType)\
\ = the collection types held.\n\n**Privacy Considerations**:\nHospital archives contain highly sensitive personal health information.\nAccess is strictly regulated by medical privacy laws (GDPR/AVG, HIPAA).\nPatient records typically have extended retention and closure periods.\n"
exact_mappings:
- rico:RecordSetType
see_also:
- HospitalArchive
- HospitalAdministrationFonds
- PatientRecordsSeries
- MedicalResearchCollection
- NursingRecordsCollection
- MedicalPhotographyCollection
class_uri: hc:HospitalArchiveRecordSetType
is_a: CollectionType
description: >-
Classification root for healthcare record-set categories managed by
hospital archival institutions.
slots:
- has_type
- has_score
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
- has_scope
broad_mappings:
- rico:RecordSetType

View file

@ -4,11 +4,8 @@ title: Hospital Archive Record Set Type Subclasses
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#
rico: https://www.ica.org/standards/RiC/ontology#
rico-rst: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- ./HospitalArchiveRecordSetType
@ -17,740 +14,90 @@ imports:
- ../slots/has_type
- ../slots/has_note
- ../slots/has_scope
- ../slots/has_custodian
classes:
HospitalAdministrationFonds:
is_a: HospitalArchiveRecordSetType
class_uri: rico:RecordSetType
description: 'A rico:RecordSetType for hospital administration records organized
as fonds.
**Definition**:
Records created by hospital governance and administrative functions,
documenting institutional management, policy, finances, and operations.
Organized by provenance (creating administrative unit) following archival principles.
**Typical Contents**:
- Board minutes and resolutions (bestuursstukken)
- Annual reports (jaarverslagen)
- Financial records (financiele administratie)
- Personnel administration
- Building and facilities records
- Policy documents and regulations
- Correspondence files
- Committee records
- Accreditation documentation
- Quality assurance records
**Governance Structures**:
Hospital administration records reflect different governance models:
- Public hospitals (government oversight)
- Religious/charitable hospitals (stichtingen)
- University hospitals (academic governance)
- Private hospitals (corporate governance)
**Historical Value**:
Hospital administration fonds are primary sources for:
- History of healthcare institutions
- Medical policy development
- Healthcare economics
- Social history of medicine
**Dutch Context**:
Key administrative record types:
- Reglementen (bylaws and regulations)
- Notulen (minutes)
- Begrotingen (budgets)
- Personeelsdossiers (staff files)
**RiC-O Alignment**:
This class is a specialized rico:RecordSetType. Records classified with this
type follow the fonds organizational principle as defined by rico-rst:Fonds
(provenance-based organization by creating administrative unit).
'
structured_aliases:
- literal_form: Krankenhausverwaltungsbestand
in_language: de
- literal_form: fondo de administracion hospitalaria
in_language: es
- literal_form: fonds d'administration hospitaliere
in_language: fr
- literal_form: ziekenhuisbestuursarchief
in_language: nl
- literal_form: fundo de administracao hospitalar
in_language: pt
keywords:
- hospital administration
- board minutes
- annual reports
- hospital governance
- healthcare management
- financial records
- personnel administration
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Fonds
- wd:Q1643722
- rico:RecordSetType
- skos:Concept
close_mappings:
- skos:Concept
see_also:
- HospitalArchiveRecordSetType
- rico:RecordSetType
- rico-rst:Fonds
- HospitalArchive
- InstitutionalArchive
annotations:
retention_note: Administrative records have varying retention periods. Some
(e.g., board minutes, annual reports) are permanent; others have statutory
periods.
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
class_uri: hc:HospitalAdministrationFonds
description: Fonds-level grouping for governance and administrative records from hospital management.
slots:
- has_type
- has_score
- has_note
- has_type
- has_scope
- has_scope
- has_custodian
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
has_type:
equals_string: HospitalAdministrationFonds
has_note:
equals_string: This RecordSetType classifies record sets following the fonds
principle as defined by rico-rst:Fonds. Provenance-based organization by creating
administrative unit (board, department, committee).
has_scope:
equals_string: '["board minutes", "annual reports", "financial records", "personnel
files", "policy documents"]'
has_scope:
equals_string: '["patient records", "medical research", "nursing records",
"clinical documentation"]'
has_custodian:
equals_string: HospitalArchive
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Fonds
PatientRecordsSeries:
is_a: HospitalArchiveRecordSetType
class_uri: rico:RecordSetType
description: 'A rico:RecordSetType for patient records organized as series.
**Definition**:
Records documenting individual patient care episodes, including admission,
treatment, and discharge. Typically organized as chronological series
by year, department, or patient number.
**Typical Contents**:
- Patient admission records (opnameboeken)
- Medical histories (ziektegeschiedenissen)
- Treatment records
- Surgical records (operatieverslagen)
- Diagnostic reports
- Nursing notes
- Discharge summaries
- Death registers (overlijdensregisters)
- Birth registers (geboorteregisters)
**Historical Patient Record Formats**:
- Pre-20th century: Ledger-based registers
- Early 20th century: Individual patient folders
- Mid-20th century: Standardized medical records
- Late 20th century: Hybrid paper/electronic
- 21st century: Electronic health records (EHR/EPD)
**Privacy and Access**:
Patient records are highly sensitive:
- GDPR/AVG protection for living patients
- Extended closure periods (typically 100+ years after birth)
- Medical confidentiality obligations
- Research access requires ethics approval
**Genealogical Value**:
Historical patient records valuable for:
- Family history research (births, deaths)
- Medical genealogy
- Epidemiological research
- Social history
**Dutch Context**:
Key series types:
- Patientenregisters
- Opname- en ontslagboeken
- Operatieregisters
- Kraamboeken (maternity registers)
**RiC-O Alignment**:
This class is a specialized rico:RecordSetType. Records classified with this
type follow the series organizational principle as defined by rico-rst:Series
(chronological has_arrangement by year, department, or sequential patient number).
'
structured_aliases:
- literal_form: Patientenaktenserie
in_language: de
- literal_form: serie de expedientes de pacientes
in_language: es
- literal_form: serie de dossiers de patients
in_language: fr
- literal_form: patientendossiers
in_language: nl
- literal_form: serie de prontuarios de pacientes
in_language: pt
keywords:
- patient records
- medical records
- admission records
- surgical records
- birth registers
- death registers
- medical history
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Series
- wd:Q185583
- rico:RecordSetType
- skos:Concept
close_mappings:
- skos:Concept
see_also:
- HospitalArchiveRecordSetType
- rico:RecordSetType
- rico-rst:Series
annotations:
retention_note: 'Retention requirements vary by record type and jurisdiction.
Netherlands: typically 15-20 years for active care, longer for research-relevant
records. Historical records may be permanent.'
genealogy_note: Historical patient records (pre-1920) increasingly accessible
for genealogical research. Birth/death registers particularly valuable.
class_uri: hc:PatientRecordsSeries
description: Series-level grouping for care episode records with heightened privacy controls.
slots:
- has_type
- has_score
- has_note
- has_note
- has_type
- has_scope
- has_scope
- has_custodian
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType"]'
has_type:
equals_string: PatientRecordsSeries
has_note:
equals_string: This RecordSetType classifies record sets following the series
principle as defined by rico-rst:Series. Chronological has_arrangement by
year, department, or sequential patient number.
has_scope:
equals_string: '["admissions", "treatments", "surgeries", "diagnoses", "births",
"deaths"]'
has_scope:
equals_string: '["administrative records", "research data", "nursing education"]'
has_note:
equals_string: HIGHLY SENSITIVE. Patient records contain protected health
information. Access restricted by GDPR/AVG. Extended closure periods (100+
years from birth date). Research requires ethics committee approval.
has_custodian:
equals_string: HospitalArchive
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Series
MedicalResearchCollection:
is_a: HospitalArchiveRecordSetType
class_uri: rico:RecordSetType
description: 'A rico:RecordSetType for medical research documentation.
**Definition**:
Collections documenting clinical research, medical trials, and scientific
investigations conducted at hospitals and medical centers. Combines
official research records with collected data and publications.
**Typical Contents**:
- Clinical trial protocols
- Research data sets
- Ethics committee approvals (METC)
- Informed consent documentation
- Research correspondence
- Laboratory notebooks
- Statistical analyses
- Publications and manuscripts
- Grant documentation
- Patent filings
**Research Types**:
- Clinical trials (interventional studies)
- Observational studies
- Case studies
- Basic research (laboratory)
- Translational research
- Epidemiological studies
**Data Management**:
Medical research collections require:
- Data integrity documentation
- Audit trails
- Long-term preservation plans
- De-identification protocols
- Reproducibility documentation
**Regulatory Context**:
Research records subject to:
- Good Clinical Practice (GCP) guidelines
- FDA/EMA regulatory requirements
- Research ethics regulations
- Data retention requirements (typically 15-25 years)
**Dutch Context**:
Key elements:
- METC goedkeuringen (ethics approvals)
- WMO (Medical Research Act) documentation
- CCMO registrations
- NWO/ZonMw grant records
**RiC-O Alignment**:
This class is a specialized rico:RecordSetType. Records classified with this
type follow the collection organizational principle as defined by rico-rst:Collection
(assembled research documentation organized by project, grant, or research area).
'
structured_aliases:
- literal_form: Medizinische Forschungssammlung
in_language: de
- literal_form: coleccion de investigacion medica
in_language: es
- literal_form: collection de recherche medicale
in_language: fr
- literal_form: medisch onderzoeksarchief
in_language: nl
- literal_form: colecao de pesquisa medica
in_language: pt
keywords:
- medical research
- medisch onderzoek
- clinical trials
- klinische studies
- research data
- ethics approval
- METC
- clinical research
- laboratory notebooks
- research protocols
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
- wd:Q9388534
- rico:RecordSetType
- skos:Concept
close_mappings:
- skos:Concept
see_also:
- HospitalArchiveRecordSetType
- rico:RecordSetType
- rico-rst:Collection
- AcademicArchive
- ResearchDataCollection
annotations:
regulatory_note: Research records subject to GCP guidelines, regulatory requirements
(FDA/EMA), and data retention mandates (typically 15-25 years). Ethics committee
approvals required for human subjects research.
data_management_note: Requires robust data management including audit trails,
de-identification protocols, and long-term preservation plans. FAIR principles
apply.
class_uri: hc:MedicalResearchCollection
description: Collection-level grouping for clinical research protocols, datasets, and approval files.
slots:
- has_type
- has_score
- has_note
- has_type
- has_scope
- has_scope
- has_custodian
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType", "hc:ResearchOrganizationType"]'
has_type:
equals_string: MedicalResearchCollection
has_note:
equals_string: This RecordSetType classifies record sets following the collection
principle as defined by rico-rst:Collection. Assembled research documentation organized
by project, grant, or research area.
has_scope:
equals_string: '["clinical trials", "research protocols", "ethics approvals",
"data sets", "publications"]'
has_scope:
equals_string: '["routine patient care", "administrative records", "nursing
education"]'
has_custodian:
equals_string: HospitalArchive
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
NursingRecordsCollection:
is_a: HospitalArchiveRecordSetType
class_uri: rico:RecordSetType
description: 'A rico:RecordSetType for nursing administration and education records.
**Definition**:
Collections documenting nursing services, education, and professional
development within healthcare institutions. Includes both administrative
records and educational materials.
**Typical Contents**:
- Nursing school records (verpleegkundigenopleiding)
- Student registers and transcripts
- Curriculum documentation
- Examination records
- Nursing procedure manuals
- Staff scheduling records
- Quality improvement documentation
- Nursing association records
- Photographs (class photos, ceremonies)
- Oral histories with nurses
**Historical Context**:
Nursing archives document:
- Professionalization of nursing
- Evolution of nursing education
- Changes in patient care practices
- Women''s history (majority female profession)
- Hospital hierarchy and labor relations
**Education Documentation**:
- Training school curricula
- Apprenticeship records
- Certification documentation
- Continuing education records
- Specialization training
**Dutch Context**:
Key elements:
- Diploma''s verpleegkunde
- Leerlingregisters
- Opleidingsreglementen
- Verenigingsarchieven (nursing associations)
- Foto''s van studiejaargroepen
**RiC-O Alignment**:
This class is a specialized rico:RecordSetType. Records classified with this
type follow the collection organizational principle as defined by rico-rst:Collection
(assembled nursing documentation organized by school, department, or time period).
'
structured_aliases:
- literal_form: Pflegedokumentationssammlung
in_language: de
- literal_form: coleccion de documentacion de enfermeria
in_language: es
- literal_form: collection de documentation infirmiere
in_language: fr
- literal_form: verpleegkundig archief
in_language: nl
- literal_form: colecao de documentacao de enfermagem
in_language: pt
keywords:
- nursing records
- verpleegkundig archief
- nursing education
- nursing school
- student nurses
- leerling-verpleegkundigen
- nursing history
- nursing administration
- nurse training
- nursing profession
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
- wd:Q9388534
- rico:RecordSetType
- skos:Concept
close_mappings:
- skos:Concept
see_also:
- HospitalArchiveRecordSetType
- rico:RecordSetType
- rico-rst:Collection
- EducationalInstitutionArchive
annotations:
historical_note: Nursing archives are valuable for women's history and the history
of healthcare professionalization. Many hospitals maintained their own nursing
schools until the late 20th century.
class_uri: hc:NursingRecordsCollection
description: Collection-level grouping for nursing education and professional practice documentation.
slots:
- has_type
- has_score
- has_note
- has_note
- has_type
- has_scope
- has_scope
- has_custodian
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType", "hc:EducationProviderType"]'
has_type:
equals_string: NursingRecordsCollection
has_note:
equals_string: This RecordSetType classifies record sets following the collection
principle as defined by rico-rst:Collection. Assembled nursing documentation organized
by school, department, or time period.
has_scope:
equals_string: '["nursing education", "student records", "curricula", "staff
records", "photographs"]'
has_scope:
equals_string: '["patient care documentation", "medical research", "administrative
records (general)"]'
has_note:
equals_string: Student records contain personal information subject to privacy
protection. Historical records (pre-1920) more accessible.
has_custodian:
equals_string: HospitalArchive
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
MedicalPhotographyCollection:
is_a: HospitalArchiveRecordSetType
class_uri: rico:RecordSetType
description: "A rico:RecordSetType for medical photography and imaging documentation.\n\
\n**Definition**:\nCollections of photographs, images, and visual documentation\
\ created \nfor medical, educational, and institutional purposes. Includes clinical\n\
photography, facility documentation, and historical photographs.\n\n**Typical\
\ Contents**:\n- Clinical photography (dermatology, surgery, pathology)\n- Medical\
\ illustrations\n- X-rays and radiological images (historical)\n- Surgical documentation\
\ photographs\n- Building and facility photographs\n- Staff portraits and group\
\ photos\n- Event documentation\n- Equipment and technology photographs\n- Teaching\
\ slides and visual aids\n- Patient photographs (historical, with consent issues)\n\
\n**Historical Formats**:\n- Glass plate negatives\n- Lantern slides (teaching)\n\
- Photographic prints\n- 35mm slides\n- Digital images\n\n**Privacy and Ethics**:\n\
Medical photography raises significant privacy concerns:\n- Patient consent\
\ requirements\n- De-identification protocols\n- Historical photographs with\
\ identifiable patients\n- Sensitive clinical imagery\n\n**Research and Education\
\ Value**:\nMedical photography collections support:\n- Medical history research\n\
- History of diagnostic techniques\n- Teaching and education\n- Documentary\
\ evidence\n- Institutional history\n\n**Dutch Context**:\nKey elements:\n-\
\ Medische fotografie\n- Rontgenfoto's (historical X-rays)\n- Anatomische preparaten\
\ (related documentation)\n- Onderwijsdia's (teaching slides)\n\n**RiC-O Alignment**:\n\
This class is a specialized rico:RecordSetType. Records classified with this\n\
type follow the collection organizational principle as defined by rico-rst:Collection\n\
(assembled visual documentation organized by subject, department, or format).\n"
structured_aliases:
- literal_form: Medizinische Fotosammlung
in_language: de
- literal_form: coleccion de fotografia medica
in_language: es
- literal_form: collection de photographie medicale
in_language: fr
- literal_form: medische fotocollectie
in_language: nl
- literal_form: colecao de fotografia medica
in_language: pt
keywords:
- medical photography
- medische fotografie
- clinical photography
- klinische fotografie
- medical illustration
- X-rays
- rontgenfoto's
- surgical photography
- dermatological images
- pathological specimens
- teaching slides
- medical imaging history
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
- wd:Q1260006
- rico:RecordSetType
- skos:Concept
close_mappings:
- skos:Concept
see_also:
- HospitalArchiveRecordSetType
- rico:RecordSetType
- rico-rst:Collection
- PhotographicArchive
- PhotographicCollection
annotations:
museum_note: Medical photography collections may be held by medical museums,
particularly those associated with university medical centers or medical history
museums.
class_uri: hc:MedicalPhotographyCollection
description: Collection-level grouping for medical imaging and visual documentation.
slots:
- has_type
- has_score
- has_note
- has_note
- has_note
- has_type
- has_scope
- has_scope
- has_custodian
slot_usage:
has_type:
equals_expression: '["hc:ArchiveOrganizationType", "hc:MuseumType"]'
has_type:
equals_string: MedicalPhotographyCollection
has_note:
equals_string: This RecordSetType classifies record sets following the collection
principle as defined by rico-rst:Collection. Assembled visual documentation organized
by subject, department, format, or time period.
has_scope:
equals_string: '["clinical photography", "X-rays", "teaching slides", "facility
photos", "staff portraits"]'
has_scope:
equals_string: '["textual patient records", "administrative documents", "research
data"]'
has_note:
equals_string: SENSITIVE. Clinical photographs may contain identifiable patients.
Historical collections require ethical review for access and use. De-identification
protocols essential for research use.
has_note:
equals_string: Historical photographic materials require specialized preservation.
Glass plates, nitrate film, and early color materials particularly vulnerable.
Digitization priorities based on condition and content.
has_custodian:
equals_string: HospitalArchive
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection

Some files were not shown because too many files have changed in this diff Show more