Compare commits
24 commits
fcb704c97e
...
1f7f3c6a4d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f7f3c6a4d | ||
|
|
e6b15c27b3 | ||
|
|
a83f04d9c4 | ||
|
|
fc405445c6 | ||
|
|
01e382b53b | ||
|
|
41481f6b21 | ||
|
|
7e0622c755 | ||
|
|
88b325fcdd | ||
|
|
cb1f9104b6 | ||
|
|
787ff6a8d8 | ||
|
|
532ee80634 | ||
|
|
eb4eac24ce | ||
|
|
c567a03833 | ||
|
|
4effcb73b9 | ||
|
|
ca4a54181e | ||
|
|
4034c2a00a | ||
|
|
56a7001e45 | ||
|
|
6203d19875 | ||
|
|
0c5211e40a | ||
|
|
14375c583e | ||
|
|
1b76a3cfe4 | ||
|
|
9bd71f20c8 | ||
|
|
f7bf1cc5ae | ||
|
|
2f44857028 |
5941 changed files with 192160 additions and 125442 deletions
31
.opencode/rules/exact-mapping-predicate-class-distinction.md
Normal file
31
.opencode/rules/exact-mapping-predicate-class-distinction.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Exact Mapping Predicate/Class Distinction Rule
|
||||
|
||||
🚨 **CRITICAL**: The `exact_mappings` property implies semantic equivalence. Equivalence can only exist between elements of the same ontological category.
|
||||
|
||||
## The Rule
|
||||
|
||||
1. **Slots (Predicates)** MUST ONLY have `exact_mappings` to ontology **predicates** (properties).
|
||||
* ❌ INVALID: Slot `analyzes_or_analyzed` maps to `schema:object` (a Class).
|
||||
* ✅ VALID: Slot `analyzes_or_analyzed` maps to `crm:P129_is_about` (a Property).
|
||||
|
||||
2. **Classes (Entities)** MUST ONLY have `exact_mappings` to ontology **classes** (entities).
|
||||
* ❌ INVALID: Class `Person` maps to `foaf:name` (a Property).
|
||||
* ✅ VALID: Class `Person` maps to `foaf:Person` (a Class).
|
||||
|
||||
## Rationale
|
||||
|
||||
Mapping a slot (which defines a relationship or attribute) to a class (which defines a type of entity) is a category error. `schema:object` represents the *class* of objects, not the *relationship* of "having an object" or "analyzing an object".
|
||||
|
||||
## Verification Checklist
|
||||
|
||||
When adding or reviewing `exact_mappings`:
|
||||
- [ ] Is the LinkML element a Class or a Slot?
|
||||
- [ ] Does the target ontology term represent a Class (usually Capitalized) or a Property (usually lowercase)?
|
||||
- [ ] Do they match? (Class↔Class, Slot↔Property)
|
||||
- [ ] If the target ontology uses opaque IDs (like CIDOC-CRM `E55_Type`), verify the type definition in the ontology file.
|
||||
|
||||
## Common Pitfalls to Fix
|
||||
|
||||
- Mapping slots to `schema:Object` or `schema:Thing`.
|
||||
- Mapping slots to `skos:Concept`.
|
||||
- Mapping classes to `schema:name` or `dc:title`.
|
||||
129
.opencode/rules/generic-slots-specific-classes.md
Normal file
129
.opencode/rules/generic-slots-specific-classes.md
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
# Rule: Generic Slots, Specific Classes
|
||||
|
||||
**Identifier**: `generic-slots-specific-classes`
|
||||
**Severity**: **CRITICAL**
|
||||
|
||||
## Core Principle
|
||||
|
||||
**Slots MUST be generic predicates** that can be reused across multiple classes. **Classes MUST be specific** to provide context and constraints.
|
||||
|
||||
**DO NOT** create class-specific slots when a generic predicate can be used.
|
||||
|
||||
## Rationale
|
||||
|
||||
1. **Predicate Proliferation**: Creating bespoke slots for every class explodes the schema size (e.g., `has_museum_name`, `has_library_name`, `has_archive_name` instead of `has_name`).
|
||||
2. **Interoperability**: Generic predicates (`has_name`, `has_identifier`, `has_part`) map cleanly to standard ontologies (Schema.org, Dublin Core, RiC-O).
|
||||
3. **Querying**: It's easier to query "all entities with a name" than "all entities with museum_name OR library_name OR archive_name".
|
||||
4. **Maintenance**: Updating one generic slot propagates to all classes.
|
||||
|
||||
## Examples
|
||||
|
||||
### ❌ Anti-Pattern: Class-Specific Slots
|
||||
|
||||
```yaml
|
||||
# WRONG: Creating specific slots for each class
|
||||
slots:
|
||||
has_museum_visitor_count:
|
||||
range: integer
|
||||
has_library_patron_count:
|
||||
range: integer
|
||||
|
||||
classes:
|
||||
Museum:
|
||||
slots:
|
||||
- has_museum_visitor_count
|
||||
Library:
|
||||
slots:
|
||||
- has_library_patron_count
|
||||
```
|
||||
|
||||
### ✅ Correct Pattern: Generic Slot, Specific Class Usage
|
||||
|
||||
```yaml
|
||||
# CORRECT: One generic slot reused
|
||||
slots:
|
||||
has_or_had_quantity:
|
||||
slot_uri: rico:hasOrHadQuantity
|
||||
range: Quantity
|
||||
multivalued: true
|
||||
|
||||
classes:
|
||||
Museum:
|
||||
slots:
|
||||
- has_or_had_quantity
|
||||
slot_usage:
|
||||
has_or_had_quantity:
|
||||
description: The number of visitors to the museum.
|
||||
|
||||
Library:
|
||||
slots:
|
||||
- has_or_had_quantity
|
||||
slot_usage:
|
||||
has_or_had_quantity:
|
||||
description: The number of registered patrons.
|
||||
```
|
||||
|
||||
## Intermediate Class Pattern
|
||||
|
||||
Making slots generic often requires introducing **Intermediate Classes** to hold structured data, rather than flattening attributes onto the parent class.
|
||||
|
||||
### ❌ Anti-Pattern: Specific Flattened Slots
|
||||
|
||||
```yaml
|
||||
# WRONG: Flattened specific attributes
|
||||
classes:
|
||||
Museum:
|
||||
slots:
|
||||
- has_museum_budget_amount
|
||||
- has_museum_budget_currency
|
||||
- has_museum_budget_year
|
||||
```
|
||||
|
||||
### ✅ Correct Pattern: Generic Slot + Intermediate Class
|
||||
|
||||
```yaml
|
||||
# CORRECT: Generic slot pointing to structured class
|
||||
slots:
|
||||
has_or_had_budget:
|
||||
range: Budget
|
||||
multivalued: true
|
||||
|
||||
classes:
|
||||
Museum:
|
||||
slots:
|
||||
- has_or_had_budget
|
||||
|
||||
Budget:
|
||||
slots:
|
||||
- has_or_had_amount
|
||||
- has_or_had_currency
|
||||
- has_or_had_year
|
||||
```
|
||||
|
||||
## Specificity Levels
|
||||
|
||||
| Level | Component | Example |
|
||||
|-------|-----------|---------|
|
||||
| **Generic** | **Slot (Predicate)** | `has_or_had_identifier` |
|
||||
| **Specific** | **Class (Subject/Object)** | `ISILCode` |
|
||||
| **Specific** | **Slot Usage (Context)** | "The ISIL code assigned to this library" |
|
||||
|
||||
## Migration Guide
|
||||
|
||||
If you encounter an overly specific slot:
|
||||
|
||||
1. **Identify the generic concept** (e.g., `has_museum_opening_hours` → `has_opening_hours`).
|
||||
2. **Check if a generic slot exists** in `modules/slots/`.
|
||||
3. **If yes**, use the generic slot and add `slot_usage` to the class.
|
||||
4. **If no**, create the **generic** slot, not a specific one.
|
||||
|
||||
## Naming Indicators
|
||||
|
||||
**Reject slots containing:**
|
||||
* Class names (e.g., `has_custodian_name` → `has_name`)
|
||||
* Narrow types (e.g., `has_isbn_identifier` → `has_identifier`)
|
||||
* Contextual specifics (e.g., `has_primary_email` → `has_email` + type/role)
|
||||
|
||||
## See Also
|
||||
* Rule 55: Broaden Generic Predicate Ranges
|
||||
* Rule 39: Slot Naming Convention (RiC-O Style)
|
||||
54
.opencode/rules/mapping-specificity-hypernym-rule.md
Normal file
54
.opencode/rules/mapping-specificity-hypernym-rule.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# Mapping Specificity Rule: Broad vs Narrow vs Exact Mappings
|
||||
|
||||
## 🚨 CRITICAL: Mapping Semantics
|
||||
|
||||
When mapping LinkML classes to external ontologies, you MUST distinguish between **equivalence**, **hypernyms** (broader concepts), and **hyponyms** (narrower concepts).
|
||||
|
||||
### The Rule
|
||||
|
||||
1. **Exact Mappings (`skos:exactMatch`)**: Use ONLY when the external concept is **semantically equivalent** to your class.
|
||||
* *Example*: `hc:Person` `exact_mappings` `schema:Person`.
|
||||
|
||||
2. **Broad Mappings (`skos:broadMatch`)**: Use when the external concept is a **hypernym** (a broader, more general category) of your class.
|
||||
* *Example*: `hc:AcademicArchiveRecordSetType` `broad_mappings` `rico:RecordSetType`.
|
||||
* *Rationale*: An academic archive record set *is a* record set type, but `rico:RecordSetType` is broader.
|
||||
* *Common Hypernyms*: `skos:Concept`, `prov:Entity`, `schema:Thing`, `schema:Organization`, `rico:RecordSetType`.
|
||||
|
||||
3. **Narrow Mappings (`skos:narrowMatch`)**: Use when the external concept is a **hyponym** (a narrower, more specific category) of your class.
|
||||
* *Example*: `hc:Organization` `narrow_mappings` `hc:Library` (if mapping inversely).
|
||||
|
||||
### Common Violations to Avoid
|
||||
|
||||
❌ **WRONG**:
|
||||
```yaml
|
||||
AcademicArchiveRecordSetType:
|
||||
exact_mappings:
|
||||
- rico:RecordSetType # WRONG: This implies AcademicArchiveRecordSetType == RecordSetType
|
||||
```
|
||||
|
||||
✅ **CORRECT**:
|
||||
```yaml
|
||||
AcademicArchiveRecordSetType:
|
||||
broad_mappings:
|
||||
- rico:RecordSetType # CORRECT: RecordSetType is broader
|
||||
```
|
||||
|
||||
❌ **WRONG**:
|
||||
```yaml
|
||||
SocialMovement:
|
||||
exact_mappings:
|
||||
- schema:Organization # WRONG: SocialMovement is a specific TYPE of Organization
|
||||
```
|
||||
|
||||
✅ **CORRECT**:
|
||||
```yaml
|
||||
SocialMovement:
|
||||
broad_mappings:
|
||||
- schema:Organization # CORRECT
|
||||
```
|
||||
|
||||
### Verification Checklist
|
||||
|
||||
- [ ] Does the `exact_mapping` represent the **exact same scope**?
|
||||
- [ ] If the external term is a generic parent class (e.g., `Type`, `Concept`, `Entity`), move it to `broad_mappings`.
|
||||
- [ ] If the external term is a specific instance or subclass, check `narrow_mappings`.
|
||||
61
.opencode/rules/no-rough-edits-in-schema.md
Normal file
61
.opencode/rules/no-rough-edits-in-schema.md
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# Rule: No Rough Edits in Schema Files
|
||||
|
||||
**Identifier**: `no-rough-edits-in-schema`
|
||||
**Severity**: **CRITICAL**
|
||||
|
||||
## Core Directive
|
||||
|
||||
**DO NOT** perform rough, imprecise, or bulk text substitutions (like `sed -i` or regex-based python scripts) on LinkML schema files (`schemas/*/linkml/`) without guaranteeing structural integrity.
|
||||
|
||||
**YOU MUST**:
|
||||
* ✅ Use proper YAML parsers/dumpers if modifying structure programmatically.
|
||||
* ✅ Manually verify edits if using text replacement.
|
||||
* ✅ Ensure indentation and nesting are preserved exactly.
|
||||
* ✅ Respect comments and ordering (which parsers often destroy, so careful text editing is sometimes necessary, but it must be PRECISE).
|
||||
|
||||
## Rationale
|
||||
|
||||
LinkML schemas are highly structured YAML files where indentation and nesting semantics are critical. Rough edits often cause:
|
||||
* **Duplicate keys** (e.g., leaving a property behind after deleting its parent key).
|
||||
* **Invalid indentation** (breaking the parent-child relationship).
|
||||
* **Silent corruption** (valid YAML but wrong semantics).
|
||||
|
||||
## Examples
|
||||
|
||||
### ❌ Anti-Pattern: Rough Deletion
|
||||
|
||||
Deleting lines containing a string without checking context:
|
||||
|
||||
```python
|
||||
# WRONG: Deleting lines blindly
|
||||
for line in lines:
|
||||
if "some_slot" in line:
|
||||
continue # Deletes the line, but might leave children orphaned!
|
||||
new_lines.append(line)
|
||||
```
|
||||
|
||||
**Resulting Corruption**:
|
||||
```yaml
|
||||
# Original
|
||||
slots:
|
||||
some_slot:
|
||||
range: string
|
||||
|
||||
# Corrupted (orphaned child)
|
||||
slots:
|
||||
range: string # INVALID!
|
||||
```
|
||||
|
||||
### ✅ Correct Pattern: Structural Awareness
|
||||
|
||||
If removing a slot reference, ensure you remove the entire list item or key-value block.
|
||||
|
||||
```python
|
||||
# BETTER: Check for list item syntax
|
||||
if re.match(r'^\s*-\s*some_slot\s*$', line):
|
||||
continue
|
||||
```
|
||||
|
||||
## Application
|
||||
|
||||
This rule applies to ALL files in `schemas/20251121/linkml/` and future versions.
|
||||
15
.opencode/rules/ontology-detection-rule.md
Normal file
15
.opencode/rules/ontology-detection-rule.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Rule: Ontology Detection vs Heuristics
|
||||
|
||||
## Summary
|
||||
When detecting classes and predicates in `data/ontology/` or external ontology files, you must **read the actual ontology definitions** (e.g., RDF, OWL, TTL files) to determine if a term is a Class or a Property. Do not rely on naming heuristics (like "Capitalized means Class").
|
||||
|
||||
## Detail
|
||||
* **Verification**: Always read the source ontology file or use a semantic lookup tool to verify the `rdf:type` of an entity.
|
||||
* If `rdf:type` is `owl:Class` or `rdfs:Class`, it is a **Class**.
|
||||
* If `rdf:type` is `rdf:Property`, `owl:ObjectProperty`, or `owl:DatatypeProperty`, it is a **Property**.
|
||||
* **Avoid Heuristics**: Do not assume that `skos:Concept` is a class just because it looks like one (it is), or that `schema:name` is a property just because it's lowercase. Many ontologies have inconsistent naming conventions (e.g., `schema:Person` vs `foaf:Person`).
|
||||
* **Strictness**: If the ontology file is not available locally, attempt to fetch it or consult authoritative documentation before guessing.
|
||||
|
||||
## Violation Examples
|
||||
* Assuming `ex:MyTerm` is a class because it starts with an uppercase letter without checking the `.ttl` file.
|
||||
* Mapping a LinkML slot to `schema:Thing` (a Class) instead of a Property because you guessed based on the name.
|
||||
|
|
@ -22,6 +22,24 @@ When creating class hierarchies that replace enums in LinkML schemas, follow the
|
|||
|
||||
---
|
||||
|
||||
## 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
|
||||
|
|
@ -109,6 +127,7 @@ classes:
|
|||
| `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
|
||||
|
||||
|
|
|
|||
59
break_archive_cycles.py
Normal file
59
break_archive_cycles.py
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
import os
|
||||
|
||||
def check_and_fix(path):
|
||||
filename = os.path.basename(path)
|
||||
if not filename.endswith("RecordSetTypes.yaml"):
|
||||
return
|
||||
|
||||
# Filename: WomensArchivesRecordSetTypes.yaml
|
||||
# Custodian class: WomensArchives.yaml
|
||||
|
||||
custodian_class = filename.replace('RecordSetTypes.yaml', '')
|
||||
custodian_class_s = custodian_class + "s"
|
||||
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
in_imports = False
|
||||
modified = False
|
||||
|
||||
for line in lines:
|
||||
stripped = line.strip()
|
||||
if stripped == "imports:":
|
||||
in_imports = True
|
||||
new_lines.append(line)
|
||||
continue
|
||||
|
||||
if in_imports:
|
||||
if not stripped.startswith("-"):
|
||||
if stripped and not stripped.startswith("#"):
|
||||
in_imports = False
|
||||
new_lines.append(line)
|
||||
else:
|
||||
import_path = stripped.lstrip("- ").strip()
|
||||
# Check for import of custodian class: - ./WomensArchives
|
||||
if import_path == f"./{custodian_class}":
|
||||
print(f"Removing cycle import in {path}: {stripped}")
|
||||
modified = True
|
||||
continue
|
||||
elif import_path == f"./{custodian_class_s}":
|
||||
print(f"Removing cycle import (plural) in {path}: {stripped}")
|
||||
modified = True
|
||||
continue
|
||||
else:
|
||||
new_lines.append(line)
|
||||
else:
|
||||
new_lines.append(line)
|
||||
|
||||
if modified:
|
||||
with open(path, 'w') as f:
|
||||
f.writelines(new_lines)
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
check_and_fix(os.path.join(root, file))
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/classes")
|
||||
50
check_annotation_types.py
Normal file
50
check_annotation_types.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import yaml
|
||||
import os
|
||||
|
||||
def check_file(path):
|
||||
try:
|
||||
with open(path, 'r') as f:
|
||||
data = yaml.safe_load(f)
|
||||
except Exception as e:
|
||||
print(f"Error parsing {path}: {e}")
|
||||
return
|
||||
|
||||
if 'classes' in data:
|
||||
for class_name, class_def in data['classes'].items():
|
||||
if 'custodian_types' in class_def:
|
||||
print(f"Misplaced custodian_types found in {path} Class {class_name} (root level)")
|
||||
|
||||
if 'slot_usage' in class_def and class_def['slot_usage']:
|
||||
for slot_name, slot_def in class_def['slot_usage'].items():
|
||||
if slot_def and 'custodian_types' in slot_def:
|
||||
print(f"Misplaced custodian_types found in {path} Class {class_name} SlotUsage {slot_name}")
|
||||
|
||||
if 'annotations' in class_def:
|
||||
ann = class_def['annotations']
|
||||
if ann and 'custodian_types' in ann:
|
||||
val = ann['custodian_types']
|
||||
if isinstance(val, list):
|
||||
print(f"List value found in {path} Class {class_name}: {val}")
|
||||
elif not isinstance(val, str):
|
||||
print(f"Non-string value found in {path} Class {class_name}: {val} (type: {type(val)})")
|
||||
|
||||
if 'slots' in data:
|
||||
for slot_name, slot_def in data['slots'].items():
|
||||
if 'custodian_types' in slot_def:
|
||||
print(f"Misplaced custodian_types found in {path} Slot {slot_name} (root level)")
|
||||
|
||||
if 'annotations' in slot_def:
|
||||
ann = slot_def['annotations']
|
||||
if ann and 'custodian_types' in ann:
|
||||
val = ann['custodian_types']
|
||||
if isinstance(val, list):
|
||||
print(f"List value found in {path} Slot {slot_name}: {val}")
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
check_file(os.path.join(root, file))
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/classes")
|
||||
process_directory("schemas/20251121/linkml/modules/slots")
|
||||
67
check_duplicates.py
Normal file
67
check_duplicates.py
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
import yaml
|
||||
import os
|
||||
|
||||
def check_dir(directory):
|
||||
print(f"Checking directory: {directory}")
|
||||
target_keys = ["related_mappings", "close_mappings", "exact_mappings", "broad_mappings", "narrow_mappings", "slots", "slot_usage", "attributes", "annotations", "description", "class_uri", "id", "name", "title", "imports", "prefixes", "default_prefix", "default_range", "classes", "types", "enums", "subsets"]
|
||||
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
path = os.path.join(root, file)
|
||||
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
keys_at_indent = {} # {indent: {key: line_no}}
|
||||
prev_indent = 0
|
||||
|
||||
for i, line in enumerate(lines):
|
||||
stripped = line.strip()
|
||||
if not stripped or stripped.startswith('#') or stripped.startswith('-'):
|
||||
continue
|
||||
|
||||
indent = len(line) - len(line.lstrip())
|
||||
|
||||
if ':' in stripped:
|
||||
key = stripped.split(':')[0].strip()
|
||||
|
||||
# Only check for specific structural keys to avoid noise
|
||||
if key not in target_keys:
|
||||
continue
|
||||
|
||||
# If indentation increased, we are in a new block
|
||||
if indent > prev_indent:
|
||||
pass
|
||||
# If indentation decreased, clear deeper levels
|
||||
elif indent < prev_indent:
|
||||
keys_to_remove = [k for k in keys_at_indent if k > indent]
|
||||
for k in keys_to_remove:
|
||||
del keys_at_indent[k]
|
||||
|
||||
if indent not in keys_at_indent:
|
||||
keys_at_indent[indent] = {}
|
||||
|
||||
if key in keys_at_indent[indent]:
|
||||
prev_line = keys_at_indent[indent][key]
|
||||
# Heuristic: if lines are in same block (no lower indent between)
|
||||
# We assume it's a duplicate in the same object
|
||||
|
||||
# Double check if there was a lower indent line between them
|
||||
parent_found = False
|
||||
for j in range(prev_line + 1, i):
|
||||
inner_line = lines[j]
|
||||
if inner_line.strip() and not inner_line.strip().startswith('#'):
|
||||
curr_indent = len(inner_line) - len(inner_line.lstrip())
|
||||
if curr_indent < indent:
|
||||
parent_found = True
|
||||
break
|
||||
|
||||
if not parent_found:
|
||||
print(f"DUPLICATE KEY '{key}' in {path} at line {i+1} (previous at {prev_line+1})")
|
||||
|
||||
keys_at_indent[indent][key] = i
|
||||
prev_indent = indent
|
||||
|
||||
check_dir("schemas/20251121/linkml/modules/classes")
|
||||
check_dir("schemas/20251121/linkml/modules/slots")
|
||||
33
check_self_imports.py
Normal file
33
check_self_imports.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import os
|
||||
|
||||
def check_file(path):
|
||||
filename = os.path.basename(path)
|
||||
classname = filename.replace('.yaml', '')
|
||||
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
in_imports = False
|
||||
|
||||
for i, line in enumerate(lines):
|
||||
stripped = line.strip()
|
||||
if stripped == "imports:":
|
||||
in_imports = True
|
||||
continue
|
||||
|
||||
if in_imports:
|
||||
if not stripped.startswith("-"):
|
||||
if stripped and not stripped.startswith("#"):
|
||||
in_imports = False
|
||||
else:
|
||||
import_path = stripped.lstrip("- ").strip()
|
||||
if import_path == f"./{classname}":
|
||||
print(f"Self-import found in {path} at line {i+1}: {stripped}")
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
check_file(os.path.join(root, file))
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/classes")
|
||||
37
check_type_types_cycle.py
Normal file
37
check_type_types_cycle.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import os
|
||||
|
||||
def check_file(path):
|
||||
filename = os.path.basename(path)
|
||||
if not filename.endswith("Type.yaml"):
|
||||
return
|
||||
|
||||
classname = filename.replace('.yaml', '')
|
||||
plural_classname = classname + "s"
|
||||
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
in_imports = False
|
||||
|
||||
for i, line in enumerate(lines):
|
||||
stripped = line.strip()
|
||||
if stripped == "imports:":
|
||||
in_imports = True
|
||||
continue
|
||||
|
||||
if in_imports:
|
||||
if not stripped.startswith("-"):
|
||||
if stripped and not stripped.startswith("#"):
|
||||
in_imports = False
|
||||
else:
|
||||
import_path = stripped.lstrip("- ").strip()
|
||||
if import_path == f"./{plural_classname}":
|
||||
print(f"Cycle found in {path}: imports plural {plural_classname}")
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
check_file(os.path.join(root, file))
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/classes")
|
||||
38
clean_01_imports.py
Normal file
38
clean_01_imports.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
import os
|
||||
|
||||
def clean_imports(path):
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
bad_imports = [
|
||||
"DiarizationSegment",
|
||||
"SpeechSegment",
|
||||
"MusicSegment",
|
||||
"ImagingEquipment",
|
||||
"EADIdentifier",
|
||||
"LEIIdentifier",
|
||||
"AlternativeName",
|
||||
"Series",
|
||||
"MissionStatement",
|
||||
"StorageFacility",
|
||||
"AcquisitionBudget",
|
||||
"DigitizationBudget"
|
||||
]
|
||||
|
||||
new_lines = []
|
||||
for line in lines:
|
||||
stripped = line.strip()
|
||||
remove = False
|
||||
for bad in bad_imports:
|
||||
if bad in stripped and "modules/classes" in stripped:
|
||||
print(f"Removing {bad} from {path}")
|
||||
remove = True
|
||||
break
|
||||
|
||||
if not remove:
|
||||
new_lines.append(line)
|
||||
|
||||
with open(path, 'w') as f:
|
||||
f.writelines(new_lines)
|
||||
|
||||
clean_imports("schemas/20251121/linkml/01_custodian_name_modular.yaml")
|
||||
|
|
@ -41,4 +41,193 @@ fixes:
|
|||
type: slot
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
-
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/was_fetched_at
|
||||
revision:
|
||||
- label: is_or_was_retrieved_at
|
||||
type: slot
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/was_acquired_through
|
||||
revision:
|
||||
- label: is_or_was_acquired_through
|
||||
type: slot
|
||||
- label: AcquisitionMethod
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/use_cases
|
||||
revision:
|
||||
- label: has_or_had_use_case
|
||||
type: slot
|
||||
- label: UseCase
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/typical_contents
|
||||
revision:
|
||||
- label: has_or_had_content
|
||||
type: slot
|
||||
- label: Content
|
||||
type: class
|
||||
- label: has_or_had_type
|
||||
type: slot
|
||||
- label: Type
|
||||
type: class
|
||||
- orignal_slot_id: https://nde.nl/ontology/hc/slot/total_amount
|
||||
revision:
|
||||
- label: has_or_had_quantity
|
||||
type: slot
|
||||
- label: Quantity
|
||||
type: class
|
||||
- label: maximum_of_maximum
|
||||
type: slot
|
||||
- label: MaximumQuantity
|
||||
type: class
|
||||
- orignal_slot_id: https://nde.nl/ontology/hc/slot/temporal_dynamics
|
||||
revision:
|
||||
- label: changes_or_changed_through
|
||||
type: slot
|
||||
- label: Event
|
||||
type: class
|
||||
- label: temporal_extent
|
||||
type: slot
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/supersede_name
|
||||
revision:
|
||||
- label: has_or_had_label
|
||||
type: slot
|
||||
- label: Name
|
||||
type: class
|
||||
- label: temporal_extent
|
||||
type: slot
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
note: this class indicates that the name was valid during a specific time period
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/supersede_condition
|
||||
revision:
|
||||
- label: supersedes_or_superseded
|
||||
type: slot
|
||||
- label: Condition
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/supersede_articles
|
||||
revision:
|
||||
- label: supersedes_or_superseded
|
||||
type: slot
|
||||
- label: Article
|
||||
type: class
|
||||
- orignal_slot_id: https://nde.nl/ontology/hc/slot/status_name
|
||||
revision:
|
||||
- label: has_or_had_label
|
||||
type: slot
|
||||
- label: Label
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_type
|
||||
revision:
|
||||
- label: has_or_had_type
|
||||
type: slot
|
||||
- label: FinancialStatementType
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_text
|
||||
revision:
|
||||
- label: has_or_had_text
|
||||
type: slot
|
||||
- label: Text
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_summary
|
||||
revision:
|
||||
- label: has_or_had_summary
|
||||
type: slot
|
||||
- label: Summary
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_name
|
||||
revision:
|
||||
- label: has_or_had_label
|
||||
type: slot
|
||||
- label: Name
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_language
|
||||
revision:
|
||||
- label: has_or_had_language
|
||||
type: slot
|
||||
- label: Language
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_id
|
||||
revision:
|
||||
- label: has_or_had_identifier
|
||||
type: slot
|
||||
- label: Identifier
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_description
|
||||
revision:
|
||||
- label: has_or_had_description
|
||||
type: slot
|
||||
- label: Description
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_currency
|
||||
revision:
|
||||
- label: states_or_stated
|
||||
type: slot
|
||||
- label: Quantity
|
||||
type: class
|
||||
- label: has_or_had_currency
|
||||
type: slot
|
||||
- label: Currency
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/uses_or_used_technique
|
||||
revision:
|
||||
- label: has_or_has_method
|
||||
type: slot
|
||||
- label: Method
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_type
|
||||
revision:
|
||||
- label: has_or_had_type
|
||||
type: slot
|
||||
- label: StatementType
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_name
|
||||
revision:
|
||||
- label: has_or_had_label
|
||||
type: slot
|
||||
- label: Label
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/statement_description
|
||||
revision:
|
||||
- label: has_or_had_description
|
||||
type: slot
|
||||
- label: Description
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/starts_or_started_at_location
|
||||
revision:
|
||||
- label: temporal_extent
|
||||
type: slot
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
- label: begin_of_the_begin
|
||||
type: slot
|
||||
- label: Event
|
||||
type: class
|
||||
note: use Event instead of Timestamp as properties need to be assigned
|
||||
- label: is_or_was_located_at
|
||||
type: slot
|
||||
- label: Location
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/started_at_time
|
||||
revision:
|
||||
- label: temporal_extent
|
||||
type: slot
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
- label: begin_of_the_begin
|
||||
type: slot
|
||||
- label: Timestamp
|
||||
type: class
|
||||
- original_slot_id: https://nde.nl/ontology/hc/slot/start_time
|
||||
revision:
|
||||
- label: temporal_extent
|
||||
type: slot
|
||||
- label: TimeSpan
|
||||
type: class
|
||||
- label: begin_of_the_begin
|
||||
type: slot
|
||||
- label: Timestamp
|
||||
type: class
|
||||
|
||||
# continue with https://nde.nl/ontology/hc/slot/start_seconds
|
||||
2274
data/ontology/odrl.ttl
Normal file
2274
data/ontology/odrl.ttl
Normal file
File diff suppressed because it is too large
Load diff
211
data/ontology/ontolex-frac.ttl
Normal file
211
data/ontology/ontolex-frac.ttl
Normal file
|
|
@ -0,0 +1,211 @@
|
|||
@prefix frac: <http://www.w3.org/ns/lemon/frac#> .
|
||||
|
||||
|
||||
@prefix ontolex: <http://www.w3.org/ns/lemon/ontolex#> .
|
||||
@prefix synsem: <http://www.w3.org/ns/lemon/synsem#> .
|
||||
@prefix decomp: <http://www.w3.org/ns/lemon/decomp#> .
|
||||
@prefix vartrans: <http://www.w3.org/ns/lemon/vartrans#> .
|
||||
@prefix lime: <http://www.w3.org/ns/lemon/lime#> .
|
||||
@prefix lexicog: <http://www.w3.org/ns/lemon/lexicog#> .
|
||||
|
||||
|
||||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
|
||||
@prefix owl: <http://www.w3.org/2002/07/owl#>.
|
||||
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
|
||||
@prefix skos: <http://www.w3.org/2004/02/skos#>.
|
||||
@prefix dbr: <http://dbpedia.org/resource/>.
|
||||
@prefix dbo: <http://dbpedia.org/ontology/>.
|
||||
@prefix void: <http://rdfs.org/ns/void#>.
|
||||
@prefix lexinfo: <http://www.lexinfo.net/ontology/2.0/lexinfo#>.
|
||||
@prefix dct: <http://purl.org/dc/terms/>.
|
||||
@prefix provo: <http://www.w3.org/ns/prov#>.
|
||||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
|
||||
@prefix oa: <http://www.w3.org/ns/oa#>.
|
||||
@prefix aat: <http://vocab.getty.edu/aat/>.
|
||||
@prefix voaf: <http://purl.org/vocommons/voaf#>.
|
||||
@prefix dcam: <http://purl.org/dc/dcam/> .
|
||||
@prefix dcterms: <http://purl.org/dc/terms/> .
|
||||
@prefix dcmitype: <http://purl.org/dc/dcmitype/>
|
||||
|
||||
|
||||
|
||||
##########################
|
||||
# vocabulary declaration #
|
||||
##########################
|
||||
<http://www.w3.org/ns/lemon/frac#>
|
||||
a owl:Ontology, voaf:Vocabulary ;
|
||||
# owl:imports <http://www.w3.org/ns/lemon/ontolex>
|
||||
.
|
||||
#########################
|
||||
# imported vocabularies #
|
||||
#########################
|
||||
rdf:Bag
|
||||
rdfs:subClassOf rdfs:Container .
|
||||
rdf:Seq
|
||||
rdfs:subClassOf rdfs:Container .
|
||||
rdfs:member
|
||||
a owl:ObjectProperty .
|
||||
rdf:value
|
||||
a owl:DatatypeProperty .
|
||||
dct:extent
|
||||
a owl:DatatypeProperty .
|
||||
dct:description
|
||||
a owl:DatatypeProperty .
|
||||
|
||||
|
||||
#####################
|
||||
# top-level classes #
|
||||
#####################
|
||||
|
||||
|
||||
frac:Observable
|
||||
a owl:Class ;
|
||||
skos:definition """Observable is an abstract superclass for any element of a lexical resource that frequency, attestation or corpus-derived information can be expressed about. This includes, among others, `ontolex:LexicalEntry`, `ontolex:LexicalSense`, `ontolex:Form`, and `ontolex:LexicalConcept`. Elements that FrAC properties apply to must be observable in a corpus or another linguistic data source."""@en;
|
||||
rdfs:label "observable"@en.
|
||||
ontolex:Form
|
||||
rdfs:subClassOf frac:Observable .
|
||||
ontolex:LexicalConcept
|
||||
rdfs:subClassOf frac:Observable .
|
||||
ontolex:LexicalEntry
|
||||
rdfs:subClassOf frac:Observable .
|
||||
ontolex:LexicalSense
|
||||
rdfs:subClassOf frac:Observable .
|
||||
|
||||
|
||||
frac:Observation
|
||||
a owl:Class;
|
||||
rdfs:subClassOf [
|
||||
a <http://www.w3.org/2002/07/owl#Restriction> ;
|
||||
<http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> ;
|
||||
<http://www.w3.org/2002/07/owl#onProperty> rdf:value
|
||||
] ;
|
||||
rdfs:subClassOf [
|
||||
a <http://www.w3.org/2002/07/owl#Restriction> ;
|
||||
<http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> ;
|
||||
<http://www.w3.org/2002/07/owl#onProperty> frac:observedIn
|
||||
] ;
|
||||
# the following constraint is semantically empty
|
||||
# it is supposed to express that there should be
|
||||
# a human-readable description, but we don't enforce it
|
||||
# in order not to break validation
|
||||
rdfs:subClassOf [
|
||||
a <http://www.w3.org/2002/07/owl#Restriction> ;
|
||||
<http://www.w3.org/2002/07/owl#minCardinality> "0"^^<http://www.w3.org/2001/XMLSchema#nonNegativeInteger> ;
|
||||
<http://www.w3.org/2002/07/owl#onProperty> dct:description
|
||||
] .
|
||||
|
||||
|
||||
frac:observedIn
|
||||
a owl:ObjectProperty ;
|
||||
rdfs:domain frac:Observation ;
|
||||
rdfs:range [
|
||||
a owl:Restriction ;
|
||||
owl:onProperty rdf:type ;
|
||||
owl:someValuesFrom [
|
||||
a owl:Restriction ;
|
||||
owl:onProperty dcam:memberOf ;
|
||||
owl:hasValue dcterms:DCMIType ] ] ;
|
||||
rdfs:comment """For an Observation, the property observedIn defines the URI of the data
|
||||
source (or its metadata entry) that this particular observation was made in or derived from.
|
||||
This can be, for example, a corpus or a text represented by its access URL, a book
|
||||
represented by its bibliographical metadata, etc."""@en .
|
||||
|
||||
|
||||
#############
|
||||
# frequency #
|
||||
#############
|
||||
|
||||
|
||||
frac:Frequency
|
||||
a owl:Class ;
|
||||
rdfs:subClassOf frac:Observation ;
|
||||
rdfs:subClassOf [
|
||||
a owl:Restriction ;
|
||||
owl:cardinality "1"^^xsd:nonNegativeInteger ;
|
||||
owl:onDataRange xsd:int ;
|
||||
owl:onProperty rdf:value
|
||||
] .
|
||||
|
||||
|
||||
frac:frequency
|
||||
a owl:ObjectProperty ;
|
||||
rdfs:domain frac:Observable ;
|
||||
rdfs:range frac:Frequency .
|
||||
|
||||
|
||||
frac:total
|
||||
a owl:DatatypeProperty, owl:FunctionalProperty ;
|
||||
rdfs:domain [
|
||||
a owl:Restriction ;
|
||||
owl:onProperty rdf:type ;
|
||||
owl:someValuesFrom [
|
||||
a owl:Restriction ;
|
||||
owl:onProperty dcam:memberOf ;
|
||||
owl:hasValue dcterms:DCMIType ] ] ;
|
||||
rdfs:range xsd:int ;
|
||||
rdfs:label "could be renamed to frac:tokens, as different kinds of totals as possible for multi-word expressions"@en .
|
||||
|
||||
|
||||
###############
|
||||
# attestation #
|
||||
###############
|
||||
|
||||
|
||||
frac:Attestation
|
||||
rdfs:subClassOf frac:Observation .
|
||||
|
||||
|
||||
frac:attestation
|
||||
a owl:ObjectProperty ;
|
||||
rdfs:domain frac:Observable ;
|
||||
rdfs:range frac:Attestation ;
|
||||
rdfs:subPropertyOf frac:citation .
|
||||
|
||||
|
||||
frac:citation
|
||||
a owl:ObjectProperty ;
|
||||
rdfs:domain frac:Observable .
|
||||
|
||||
|
||||
frac:gloss
|
||||
a owl:DatatypeProperty ;
|
||||
rdfs:domain frac:Attestation ;
|
||||
rdfs:range xsd:string ;
|
||||
rdfs:comment "An attestation gloss is the representation of the attestation as provided in a lexical resource. This may contain, for example, amendments or additional comments. For the string as found in the original text, use rdf:value." .
|
||||
|
||||
|
||||
frac:locus
|
||||
a owl:ObjectProperty ;
|
||||
rdfs:domain frac:Attestation ;
|
||||
rdfs:comment """Points from an Observation to the exact location in the source material on where it is to be found. This can be, for example, a page in a book, the string URI of a passage in a text, a canonical reference to a passage in piece of literatur, or any Web Annotation selector. We have confirmed name, function and necessity of this property.
|
||||
When the locus is provided, it is not necessary to also refer to the source material as a whole. The existence of such a reference is nevertheless implied."""@en .
|
||||
|
||||
|
||||
###############
|
||||
# collocation #
|
||||
###############
|
||||
|
||||
|
||||
frac:Collocation
|
||||
rdfs:subClassOf rdfs:Container, frac:Observable, frac:Observation, [
|
||||
a owl:Restriction ;
|
||||
owl:minQualifiedCardinality "2"^^xsd:nonNegativeInteger ;
|
||||
owl:onClass frac:Observable ;
|
||||
owl:onProperty rdfs:member
|
||||
] ,
|
||||
[
|
||||
a <http://www.w3.org/2002/07/owl#Restriction> ;
|
||||
<http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/ns/lemon/frac#Observable> ;
|
||||
<http://www.w3.org/2002/07/owl#onProperty> <http://www.w3.org/2000/01/rdf-schema#member>
|
||||
] .
|
||||
|
||||
|
||||
frac:cScore
|
||||
rdfs:subPropertyOf rdf:value ;
|
||||
rdfs:domain frac:Collocation .
|
||||
|
||||
frac:head
|
||||
a owl:ObjectProperty ;
|
||||
rdfs:domain frac:Collocation ;
|
||||
rdfs:range frac:Observable .
|
||||
|
||||
33
find_custodian_types.py
Normal file
33
find_custodian_types.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import yaml
|
||||
import os
|
||||
|
||||
def check_dict(d, path, context="root"):
|
||||
if not isinstance(d, dict):
|
||||
return
|
||||
|
||||
for k, v in d.items():
|
||||
if k == 'custodian_types':
|
||||
if context != 'annotations':
|
||||
print(f"Misplaced custodian_types in {path} at context '{context}'")
|
||||
|
||||
if isinstance(v, dict):
|
||||
check_dict(v, path, k)
|
||||
elif isinstance(v, list):
|
||||
for item in v:
|
||||
check_dict(item, path, k)
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
path = os.path.join(root, file)
|
||||
try:
|
||||
with open(path, 'r') as f:
|
||||
data = yaml.safe_load(f)
|
||||
check_dict(data, path)
|
||||
except Exception as e:
|
||||
# Ignore parse errors
|
||||
pass
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/classes")
|
||||
process_directory("schemas/20251121/linkml/modules/slots")
|
||||
89
find_cycles.py
Normal file
89
find_cycles.py
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
import os
|
||||
import networkx as nx
|
||||
|
||||
def get_imports(path):
|
||||
imports = []
|
||||
try:
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
in_imports = False
|
||||
for line in lines:
|
||||
stripped = line.strip()
|
||||
if stripped == "imports:":
|
||||
in_imports = True
|
||||
continue
|
||||
if in_imports:
|
||||
if not stripped.startswith("-"):
|
||||
if stripped and not stripped.startswith("#"):
|
||||
in_imports = False
|
||||
else:
|
||||
imp = stripped.lstrip("- ").strip()
|
||||
imports.append(imp)
|
||||
except Exception:
|
||||
pass
|
||||
return imports
|
||||
|
||||
def build_graph(root_dir):
|
||||
G = nx.DiGraph()
|
||||
|
||||
# Map file paths to node names
|
||||
# Node name: relative path from root_dir or filename if unique
|
||||
# LinkML imports are relative paths.
|
||||
|
||||
# We need to resolve relative paths.
|
||||
|
||||
# files: list of (abs_path, rel_path_from_root)
|
||||
# root_dir is schemas/20251121/linkml
|
||||
|
||||
files_map = {} # abs_path -> rel_path
|
||||
|
||||
for root, dirs, files in os.walk(root_dir):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
abs_path = os.path.join(root, file)
|
||||
rel_path = os.path.relpath(abs_path, root_dir)
|
||||
files_map[abs_path] = rel_path
|
||||
G.add_node(rel_path)
|
||||
|
||||
for abs_path, rel_path in files_map.items():
|
||||
imports = get_imports(abs_path)
|
||||
base_dir = os.path.dirname(abs_path)
|
||||
|
||||
for imp in imports:
|
||||
# imp is relative to abs_path
|
||||
# resolve it
|
||||
if imp.startswith("linkml:"):
|
||||
continue
|
||||
|
||||
imp_abs = os.path.normpath(os.path.join(base_dir, imp))
|
||||
if not imp_abs.endswith(".yaml"):
|
||||
imp_abs += ".yaml"
|
||||
|
||||
if imp_abs in files_map:
|
||||
target = files_map[imp_abs]
|
||||
G.add_edge(rel_path, target)
|
||||
else:
|
||||
# print(f"Warning: {rel_path} imports {imp} which resolves to {imp_abs} (not found)")
|
||||
pass
|
||||
|
||||
return G
|
||||
|
||||
def find_cycles(G):
|
||||
try:
|
||||
cycles = nx.simple_cycles(G)
|
||||
count = 0
|
||||
for cycle in cycles:
|
||||
print("Cycle found:")
|
||||
print(cycle)
|
||||
count += 1
|
||||
if count >= 10:
|
||||
print("Stopping after 10 cycles.")
|
||||
break
|
||||
if count == 0:
|
||||
print("No cycles found.")
|
||||
except Exception as e:
|
||||
print(f"Error finding cycles: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
G = build_graph("schemas/20251121/linkml")
|
||||
find_cycles(G)
|
||||
18
fix_approximation_status_example.py
Normal file
18
fix_approximation_status_example.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import os
|
||||
|
||||
filepath = 'schemas/20251121/linkml/modules/classes/ApproximationStatus.yaml'
|
||||
|
||||
with open(filepath, 'r') as f:
|
||||
content = f.read()
|
||||
|
||||
# The error is that appears inside a description string that is formatted as a YAML block.
|
||||
# This should NOT cause error unless it's being parsed as an example value?
|
||||
# But showed it in .
|
||||
# Wait, the grep output showed it on line 28 inside a quoted string.
|
||||
|
||||
# However, earlier grep showed:
|
||||
# schemas/20251121/linkml/modules/classes/CustodianTimelineEvent.yaml: event_date: "2005-04-30"
|
||||
|
||||
# This looks like it IS used as a key in inside an example block.
|
||||
|
||||
# Let's check .
|
||||
59
fix_dangling.py
Normal file
59
fix_dangling.py
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
import os
|
||||
import re
|
||||
|
||||
def fix_dangling_in_file(path):
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
|
||||
# keys that take lists
|
||||
list_keys = [
|
||||
"slots",
|
||||
"exact_mappings", "close_mappings", "broad_mappings", "related_mappings", "narrow_mappings",
|
||||
"examples", "comments", "see_also", "keywords", "structured_aliases",
|
||||
"subsets", "mixins", "apply_to", "union_of", "values", "equals_expression", "equals_string_in",
|
||||
"aliases", "local_names", "union_of", "defines"
|
||||
]
|
||||
|
||||
last_key_at_4 = None
|
||||
|
||||
for i, line in enumerate(lines):
|
||||
stripped = line.strip()
|
||||
|
||||
if not stripped or stripped.startswith('#'):
|
||||
new_lines.append(line)
|
||||
continue
|
||||
|
||||
indent = len(line) - len(line.lstrip())
|
||||
|
||||
# Check if line is a key at 4 spaces
|
||||
# Regex: start with 4 spaces, then key chars, then colon, then optional space/value
|
||||
if indent == 4 and ':' in stripped and not stripped.startswith('-'):
|
||||
key = stripped.split(':')[0].strip()
|
||||
last_key_at_4 = key
|
||||
new_lines.append(line)
|
||||
continue
|
||||
|
||||
# Check if line is a list item at 4 spaces
|
||||
if indent == 4 and stripped.startswith('-'):
|
||||
if last_key_at_4 not in list_keys:
|
||||
print(f"Removing dangling list item in {path} at line {i+1} (after {last_key_at_4}): {stripped}")
|
||||
continue # Skip/Delete
|
||||
|
||||
# Reset last_key_at_4 if indentation drops below 4
|
||||
if indent < 4:
|
||||
last_key_at_4 = None
|
||||
|
||||
new_lines.append(line)
|
||||
|
||||
with open(path, 'w') as f:
|
||||
f.writelines(new_lines)
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
fix_dangling_in_file(os.path.join(root, file))
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/classes")
|
||||
42
fix_financial_statement_duplicate_key.py
Normal file
42
fix_financial_statement_duplicate_key.py
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
import os
|
||||
import yaml
|
||||
|
||||
# Check FinancialStatement.yaml for duplicate has_or_had_format
|
||||
filepath = 'schemas/20251121/linkml/modules/classes/FinancialStatement.yaml'
|
||||
|
||||
with open(filepath, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
seen_keys = set()
|
||||
in_slot_usage = False
|
||||
slot_usage_indent = -1
|
||||
|
||||
for line in lines:
|
||||
stripped = line.strip()
|
||||
indent = len(line) - len(line.lstrip())
|
||||
|
||||
if stripped.startswith('slot_usage:'):
|
||||
in_slot_usage = True
|
||||
slot_usage_indent = indent
|
||||
new_lines.append(line)
|
||||
continue
|
||||
|
||||
if in_slot_usage:
|
||||
if stripped and indent <= slot_usage_indent:
|
||||
in_slot_usage = False
|
||||
seen_keys.clear()
|
||||
else:
|
||||
# Check for keys at level 6 (slot usage items)
|
||||
if indent == slot_usage_indent + 2:
|
||||
key = stripped.split(':')[0]
|
||||
if key in seen_keys:
|
||||
print(f"Skipping duplicate key {key} in slot_usage")
|
||||
# Skip this line AND subsequent lines until next key
|
||||
continue
|
||||
# This logic is too simple, need to skip block.
|
||||
seen_keys.add(key)
|
||||
|
||||
new_lines.append(line)
|
||||
|
||||
# Since simple skipping is hard line-by-line, let's use the fix_duplicate_keys.py approach again.
|
||||
82
fix_financial_statement_expenses.py
Normal file
82
fix_financial_statement_expenses.py
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
import os
|
||||
|
||||
filepath = 'schemas/20251121/linkml/modules/classes/FinancialStatement.yaml'
|
||||
|
||||
with open(filepath, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
skip = False
|
||||
|
||||
for i, line in enumerate(lines):
|
||||
# In slot_usage for has_or_had_net_asset, there is a nested has_or_had_expenses
|
||||
# which is likely indentation error or copy-paste error.
|
||||
|
||||
# line 369: has_or_had_net_asset:
|
||||
# line 370: range: decimal
|
||||
# line 371: required: false
|
||||
# line 372: has_or_had_expenses: <-- This should not be here?
|
||||
|
||||
# It seems block is accidentally indented under .
|
||||
# It should be a sibling slot usage?
|
||||
# But is already imported.
|
||||
|
||||
# Let's inspect the line indent.
|
||||
|
||||
stripped = line.strip()
|
||||
if stripped.startswith('has_or_had_expenses:'):
|
||||
# Check indentation.
|
||||
indent = len(line) - len(line.lstrip())
|
||||
# slot_usage is at 4 spaces.
|
||||
# has_or_had_net_asset is at 6 spaces.
|
||||
# properties of has_or_had_net_asset (range, required) are at 8 spaces.
|
||||
|
||||
# If is at 8 spaces, it's inside definition.
|
||||
# If it's at 6 spaces, it's a new slot usage entry (which is correct).
|
||||
|
||||
if indent == 8:
|
||||
# It's wrongly indented inside has_or_had_net_asset?
|
||||
# Or is it providing examples/defaults?
|
||||
|
||||
# The structure looks like:
|
||||
# has_or_had_net_asset:
|
||||
# range: decimal
|
||||
# required: false
|
||||
# has_or_had_expenses: ...
|
||||
|
||||
# This key is invalid for a SlotDefinition unless it's an annotation?
|
||||
# But here it contains a list of values.
|
||||
# It looks like an example block that got misplaced as a property key?
|
||||
|
||||
# Looking at the content:
|
||||
# has_or_had_expenses:
|
||||
# - value:
|
||||
# - has_or_had_type: PROGRAM
|
||||
|
||||
# This looks like content?
|
||||
|
||||
# Let's see if we can just dedent it to 6 spaces to make it a slot usage?
|
||||
# But is already defined in list.
|
||||
# Does have slot? Yes.
|
||||
|
||||
# So at 6 spaces would define usage for that slot.
|
||||
|
||||
# Let's check output around line 372.
|
||||
# has_or_had_net_asset:
|
||||
# range: decimal
|
||||
# required: false
|
||||
# has_or_had_expenses:
|
||||
# - value: ...
|
||||
|
||||
# Yes, it's at same level as .
|
||||
# If I dedent it to 6 spaces, it becomes a slot_usage entry.
|
||||
# BUT slot usage might already exist?
|
||||
# No, I don't see another one in the file read output.
|
||||
|
||||
# So the fix is to dedent and its block.
|
||||
|
||||
pass
|
||||
|
||||
new_lines.append(line)
|
||||
|
||||
# Let's write a script to fix indentation.
|
||||
26
fix_financial_statement_precise.py
Normal file
26
fix_financial_statement_precise.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import os
|
||||
|
||||
filepath = 'schemas/20251121/linkml/modules/classes/FinancialStatement.yaml'
|
||||
|
||||
with open(filepath, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
for i, line in enumerate(lines):
|
||||
# Locate the specific misplaced line
|
||||
# It was (8 spaces) under (6 spaces).
|
||||
# It should be (6 spaces) as a sibling slot_usage.
|
||||
|
||||
# BUT wait, the previous inspection showed followed by .
|
||||
# That suggests it was an EXAMPLE inside slot_usage? No, slot_usage defines constraints.
|
||||
# examples are under key.
|
||||
|
||||
# If was under in , it's invalid unless it's a property of that slot (it isn't).
|
||||
|
||||
# If it was an example, it should be under .
|
||||
|
||||
# Let's look at the file content again (after revert).
|
||||
|
||||
pass
|
||||
|
||||
# We need to read it first to know what to fix.
|
||||
48
fix_self_imports.py
Normal file
48
fix_self_imports.py
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
import os
|
||||
|
||||
def fix_file(path):
|
||||
filename = os.path.basename(path)
|
||||
classname = filename.replace('.yaml', '')
|
||||
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
in_imports = False
|
||||
modified = False
|
||||
|
||||
for line in lines:
|
||||
stripped = line.strip()
|
||||
if stripped == "imports:":
|
||||
in_imports = True
|
||||
new_lines.append(line)
|
||||
continue
|
||||
|
||||
if in_imports:
|
||||
if not stripped.startswith("-"):
|
||||
if stripped and not stripped.startswith("#"):
|
||||
in_imports = False
|
||||
new_lines.append(line)
|
||||
else:
|
||||
import_path = stripped.lstrip("- ").strip()
|
||||
# Check for self-import: - ./ClassName
|
||||
if import_path == f"./{classname}":
|
||||
print(f"Removing self-import in {path}: {stripped}")
|
||||
modified = True
|
||||
continue
|
||||
else:
|
||||
new_lines.append(line)
|
||||
else:
|
||||
new_lines.append(line)
|
||||
|
||||
if modified:
|
||||
with open(path, 'w') as f:
|
||||
f.writelines(new_lines)
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
fix_file(os.path.join(root, file))
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/classes")
|
||||
51
fix_type_types_cycle.py
Normal file
51
fix_type_types_cycle.py
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
import os
|
||||
|
||||
def fix_file(path):
|
||||
filename = os.path.basename(path)
|
||||
if not filename.endswith("Type.yaml"):
|
||||
return
|
||||
|
||||
classname = filename.replace('.yaml', '')
|
||||
plural_classname = classname + "s"
|
||||
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
in_imports = False
|
||||
modified = False
|
||||
|
||||
for line in lines:
|
||||
stripped = line.strip()
|
||||
if stripped == "imports:":
|
||||
in_imports = True
|
||||
new_lines.append(line)
|
||||
continue
|
||||
|
||||
if in_imports:
|
||||
if not stripped.startswith("-"):
|
||||
if stripped and not stripped.startswith("#"):
|
||||
in_imports = False
|
||||
new_lines.append(line)
|
||||
else:
|
||||
import_path = stripped.lstrip("- ").strip()
|
||||
if import_path == f"./{plural_classname}":
|
||||
print(f"Removing cycle import in {path}: {stripped}")
|
||||
modified = True
|
||||
continue
|
||||
else:
|
||||
new_lines.append(line)
|
||||
else:
|
||||
new_lines.append(line)
|
||||
|
||||
if modified:
|
||||
with open(path, 'w') as f:
|
||||
f.writelines(new_lines)
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
fix_file(os.path.join(root, file))
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/classes")
|
||||
65
fix_types_imports.py
Normal file
65
fix_types_imports.py
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import os
|
||||
|
||||
def fix_file(path):
|
||||
filename = os.path.basename(path)
|
||||
if not (filename.endswith("Types.yaml") or filename.endswith("RecordSetTypes.yaml")):
|
||||
return
|
||||
|
||||
if filename.endswith("Types.yaml"):
|
||||
singular_filename = filename.replace('Types.yaml', 'Type.yaml')
|
||||
classname_type = filename.replace('.yaml', '')[:-1] # Remove s
|
||||
|
||||
# RecordSetTypes is special?
|
||||
# AcademicArchiveRecordSetTypes.yaml -> AcademicArchiveRecordSetType.yaml
|
||||
# AcademicArchiveRecordSetType (class)
|
||||
|
||||
if filename.endswith("RecordSetTypes.yaml"):
|
||||
singular_filename = filename.replace('RecordSetTypes.yaml', 'RecordSetType.yaml')
|
||||
classname_type = filename.replace('.yaml', '')[:-1] # Remove s
|
||||
|
||||
singular_path = os.path.join(os.path.dirname(path), singular_filename)
|
||||
|
||||
if not os.path.exists(singular_path):
|
||||
# Maybe irregular plural?
|
||||
return
|
||||
|
||||
# Check if imported
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
content = ''.join(lines)
|
||||
|
||||
import_stmt = f"- ./{classname_type}"
|
||||
# Actually, filename without extension is usually the class name, but imports use filename (without ext).
|
||||
import_stmt_file = f"- ./{singular_filename.replace('.yaml', '')}"
|
||||
|
||||
if import_stmt_file in content:
|
||||
return
|
||||
|
||||
# Add import
|
||||
new_lines = []
|
||||
in_imports = False
|
||||
added = False
|
||||
|
||||
for line in lines:
|
||||
stripped = line.strip()
|
||||
if stripped == "imports:":
|
||||
in_imports = True
|
||||
new_lines.append(line)
|
||||
# Add immediately
|
||||
new_lines.append(f" {import_stmt_file}\n")
|
||||
added = True
|
||||
continue
|
||||
|
||||
new_lines.append(line)
|
||||
|
||||
if added:
|
||||
print(f"Restoring import in {path}: {import_stmt_file}")
|
||||
with open(path, 'w') as f:
|
||||
f.writelines(new_lines)
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
fix_file(os.path.join(root, file))
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/classes")
|
||||
37
flatten_slot_ranges.py
Normal file
37
flatten_slot_ranges.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import os
|
||||
import yaml
|
||||
|
||||
def flatten_ranges(path):
|
||||
with open(path, 'r') as f:
|
||||
lines = f.readlines()
|
||||
|
||||
new_lines = []
|
||||
primitives = ["string", "integer", "float", "boolean", "date", "datetime", "uriorcurie", "uri", "ncname", "objectidentifier", "time", "decimal", "double"]
|
||||
|
||||
modified = False
|
||||
|
||||
for line in lines:
|
||||
stripped = line.strip()
|
||||
if stripped.startswith("range:") and ":" in stripped:
|
||||
parts = stripped.split(":")
|
||||
if len(parts) >= 2:
|
||||
range_val = parts[1].strip()
|
||||
if range_val not in primitives and not range_val.startswith("string"): # handle string(...)
|
||||
print(f"Flattening range in {path}: {range_val} -> uriorcurie")
|
||||
new_lines.append(f" range: uriorcurie\n")
|
||||
new_lines.append(f" # range: {range_val}\n")
|
||||
modified = True
|
||||
continue
|
||||
new_lines.append(line)
|
||||
|
||||
if modified:
|
||||
with open(path, 'w') as f:
|
||||
f.writelines(new_lines)
|
||||
|
||||
def process_directory(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
if file.endswith(".yaml"):
|
||||
flatten_ranges(os.path.join(root, file))
|
||||
|
||||
process_directory("schemas/20251121/linkml/modules/slots")
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -81,9 +81,8 @@ imports:
|
|||
- modules/metadata
|
||||
|
||||
# Shared slots
|
||||
- modules/slots/description
|
||||
- modules/slots/website
|
||||
- modules/slots/contact_email
|
||||
- modules/slots/has_or_had_email
|
||||
|
||||
# Supporting classes
|
||||
- modules/classes/Country
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,3 +1,13 @@
|
|||
id: https://nde.nl/ontology/hc/class/APIEndpoint
|
||||
name: APIEndpoint
|
||||
title: APIEndpoint
|
||||
description: An API endpoint.
|
||||
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/
|
||||
classes:
|
||||
APIEndpoint:
|
||||
class_uri: schema:EntryPoint
|
||||
|
|
@ -9,17 +19,7 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
prov: http://www.w3.org/ns/prov#
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
rdfs: http://www.w3.org/2000/01/rdf-schema#
|
||||
org: http://www.w3.org/ns/org#
|
||||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_url
|
||||
|
|
@ -1,6 +1,23 @@
|
|||
id: https://nde.nl/ontology/hc/class/APIRequest
|
||||
name: APIRequest
|
||||
title: APIRequest
|
||||
description: An API request event.
|
||||
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/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_endpoint
|
||||
- ../slots/has_or_had_provenance
|
||||
- ../slots/has_or_had_version
|
||||
classes:
|
||||
APIRequest:
|
||||
class_uri: prov:Activity
|
||||
close_mappings:
|
||||
- schema:Action
|
||||
description: An API request event.
|
||||
slots:
|
||||
- has_or_had_provenance
|
||||
|
|
@ -10,4 +27,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -1,3 +1,17 @@
|
|||
id: https://nde.nl/ontology/hc/class/APIVersion
|
||||
name: APIVersion
|
||||
title: APIVersion
|
||||
description: Version of an API.
|
||||
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/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
classes:
|
||||
APIVersion:
|
||||
class_uri: schema:SoftwareApplication
|
||||
|
|
@ -9,4 +23,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -29,4 +29,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -9,27 +9,27 @@ prefixes:
|
|||
wd: http://www.wikidata.org/entity/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_hypernym
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_scope
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ./AcademicArchiveRecordSetType
|
||||
- ./AcademicArchiveRecordSetTypes
|
||||
- ./ArchiveOrganizationType
|
||||
- ./CollectionType
|
||||
- ./AcademicArchiveRecordSetTypes
|
||||
- ../slots/has_or_had_scope
|
||||
- ./Scope
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/dual_class_link
|
||||
- ../slots/has_or_had_hypernym
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./DualClassLink
|
||||
- ./Scope
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./WikidataAlignment
|
||||
- ./WikiDataEntry
|
||||
- ./AcademicArchiveRecordSetType
|
||||
- ./WikidataAlignment
|
||||
classes:
|
||||
AcademicArchive:
|
||||
is_a: ArchiveOrganizationType
|
||||
|
|
@ -37,7 +37,6 @@ classes:
|
|||
description: Archive of a higher education institution (university, college, polytechnic).
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- dual_class_link
|
||||
- hold_or_held_record_set_type
|
||||
- has_or_had_hypernym
|
||||
- has_or_had_label
|
||||
|
|
@ -69,32 +68,24 @@ classes:
|
|||
- faculty papers
|
||||
- research documentation
|
||||
- university publications
|
||||
- ephemera
|
||||
- campus photographs
|
||||
- audiovisual materials
|
||||
- campus life documentation
|
||||
slot_usage:
|
||||
hold_or_held_record_set_type:
|
||||
equals_expression: '["hc:UniversityAdministrativeFonds", "hc:StudentRecordSeries", "hc:FacultyPaperCollection", "hc:CampusDocumentationCollection"]
|
||||
|
||||
'
|
||||
has_or_had_identifier:
|
||||
pattern: ^Q[0-9]+$
|
||||
description: Wikidata identifier for Academic Archive concept (Q27032435)
|
||||
has_or_had_type:
|
||||
equals_expression: '["hc:ArchiveOrganizationType"]'
|
||||
is_or_was_related_to:
|
||||
range: WikidataAlignment
|
||||
inlined: true
|
||||
has_or_had_hypernym:
|
||||
description: MIGRATED from broader_concept (Rule 53). SKOS broader (parent) concept in the archive type hierarchy.
|
||||
equals_expression: '["wd:Q166118"]'
|
||||
has_or_had_label:
|
||||
description: Human-readable label for the broader concept. Stored for display to avoid repeated lookups. MIGRATED from broader_concept_label (2026-01-15) per Rule 53.
|
||||
ifabsent: string(archive)
|
||||
dual_class_link:
|
||||
range: DualClassLink
|
||||
inlined: true
|
||||
exact_mappings:
|
||||
- wd:Q27032435
|
||||
close_mappings:
|
||||
|
|
@ -122,4 +113,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -9,47 +9,36 @@ prefixes:
|
|||
wd: http://www.wikidata.org/entity/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./CollectionType
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/dual_class_link
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_scope
|
||||
- ./Scope
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ./CollectionType
|
||||
- ./DualClassLink
|
||||
- ./Scope
|
||||
- ./WikidataAlignment
|
||||
classes:
|
||||
AcademicArchiveRecordSetType:
|
||||
description: A rico:RecordSetType for classifying collections of academic and higher education institutional records.
|
||||
description: A rico:RecordSetType for classifying collections of academic and
|
||||
higher education institutional records.
|
||||
is_a: CollectionType
|
||||
class_uri: rico:RecordSetType
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- dual_class_link
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- has_or_had_scope
|
||||
- is_or_was_related_to
|
||||
attributes:
|
||||
has_or_had_scope:
|
||||
range: Scope
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
description: 'Structured scope definitions for AcademicArchiveRecordSetType.
|
||||
|
||||
Formally documents what types of record sets are classified under this type.
|
||||
|
||||
'
|
||||
comments:
|
||||
- Collection type class for academic/higher education record sets
|
||||
- Part of dual-class pattern with AcademicArchive (custodian type)
|
||||
structured_aliases:
|
||||
- literal_form: Hochschularchivbestand
|
||||
in_language: de
|
||||
- literal_form: "fondo de archivo acad\xE9mico"
|
||||
- literal_form: fondo de archivo académico
|
||||
in_language: es
|
||||
- literal_form: "fonds d'archives acad\xE9miques"
|
||||
- literal_form: fonds d'archives académiques
|
||||
in_language: fr
|
||||
- literal_form: academisch archiefbestand
|
||||
in_language: nl
|
||||
|
|
@ -59,9 +48,6 @@ classes:
|
|||
is_or_was_related_to:
|
||||
range: WikidataAlignment
|
||||
inlined: true
|
||||
dual_class_link:
|
||||
range: DualClassLink
|
||||
inlined: true
|
||||
exact_mappings:
|
||||
- wd:Q27032435
|
||||
- rico:RecordSetType
|
||||
|
|
@ -79,5 +65,4 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
|
|
|
|||
|
|
@ -13,47 +13,38 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./AcademicArchiveRecordSetType
|
||||
- ./AcademicArchive
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/privacy_note
|
||||
- ../slots/record_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/scope_exclude
|
||||
- ../slots/scope_include
|
||||
- ../slots/specificity_annotation
|
||||
- ./AcademicArchive
|
||||
- ./AcademicArchiveRecordSetType
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/privacy_note
|
||||
- ../slots/record_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/scope_exclude
|
||||
- ../slots/scope_include
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/privacy_note
|
||||
- ../slots/record_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/scope_exclude
|
||||
- ../slots/scope_include
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/privacy_note
|
||||
- ../slots/record_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/scope_exclude
|
||||
- ../slots/scope_include
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
classes:
|
||||
UniversityAdministrativeFonds:
|
||||
is_a: AcademicArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for university administrative records organized as a fonds.\n\n**Definition**:\nRecords created or accumulated by a university's central administration in the \nexercise of governance, policy-making, and operational functions. Organized \naccording to archival principles of provenance (respect des fonds).\n\n**Typical Contents**:\n- Governance records (board minutes, resolutions, bylaws)\n- Committee records (senate, faculty councils, standing committees)\n- Policy records (institutional policies, procedures, guidelines)\n- Strategic planning documents\n- Accreditation and institutional assessment records\n- Executive correspondence\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records classified with this\ntype follow the fonds organizational principle as defined by rico-rst:Fonds\n(respect des fonds / provenance-based organization from university central administration).\n"
|
||||
description: "A rico:RecordSetType for university administrative records organized\
|
||||
\ as a fonds.\n\n**Definition**:\nRecords created or accumulated by a university's\
|
||||
\ central administration in the \nexercise of governance, policy-making, and\
|
||||
\ operational functions. Organized \naccording to archival principles of provenance\
|
||||
\ (respect des fonds).\n\n**Typical Contents**:\n- Governance records (board\
|
||||
\ minutes, resolutions, bylaws)\n- Committee records (senate, faculty councils,\
|
||||
\ standing committees)\n- Policy records (institutional policies, procedures,\
|
||||
\ guidelines)\n- Strategic planning documents\n- Accreditation and institutional\
|
||||
\ assessment records\n- Executive correspondence\n\n**RiC-O Alignment**:\nThis\
|
||||
\ class is a specialized rico:RecordSetType. Records classified with this\n\
|
||||
type follow the fonds organizational principle as defined by rico-rst:Fonds\n\
|
||||
(respect des fonds / provenance-based organization from university central administration).\n"
|
||||
structured_aliases:
|
||||
- literal_form: Hochschulverwaltungsbestand
|
||||
in_language: de
|
||||
|
|
@ -82,6 +73,8 @@ classes:
|
|||
- rico-rst:Fonds
|
||||
broad_mappings:
|
||||
- wd:Q1643722
|
||||
- rico:RecordSetType
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
- skos:Concept
|
||||
see_also:
|
||||
|
|
@ -108,20 +101,34 @@ classes:
|
|||
organizational_principle_uri:
|
||||
equals_string: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#Fonds
|
||||
record_note:
|
||||
equals_string: This RecordSetType classifies record sets following the fonds principle. The fonds structure reflects provenance from university central administration.
|
||||
equals_string: This RecordSetType classifies record sets following the fonds
|
||||
principle. The fonds structure reflects provenance from university central
|
||||
administration.
|
||||
scope_include:
|
||||
equals_string: '["governance records", "committee records", "policy records", "strategic planning", "accreditation records"]'
|
||||
equals_string: '["governance records", "committee records", "policy records",
|
||||
"strategic planning", "accreditation records"]'
|
||||
scope_exclude:
|
||||
equals_string: '["student records", "faculty papers", "research data"]'
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
AcademicStudentRecordSeries:
|
||||
is_a: AcademicArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for student records organized as archival series.\n\n**Definition**:\nRecords documenting the academic careers and activities of students, typically \norganized as series within a larger university fonds. Subject to retention \nschedules and privacy regulations (FERPA in US, GDPR in EU, AVG in NL).\n\n**Typical Contents**:\n- Enrollment and registration records\n- Academic transcripts and grade records\n- Graduation records and diploma registers\n- Disciplinary records\n- Financial aid records\n- Student organization records\n\n**Privacy Considerations**:\nAccess restrictions typically apply due to personally identifiable information.\nHistorical student records (typically 75+ years) may have fewer restrictions.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records classified with this\ntype follow the series organizational principle as defined by rico-rst:Series\n(organizational level within the university fonds).\n"
|
||||
description: "A rico:RecordSetType for student records organized as archival series.\n\
|
||||
\n**Definition**:\nRecords documenting the academic careers and activities of\
|
||||
\ students, typically \norganized as series within a larger university fonds.\
|
||||
\ Subject to retention \nschedules and privacy regulations (FERPA in US, GDPR\
|
||||
\ in EU, AVG in NL).\n\n**Typical Contents**:\n- Enrollment and registration\
|
||||
\ records\n- Academic transcripts and grade records\n- Graduation records and\
|
||||
\ diploma registers\n- Disciplinary records\n- Financial aid records\n- Student\
|
||||
\ organization records\n\n**Privacy Considerations**:\nAccess restrictions typically\
|
||||
\ apply due to personally identifiable information.\nHistorical student records\
|
||||
\ (typically 75+ years) may have fewer restrictions.\n\n**RiC-O Alignment**:\n\
|
||||
This class is a specialized rico:RecordSetType. Records classified with this\n\
|
||||
type follow the series organizational principle as defined by rico-rst:Series\n\
|
||||
(organizational level within the university fonds).\n"
|
||||
structured_aliases:
|
||||
- literal_form: Studentenaktenserie
|
||||
in_language: de
|
||||
|
|
@ -150,6 +157,8 @@ classes:
|
|||
- rico-rst:Series
|
||||
broad_mappings:
|
||||
- wd:Q185583
|
||||
- rico:RecordSetType
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
- skos:Concept
|
||||
see_also:
|
||||
|
|
@ -178,17 +187,33 @@ classes:
|
|||
organizational_principle_uri:
|
||||
equals_string: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#Series
|
||||
record_note:
|
||||
equals_string: This RecordSetType classifies record sets following the series principle. Typically a series within the university administration fonds or registrar's office fonds.
|
||||
equals_string: This RecordSetType classifies record sets following the series
|
||||
principle. Typically a series within the university administration fonds
|
||||
or registrar's office fonds.
|
||||
scope_include:
|
||||
equals_string: '["enrollment records", "academic transcripts", "graduation records", "disciplinary records", "financial aid records"]'
|
||||
equals_string: '["enrollment records", "academic transcripts", "graduation
|
||||
records", "disciplinary records", "financial aid records"]'
|
||||
scope_exclude:
|
||||
equals_string: '["faculty records", "research records", "administrative policy"]'
|
||||
privacy_note:
|
||||
equals_string: Subject to educational records privacy laws (FERPA, GDPR, AVG). Access restrictions typically apply for records less than 75 years old.
|
||||
equals_string: Subject to educational records privacy laws (FERPA, GDPR, AVG). Access
|
||||
restrictions typically apply for records less than 75 years old.
|
||||
FacultyPaperCollection:
|
||||
is_a: AcademicArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for faculty papers and personal archives.\n\n**Definition**:\nPersonal papers of faculty members documenting their academic careers, research \nactivities, teaching, and professional service. These are typically acquired as \ndonations or bequests, distinct from official university records.\n\n**Typical Contents**:\n- Research documentation and notes\n- Correspondence (professional and personal)\n- Lecture notes and course materials\n- Manuscripts and drafts\n- Conference papers and presentations\n- Professional organization records\n- Photographs and audiovisual materials\n\n**Provenance**:\nUnlike administrative fonds, faculty papers are personal archives with the \nindividual faculty member as creator/accumulator. The university acquires \ncustody but respects original order where it exists.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records classified with this\ntype follow the fonds organizational principle as defined\
|
||||
description: "A rico:RecordSetType for faculty papers and personal archives.\n\
|
||||
\n**Definition**:\nPersonal papers of faculty members documenting their academic\
|
||||
\ careers, research \nactivities, teaching, and professional service. These\
|
||||
\ are typically acquired as \ndonations or bequests, distinct from official\
|
||||
\ university records.\n\n**Typical Contents**:\n- Research documentation and\
|
||||
\ notes\n- Correspondence (professional and personal)\n- Lecture notes and course\
|
||||
\ materials\n- Manuscripts and drafts\n- Conference papers and presentations\n\
|
||||
- Professional organization records\n- Photographs and audiovisual materials\n\
|
||||
\n**Provenance**:\nUnlike administrative fonds, faculty papers are personal\
|
||||
\ archives with the \nindividual faculty member as creator/accumulator. The\
|
||||
\ university acquires \ncustody but respects original order where it exists.\n\
|
||||
\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records\
|
||||
\ classified with this\ntype follow the fonds organizational principle as defined\
|
||||
\ by rico-rst:Fonds\n(personal papers fonds with the faculty member as creator/accumulator).\n"
|
||||
structured_aliases:
|
||||
- literal_form: Professorennachlass
|
||||
|
|
@ -205,11 +230,8 @@ classes:
|
|||
- personal papers
|
||||
- faculty papers
|
||||
- research documentation
|
||||
- correspondence
|
||||
- lecture notes
|
||||
- course materials
|
||||
- manuscripts
|
||||
- drafts
|
||||
- conference papers
|
||||
- professional papers
|
||||
- academic papers
|
||||
|
|
@ -219,6 +241,8 @@ classes:
|
|||
- rico-rst:Fonds
|
||||
broad_mappings:
|
||||
- wd:Q22075301
|
||||
- rico:RecordSetType
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
- skos:Concept
|
||||
- bf:Archival
|
||||
|
|
@ -227,7 +251,8 @@ classes:
|
|||
- rico:RecordSetType
|
||||
- rico-rst:Fonds
|
||||
annotations:
|
||||
acquisition_note: Typically acquired through donation or bequest. May include restrictions on access or publication specified by donor agreement.
|
||||
acquisition_note: Typically acquired through donation or bequest. May include
|
||||
restrictions on access or publication specified by donor agreement.
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- specificity_annotation
|
||||
|
|
@ -248,16 +273,32 @@ classes:
|
|||
organizational_principle_uri:
|
||||
equals_string: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#Fonds
|
||||
record_note:
|
||||
equals_string: This RecordSetType classifies record sets following the fonds principle. Personal archives with individual faculty member as creator/accumulator.
|
||||
equals_string: This RecordSetType classifies record sets following the fonds
|
||||
principle. Personal archives with individual faculty member as creator/accumulator.
|
||||
scope_include:
|
||||
equals_string: '["research documentation", "correspondence", "lecture notes", "manuscripts", "conference papers"]'
|
||||
equals_string: '["research documentation", "correspondence", "lecture notes",
|
||||
"manuscripts", "conference papers"]'
|
||||
scope_exclude:
|
||||
equals_string: '["official university records", "student records", "administrative files"]'
|
||||
equals_string: '["official university records", "student records", "administrative
|
||||
files"]'
|
||||
CampusDocumentationCollection:
|
||||
is_a: AcademicArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for campus life and institutional documentation.\n\n**Definition**:\nMaterials documenting campus life, institutional identity, and university \nculture beyond formal administrative records. Often includes visual materials, \npublications, and ephemera that capture the lived experience of the institution.\n\n**Typical Contents**:\n- Campus photographs and audiovisual materials\n- University publications (yearbooks, newspapers, magazines)\n- Ephemera (programs, posters, invitations)\n- Memorabilia and artifacts\n- Oral histories\n- Event documentation\n- Building and facilities documentation\n\n**Collection Nature**:\nMay be assembled collections (artificial) rather than strictly provenance-based,\nespecially for ephemera and visual materials. Documentation value often takes\nprecedence over strict archival arrangement.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records classified with this\ntype follow the collection organizational\
|
||||
\ principle as defined by rico-rst:Collection\n(assembled/artificial collection organized by subject or documentation purpose).\n"
|
||||
description: "A rico:RecordSetType for campus life and institutional documentation.\n\
|
||||
\n**Definition**:\nMaterials documenting campus life, institutional identity,\
|
||||
\ and university \nculture beyond formal administrative records. Often includes\
|
||||
\ visual materials, \npublications, and ephemera that capture the lived experience\
|
||||
\ of the institution.\n\n**Typical Contents**:\n- Campus photographs and audiovisual\
|
||||
\ materials\n- University publications (yearbooks, newspapers, magazines)\n\
|
||||
- Ephemera (programs, posters, invitations)\n- Memorabilia and artifacts\n-\
|
||||
\ Oral histories\n- Event documentation\n- Building and facilities documentation\n\
|
||||
\n**Collection Nature**:\nMay be assembled collections (artificial) rather than\
|
||||
\ strictly provenance-based,\nespecially for ephemera and visual materials.\
|
||||
\ Documentation value often takes\nprecedence over strict archival arrangement.\n\
|
||||
\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType. Records\
|
||||
\ classified with this\ntype follow the collection organizational principle\
|
||||
\ as defined by rico-rst:Collection\n(assembled/artificial collection organized\
|
||||
\ by subject or documentation purpose).\n"
|
||||
structured_aliases:
|
||||
- literal_form: Campus-Dokumentationssammlung
|
||||
in_language: de
|
||||
|
|
@ -273,10 +314,7 @@ classes:
|
|||
- campus photographs
|
||||
- audiovisual materials
|
||||
- university publications
|
||||
- yearbooks
|
||||
- student newspapers
|
||||
- ephemera
|
||||
- memorabilia
|
||||
- oral histories
|
||||
- event documentation
|
||||
- building documentation
|
||||
|
|
@ -287,6 +325,8 @@ classes:
|
|||
- rico-rst:Collection
|
||||
broad_mappings:
|
||||
- wd:Q9388534
|
||||
- rico:RecordSetType
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
- skos:Concept
|
||||
- schema:Collection
|
||||
|
|
@ -295,7 +335,8 @@ classes:
|
|||
- rico:RecordSetType
|
||||
- rico-rst:Collection
|
||||
annotations:
|
||||
collection_nature_note: Often includes artificial/assembled collections organized by subject, format, or documentation purpose rather than strict provenance.
|
||||
collection_nature_note: Often includes artificial/assembled collections organized
|
||||
by subject, format, or documentation purpose rather than strict provenance.
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- specificity_annotation
|
||||
|
|
@ -316,8 +357,11 @@ classes:
|
|||
organizational_principle_uri:
|
||||
equals_string: https://www.ica.org/standards/RiC/vocabularies/recordSetTypes#Collection
|
||||
record_note:
|
||||
equals_string: This RecordSetType classifies record sets following the collection principle. May be assembled collection (artificial) organized by subject or documentation purpose.
|
||||
equals_string: This RecordSetType classifies record sets following the collection
|
||||
principle. May be assembled collection (artificial) organized by subject
|
||||
or documentation purpose.
|
||||
scope_include:
|
||||
equals_string: '["photographs", "audiovisual materials", "publications", "ephemera", "oral histories", "memorabilia"]'
|
||||
equals_string: '["photographs", "audiovisual materials", "publications", "ephemera",
|
||||
"oral histories", "memorabilia"]'
|
||||
scope_exclude:
|
||||
equals_string: '["administrative records", "student records", "faculty papers"]'
|
||||
|
|
|
|||
|
|
@ -20,4 +20,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -20,4 +20,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -1,52 +1,38 @@
|
|||
# Access class
|
||||
# Structured access information for heritage collections and services
|
||||
#
|
||||
# Created per slot_fixes.yaml revision for collection_access migration
|
||||
# Generation date: 2026-01-19
|
||||
# Rule compliance: 53 (slot_fixes.yaml), 39 (RiC-O naming)
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Access
|
||||
name: Access
|
||||
title: Access Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
crm: http://www.cidoc-crm.org/cidoc-crm/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ./TimeSpan
|
||||
- ../slots/has_or_had_frequency
|
||||
- ./Frequency
|
||||
- ../slots/condition_of_access
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_user_category
|
||||
- ../enums/AccessTypeEnum
|
||||
|
||||
- linkml:types
|
||||
- ../enums/AccessTypeEnum
|
||||
- ../metadata
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_frequency
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_user_category
|
||||
- ../slots/temporal_extent
|
||||
- ./Frequency
|
||||
- ./TimeSpan
|
||||
classes:
|
||||
Access:
|
||||
class_uri: dcterms:RightsStatement
|
||||
description: |
|
||||
Structured access information for heritage collections, services, or facilities.
|
||||
|
||||
**Purpose**:
|
||||
Replaces simple string descriptions of access conditions with structured
|
||||
data capturing access types, eligible users, conditions, and restrictions.
|
||||
|
||||
**Key Properties**:
|
||||
- `has_or_had_type`: Type of access (PUBLIC, BY_APPOINTMENT, RESTRICTED, etc.)
|
||||
- `has_or_had_user_category`: Who can access (public, students, faculty, researchers)
|
||||
- `condition_of_access`: Conditions or requirements for access
|
||||
- `has_or_had_description`: Free-text description
|
||||
- `temporal_extent`: When this access policy applies
|
||||
|
||||
**Access Types**:
|
||||
- PUBLIC: Open to general public
|
||||
- BY_APPOINTMENT: Requires advance appointment
|
||||
|
|
@ -56,101 +42,63 @@ classes:
|
|||
- RESTRICTED: Limited access with specific conditions
|
||||
- CLOSED: Not currently accessible
|
||||
- DIGITAL_ONLY: Available only in digital form
|
||||
|
||||
**Ontological Alignment**:
|
||||
- **Primary**: `dcterms:RightsStatement` - Dublin Core rights statement
|
||||
- **Close**: `schema:publicAccess` - Schema.org access indicator
|
||||
- **Related**: `crm:E30_Right` - CIDOC-CRM rights
|
||||
|
||||
exact_mappings:
|
||||
- dcterms:RightsStatement
|
||||
|
||||
close_mappings:
|
||||
- schema:publicAccess
|
||||
|
||||
related_mappings:
|
||||
- crm:E30_Right
|
||||
|
||||
slots:
|
||||
- has_or_had_type
|
||||
- has_or_had_user_category
|
||||
- condition_of_access
|
||||
- has_or_had_description
|
||||
- temporal_extent
|
||||
- is_digital_access
|
||||
- has_or_had_frequency
|
||||
|
||||
slot_usage:
|
||||
has_or_had_type:
|
||||
range: AccessTypeEnum
|
||||
required: true
|
||||
description: Type of access offered
|
||||
|
||||
has_or_had_user_category:
|
||||
required: false
|
||||
description: |
|
||||
Categories of users eligible for this access.
|
||||
Examples: "enrolled students", "faculty", "visiting scholars",
|
||||
"credentialed researchers", "general public"
|
||||
examples:
|
||||
- value: "enrolled students"
|
||||
- value: "faculty and staff"
|
||||
- value: "visiting researchers with credentials"
|
||||
|
||||
temporal_extent:
|
||||
required: false
|
||||
range: TimeSpan
|
||||
inlined: true
|
||||
description: |
|
||||
Time period during which this access policy applies.
|
||||
Useful for temporary restrictions or seasonal access.
|
||||
|
||||
is_digital_access:
|
||||
required: false
|
||||
range: boolean
|
||||
description: Whether this is digital access
|
||||
has_or_had_frequency:
|
||||
required: false
|
||||
range: Frequency
|
||||
description: Frequency of access (e.g., daily, weekly, by appointment)
|
||||
inlined: true
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_label: "Daily"
|
||||
description: Access available daily
|
||||
|
||||
annotations:
|
||||
specificity_score: 0.50
|
||||
specificity_rationale: "Moderately specific - applies to collection and service access contexts"
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: "All institution types offer some form of access"
|
||||
|
||||
comments:
|
||||
- "Created per slot_fixes.yaml revision for collection_access migration"
|
||||
- "Replaces string-based collection_access with structured access data"
|
||||
- "RULE 53: Part of collection_access → offers_or_offered_access + Access migration"
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_type: PUBLIC
|
||||
has_or_had_description: "Open to general public during gallery hours"
|
||||
has_or_had_user_category:
|
||||
- "general public"
|
||||
condition_of_access:
|
||||
- "during posted gallery hours"
|
||||
description: "Public access during gallery hours"
|
||||
|
||||
- value:
|
||||
has_or_had_type: BY_APPOINTMENT
|
||||
has_or_had_user_category:
|
||||
- "credentialed researchers"
|
||||
- "graduate students with faculty sponsor"
|
||||
condition_of_access:
|
||||
- "48-hour advance booking required"
|
||||
- "handling training required for original materials"
|
||||
- "fragile materials limited to supervised viewing only"
|
||||
description: "Research access by appointment with conditions"
|
||||
|
||||
- value:
|
||||
has_or_had_type: ACADEMIC
|
||||
has_or_had_description: "Open to enrolled students and faculty; public by appointment"
|
||||
|
|
@ -158,16 +106,8 @@ classes:
|
|||
- "enrolled students"
|
||||
- "faculty"
|
||||
- "research staff"
|
||||
condition_of_access:
|
||||
- "valid university ID"
|
||||
is_digital_access: false
|
||||
description: "Academic community access with public by appointment"
|
||||
|
||||
- value:
|
||||
has_or_had_type: DIGITAL_ONLY
|
||||
has_or_had_description: "Collection accessible only through online database"
|
||||
has_or_had_user_category:
|
||||
- "anyone with internet access"
|
||||
is_digital_access: true
|
||||
description: "Digital-only access"
|
||||
|
||||
- "anyone with internet access"
|
||||
|
|
@ -8,8 +8,8 @@ prefixes:
|
|||
schema: http://schema.org/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_url
|
||||
- ./URL
|
||||
default_prefix: hc
|
||||
|
|
@ -22,10 +22,9 @@ classes:
|
|||
- has_or_had_url
|
||||
slot_usage:
|
||||
has_or_had_url:
|
||||
range: URL
|
||||
range: uri
|
||||
inlined: true
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -20,4 +20,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ prefixes:
|
|||
dcat: http://www.w3.org/ns/dcat#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_url
|
||||
- ./URL
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AccessInterface:
|
||||
|
|
@ -22,11 +22,10 @@ classes:
|
|||
- has_or_had_description
|
||||
slot_usage:
|
||||
has_or_had_url:
|
||||
range: URL
|
||||
range: uri
|
||||
inlined: true
|
||||
required: true
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -20,4 +20,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -13,38 +13,36 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
- ../slots/embargo_end_date
|
||||
- ../slots/policy_id
|
||||
- ../slots/policy_name
|
||||
- ../slots/has_or_had_description
|
||||
- ./Description
|
||||
- ../slots/has_or_had_level
|
||||
- ./AccessLevel
|
||||
- ../slots/requires_appointment
|
||||
- ../slots/poses_or_posed_condition
|
||||
- ./Condition
|
||||
- ../slots/credentials_required
|
||||
- ../slots/cultural_protocol_url
|
||||
- ../slots/embargo_reason
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_embargo_end_date
|
||||
- ../slots/has_or_had_embargo_reason
|
||||
- ../slots/has_or_had_level
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/imposes_or_imposed
|
||||
- ./Fee
|
||||
- ../slots/fee_required
|
||||
- ../slots/legal_basis
|
||||
- ../slots/policy_id
|
||||
- ../slots/policy_name
|
||||
- ../slots/poses_or_posed_condition
|
||||
- ../slots/registration_required
|
||||
- ../slots/requires_appointment
|
||||
- ../slots/requires_or_required
|
||||
- ../slots/review_date
|
||||
- ../slots/rights_statement
|
||||
- ../slots/rights_statement_url
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/temporal_extent
|
||||
- ./AccessLevel
|
||||
- ./Appointment
|
||||
- ./Condition
|
||||
- ./Description
|
||||
- ./Fee
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/condition_of_access
|
||||
- ../slots/requires_or_required
|
||||
- ./Appointment
|
||||
- ./TimeSpan
|
||||
classes:
|
||||
AccessPolicy:
|
||||
class_uri: premis:RightsStatus
|
||||
|
|
@ -66,14 +64,12 @@ classes:
|
|||
- has_or_had_level
|
||||
- requires_appointment
|
||||
- poses_or_posed_condition
|
||||
- condition_of_access
|
||||
- requires_or_required
|
||||
- credentials_required
|
||||
- cultural_protocol_url
|
||||
- embargo_end_date
|
||||
- embargo_reason
|
||||
- has_or_had_embargo_end_date
|
||||
- has_or_had_embargo_reason
|
||||
- imposes_or_imposed
|
||||
- fee_required
|
||||
- legal_basis
|
||||
- policy_id
|
||||
- policy_name
|
||||
|
|
@ -91,25 +87,14 @@ classes:
|
|||
identifier: true
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/access-policy/open-access
|
||||
description: Standard open access policy
|
||||
policy_name:
|
||||
range: string
|
||||
required: true
|
||||
examples:
|
||||
- value: Open Access
|
||||
description: Public open access
|
||||
- value: Researchers Only
|
||||
description: Restricted to researchers
|
||||
- value: Embargoed until 2050
|
||||
description: Time-limited closure
|
||||
has_or_had_level:
|
||||
description: 'Access level of the policy.
|
||||
|
||||
MIGRATED from has_or_had_access_level per Rule 53.
|
||||
|
||||
Uses AccessLevel class.
|
||||
|
||||
'
|
||||
range: AccessLevel
|
||||
required: true
|
||||
inlined: true
|
||||
|
|
@ -121,32 +106,18 @@ classes:
|
|||
- value:
|
||||
has_or_had_label: EMBARGOED
|
||||
has_or_had_description:
|
||||
description: 'Description of the access policy.
|
||||
|
||||
MIGRATED from has_or_had_access_description per Rule 53.
|
||||
|
||||
Uses Description class.
|
||||
|
||||
'
|
||||
range: Description
|
||||
range: string
|
||||
inlined: true
|
||||
examples:
|
||||
- value:
|
||||
description_text: Open to all visitors during reading room hours (Mon-Fri 9-17)
|
||||
description: Archive public access
|
||||
- value:
|
||||
description_text: Access restricted to academic researchers with institutional has_or_had_affiliation
|
||||
description: University special collections
|
||||
poses_or_posed_condition:
|
||||
range: Condition
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
description: 'Access conditions or requirements using structured Condition class.
|
||||
|
||||
MIGRATED from condition string slot per slot_fixes.yaml (Rule 53, 2026-01-22).
|
||||
|
||||
'
|
||||
examples:
|
||||
- value:
|
||||
- has_or_had_type: AccessCondition
|
||||
|
|
@ -155,118 +126,69 @@ classes:
|
|||
- has_or_had_type: AccessCondition
|
||||
has_or_had_description:
|
||||
description_text: Registration form must be completed
|
||||
description: Archive access conditions using Condition class
|
||||
rights_statement:
|
||||
range: string
|
||||
examples:
|
||||
- value: In Copyright
|
||||
description: Copyright protected
|
||||
- value: No Copyright - United States
|
||||
description: Public domain (US)
|
||||
rights_statement_url:
|
||||
range: uri
|
||||
examples:
|
||||
- value: http://rightsstatements.org/vocab/InC/1.0/
|
||||
description: In Copyright
|
||||
- value: http://rightsstatements.org/vocab/NoC-US/1.0/
|
||||
description: No Copyright - United States
|
||||
requires_appointment:
|
||||
range: boolean
|
||||
description: 'Whether an appointment is required for access.
|
||||
|
||||
Uses schema:reservationRequired which is semantically correct for access policies.
|
||||
|
||||
'
|
||||
examples:
|
||||
- value: true
|
||||
description: Appointment required
|
||||
- value: false
|
||||
description: Walk-in access
|
||||
registration_required:
|
||||
range: boolean
|
||||
examples:
|
||||
- value: true
|
||||
description: Must register as reader
|
||||
credentials_required:
|
||||
range: string
|
||||
examples:
|
||||
- value: INSTITUTIONAL
|
||||
description: Must be affiliated with research institution
|
||||
fee_required:
|
||||
range: boolean
|
||||
examples:
|
||||
- value: false
|
||||
description: Free access
|
||||
- value: true
|
||||
description: Fee required
|
||||
imposes_or_imposed:
|
||||
description: 'Fees imposed by the access policy.
|
||||
|
||||
MIGRATED from fee_amount per Rule 53.
|
||||
|
||||
Uses Fee class with structured Quantity.
|
||||
|
||||
'
|
||||
range: Fee
|
||||
inlined: true
|
||||
multivalued: true
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
quantity_value: 5.0
|
||||
has_or_had_unit:
|
||||
unit_value: EUR
|
||||
has_or_had_description: Daily reading room fee
|
||||
description: "\u20AC5.00 per day"
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
quantity_value: 0
|
||||
has_or_had_description: Free for researchers
|
||||
description: Free for researchers
|
||||
- value:
|
||||
has_or_had_quantity:
|
||||
quantity_value: 10.0
|
||||
has_or_had_unit:
|
||||
unit_value: EUR
|
||||
has_or_had_description: General public fee
|
||||
description: "\u20AC10 for general public"
|
||||
embargo_end_date:
|
||||
has_or_had_embargo_end_date:
|
||||
range: date
|
||||
examples:
|
||||
- value: '2050-01-01'
|
||||
description: Embargo lifts January 1, 2050
|
||||
embargo_reason:
|
||||
has_or_had_embargo_reason:
|
||||
range: string
|
||||
examples:
|
||||
- value: Donor privacy restrictions per deed of gift
|
||||
description: Donor-imposed embargo
|
||||
- value: Contains personal data protected under GDPR
|
||||
description: Privacy law embargo
|
||||
cultural_protocol_url:
|
||||
range: uri
|
||||
examples:
|
||||
- value: https://localcontexts.org/tk-labels/
|
||||
description: Traditional Knowledge labels
|
||||
legal_basis:
|
||||
range: string
|
||||
examples:
|
||||
- value: General Data Protection Regulation (GDPR)
|
||||
description: EU privacy law
|
||||
- value: Freedom of Information Act exemption 6
|
||||
description: US FOIA exemption
|
||||
review_date:
|
||||
range: date
|
||||
examples:
|
||||
- value: '2025-12-31'
|
||||
description: Annual review date
|
||||
temporal_extent:
|
||||
description: 'Validity period for this access policy using CIDOC-CRM TimeSpan.
|
||||
|
||||
MIGRATED from valid_from + valid_to per slot_fixes.yaml (Rule 53).
|
||||
|
||||
Uses begin_of_the_begin for policy start date and end_of_the_end for expiry.
|
||||
|
||||
'
|
||||
range: TimeSpan
|
||||
inlined: true
|
||||
required: false
|
||||
|
|
@ -274,34 +196,7 @@ classes:
|
|||
- value:
|
||||
begin_of_the_begin: '2024-01-01'
|
||||
end_of_the_end: '2050-12-31'
|
||||
description: Policy valid from 2024 until end of 2050
|
||||
condition_of_access:
|
||||
description: 'Textual conditions or requirements for access (RiC-O style).
|
||||
|
||||
Use for human-readable access requirements. For structured appointment
|
||||
|
||||
data, use requires_or_required with Appointment instances.
|
||||
|
||||
'
|
||||
range: string
|
||||
multivalued: true
|
||||
examples:
|
||||
- value:
|
||||
- Appointment required 48 hours in advance
|
||||
- Valid researcher credentials required
|
||||
- Materials must be handled with cotton gloves
|
||||
description: Multiple access conditions
|
||||
requires_or_required:
|
||||
description: 'Links to structured Appointment entities for rich appointment modeling.
|
||||
|
||||
ADDED 2026-01-17 per slot_fixes.yaml revision for appointment_required.
|
||||
|
||||
|
||||
Use this for detailed appointment requirements (lead time, booking method,
|
||||
|
||||
contact info). For simple boolean, use requires_appointment instead.
|
||||
|
||||
'
|
||||
range: Appointment
|
||||
multivalued: true
|
||||
inlined: true
|
||||
|
|
@ -310,13 +205,6 @@ classes:
|
|||
- appointment_id: hc:appointment/special-collections-48h
|
||||
has_or_had_label: Special Collections Appointment
|
||||
has_or_had_description: Book at least 48 hours in advance for manuscript access
|
||||
lead_time_hours: 48
|
||||
booking_method:
|
||||
- email
|
||||
- online_form
|
||||
booking_contact: bijzondere.collecties@archive.nl
|
||||
appointment_required: true
|
||||
description: Structured appointment requirement with rich metadata
|
||||
comments:
|
||||
- AccessPolicy defines access conditions for Collection instances
|
||||
- Used by Collection.access_policy_ref to link policies to holdings
|
||||
|
|
@ -348,10 +236,7 @@ classes:
|
|||
description_text: Original materials handled with gloves
|
||||
registration_required: true
|
||||
requires_appointment: false
|
||||
fee_required: false
|
||||
has_or_had_contact_point:
|
||||
email: studiezaal@nationaalarchief.nl
|
||||
description: Standard archive public access policy
|
||||
- value:
|
||||
policy_id: https://nde.nl/ontology/hc/access-policy/donor-embargo-2050
|
||||
policy_name: Embargoed until 2050
|
||||
|
|
@ -359,11 +244,10 @@ classes:
|
|||
has_or_had_label: EMBARGOED
|
||||
has_or_had_description:
|
||||
description_text: Collection closed until 2050 per donor agreement
|
||||
embargo_end_date: '2050-01-01'
|
||||
embargo_reason: Donor privacy restrictions per deed of gift
|
||||
has_or_had_embargo_end_date: '2050-01-01'
|
||||
has_or_had_embargo_reason: Donor privacy restrictions per deed of gift
|
||||
legal_basis: Deed of Gift clause 4.2
|
||||
review_date: '2049-06-01'
|
||||
description: Time-limited embargo policy
|
||||
- value:
|
||||
policy_id: https://nde.nl/ontology/hc/access-policy/dim-archive-preservation
|
||||
policy_name: DIM Archive - Preservation Only
|
||||
|
|
@ -381,8 +265,6 @@ classes:
|
|||
requires_appointment: true
|
||||
credentials_required: PROFESSIONAL
|
||||
has_or_had_contact_point:
|
||||
email: preservation@archive.org
|
||||
description: Dark archive / DIM access policy
|
||||
- value:
|
||||
policy_id: https://nde.nl/ontology/hc/access-policy/special-collections-rich
|
||||
policy_name: Special Collections - Rich Appointment Policy
|
||||
|
|
@ -390,36 +272,17 @@ classes:
|
|||
has_or_had_label: RESEARCHERS_ONLY
|
||||
has_or_had_description:
|
||||
description_text: Academic researchers with institutional affiliation
|
||||
condition_of_access:
|
||||
- Valid institutional ID required
|
||||
- Letter of introduction from supervisor
|
||||
- Maximum 5 items per visit
|
||||
requires_or_required:
|
||||
- appointment_id: hc:appointment/special-collections-booking
|
||||
has_or_had_label: Special Collections Appointment
|
||||
has_or_had_description: 'Appointments for manuscript and rare book collections must be made
|
||||
|
||||
at least 48 hours in advance. Please specify which materials you
|
||||
|
||||
wish to consult.
|
||||
|
||||
'
|
||||
lead_time_hours: 48
|
||||
booking_method:
|
||||
- email
|
||||
- online_form
|
||||
booking_contact: bijzondere.collecties@archive.nl
|
||||
confirmation_required: true
|
||||
cancellation_notice_hours: 24
|
||||
appointment_required: true
|
||||
registration_required: true
|
||||
credentials_required: INSTITUTIONAL
|
||||
fee_required: false
|
||||
has_or_had_contact_point:
|
||||
email: special.collections@archive.nl
|
||||
description: Rich appointment modeling with structured Appointment entity
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -23,4 +23,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -12,10 +12,9 @@ prefixes:
|
|||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
classes:
|
||||
AccessibilityFeature:
|
||||
class_uri: schema:LocationFeatureSpecification
|
||||
|
|
@ -23,8 +22,7 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
custodian_types: '["*"]'
|
||||
|
||||
slots:
|
||||
- has_or_had_label
|
||||
|
|
|
|||
|
|
@ -9,12 +9,12 @@ prefixes:
|
|||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/temporal_extent
|
||||
- ./Identifier
|
||||
- ./TimeSpan
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AccessionEvent:
|
||||
|
|
@ -31,4 +31,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ prefixes:
|
|||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
- ./Identifier
|
||||
default_prefix: hc
|
||||
classes:
|
||||
|
|
@ -25,4 +27,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -12,9 +12,8 @@ prefixes:
|
|||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_value
|
||||
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_value
|
||||
classes:
|
||||
AccountIdentifier:
|
||||
class_uri: schema:PropertyValue
|
||||
|
|
@ -22,8 +21,7 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
custodian_types: '["*"]'
|
||||
|
||||
slots:
|
||||
- has_or_had_value
|
||||
|
|
|
|||
|
|
@ -12,9 +12,8 @@ prefixes:
|
|||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
classes:
|
||||
AccountStatus:
|
||||
class_uri: skos:Concept
|
||||
|
|
@ -22,8 +21,7 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
custodian_types: '["*"]'
|
||||
|
||||
slots:
|
||||
- has_or_had_label
|
||||
|
|
|
|||
|
|
@ -12,9 +12,8 @@ prefixes:
|
|||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
classes:
|
||||
Accreditation:
|
||||
class_uri: schema:Permit
|
||||
|
|
@ -22,8 +21,7 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
custodian_types: '["*"]'
|
||||
|
||||
slots:
|
||||
- has_or_had_label
|
||||
|
|
|
|||
|
|
@ -12,9 +12,8 @@ prefixes:
|
|||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
classes:
|
||||
AccreditationBody:
|
||||
class_uri: schema:Organization
|
||||
|
|
@ -22,8 +21,7 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
custodian_types: '["*"]'
|
||||
|
||||
slots:
|
||||
- has_or_had_name
|
||||
|
|
|
|||
|
|
@ -12,9 +12,8 @@ prefixes:
|
|||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/temporal_extent
|
||||
|
||||
- linkml:types
|
||||
- ../slots/temporal_extent
|
||||
classes:
|
||||
AccreditationEvent:
|
||||
class_uri: prov:Activity
|
||||
|
|
@ -22,8 +21,7 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
custodian_types: '["*"]'
|
||||
|
||||
slots:
|
||||
- temporal_extent
|
||||
|
|
|
|||
|
|
@ -1,7 +1,21 @@
|
|||
id: https://nde.nl/ontology/hc/class/Accumulation
|
||||
name: Accumulation
|
||||
title: Accumulation
|
||||
description: The relation/period during which the records were accumulated.
|
||||
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/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/temporal_extent
|
||||
classes:
|
||||
Accumulation:
|
||||
class_uri: rico:Accumulation
|
||||
description: The period during which the records were accumulated.
|
||||
class_uri: rico:AccumulationRelation
|
||||
description: The relation/period during which the records were accumulated.
|
||||
slots:
|
||||
- temporal_extent
|
||||
- has_or_had_description
|
||||
|
|
@ -9,4 +23,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -1,3 +1,18 @@
|
|||
id: https://nde.nl/ontology/hc/class/AccuracyLevel
|
||||
name: AccuracyLevel
|
||||
title: Accuracy Level
|
||||
description: A qualitative or quantitative level of accuracy (e.g. for coordinates).
|
||||
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/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_value
|
||||
classes:
|
||||
AccuracyLevel:
|
||||
class_uri: skos:Concept
|
||||
|
|
@ -10,4 +25,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -16,14 +16,14 @@ prefixes:
|
|||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/temporal_extent
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./TimeSpan
|
||||
default_range: string
|
||||
enums:
|
||||
AcquisitionMethodEnum:
|
||||
|
|
@ -60,15 +60,25 @@ enums:
|
|||
classes:
|
||||
Acquisition:
|
||||
class_uri: crm:E8_Acquisition
|
||||
description: 'Represents an acquisition event - how and when an object or specimen was obtained for a collection.
|
||||
description: 'Represents an acquisition event - how and when an object or specimen
|
||||
was obtained for a collection.
|
||||
|
||||
CIDOC-CRM E8 Acquisition models the transfer of legal ownership rights.
|
||||
|
||||
**Key properties**: - `temporal_extent`: When the acquisition occurred (TimeSpan with fuzzy boundaries for historical items) - `acquisition_method`: How the item was acquired (field collection, purchase, donation, etc.) - `acquisition_source`: From whom/where acquired (collector, dealer, previous owner, field location) - `acquisition_agent`: Who performed the acquisition (collector, curator, institution)
|
||||
**Key properties**: - `temporal_extent`: When the acquisition occurred (TimeSpan
|
||||
with fuzzy boundaries for historical items) - `acquisition_method`: How the
|
||||
item was acquired (field collection, purchase, donation, etc.) - `acquisition_source`:
|
||||
From whom/where acquired (collector, dealer, previous owner, field location)
|
||||
- `acquisition_agent`: Who performed the acquisition (collector, curator, institution)
|
||||
|
||||
**Darwin Core alignment**: For biological specimens: - `temporal_extent` replaces `dwc:eventDate` (collection date) - `acquisition_source` can capture `dwc:locality` and `dwc:recordedBy`
|
||||
**Darwin Core alignment**: For biological specimens: - `temporal_extent` replaces
|
||||
`dwc:eventDate` (collection date) - `acquisition_source` can capture `dwc:locality`
|
||||
and `dwc:recordedBy`
|
||||
|
||||
**Use cases**: - Museum object provenance (purchase from dealer, 1923) - Biological specimen collection (field collection, Amazon basin, 1750s) - Archival transfer (transferred from ministry archives, 2001) - Art donation (donated by artist''s estate, 2015)'
|
||||
**Use cases**: - Museum object provenance (purchase from dealer, 1923) - Biological
|
||||
specimen collection (field collection, Amazon basin, 1750s) - Archival transfer
|
||||
(transferred from ministry archives, 2001) - Art donation (donated by artist''s
|
||||
estate, 2015)'
|
||||
exact_mappings:
|
||||
- crm:E8_Acquisition
|
||||
close_mappings:
|
||||
|
|
@ -81,38 +91,25 @@ classes:
|
|||
- temporal_extent
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
attributes:
|
||||
acquisition_method:
|
||||
range: AcquisitionMethodEnum
|
||||
description: Method by which the item was acquired (field collection, purchase, donation, etc.).
|
||||
acquisition_source:
|
||||
range: string
|
||||
description: 'Source from which item was acquired. Can be: - Person name (collector, donor, seller) - Institution name (transferring institution) - Location (field collection locality) - Dealer or auction house'
|
||||
acquisition_agent:
|
||||
range: string
|
||||
description: Agent who performed the acquisition (collector name, curator, institution). For biological specimens, maps to dwc:recordedBy.
|
||||
acquisition_location:
|
||||
range: string
|
||||
description: Location where acquisition occurred (field collection site, auction house location). For biological specimens, can capture field locality.
|
||||
acquisition_reference:
|
||||
range: string
|
||||
description: Reference number or identifier for the acquisition (accession number, lot number).
|
||||
acquisition_notes:
|
||||
range: string
|
||||
description: Additional notes about the acquisition event.
|
||||
acquisition_date_text:
|
||||
range: string
|
||||
description: Original date text as recorded (e.g., "1750s", "pre-1662", "circa 1900"). For backward compatibility with string-based collection_date. The structured date should be in temporal_extent.
|
||||
comments:
|
||||
- Created per slot_fixes.yaml revision for collection_date migration
|
||||
- Replaces simple collection_date string with structured acquisition event
|
||||
- "RULE 53: Part of collection_date \u2192 was_acquired_through + Acquisition migration"
|
||||
- 'RULE 53: Part of collection_date → was_acquired_through + Acquisition migration'
|
||||
annotations:
|
||||
specificity_score: 0.7
|
||||
specificity_rationale: Fairly specific - applies to items with acquisition provenance
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
examples:
|
||||
- value: "# Biological specimen collected in the field\nacquisition_method: FIELD_COLLECTION\ntemporal_extent:\n begin_of_the_begin: \"1750-01-01\"\n end_of_the_end: \"1759-12-31\"\n notes: \"Collected sometime in the 1750s\"\nacquisition_source: \"Amazon basin, Brazil\"\nacquisition_agent: \"Unknown Dutch collector\"\nacquisition_date_text: \"1750s\"\n"
|
||||
- value: "# Museum object purchased from dealer\nacquisition_method: PURCHASE\ntemporal_extent:\n begin_of_the_begin: \"1923-03-15\"\n end_of_the_end: \"1923-03-15\"\nacquisition_source: \"Sotheby's London\"\nacquisition_reference: \"Lot 245, Sale of March 1923\"\n"
|
||||
- value: "# Historical specimen with uncertain date\nacquisition_method: FIELD_COLLECTION\ntemporal_extent:\n begin_of_the_begin: \"1600-01-01\"\n end_of_the_end: \"1662-12-31\"\n notes: \"Pre-1662 (before Great Fire of London)\"\nacquisition_date_text: \"pre-1662\"\n"
|
||||
- value: "# Biological specimen collected in the field\nacquisition_method: FIELD_COLLECTION\n\
|
||||
temporal_extent:\n begin_of_the_begin: \"1750-01-01\"\n end_of_the_end:\
|
||||
\ \"1759-12-31\"\n notes: \"Collected sometime in the 1750s\"\nacquisition_source:\
|
||||
\ \"Amazon basin, Brazil\"\nacquisition_agent: \"Unknown Dutch collector\"\
|
||||
\nacquisition_date_text: \"1750s\"\n"
|
||||
- value: "# Museum object purchased from dealer\nacquisition_method: PURCHASE\n\
|
||||
temporal_extent:\n begin_of_the_begin: \"1923-03-15\"\n end_of_the_end:\
|
||||
\ \"1923-03-15\"\nacquisition_source: \"Sotheby's London\"\nacquisition_reference:\
|
||||
\ \"Lot 245, Sale of March 1923\"\n"
|
||||
- value: "# Historical specimen with uncertain date\nacquisition_method: FIELD_COLLECTION\n\
|
||||
temporal_extent:\n begin_of_the_begin: \"1600-01-01\"\n end_of_the_end:\
|
||||
\ \"1662-12-31\"\n notes: \"Pre-1662 (before Great Fire of London)\"\nacquisition_date_text:\
|
||||
\ \"pre-1662\"\n"
|
||||
|
|
|
|||
|
|
@ -3,18 +3,13 @@ name: AcquisitionBudget
|
|||
title: AcquisitionBudget
|
||||
description: >-
|
||||
Budget allocated for acquisitions.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_amount
|
||||
|
||||
- linkml:types
|
||||
classes:
|
||||
AcquisitionBudget:
|
||||
class_uri: schema:MonetaryAmount
|
||||
|
|
@ -22,8 +17,5 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
custodian_types: '["*"]'
|
||||
slots:
|
||||
- has_or_had_amount
|
||||
|
|
|
|||
|
|
@ -9,14 +9,14 @@ prefixes:
|
|||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_origin
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
- ../slots/has_or_had_method
|
||||
- ./AcquisitionMethod
|
||||
- ../slots/has_or_had_origin
|
||||
- ../slots/has_or_had_provenance
|
||||
- ./Provenance
|
||||
- ../slots/temporal_extent
|
||||
- ./AcquisitionMethod
|
||||
- ./Entity
|
||||
- ./Provenance
|
||||
- ./TimeSpan
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AcquisitionEvent:
|
||||
|
|
@ -34,4 +34,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ prefixes:
|
|||
xsd: http://www.w3.org/2001/XMLSchema#
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
default_prefix: hc
|
||||
classes:
|
||||
AcquisitionMethod:
|
||||
|
|
@ -28,4 +28,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -15,24 +15,27 @@ default_prefix: hc
|
|||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ./TimeSpan
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_status
|
||||
- ../slots/is_or_was_succeeded_by
|
||||
- ../slots/note
|
||||
- ../slots/preceding_activity
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/temporal_extent
|
||||
- ./ActivityType
|
||||
- ./ActivityTypes
|
||||
- ../slots/has_activity_identifier
|
||||
- ../slots/has_or_had_identifier
|
||||
- ./Identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ./Label
|
||||
- ../slots/has_or_had_description
|
||||
- ./Description
|
||||
- ../slots/has_activity_status
|
||||
- ../slots/note
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./Identifier
|
||||
- ./Label
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./TimeSpan
|
||||
- ./Activity
|
||||
classes:
|
||||
Activity:
|
||||
class_uri: prov:Activity
|
||||
|
|
@ -50,7 +53,6 @@ classes:
|
|||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
- has_or_had_description
|
||||
- has_or_had_activity_type
|
||||
- temporal_extent
|
||||
- is_or_was_succeeded_by
|
||||
- preceding_activity
|
||||
|
|
@ -60,108 +62,62 @@ classes:
|
|||
- has_or_had_score
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
description: 'Unique identifier for this activity instance.
|
||||
|
||||
MIGRATED from has_activity_identifier per Rule 53.
|
||||
|
||||
Format: URI following NDE Heritage Custodian ontology conventions.
|
||||
|
||||
Pattern: `https://nde.nl/ontology/hc/activity/{custodian-slug}-{type}-{year}-{sequence}`
|
||||
|
||||
'
|
||||
range: Identifier
|
||||
range: uriorcurie
|
||||
required: true
|
||||
identifier: true
|
||||
inlined: true
|
||||
examples:
|
||||
- value:
|
||||
identifier_value: https://nde.nl/ontology/hc/activity/rijksmuseum-inventory-2025-001
|
||||
description: 2025 inventory at Rijksmuseum
|
||||
- value:
|
||||
identifier_value: https://nde.nl/ontology/hc/activity/nationaal-archief-digitization-voc-2024
|
||||
description: VOC digitization project at Nationaal Archief
|
||||
has_or_had_label:
|
||||
range: string
|
||||
required: true
|
||||
description: Human-readable name for this activity.
|
||||
examples:
|
||||
- value: 2025 Annual Collection Inventory
|
||||
description: Recurring annual inventory
|
||||
- value: VOC Archives Digitization Project Phase 2
|
||||
description: Multi-year digitization project
|
||||
has_or_had_description:
|
||||
range: string
|
||||
required: false
|
||||
description: Detailed description of the activity scope and objectives.
|
||||
examples:
|
||||
- value: "Annual physical inventory of the Dutch Masters collection, \ncovering approximately 450 paintings. Spot-check methodology \nwith 20% sample verified against catalog records.\n"
|
||||
description: Inventory activity description
|
||||
has_or_had_activity_type:
|
||||
range: ActivityType
|
||||
required: true
|
||||
multivalued: true
|
||||
description: 'The type classification(s) for this activity.
|
||||
|
||||
Values are ActivityType subclasses from ActivityTypes.yaml.
|
||||
|
||||
'
|
||||
examples:
|
||||
- value: CurationActivityType
|
||||
description: Curation activity
|
||||
- value: '[DigitizationActivityType, ResearchActivityType]'
|
||||
description: Combined digitization and research project
|
||||
temporal_extent:
|
||||
range: TimeSpan
|
||||
required: false
|
||||
inlined: true
|
||||
description: 'Temporal extent of this activity.
|
||||
|
||||
Replaces has_timespan, start_date, end_date.
|
||||
|
||||
Uses CIDOC-CRM four-point temporal model for fuzzy bounds.
|
||||
|
||||
'
|
||||
examples:
|
||||
- value:
|
||||
begin_of_the_begin: '2025-01-15'
|
||||
end_of_the_end: '2025-03-31'
|
||||
description: Q1 2025 activity period
|
||||
is_or_was_succeeded_by:
|
||||
range: Activity
|
||||
range: string
|
||||
multivalued: true
|
||||
inlined: false
|
||||
description: Activity/activities that follow this one.
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/activity/conservation-treatment-2025
|
||||
description: Conservation follows condition survey
|
||||
preceding_activity:
|
||||
range: Activity
|
||||
range: string
|
||||
inlined: false
|
||||
description: Activity that preceded this one.
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/activity/condition-survey-2024
|
||||
description: Condition survey informed this conservation treatment
|
||||
has_or_had_status:
|
||||
range: string
|
||||
required: false
|
||||
description: Current status of the activity.
|
||||
examples:
|
||||
- value: IN_PROGRESS
|
||||
description: Activity currently underway
|
||||
- value: COMPLETED
|
||||
description: Activity finished
|
||||
- value: PLANNED
|
||||
description: Activity scheduled for future
|
||||
note:
|
||||
range: string
|
||||
multivalued: true
|
||||
description: Additional notes about the activity.
|
||||
annotations:
|
||||
specificity_score: '0.50'
|
||||
specificity_rationale: Moderately specific - Activity is a core domain concept but broadly applicable across all heritage custodian types.
|
||||
has_or_had_score: null
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
comments:
|
||||
- Base class for all heritage domain activities
|
||||
- Extended by CurationActivity, ConservationActivity, etc.
|
||||
|
|
@ -177,25 +133,18 @@ classes:
|
|||
has_or_had_identifier:
|
||||
identifier_value: https://nde.nl/ontology/hc/activity/rijksmuseum-inventory-2025-001
|
||||
has_or_had_label: 2025 Annual Collection Inventory - Dutch Masters
|
||||
has_or_had_activity_type:
|
||||
- CurationActivityType
|
||||
has_or_had_description: "Annual physical inventory of the Dutch Masters collection \n(Gallery of Honour and adjacent galleries). Spot-check methodology \nwith 20% sample verification against CMS records.\n"
|
||||
temporal_extent:
|
||||
begin_of_the_begin: '2025-01-15'
|
||||
end_of_the_end: '2025-03-31'
|
||||
has_or_had_status: IN_PROGRESS
|
||||
description: Inventory activity at Rijksmuseum
|
||||
- value:
|
||||
has_or_had_identifier:
|
||||
identifier_value: https://nde.nl/ontology/hc/activity/kb-digitization-medieval-2024
|
||||
has_or_had_label: Medieval Manuscripts Digitization Project
|
||||
has_or_had_activity_type:
|
||||
- DigitizationActivityType
|
||||
- ResearchActivityType
|
||||
has_or_had_description: "High-resolution digitization of 342 medieval manuscripts with \nHTR processing and metadata enhancement. IIIF-compliant output.\n"
|
||||
temporal_extent:
|
||||
begin_of_the_begin: '2024-03-01'
|
||||
end_of_the_end: '2025-12-31'
|
||||
has_or_had_status: IN_PROGRESS
|
||||
preceding_activity: https://nde.nl/ontology/hc/activity/kb-condition-survey-2023
|
||||
description: Digitization and research project at KB
|
||||
preceding_activity: https://nde.nl/ontology/hc/activity/kb-condition-survey-2023
|
||||
|
|
@ -14,17 +14,17 @@ default_prefix: hc
|
|||
imports:
|
||||
- linkml:types
|
||||
- ../slots/created
|
||||
- ../slots/modified
|
||||
- ../slots/has_or_had_identifier
|
||||
- ./WikiDataIdentifier
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/modified
|
||||
- ../slots/specificity_annotation
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./WikiDataIdentifier
|
||||
classes:
|
||||
ActivityType:
|
||||
class_uri: skos:Concept
|
||||
|
|
@ -54,39 +54,23 @@ classes:
|
|||
required: true
|
||||
identifier: true
|
||||
multivalued: true
|
||||
description: 'Unique identifier(s) for this activity type.
|
||||
|
||||
MIGRATED from type_id per Rule 56 (2026-01-16).
|
||||
|
||||
Also includes Wikidata entity references (previously wikidata_entity).
|
||||
|
||||
'
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/activity-type/curation
|
||||
description: Internal type identifier for curation
|
||||
- value: wd:Q1348059
|
||||
description: Wikidata entity for curation
|
||||
has_or_had_label:
|
||||
range: string
|
||||
required: true
|
||||
multivalued: true
|
||||
description: 'Human-readable label for this activity type.
|
||||
|
||||
MIGRATED from type_label per slot_fixes.yaml (Rule 53).
|
||||
|
||||
'
|
||||
examples:
|
||||
- value:
|
||||
- Curation@en
|
||||
- curatie@nl
|
||||
- Kuration@de
|
||||
description: Multilingual labels for curation type
|
||||
has_or_had_description:
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: Activities related to the ongoing management and care of collections
|
||||
description: Description of curation activity type
|
||||
created:
|
||||
range: datetime
|
||||
modified:
|
||||
|
|
@ -96,7 +80,6 @@ classes:
|
|||
specificity_rationale: Moderately specific - activity types are domain-relevant but not specific to any single conversation template.
|
||||
has_or_had_score: null
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
comments:
|
||||
- Abstract base class - use specific subclasses (CurationType, ConservationType, etc.)
|
||||
- Represents ACTIVITY TYPES, not activity instances
|
||||
|
|
@ -116,5 +99,4 @@ classes:
|
|||
has_or_had_label:
|
||||
- Curation@en
|
||||
- curatie@nl
|
||||
has_or_had_description: Activities related to ongoing collection management
|
||||
description: Curation activity type with multilingual labels and identifiers
|
||||
has_or_had_description: Activities related to ongoing collection management
|
||||
|
|
@ -1,26 +1,23 @@
|
|||
id: https://nde.nl/ontology/hc/class/ActivityTypes
|
||||
name: ActivityTypes
|
||||
title: ActivityTypes
|
||||
description: >-
|
||||
Container for ActivityType instances.
|
||||
|
||||
description: Container for ActivityType instances.
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./ActivityType
|
||||
|
||||
- linkml:types
|
||||
- ./ActivityType
|
||||
classes:
|
||||
ActivityTypes:
|
||||
class_uri: hc:ActivityTypes
|
||||
description: Activity types container.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
specificity_rationale: Generic utility class created during migration
|
||||
custodian_types: '["*"]'
|
||||
tree_root: true
|
||||
broad_mappings:
|
||||
- crm:E7_Activity
|
||||
- schema:Action
|
||||
|
|
|
|||
|
|
@ -22,4 +22,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -1,12 +1,6 @@
|
|||
# Address - Generic postal/physical address class
|
||||
# Aligned with vCard, Schema.org, LOCN, GLEIF ontologies
|
||||
# Created: 2026-01-12
|
||||
# Rule 38 compliant: All slots imported from modules/slots/
|
||||
|
||||
id: https://nde.nl/ontology/hc/class/Address
|
||||
name: address_class
|
||||
title: Address Class
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
|
|
@ -17,63 +11,44 @@ prefixes:
|
|||
org: http://www.w3.org/ns/org#
|
||||
dcterms: http://purl.org/dc/terms/
|
||||
skos: http://www.w3.org/2004/02/skos/core#
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
# REMOVED 2026-01-22: ../slots/address_formatted - migrated to has_or_had_label + Label (Rule 53, Feedback F1)
|
||||
# REMOVED: ../slots/address_type - migrated to has_or_had_type (2026-01-17, Rule 53/56)
|
||||
# Address component slots
|
||||
- ../slots/has_or_had_section
|
||||
# REMOVED: ../slots/street_name - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56)
|
||||
# REMOVED: ../slots/street_address - migrated to has_or_had_address + Address class (2026-01-17, Rule 53/56)
|
||||
# street_address was a redundant string slot; full Address class captures street data via components
|
||||
- ../slots/postal_code
|
||||
|
||||
- ../slots/locality
|
||||
# REMOVED: ../slots/city - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
|
||||
- ../slots/is_or_was_located_in
|
||||
- ../slots/region
|
||||
- ../slots/country_name
|
||||
# Shared slots (replacing address_formatted, address_type)
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_type
|
||||
# Geographic reference slots
|
||||
- ../slots/latitude
|
||||
- ../slots/longitude
|
||||
- ../slots/geonames_id
|
||||
# Provenance slots
|
||||
- ../slots/is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
|
||||
- ../slots/is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
|
||||
# Related classes
|
||||
- ./Country
|
||||
- ./Subregion
|
||||
- ./Settlement
|
||||
- ./City # Added for is_or_was_located_in range (2026-01-18, Rule 53)
|
||||
- ./CustodianObservation
|
||||
- ./ReconstructionActivity
|
||||
- ./AddressType
|
||||
|
||||
- linkml:types
|
||||
- ../slots/country_name
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_section
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/is_or_was_derived_from # was: was_derived_from
|
||||
- ../slots/is_or_was_generated_by # was: was_generated_by
|
||||
- ../slots/is_or_was_located_in
|
||||
- ../slots/latitude
|
||||
- ../slots/locality
|
||||
- ../slots/longitude
|
||||
- ../slots/postal_code
|
||||
- ../slots/region
|
||||
- ./AddressType
|
||||
- ./City # Added for is_or_was_located_in range (2026-01-18, Rule 53)
|
||||
- ./Country
|
||||
- ./CustodianObservation
|
||||
- ./ReconstructionActivity
|
||||
- ./Settlement
|
||||
- ./Subregion
|
||||
- ./HouseNumber
|
||||
- ./Label
|
||||
default_range: string
|
||||
|
||||
classes:
|
||||
Address:
|
||||
class_uri: vcard:Address
|
||||
description: |
|
||||
Physical or postal address for heritage custodians and related entities.
|
||||
|
||||
**ONTOLOGY ALIGNMENT**:
|
||||
|
||||
This class aligns with multiple established address ontologies:
|
||||
|
||||
| Ontology | Class | Notes |
|
||||
|----------|-------|-------|
|
||||
| **vCard** | `vcard:Address` | RFC6350 ADR property components |
|
||||
| **Schema.org** | `schema:PostalAddress` | Web semantics |
|
||||
| **LOCN** | `locn:Address` | EU Location Core Vocabulary |
|
||||
| **GLEIF** | `gleif_base:PhysicalAddress` | Legal entity addresses |
|
||||
|
||||
**COMPONENT STRUCTURE**:
|
||||
|
||||
An address consists of hierarchical components:
|
||||
```
|
||||
Address
|
||||
|
|
@ -85,12 +60,9 @@ classes:
|
|||
├── country_name (e.g., "Netherlands", "NL")
|
||||
└── has_or_had_label (formatted address as Label)
|
||||
```
|
||||
|
||||
NOTE: street_name slot migrated to has_or_had_label + Label (2026-01-17, Rule 53/56)
|
||||
NOTE: street_address slot removed - was redundant string; use house_number + has_or_had_label (2026-01-17, Rule 53/56)
|
||||
|
||||
**ADDRESS TYPES FOR HERITAGE CUSTODIANS**:
|
||||
|
||||
| Type | Use Case |
|
||||
|------|----------|
|
||||
| `HEADQUARTERS` | Main organizational address |
|
||||
|
|
@ -99,15 +71,12 @@ classes:
|
|||
| `MAILING` | Correspondence/postal address |
|
||||
| `STORAGE` | Depot, warehouse, off-site storage |
|
||||
| `BRANCH` | Branch office location |
|
||||
|
||||
**USAGE EXAMPLES**:
|
||||
|
||||
```yaml
|
||||
# Simple address with formatted string
|
||||
has_or_had_address:
|
||||
- address_formatted: "Museumstraat 1, 1071 XX Amsterdam, Netherlands"
|
||||
address_type: HEADQUARTERS
|
||||
|
||||
# Structured address with components
|
||||
has_or_had_address:
|
||||
- has_or_had_label:
|
||||
|
|
@ -124,21 +93,16 @@ classes:
|
|||
longitude: 4.8852
|
||||
geonames_id: 2759794
|
||||
```
|
||||
|
||||
**RELATIONSHIP TO OTHER CLASSES**:
|
||||
|
||||
- `AuxiliaryPlace`: Uses Address for structured address data
|
||||
- `CustodianPlace`: May reference Address for place location
|
||||
- `ContactPoint`: Uses Address for contact location
|
||||
- `Settlement`/`Subregion`/`Country`: Hierarchical geographic entities
|
||||
|
||||
**PROVENANCE**:
|
||||
|
||||
Address data may be extracted from various sources (websites, Google Maps,
|
||||
registries). Track provenance with:
|
||||
- `was_derived_from`: Link to source observation
|
||||
- `was_generated_by`: Link to extraction activity
|
||||
|
||||
- `is_or_was_generated_by`: Link to extraction activity
|
||||
exact_mappings:
|
||||
- vcard:Address
|
||||
close_mappings:
|
||||
|
|
@ -148,7 +112,6 @@ classes:
|
|||
related_mappings:
|
||||
- org:siteAddress
|
||||
- schema:address
|
||||
|
||||
slots:
|
||||
# Street-level components
|
||||
- has_or_had_section
|
||||
|
|
@ -169,7 +132,6 @@ classes:
|
|||
# Geographic coordinates (for geocoded addresses)
|
||||
- latitude
|
||||
- longitude
|
||||
- geonames_id
|
||||
# Provenance
|
||||
- is_or_was_derived_from # was: was_derived_from - migrated per Rule 53
|
||||
- is_or_was_generated_by # was: was_generated_by - migrated per Rule 53
|
||||
|
|
@ -177,15 +139,11 @@ classes:
|
|||
has_or_had_section:
|
||||
range: HouseNumber
|
||||
required: false
|
||||
description: House/building number within street.
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_value: "1"
|
||||
description: Rijksmuseum
|
||||
- value:
|
||||
has_or_had_value: "221B"
|
||||
description: Baker Street notation
|
||||
|
||||
# REMOVED: street_name slot_usage - migrated to has_or_had_label + Label (2026-01-17, Rule 53/56)
|
||||
# Street names should now use Label class with language tagging via has_or_had_label
|
||||
# REMOVED: street_address slot_usage - redundant string slot removed (2026-01-17, Rule 53/56)
|
||||
|
|
@ -193,138 +151,88 @@ classes:
|
|||
postal_code:
|
||||
range: string
|
||||
required: false
|
||||
description: Postal/ZIP code
|
||||
examples:
|
||||
- value: "1071 XX"
|
||||
description: Dutch postal code format
|
||||
locality:
|
||||
range: string
|
||||
required: false
|
||||
description: City, town, or village name
|
||||
examples:
|
||||
- value: "Amsterdam"
|
||||
description: City name
|
||||
# REMOVED: city slot_usage - migrated to is_or_was_located_in + City (2026-01-18, Rule 53)
|
||||
# city:
|
||||
# range: string
|
||||
# required: false
|
||||
# description: Alternative slot for locality (schema:addressLocality)
|
||||
is_or_was_located_in:
|
||||
range: City
|
||||
range: string
|
||||
required: false
|
||||
inlined: true
|
||||
description: |
|
||||
The city where this address is located, as a structured City entity.
|
||||
MIGRATED from city (string) slot (2026-01-18, Rule 53).
|
||||
Provides GeoNames ID, coordinates, and subregion linkage.
|
||||
examples:
|
||||
- value:
|
||||
settlement_name: "Amsterdam"
|
||||
geonames_id: 2759794
|
||||
country: "NL"
|
||||
description: Address located in Amsterdam
|
||||
region:
|
||||
range: string
|
||||
required: false
|
||||
description: State, province, or region
|
||||
examples:
|
||||
- value: "Noord-Holland"
|
||||
description: Dutch province
|
||||
- value: "NL-NH"
|
||||
description: ISO 3166-2 code
|
||||
country_name:
|
||||
range: string
|
||||
required: false
|
||||
description: Country name or ISO 3166-1 code
|
||||
examples:
|
||||
- value: "Netherlands"
|
||||
description: Full name
|
||||
- value: "NL"
|
||||
description: ISO 3166-1 alpha-2 code
|
||||
# REMOVED 2026-01-22: address_formatted - migrated to has_or_had_label + Label (Rule 53, Feedback F1)
|
||||
# Formatted address strings now use has_or_had_label slot_usage below
|
||||
# REMOVED: address_type slot_usage - migrated to has_or_had_type (2026-01-17, Rule 53/56)
|
||||
has_or_had_label: # was: address_formatted + street_name - migrated per Rule 53 (2026-01-17, 2026-01-22)
|
||||
range: Label
|
||||
range: string
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
required: false
|
||||
description: |
|
||||
Labels for this address, including:
|
||||
1. **Street name** as Label with language tag
|
||||
2. **Formatted address** as Label with language tag
|
||||
|
||||
MIGRATED from:
|
||||
- address_formatted (2026-01-22, Feedback F1) - formatted address strings
|
||||
- street_name (2026-01-17, Rule 53/56) - street name component
|
||||
|
||||
Use Label class with language_code for multilingual support.
|
||||
examples:
|
||||
- value:
|
||||
- has_or_had_label: "Museumstraat"
|
||||
language: "nl"
|
||||
- has_or_had_label: "Museumstraat 1, 1071 XX Amsterdam, Netherlands"
|
||||
language: "nl"
|
||||
description: Street name and formatted address as labels
|
||||
has_or_had_type: # was: address_type - migrated per Rule 53/56 (2026-01-17)
|
||||
range: AddressType
|
||||
required: false
|
||||
multivalued: false
|
||||
description: |
|
||||
Classification of the address by purpose or type.
|
||||
MIGRATED from address_type (2026-01-13).
|
||||
|
||||
Uses AddressType class hierarchy for rich type semantics.
|
||||
Common types: HeadquartersAddress, LegalAddress, VisitingAddress,
|
||||
MailingAddress, StorageAddress, BranchAddress.
|
||||
examples:
|
||||
- value: HeadquartersAddress
|
||||
description: Main organizational headquarters
|
||||
latitude:
|
||||
range: float
|
||||
required: false
|
||||
description: WGS84 latitude coordinate
|
||||
examples:
|
||||
- value: 52.3600
|
||||
description: Amsterdam latitude
|
||||
longitude:
|
||||
range: float
|
||||
required: false
|
||||
description: WGS84 longitude coordinate
|
||||
examples:
|
||||
- value: 4.8852
|
||||
description: Amsterdam longitude
|
||||
geonames_id:
|
||||
range: integer
|
||||
required: false
|
||||
description: GeoNames ID for geocoded locality
|
||||
examples:
|
||||
- value: 2759794
|
||||
description: Amsterdam GeoNames ID
|
||||
is_or_was_derived_from: # was: was_derived_from - migrated per Rule 53
|
||||
range: CustodianObservation
|
||||
multivalued: true
|
||||
required: false
|
||||
description: Source observation from which address was extracted
|
||||
is_or_was_generated_by: # was: was_generated_by - migrated per Rule 53
|
||||
range: ReconstructionActivity
|
||||
required: false
|
||||
description: Activity that generated this address record
|
||||
|
||||
comments:
|
||||
- vCard Address is the primary ontology class (RFC6350 standard)
|
||||
- Use structured components when available, address_formatted as fallback
|
||||
- Multiple addresses supported via has_or_had_address slot (multivalued, Rule 39 compliant)
|
||||
- address_type distinguishes headquarters, legal, visiting, mailing, storage
|
||||
- Coordinates (lat/lon) optional but recommended for visualization/mapping
|
||||
|
||||
see_also:
|
||||
- https://www.w3.org/TR/vcard-rdf/#d4e936
|
||||
- https://schema.org/PostalAddress
|
||||
- https://www.w3.org/ns/locn#Address
|
||||
- https://www.gleif.org/ontology/Base/PhysicalAddress
|
||||
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_section:
|
||||
|
|
@ -335,28 +243,19 @@ classes:
|
|||
- has_or_had_label: "Museumstraat 1, 1071 XX Amsterdam, Netherlands"
|
||||
language: "nl"
|
||||
# REMOVED: street_address - migrated to house_number + has_or_had_label (2026-01-17, Rule 53/56)
|
||||
|
||||
postal_code: "1071 XX"
|
||||
locality: "Amsterdam"
|
||||
region: "Noord-Holland"
|
||||
country_name: "NL"
|
||||
address_type: "HEADQUARTERS"
|
||||
latitude: 52.3600
|
||||
longitude: 4.8852
|
||||
geonames_id: 2759794
|
||||
description: Rijksmuseum headquarters - fully structured address (street_name and street_address migrated to has_or_had_label)
|
||||
|
||||
- value:
|
||||
has_or_had_section:
|
||||
- has_or_had_value: "40"
|
||||
# REMOVED: street_address - migrated to house_number + has_or_had_label (2026-01-17, Rule 53/56)
|
||||
|
||||
postal_code: "2011 RX"
|
||||
locality: "Haarlem"
|
||||
country_name: "NL"
|
||||
address_type: "HEADQUARTERS"
|
||||
description: Noord-Hollands Archief address - simplified structure
|
||||
|
||||
- value:
|
||||
has_or_had_label:
|
||||
- has_or_had_label: "1600 Pennsylvania Avenue NW, Washington, DC 20500, USA"
|
||||
|
|
@ -364,9 +263,6 @@ classes:
|
|||
locality: "Washington"
|
||||
region: "DC"
|
||||
country_name: "US"
|
||||
address_type: "LEGAL"
|
||||
description: US address with formatted string primary
|
||||
|
||||
- value:
|
||||
has_or_had_label:
|
||||
- has_or_had_label: "Euterpelaan"
|
||||
|
|
@ -379,9 +275,6 @@ classes:
|
|||
locality: "Amersfoort"
|
||||
region: "Utrecht"
|
||||
country_name: "NL"
|
||||
address_type: "STORAGE"
|
||||
description: Off-site storage depot address (street_name and street_address migrated to has_or_had_label)
|
||||
|
||||
annotations:
|
||||
specificity_score: 0.25
|
||||
specificity_rationale: "Address is broadly applicable to all heritage custodian types and many other entities. Universal across domains."
|
||||
|
|
|
|||
|
|
@ -1,227 +1,135 @@
|
|||
# AddressComponent - Generic address component class
|
||||
# Source-agnostic representation of individual address parts
|
||||
# Refactored: 2026-01-12 - Removed Google Maps-specific references per user guidance
|
||||
# Rule 38 compliant: All slots imported from modules/slots/
|
||||
|
||||
id: https://nde.nl/ontology/hc/classes/AddressComponent
|
||||
name: AddressComponent
|
||||
title: AddressComponent
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
vcard: http://www.w3.org/2006/vcard/ns#
|
||||
locn: http://www.w3.org/ns/locn#
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
# Centralized slots (Rule 38 compliant)
|
||||
- ../slots/long_name
|
||||
- ../slots/short_name
|
||||
# REMOVED 2026-01-22: ../slots/component_type - migrated to has_or_had_type + ComponentType (Rule 53)
|
||||
- ../slots/has_or_had_type
|
||||
- ./ComponentType
|
||||
- ./ComponentTypes
|
||||
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/long_name
|
||||
- ../slots/short_name
|
||||
- ./ComponentType
|
||||
- ./ComponentTypes
|
||||
default_range: string
|
||||
|
||||
classes:
|
||||
AddressComponent:
|
||||
class_uri: hc:AddressComponent
|
||||
description: |
|
||||
A single component of a structured address.
|
||||
|
||||
**PURPOSE**:
|
||||
|
||||
AddressComponent represents one discrete element of an address, such as
|
||||
the street number, street name, city, region, or country. This enables:
|
||||
- Parsing addresses from various sources into standardized components
|
||||
- Normalizing address data from different formats/APIs
|
||||
- Supporting multilingual address representations (long_name vs short_name)
|
||||
|
||||
**COMPONENT STRUCTURE**:
|
||||
|
||||
Each AddressComponent has:
|
||||
- `long_name`: Full form of the value (e.g., "Netherlands", "Noord-Holland")
|
||||
- `short_name`: Abbreviated form (e.g., "NL", "NH") - may equal long_name
|
||||
- `has_or_had_type`: Semantic type(s) via ComponentType (e.g., Country, Locality)
|
||||
|
||||
**STANDARD COMPONENT TYPES**:
|
||||
|
||||
| Type | Description | Example long_name | Example short_name |
|
||||
|------|-------------|-------------------|-------------------|
|
||||
| `street_number` | House/building number | "1", "221B" | same |
|
||||
| `route` | Street/road name | "Museumstraat" | same |
|
||||
| `locality` | City/town/village | "Amsterdam" | same |
|
||||
| `postal_code` | ZIP/postal code | "1071 XX" | same |
|
||||
| `subregion` | County/district | "Amsterdam" | same |
|
||||
| `region` | State/province | "Noord-Holland" | "NH" |
|
||||
| `country` | Country | "Netherlands" | "NL" |
|
||||
| `premise` | Building/complex name | "Rijksmuseum" | same |
|
||||
| `subpremise` | Unit/floor/suite | "Floor 3" | "3" |
|
||||
|
||||
**RELATIONSHIP TO Address CLASS**:
|
||||
|
||||
AddressComponent is used for:
|
||||
1. **Parsing workflows**: Breaking down raw address strings into components
|
||||
2. **Normalization**: Standardizing addresses from different sources
|
||||
3. **Intermediate representation**: Before constructing a full Address object
|
||||
|
||||
The Address class provides the final, ontology-aligned representation with
|
||||
dedicated slots (street_name, locality, region, country_name, etc.).
|
||||
|
||||
```
|
||||
Raw Address Data (any source)
|
||||
│
|
||||
└── parse → AddressComponent[] # Intermediate representation
|
||||
│
|
||||
└── normalize → Address # vCard/LOCN aligned
|
||||
```
|
||||
|
||||
**USAGE EXAMPLES**:
|
||||
|
||||
```yaml
|
||||
# Street number component (MIGRATED 2026-01-22: Rule 53)
|
||||
- long_name: "1"
|
||||
short_name: "1"
|
||||
has_or_had_type: [StreetNumber]
|
||||
|
||||
# Province with abbreviation
|
||||
- long_name: "Noord-Holland"
|
||||
short_name: "NH"
|
||||
has_or_had_type: [Region]
|
||||
|
||||
# Country with ISO code
|
||||
- long_name: "Netherlands"
|
||||
short_name: "NL"
|
||||
has_or_had_type: [Country]
|
||||
```
|
||||
|
||||
**SOURCE-AGNOSTIC DESIGN**:
|
||||
|
||||
This class is designed to work with addresses from ANY source:
|
||||
- Website scraping
|
||||
- Registry data (ISIL, KvK, etc.)
|
||||
- API responses (when normalized)
|
||||
- Manual data entry
|
||||
- OCR/document extraction
|
||||
|
||||
API-specific raw data formats are handled by Endpoint classes.
|
||||
|
||||
description: "A single component of a structured address.\n\n**PURPOSE**:\n\n\
|
||||
AddressComponent represents one discrete element of an address, such as \nthe\
|
||||
\ street number, street name, city, region, or country. This enables:\n- Parsing\
|
||||
\ addresses from various sources into standardized components\n- Normalizing\
|
||||
\ address data from different formats/APIs\n- Supporting multilingual address\
|
||||
\ representations (long_name vs short_name)\n\n**COMPONENT STRUCTURE**:\n\n\
|
||||
Each AddressComponent has:\n- `long_name`: Full form of the value (e.g., \"\
|
||||
Netherlands\", \"Noord-Holland\")\n- `short_name`: Abbreviated form (e.g., \"\
|
||||
NL\", \"NH\") - may equal long_name\n- `has_or_had_type`: Semantic type(s) via\
|
||||
\ ComponentType (e.g., Country, Locality)\n\n**STANDARD COMPONENT TYPES**:\n\
|
||||
\n| Type | Description | Example long_name | Example short_name |\n|------|-------------|-------------------|-------------------|\n\
|
||||
| `street_number` | House/building number | \"1\", \"221B\" | same |\n| `route`\
|
||||
\ | Street/road name | \"Museumstraat\" | same |\n| `locality` | City/town/village\
|
||||
\ | \"Amsterdam\" | same |\n| `postal_code` | ZIP/postal code | \"1071 XX\"\
|
||||
\ | same |\n| `subregion` | County/district | \"Amsterdam\" | same |\n| `region`\
|
||||
\ | State/province | \"Noord-Holland\" | \"NH\" |\n| `country` | Country | \"\
|
||||
Netherlands\" | \"NL\" |\n| `premise` | Building/complex name | \"Rijksmuseum\"\
|
||||
\ | same |\n| `subpremise` | Unit/floor/suite | \"Floor 3\" | \"3\" |\n\n**RELATIONSHIP\
|
||||
\ TO Address CLASS**:\n\nAddressComponent is used for:\n1. **Parsing workflows**:\
|
||||
\ Breaking down raw address strings into components\n2. **Normalization**: Standardizing\
|
||||
\ addresses from different sources\n3. **Intermediate representation**: Before\
|
||||
\ constructing a full Address object\n\nThe Address class provides the final,\
|
||||
\ ontology-aligned representation with \ndedicated slots (street_name, locality,\
|
||||
\ region, country_name, etc.).\n\n```\nRaw Address Data (any source)\n │\n\
|
||||
\ └── parse → AddressComponent[] # Intermediate representation\n \
|
||||
\ │\n └── normalize → Address # vCard/LOCN aligned\n\
|
||||
```\n\n**USAGE EXAMPLES**:\n\n```yaml\n# Street number component (MIGRATED 2026-01-22:\
|
||||
\ Rule 53)\n- long_name: \"1\"\n short_name: \"1\"\n has_or_had_type: [StreetNumber]\n\
|
||||
\n# Province with abbreviation\n- long_name: \"Noord-Holland\"\n short_name:\
|
||||
\ \"NH\"\n has_or_had_type: [Region]\n\n# Country with ISO code\n- long_name:\
|
||||
\ \"Netherlands\"\n short_name: \"NL\"\n has_or_had_type: [Country]\n```\n\
|
||||
\n**SOURCE-AGNOSTIC DESIGN**:\n\nThis class is designed to work with addresses\
|
||||
\ from ANY source:\n- Website scraping\n- Registry data (ISIL, KvK, etc.)\n\
|
||||
- API responses (when normalized)\n- Manual data entry\n- OCR/document extraction\n\
|
||||
\nAPI-specific raw data formats are handled by Endpoint classes.\n"
|
||||
close_mappings:
|
||||
- locn:AddressRepresentation
|
||||
- locn:AddressRepresentation
|
||||
related_mappings:
|
||||
- schema:PostalAddress
|
||||
- vcard:Address
|
||||
|
||||
- schema:PostalAddress
|
||||
- vcard:Address
|
||||
slots:
|
||||
- long_name
|
||||
- short_name
|
||||
# REMOVED 2026-01-22: component_type - migrated to has_or_had_type + ComponentType (Rule 53)
|
||||
- has_or_had_type
|
||||
|
||||
attributes:
|
||||
types:
|
||||
range: string
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
description: Address component types (alias for component_type for backward compatibility with Google Maps API format)
|
||||
|
||||
- long_name
|
||||
- short_name
|
||||
- has_or_had_type
|
||||
slot_usage:
|
||||
long_name:
|
||||
range: string
|
||||
required: false
|
||||
description: Full form of the address component value
|
||||
examples:
|
||||
- value: "Netherlands"
|
||||
description: Country full name
|
||||
- value: "Noord-Holland"
|
||||
description: Province full name
|
||||
- value: "Museumstraat"
|
||||
description: Street name
|
||||
- value: Netherlands
|
||||
- value: Noord-Holland
|
||||
- value: Museumstraat
|
||||
short_name:
|
||||
range: string
|
||||
required: false
|
||||
description: Abbreviated or short form of the component value (may equal long_name)
|
||||
examples:
|
||||
- value: "NL"
|
||||
description: ISO 3166-1 alpha-2 country code
|
||||
- value: "NH"
|
||||
description: Province abbreviation
|
||||
- value: "Museumstraat"
|
||||
description: Same as long_name when no abbreviation exists
|
||||
# MIGRATED 2026-01-22: component_type → has_or_had_type + ComponentType (Rule 53)
|
||||
- value: NL
|
||||
- value: NH
|
||||
- value: Museumstraat
|
||||
has_or_had_type:
|
||||
description: |
|
||||
Semantic type(s) of this address component.
|
||||
MIGRATED from component_type per slot_fixes.yaml (Rule 53, 2026-01-22).
|
||||
|
||||
Uses ComponentType class hierarchy for structured classification.
|
||||
range: ComponentType
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
required: false
|
||||
examples:
|
||||
- value: StreetNumber
|
||||
description: House/building number
|
||||
- value: Locality
|
||||
description: City or town
|
||||
- value: Region
|
||||
description: State or province
|
||||
- value: Country
|
||||
description: Country
|
||||
|
||||
- value: StreetNumber
|
||||
- value: Locality
|
||||
- value: Region
|
||||
- value: Country
|
||||
comments:
|
||||
- Source-agnostic representation of address components
|
||||
- Use for parsing/normalization workflows before constructing Address objects
|
||||
- Component types follow common geographic hierarchy conventions
|
||||
- Multiple types allowed for components that serve multiple roles
|
||||
|
||||
- Source-agnostic representation of address components
|
||||
- Use for parsing/normalization workflows before constructing Address objects
|
||||
- Component types follow common geographic hierarchy conventions
|
||||
- Multiple types allowed for components that serve multiple roles
|
||||
see_also:
|
||||
- https://nde.nl/ontology/hc/classes/Address
|
||||
- https://www.w3.org/ns/locn#Address
|
||||
|
||||
- https://nde.nl/ontology/hc/classes/Address
|
||||
- https://www.w3.org/ns/locn#Address
|
||||
examples:
|
||||
# MIGRATED 2026-01-22: component_type → has_or_had_type + ComponentType (Rule 53)
|
||||
- value:
|
||||
long_name: "1"
|
||||
short_name: "1"
|
||||
has_or_had_type: [StreetNumber]
|
||||
description: Street number component
|
||||
|
||||
- value:
|
||||
long_name: "Museumstraat"
|
||||
short_name: "Museumstraat"
|
||||
has_or_had_type: [Route]
|
||||
description: Street name component
|
||||
|
||||
- value:
|
||||
long_name: "Amsterdam"
|
||||
short_name: "Amsterdam"
|
||||
has_or_had_type: [Locality]
|
||||
description: City component
|
||||
|
||||
- value:
|
||||
long_name: "Noord-Holland"
|
||||
short_name: "NH"
|
||||
has_or_had_type: [Region]
|
||||
description: Province component with abbreviation
|
||||
|
||||
- value:
|
||||
long_name: "Netherlands"
|
||||
short_name: "NL"
|
||||
has_or_had_type: [Country]
|
||||
description: Country component with ISO code
|
||||
|
||||
- value:
|
||||
long_name: "1071 XX"
|
||||
short_name: "1071 XX"
|
||||
has_or_had_type: [PostalCode]
|
||||
description: Dutch postal code component
|
||||
|
||||
- value:
|
||||
long_name: '1'
|
||||
short_name: '1'
|
||||
has_or_had_type:
|
||||
- StreetNumber
|
||||
- value:
|
||||
long_name: Museumstraat
|
||||
short_name: Museumstraat
|
||||
has_or_had_type:
|
||||
- Route
|
||||
- value:
|
||||
long_name: Amsterdam
|
||||
short_name: Amsterdam
|
||||
has_or_had_type:
|
||||
- Locality
|
||||
- value:
|
||||
long_name: Noord-Holland
|
||||
short_name: NH
|
||||
has_or_had_type:
|
||||
- Region
|
||||
- value:
|
||||
long_name: Netherlands
|
||||
short_name: NL
|
||||
has_or_had_type:
|
||||
- Country
|
||||
- value:
|
||||
long_name: 1071 XX
|
||||
short_name: 1071 XX
|
||||
has_or_had_type:
|
||||
- PostalCode
|
||||
annotations:
|
||||
specificity_score: 0.35
|
||||
specificity_rationale: "Generic address parsing component. Broadly applicable across all address sources and custodian types."
|
||||
specificity_rationale: Generic address parsing component. Broadly applicable
|
||||
across all address sources and custodian types.
|
||||
custodian_types: '["*"]'
|
||||
custodian_types_rationale: "Any custodian with address data may use address components during parsing/normalization."
|
||||
custodian_types_rationale: Any custodian with address data may use address components
|
||||
during parsing/normalization.
|
||||
|
|
|
|||
|
|
@ -13,15 +13,16 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_code
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_hypernym
|
||||
- ../slots/has_or_had_hyponym
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/is_or_was_equivalent_to
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./WikiDataIdentifier
|
||||
- ./AddressType
|
||||
classes:
|
||||
AddressType:
|
||||
class_uri: skos:Concept
|
||||
|
|
@ -52,9 +53,7 @@ classes:
|
|||
pattern: ^https://nde\.nl/ontology/hc/address-type/[a-z0-9-]+$
|
||||
examples:
|
||||
- value: https://nde.nl/ontology/hc/address-type/headquarters
|
||||
description: Main organizational headquarters address type
|
||||
- value: https://nde.nl/ontology/hc/address-type/legal
|
||||
description: Registered legal address type
|
||||
has_or_had_code:
|
||||
range: string
|
||||
required: true
|
||||
|
|
@ -86,39 +85,28 @@ classes:
|
|||
- value: Main organizational address where primary operations occur.
|
||||
has_or_had_hypernym:
|
||||
range: AddressType
|
||||
description: Parent address type in the classification hierarchy.
|
||||
has_or_had_hyponym:
|
||||
range: AddressType
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
description: Child address types in the classification hierarchy.
|
||||
is_or_was_related_to:
|
||||
range: AddressType
|
||||
multivalued: true
|
||||
inlined_as_list: true
|
||||
description: Non-hierarchical associations with other address types.
|
||||
is_or_was_equivalent_to:
|
||||
range: WikiDataIdentifier
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
description: 'Wikidata equivalence for this address type concept.
|
||||
|
||||
MIGRATED 2026-01-15: Replaces wikidata_id slot per Rule 53.
|
||||
|
||||
'
|
||||
examples:
|
||||
- value:
|
||||
- qid: Q1234567
|
||||
label: Headquarters address
|
||||
description: Wikidata equivalence for headquarters address type
|
||||
annotations:
|
||||
specificity_score: '0.30'
|
||||
specificity_rationale: Address types are broadly applicable - all heritage custodians have addresses.
|
||||
has_or_had_score: null
|
||||
slot_migration: "2026-01-13: Migrated from address_type string slot to AddressType class\n- address_type (string) \u2192 has_or_had_type (AddressType)\n"
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
comments:
|
||||
- AddressType provides SKOS-based classification for Address instances
|
||||
- Supports hierarchical type relationships (has_or_had_hypernym/hyponym)
|
||||
|
|
@ -142,7 +130,6 @@ classes:
|
|||
are located.
|
||||
|
||||
'
|
||||
description: Headquarters address type definition
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/legal
|
||||
has_or_had_code: LEGAL
|
||||
|
|
@ -157,7 +144,6 @@ classes:
|
|||
For Dutch organizations, this is the address registered with KvK.
|
||||
|
||||
'
|
||||
description: Legal/statutory address type definition
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/visiting
|
||||
has_or_had_code: VISITING
|
||||
|
|
@ -169,7 +155,6 @@ classes:
|
|||
or libraries with public reading rooms.
|
||||
|
||||
'
|
||||
description: Public visiting address type definition
|
||||
- value:
|
||||
has_or_had_identifier: https://nde.nl/ontology/hc/address-type/storage
|
||||
has_or_had_code: STORAGE
|
||||
|
|
@ -183,5 +168,4 @@ classes:
|
|||
|
||||
'
|
||||
is_or_was_related_to:
|
||||
- https://nde.nl/ontology/hc/address-type/branch
|
||||
description: Storage/depot address type definition
|
||||
- https://nde.nl/ontology/hc/address-type/branch
|
||||
|
|
@ -15,7 +15,8 @@ classes:
|
|||
HeadquartersAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:HeadquartersAddress
|
||||
description: 'Main organizational headquarters address where primary operations occur.
|
||||
description: 'Main organizational headquarters address where primary operations
|
||||
occur.
|
||||
|
||||
This is typically where leadership and central administration are located.
|
||||
|
||||
|
|
@ -30,8 +31,7 @@ classes:
|
|||
annotations:
|
||||
short_code: HEADQUARTERS
|
||||
specificity_score: '0.25'
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: HEADQUARTERS
|
||||
|
|
@ -39,6 +39,8 @@ classes:
|
|||
- Headquarters@en
|
||||
- Hoofdkantoor@nl
|
||||
description: Rijksmuseum main headquarters
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
LegalAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:LegalAddress
|
||||
|
|
@ -70,6 +72,8 @@ classes:
|
|||
- Juridisch adres@nl
|
||||
- Statutaire zetel@nl
|
||||
description: Registered legal address from KvK
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
VisitingAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:VisitingAddress
|
||||
|
|
@ -93,6 +97,8 @@ classes:
|
|||
- Visiting Address@en
|
||||
- Bezoekadres@nl
|
||||
description: Public visitor entrance
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
MailingAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:MailingAddress
|
||||
|
|
@ -115,6 +121,8 @@ classes:
|
|||
- Postadres@nl
|
||||
- Correspondentieadres@nl
|
||||
description: Postal correspondence address
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
StorageAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:StorageAddress
|
||||
|
|
@ -142,6 +150,8 @@ classes:
|
|||
- Opslaglocatie@nl
|
||||
- Depot@nl
|
||||
description: Off-site collection depot
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
BranchAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:BranchAddress
|
||||
|
|
@ -166,6 +176,8 @@ classes:
|
|||
- Vestiging@nl
|
||||
- Filiaal@nl
|
||||
description: Branch office location
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
ReadingRoomAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:ReadingRoomAddress
|
||||
|
|
@ -190,6 +202,8 @@ classes:
|
|||
- Studiezaal@nl
|
||||
- Leeszaal@nl
|
||||
description: Archive/library reading room entrance
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
DeliveryAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:DeliveryAddress
|
||||
|
|
@ -212,6 +226,8 @@ classes:
|
|||
- Afleveradres@nl
|
||||
- Goederenontvangst@nl
|
||||
description: Delivery receiving dock
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
ConservationLabAddress:
|
||||
is_a: AddressType
|
||||
class_uri: hc:ConservationLabAddress
|
||||
|
|
@ -234,3 +250,5 @@ classes:
|
|||
- Restauratieatelier@nl
|
||||
- Conserveringslab@nl
|
||||
description: Restoration workshop facility
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
|
|
|
|||
|
|
@ -1,6 +1,24 @@
|
|||
id: https://nde.nl/ontology/hc/class/Administration
|
||||
name: Administration
|
||||
title: Administration
|
||||
description: An administrative unit or body.
|
||||
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/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
classes:
|
||||
Administration:
|
||||
class_uri: org:OrganizationalUnit
|
||||
close_mappings:
|
||||
- rico:CorporateBody
|
||||
- cpov:PublicOrganisation
|
||||
description: An administrative unit or body.
|
||||
slots:
|
||||
- has_or_had_label
|
||||
|
|
@ -10,4 +28,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_code
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
classes:
|
||||
AdministrativeLevel:
|
||||
class_uri: skos:Concept
|
||||
|
|
@ -46,13 +46,10 @@ classes:
|
|||
- has_or_had_description
|
||||
slot_usage:
|
||||
has_or_had_label:
|
||||
description: Name of the level (e.g., "National")
|
||||
required: true
|
||||
has_or_had_code:
|
||||
description: Code for the level (e.g., "NAT", "ISO-3166-2")
|
||||
required: false
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -3,31 +3,32 @@ name: administrative_office_class
|
|||
title: AdministrativeOffice Class
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./ReconstructedEntity
|
||||
- ./CustodianObservation
|
||||
- ./ReconstructionActivity
|
||||
- ./FunctionType
|
||||
- ../classes/Description
|
||||
- ../classes/Identifier
|
||||
- ../classes/Label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_function
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_staff
|
||||
- ../slots/is_leased
|
||||
- ../slots/is_or_was_derived_from
|
||||
- ../slots/is_or_was_generated_by
|
||||
- ../slots/has_or_had_access_restriction
|
||||
- ../slots/has_or_had_description
|
||||
- ../classes/Description
|
||||
- ../slots/has_or_had_label
|
||||
- ../classes/Label
|
||||
# has_or_had_admin_staff_count REMOVED - migrated to has_or_had_staff + Staff (Rule 53)
|
||||
- ../slots/has_or_had_staff
|
||||
- ./Staff
|
||||
- ../slots/has_or_had_function
|
||||
- ../slots/is_leased
|
||||
- ../slots/lease_expiry
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./CustodianObservation
|
||||
- ./FunctionType
|
||||
- ./ReconstructedEntity
|
||||
- ./ReconstructionActivity
|
||||
- ./SpecificityAnnotation
|
||||
- ./Staff
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../classes/Identifier
|
||||
- ./Description
|
||||
- ./Identifier
|
||||
- ./Label
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
|
|
@ -54,7 +55,6 @@ classes:
|
|||
- schema:Corporation
|
||||
- org:OrganizationalUnit
|
||||
slots:
|
||||
- has_or_had_access_restriction
|
||||
- has_or_had_description
|
||||
- has_or_had_identifier
|
||||
- has_or_had_label
|
||||
|
|
@ -69,49 +69,30 @@ classes:
|
|||
- is_or_was_generated_by
|
||||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
range: Identifier
|
||||
range: uriorcurie
|
||||
required: true
|
||||
description: Identifier for the administrative office.
|
||||
has_or_had_label:
|
||||
range: Label
|
||||
range: string
|
||||
required: true
|
||||
description: Name of the administrative office.
|
||||
has_or_had_description:
|
||||
range: Description
|
||||
description: Description of the administrative office.
|
||||
range: string
|
||||
has_or_had_function:
|
||||
range: FunctionType
|
||||
multivalued: true
|
||||
inlined: true
|
||||
inlined_as_list: true
|
||||
description: Organizational functions performed at this administrative office. Uses generic FunctionType class with function_category classification.
|
||||
examples:
|
||||
- value:
|
||||
function_category: ADMINISTRATIVE
|
||||
function_name: Finance and accounting
|
||||
description: Financial operations
|
||||
- value:
|
||||
function_category: ADMINISTRATIVE
|
||||
function_name: Human resources
|
||||
description: HR functions
|
||||
- value:
|
||||
function_category: SUPPORT
|
||||
function_name: Information technology
|
||||
description: IT support
|
||||
has_or_had_access_restriction:
|
||||
range: string
|
||||
required: true
|
||||
ifabsent: string(Staff access only)
|
||||
examples:
|
||||
- value: Staff badge required
|
||||
description: Badge access
|
||||
- value: Management access only
|
||||
description: Restricted access
|
||||
has_or_had_staff:
|
||||
description: |
|
||||
Staff associated with the administrative office.
|
||||
MIGRATED from has_or_had_admin_staff_count per Rule 53.
|
||||
Uses Staff class (with Quantity).
|
||||
range: Staff
|
||||
multivalued: true
|
||||
inlined: true
|
||||
|
|
@ -123,19 +104,15 @@ classes:
|
|||
has_or_had_label: "FTE"
|
||||
has_or_had_type:
|
||||
has_or_had_label: "Administrative Staff"
|
||||
description: Medium admin office
|
||||
is_leased:
|
||||
range: boolean
|
||||
examples:
|
||||
- value: true
|
||||
description: Leased office space
|
||||
- value: false
|
||||
description: Owned property
|
||||
lease_expiry:
|
||||
range: date
|
||||
examples:
|
||||
- value: '2028-12-31'
|
||||
description: Lease expires end of 2028
|
||||
is_or_was_derived_from:
|
||||
range: CustodianObservation
|
||||
multivalued: true
|
||||
|
|
@ -157,7 +134,6 @@ classes:
|
|||
- value:
|
||||
has_or_had_identifier:
|
||||
identifier_value: https://nde.nl/ontology/hc/aux/rijksmuseum-admin-zuidas
|
||||
identifier_scheme: URI
|
||||
has_or_had_label:
|
||||
has_or_had_label: Rijksmuseum Administrative Offices - Zuidas
|
||||
has_or_had_description:
|
||||
|
|
@ -173,7 +149,6 @@ classes:
|
|||
function_name: Information technology
|
||||
- function_category: ADMINISTRATIVE
|
||||
function_name: Legal affairs
|
||||
has_or_had_access_restriction: Staff badge required
|
||||
has_or_had_staff:
|
||||
- has_or_had_quantity:
|
||||
has_or_had_value: 45
|
||||
|
|
@ -183,11 +158,9 @@ classes:
|
|||
has_or_had_label: "Administrative Staff"
|
||||
is_leased: true
|
||||
lease_expiry: '2028-12-31'
|
||||
description: Museum administrative office in business district
|
||||
- value:
|
||||
has_or_had_identifier:
|
||||
identifier_value: https://nde.nl/ontology/hc/aux/kb-digitization-center
|
||||
identifier_scheme: URI
|
||||
has_or_had_label:
|
||||
has_or_had_label: Koninklijke Bibliotheek Digitization Support Center
|
||||
has_or_had_description:
|
||||
|
|
@ -201,7 +174,6 @@ classes:
|
|||
function_name: Quality control
|
||||
- function_category: SUPPORT
|
||||
function_name: Technical support
|
||||
has_or_had_access_restriction: Project staff only
|
||||
has_or_had_staff:
|
||||
- has_or_had_quantity:
|
||||
has_or_had_value: 12
|
||||
|
|
@ -211,9 +183,7 @@ classes:
|
|||
has_or_had_label: "Technical Staff"
|
||||
is_leased: false
|
||||
lease_expiry: null
|
||||
description: Library digitization support facility
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -12,9 +12,8 @@ prefixes:
|
|||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_name
|
||||
classes:
|
||||
AdministrativeUnit:
|
||||
class_uri: org:OrganizationalUnit
|
||||
|
|
@ -22,8 +21,7 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
custodian_types: '["*"]'
|
||||
|
||||
slots:
|
||||
- has_or_had_name
|
||||
|
|
|
|||
|
|
@ -3,18 +3,13 @@ name: AdmissionFee
|
|||
title: AdmissionFee
|
||||
description: >-
|
||||
Fee charged for admission.
|
||||
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
schema: http://schema.org/
|
||||
|
||||
default_prefix: hc
|
||||
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_amount
|
||||
|
||||
- linkml:types
|
||||
classes:
|
||||
AdmissionFee:
|
||||
class_uri: schema:PriceSpecification
|
||||
|
|
@ -22,8 +17,5 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: "Generic utility class created during migration"
|
||||
custodian_types: ["*"]
|
||||
custodian_types_rationale: "Universal utility concept"
|
||||
|
||||
custodian_types: '["*"]'
|
||||
slots:
|
||||
- has_or_had_amount
|
||||
|
|
|
|||
|
|
@ -12,21 +12,21 @@ imports:
|
|||
default_range: string
|
||||
classes:
|
||||
AdmissionInfo:
|
||||
description: "Structured admission price information from Google Maps including price value and notes about additional fees or conditions.\nOntology mapping rationale: - class_uri is schema:PriceSpecification because this represents\n structured price information for museum/institution admission\n- close_mappings includes schema:Offer for commercial offering context - related_mappings includes schema:MonetaryAmount for price values"
|
||||
description: "Structured admission price information from Google Maps including\
|
||||
\ price value and notes about additional fees or conditions.\nOntology mapping\
|
||||
\ rationale: - class_uri is schema:PriceSpecification because this represents\n\
|
||||
\ structured price information for museum/institution admission\n- close_mappings\
|
||||
\ includes schema:Offer for commercial offering context - related_mappings includes\
|
||||
\ schema:MonetaryAmount for price values"
|
||||
class_uri: schema:PriceSpecification
|
||||
close_mappings:
|
||||
- schema:Offer
|
||||
related_mappings:
|
||||
- schema:MonetaryAmount
|
||||
attributes:
|
||||
price:
|
||||
range: string
|
||||
description: "Admission price (e.g., \"\u20AC9.00\")"
|
||||
note:
|
||||
range: string
|
||||
description: Additional notes about admission (e.g., "Additional fees might apply")
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
slots:
|
||||
- price
|
||||
- note
|
||||
|
|
|
|||
|
|
@ -5,21 +5,22 @@ prefixes:
|
|||
linkml: https://w3id.org/linkml/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ./AdvertisingRadioArchiveRecordSetType
|
||||
- ./AdvertisingRadioArchiveRecordSetTypes
|
||||
- ./ArchiveOrganizationType
|
||||
- ./CollectionType
|
||||
- ./AdvertisingRadioArchiveRecordSetTypes
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./WikidataAlignment
|
||||
- ./WikiDataEntry
|
||||
- ./AdvertisingRadioArchiveRecordSetType
|
||||
- ./WikidataAlignment
|
||||
classes:
|
||||
AdvertisingRadioArchive:
|
||||
is_a: ArchiveOrganizationType
|
||||
|
|
@ -59,7 +60,6 @@ classes:
|
|||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
pattern: ^Q[0-9]+$
|
||||
description: Wikidata identifier for Advertising Radio Archive concept
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
|
|
@ -77,4 +77,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -6,16 +6,12 @@ prefixes:
|
|||
wd: http://www.wikidata.org/entity/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ./CollectionType
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./WikidataAlignment
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
classes:
|
||||
AdvertisingRadioArchiveRecordSetType:
|
||||
description: A rico:RecordSetType for classifying collections of advertising radio productions and commercials within heritage institutions.
|
||||
|
|
@ -40,4 +36,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -12,41 +12,27 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./AdvertisingRadioArchiveRecordSetType
|
||||
- ./AdvertisingRadioArchive
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/specificity_annotation
|
||||
- ./AdvertisingRadioArchive
|
||||
- ./AdvertisingRadioArchiveRecordSetType
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
classes:
|
||||
RadioAdvertisementCollection:
|
||||
is_a: AdvertisingRadioArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for Radio commercial recordings.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType following the collection \norganizational principle as defined by rico-rst:Collection.\n"
|
||||
description: "A rico:RecordSetType for Radio commercial recordings.\n\n**RiC-O\
|
||||
\ Alignment**:\nThis class is a specialized rico:RecordSetType following the\
|
||||
\ collection \norganizational principle as defined by rico-rst:Collection.\n"
|
||||
exact_mappings:
|
||||
- rico:RecordSetType
|
||||
related_mappings:
|
||||
|
|
@ -77,16 +63,21 @@ classes:
|
|||
record_holder:
|
||||
equals_string: AdvertisingRadioArchive
|
||||
record_holder_note:
|
||||
equals_string: This RecordSetType is typically held by AdvertisingRadioArchive custodians. Inverse of rico:isOrWasHolderOf.
|
||||
equals_string: This RecordSetType is typically held by AdvertisingRadioArchive
|
||||
custodians. Inverse of rico:isOrWasHolderOf.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
broad_mappings:
|
||||
- rico:RecordSetType
|
||||
- skos:Concept
|
||||
CampaignDocumentationSeries:
|
||||
is_a: AdvertisingRadioArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for Advertising campaign records.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType following the series \norganizational principle as defined by rico-rst:Series.\n"
|
||||
description: "A rico:RecordSetType for Advertising campaign records.\n\n**RiC-O\
|
||||
\ Alignment**:\nThis class is a specialized rico:RecordSetType following the\
|
||||
\ series \norganizational principle as defined by rico-rst:Series.\n"
|
||||
exact_mappings:
|
||||
- rico:RecordSetType
|
||||
related_mappings:
|
||||
|
|
@ -117,4 +108,8 @@ classes:
|
|||
record_holder:
|
||||
equals_string: AdvertisingRadioArchive
|
||||
record_holder_note:
|
||||
equals_string: This RecordSetType is typically held by AdvertisingRadioArchive custodians. Inverse of rico:isOrWasHolderOf.
|
||||
equals_string: This RecordSetType is typically held by AdvertisingRadioArchive
|
||||
custodians. Inverse of rico:isOrWasHolderOf.
|
||||
broad_mappings:
|
||||
- rico:RecordSetType
|
||||
- skos:Concept
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_quantity
|
||||
- ../slots/has_or_had_unit
|
||||
- ../slots/has_or_had_description
|
||||
classes:
|
||||
Age:
|
||||
class_uri: schema:QuantitativeValue
|
||||
|
|
@ -37,14 +37,11 @@ classes:
|
|||
slot_usage:
|
||||
has_or_had_quantity:
|
||||
range: integer
|
||||
description: The age value (in years).
|
||||
required: true
|
||||
has_or_had_unit:
|
||||
description: Unit of time (usually "years", "months").
|
||||
range: string
|
||||
required: false
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
classes:
|
||||
Agenda:
|
||||
class_uri: schema:Action
|
||||
|
|
@ -22,4 +22,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -11,13 +11,23 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_name
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/has_or_had_identifier
|
||||
classes:
|
||||
Agent:
|
||||
class_uri: prov:Agent
|
||||
description: "An agent (person, organization, or software) that performs actions.\n\n**RULE 53 MIGRATION**:\nReplaces simple string slots with a structured agent model:\n- `is_or_was_acquired_by` \u2192 Agent (this class)\n- Supports typed agents (person, organization, software)\n\n**USAGE**:\n```yaml\nis_or_was_acquired_by:\n - agent_name: \"Dr. Jane Smith\"\n agent_type: person\n has_or_had_identifier:\n - identifier_scheme: ORCID\n identifier_value: \"0000-0001-2345-6789\"\n```\n\n**Ontological Alignment**:\n- **Primary** (`class_uri`): `prov:Agent` - PROV-O agent\n- **Close**: `foaf:Agent` - FOAF agent\n- **Close**: `schema:Person` / `schema:Organization` - Schema.org agents\n- **Close**: `dcterms:Agent` - Dublin Core agent\n\n**Use Cases**:\n- Specimen collectors (field biologists)\n- Artwork donors/sellers\n- Archive depositors\n- Record creators\n"
|
||||
description: "An agent (person, organization, or software) that performs actions.\n\
|
||||
\n**RULE 53 MIGRATION**:\nReplaces simple string slots with a structured agent\
|
||||
\ model:\n- `is_or_was_acquired_by` → Agent (this class)\n- Supports typed agents\
|
||||
\ (person, organization, software)\n\n**USAGE**:\n```yaml\nis_or_was_acquired_by:\n\
|
||||
\ - agent_name: \"Dr. Jane Smith\"\n agent_type: person\n has_or_had_identifier:\n\
|
||||
\ - identifier_scheme: ORCID\n identifier_value: \"0000-0001-2345-6789\"\
|
||||
\n```\n\n**Ontological Alignment**:\n- **Primary** (`class_uri`): `prov:Agent`\
|
||||
\ - PROV-O agent\n- **Close**: `foaf:Agent` - FOAF agent\n- **Close**: `schema:Person`\
|
||||
\ / `schema:Organization` - Schema.org agents\n- **Close**: `dcterms:Agent`\
|
||||
\ - Dublin Core agent\n\n**Use Cases**:\n- Specimen collectors (field biologists)\n\
|
||||
- Artwork donors/sellers\n- Archive depositors\n- Record creators\n"
|
||||
exact_mappings:
|
||||
- prov:Agent
|
||||
close_mappings:
|
||||
|
|
@ -30,73 +40,32 @@ classes:
|
|||
- has_or_had_name
|
||||
- has_or_had_type
|
||||
- has_or_had_identifier
|
||||
attributes:
|
||||
agent_name:
|
||||
range: string
|
||||
description: Name of the agent (person or organization name)
|
||||
required: true
|
||||
agent_type:
|
||||
range: string
|
||||
description: 'Type of agent: person, organization, software, group
|
||||
|
||||
'
|
||||
required: false
|
||||
examples:
|
||||
- value: person
|
||||
- value: organization
|
||||
- value: software
|
||||
- value: group
|
||||
agent_role:
|
||||
range: string
|
||||
description: 'Role of the agent in the action (collector, donor, creator, etc.)
|
||||
|
||||
'
|
||||
required: false
|
||||
slot_usage:
|
||||
has_or_had_name:
|
||||
description: 'Structured name for the agent.
|
||||
|
||||
'
|
||||
range: uriorcurie
|
||||
required: false
|
||||
has_or_had_type:
|
||||
description: 'Classification of the agent type.
|
||||
|
||||
'
|
||||
range: uriorcurie
|
||||
required: false
|
||||
has_or_had_identifier:
|
||||
description: 'Identifiers for the agent (ORCID, ISNI, etc.).
|
||||
|
||||
'
|
||||
range: uriorcurie
|
||||
multivalued: true
|
||||
required: false
|
||||
annotations:
|
||||
specificity_score: '0.25'
|
||||
specificity_rationale: Broadly applicable - agents appear across all heritage contexts.
|
||||
template_specificity: '{"archive_search": 0.30, "museum_search": 0.30, "library_search": 0.30, "collection_discovery": 0.40, "person_research": 0.60, "location_browse": 0.15, "identifier_lookup": 0.35, "organizational_change": 0.25, "digital_platform": 0.20, "general_heritage": 0.25}'
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
specificity_rationale: Broadly applicable - agents appear across all heritage
|
||||
contexts.
|
||||
template_specificity: '{"archive_search": 0.30, "museum_search": 0.30, "library_search":
|
||||
0.30, "collection_discovery": 0.40, "person_research": 0.60, "location_browse":
|
||||
0.15, "identifier_lookup": 0.35, "organizational_change": 0.25, "digital_platform":
|
||||
0.20, "general_heritage": 0.25}'
|
||||
custodian_types: '[''*'']'
|
||||
examples:
|
||||
- value: null
|
||||
- value: null
|
||||
- value:
|
||||
agent_name: Dr. Jane Smith
|
||||
agent_type: person
|
||||
agent_role: collector
|
||||
description: Field biologist who collected specimens
|
||||
- value:
|
||||
agent_name: Rijksmuseum Foundation
|
||||
agent_type: organization
|
||||
agent_role: donor
|
||||
description: Organization that donated artwork
|
||||
- value:
|
||||
agent_name: National Archives of the Netherlands
|
||||
agent_type: organization
|
||||
agent_role: transferring_agency
|
||||
has_or_had_identifier:
|
||||
- identifier_scheme: ISIL
|
||||
identifier_value: NL-HaNA
|
||||
description: Archive transferring records
|
||||
comments:
|
||||
- Created per slot_fixes.yaml migration (2026-01-22)
|
||||
- 'RULE 53: Replaces collector string slot with structured model'
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_code
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
classes:
|
||||
AgentType:
|
||||
class_uri: skos:Concept
|
||||
|
|
@ -30,13 +30,10 @@ classes:
|
|||
has_or_had_code:
|
||||
range: string
|
||||
required: true
|
||||
description: Short code for the agent type
|
||||
has_or_had_label:
|
||||
range: string
|
||||
required: false
|
||||
description: Human-readable name for the agent type
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -14,24 +14,35 @@ prefixes:
|
|||
hc: https://nde.nl/ontology/hc/
|
||||
default_prefix: hc
|
||||
classes:
|
||||
PersonAgentType:
|
||||
PersonAgent:
|
||||
is_a: AgentType
|
||||
class_uri: hc:PersonAgentType
|
||||
class_uri: hc:PersonAgent
|
||||
description: Agent type for natural persons.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
OrganizationAgentType:
|
||||
custodian_types: '[''*'']'
|
||||
broad_mappings:
|
||||
- crm:E39_Actor
|
||||
- schema:Organization
|
||||
OrganizationAgent:
|
||||
is_a: AgentType
|
||||
class_uri: hc:OrganizationAgentType
|
||||
class_uri: hc:OrganizationAgent
|
||||
description: Agent type for organizations.
|
||||
SoftwareAgentType:
|
||||
broad_mappings:
|
||||
- crm:E39_Actor
|
||||
- schema:Organization
|
||||
SoftwareAgent:
|
||||
is_a: AgentType
|
||||
class_uri: hc:SoftwareAgentType
|
||||
class_uri: hc:SoftwareAgent
|
||||
description: Agent type for software agents or automated processes.
|
||||
GroupAgentType:
|
||||
broad_mappings:
|
||||
- crm:E39_Actor
|
||||
- schema:Organization
|
||||
GroupAgent:
|
||||
is_a: AgentType
|
||||
class_uri: hc:GroupAgentType
|
||||
class_uri: hc:GroupAgent
|
||||
description: Agent type for informal groups or collectives.
|
||||
broad_mappings:
|
||||
- crm:E39_Actor
|
||||
- schema:Organization
|
||||
|
|
|
|||
|
|
@ -15,14 +15,14 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/is_or_was_signed_on
|
||||
- ../slots/temporal_extent
|
||||
- ./TimeSpan
|
||||
classes:
|
||||
Agreement:
|
||||
class_uri: schema:Agreement
|
||||
class_uri: schema:Contract
|
||||
description: 'A formal agreement, contract, or treaty between parties.
|
||||
|
||||
|
||||
|
|
@ -37,7 +37,7 @@ classes:
|
|||
|
||||
**Ontological Alignment**:
|
||||
|
||||
- `schema:Agreement`: A generic agreement.
|
||||
- `schema:Contract`: A generic agreement.
|
||||
|
||||
'
|
||||
slots:
|
||||
|
|
@ -47,13 +47,9 @@ classes:
|
|||
- temporal_extent
|
||||
slot_usage:
|
||||
has_or_had_label:
|
||||
description: Title or name of the agreement.
|
||||
is_or_was_signed_on:
|
||||
description: Date the agreement was signed.
|
||||
temporal_extent:
|
||||
description: Validity period of the agreement.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -29,14 +29,11 @@ classes:
|
|||
slot_usage:
|
||||
has_or_had_quantity:
|
||||
range: float
|
||||
description: The number of air changes.
|
||||
required: true
|
||||
has_or_had_unit:
|
||||
range: Unit
|
||||
description: Unit of measurement (e.g., "per hour").
|
||||
range: string
|
||||
required: true
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -2,35 +2,16 @@ id: https://nde.nl/ontology/hc/class/Alignment
|
|||
name: alignment_class
|
||||
title: Alignment Class
|
||||
description: 'Represents positioning or alignment information for content elements.
|
||||
|
||||
|
||||
**USE CASES**:
|
||||
|
||||
- Caption/subtitle positioning (top, bottom, left, right)
|
||||
|
||||
- Text alignment within containers
|
||||
|
||||
- Visual element placement in layouts
|
||||
|
||||
|
||||
**PROPERTIES**:
|
||||
|
||||
- horizontal_alignment: left, center, right, justify
|
||||
|
||||
- vertical_alignment: top, middle, bottom
|
||||
|
||||
- position_value: Numeric or named position value
|
||||
|
||||
|
||||
**RELATIONSHIP TO Caption**:
|
||||
|
||||
Alignment can be used with Caption to specify where subtitles appear
|
||||
|
||||
on screen (e.g., bottom-center is typical default).
|
||||
|
||||
'
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_alignment
|
||||
- ../slots/has_or_had_unit
|
||||
- ../slots/has_or_had_value
|
||||
prefixes:
|
||||
linkml: https://w3id.org/linkml/
|
||||
hc: https://nde.nl/ontology/hc/
|
||||
|
|
@ -40,73 +21,32 @@ classes:
|
|||
Alignment:
|
||||
class_uri: hc:Alignment
|
||||
description: 'Positioning or alignment information for content elements.
|
||||
|
||||
Captures horizontal alignment, vertical alignment, and position values.
|
||||
|
||||
Captures alignment, position values, and units.
|
||||
'
|
||||
slots:
|
||||
- horizontal_alignment
|
||||
- vertical_alignment
|
||||
- position_value
|
||||
- position_unit
|
||||
- has_or_had_alignment
|
||||
- has_or_had_value
|
||||
- has_or_had_unit
|
||||
slot_usage:
|
||||
horizontal_alignment:
|
||||
has_or_had_alignment:
|
||||
range: string
|
||||
required: false
|
||||
multivalued: true
|
||||
examples:
|
||||
- value: left
|
||||
description: Left-aligned content
|
||||
- value: center
|
||||
description: Center-aligned content
|
||||
- value: right
|
||||
description: Right-aligned content
|
||||
vertical_alignment:
|
||||
range: string
|
||||
required: false
|
||||
examples:
|
||||
- value: top
|
||||
description: Top-aligned (e.g., top subtitles)
|
||||
- value: bottom
|
||||
description: Bottom-aligned (default for subtitles)
|
||||
- value: middle
|
||||
description: Vertically centered
|
||||
position_value:
|
||||
has_or_had_value:
|
||||
range: string
|
||||
required: false
|
||||
description: Numeric or named position value
|
||||
examples:
|
||||
- value: '10'
|
||||
description: Position 10 units from reference
|
||||
- value: default
|
||||
description: Default positioning
|
||||
position_unit:
|
||||
has_or_had_unit:
|
||||
range: string
|
||||
required: false
|
||||
description: Unit of measurement for position (px, %, em, etc.)
|
||||
examples:
|
||||
- value: px
|
||||
description: Pixels
|
||||
- value: '%'
|
||||
description: Percentage of container
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
slots:
|
||||
horizontal_alignment:
|
||||
slot_uri: hc:horizontalAlignment
|
||||
range: string
|
||||
description: Horizontal alignment (left, center, right, justify)
|
||||
vertical_alignment:
|
||||
slot_uri: hc:verticalAlignment
|
||||
range: string
|
||||
description: Vertical alignment (top, middle, bottom)
|
||||
position_value:
|
||||
slot_uri: hc:positionValue
|
||||
range: string
|
||||
description: Numeric or named position value
|
||||
position_unit:
|
||||
slot_uri: hc:positionUnit
|
||||
range: string
|
||||
description: Unit of measurement for position
|
||||
|
|
|
|||
|
|
@ -9,225 +9,58 @@ prefixes:
|
|||
hc: https://nde.nl/ontology/hc/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../enums/AllocationDomainEnum
|
||||
- ../metadata
|
||||
- ./Standard
|
||||
- ./RegistrationAuthority
|
||||
- ./Country
|
||||
- ./Subregion
|
||||
- ../slots/description
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/specificity_annotation
|
||||
- ./Country
|
||||
- ./RegistrationAuthority
|
||||
- ./SpecificityAnnotation
|
||||
- ./Standard
|
||||
- ./Subregion
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../enums/AllocationDomainEnum
|
||||
classes:
|
||||
AllocationAgency:
|
||||
class_uri: org:FormalOrganization
|
||||
description: "An organization that allocates identifiers within a specific geographic area \nand/or domain of heritage institutions.\n\n**Key Distinction from RegistrationAuthority:**\n\n- **RegistrationAuthority**: Maintains the GLOBAL registry for a standard\n - Example: Danish Agency for Culture and Palaces maintains global ISIL registry\n - Example: ISNI International Agency (WIPO) maintains global ISNI database\n\n- **AllocationAgency**: Allocates identifiers LOCALLY within constraints\n - Example: Koninklijke Bibliotheek allocates ISIL for Dutch public libraries\n - Example: OCLC allocates ISIL for Dutch academic libraries\n - Example: Nationaal Archief allocates ISIL for Dutch archives\n\n**Multi-Dimensional Scope:**\n\nAllocationAgencies have both:\n1. **Geographic scope**: Which country/region they serve\n2. **Domain scope**: Which types of institutions they serve\n\nThis allows multiple agencies per country, each serving different domains:\n- NL public libraries \u2192\
|
||||
\ KB\n- NL academic libraries \u2192 OCLC\n- NL archives \u2192 Nationaal Archief\n\n**Relationship to Standard:**\n\nAn AllocationAgency allocates for one or more Standards:\n- AllocationAgency.allocates_for \u2192 Standard[]\n- Standard can have multiple AllocationAgencies (one per country/domain)\n\n**Examples:**\n\n| Agency | Country | Domain | Standard |\n|--------|---------|--------|----------|\n| Koninklijke Bibliotheek | NL | Public libraries | ISIL |\n| OCLC | NL | Academic libraries | ISIL |\n| Nationaal Archief | NL | Archives | ISIL |\n| British Library | GB | All | ISIL |\n| Library of Congress | US | All | ISIL |\n| OCLC | Global | Academic | VIAF |\n| Deutsche Nationalbibliothek | DE | All | ISNI |\n\n**Ontology Alignment:**\n\n- org:FormalOrganization - W3C Organization Ontology\n- Extends gleif_base:RegistrationAuthority concept (but for allocation, not registration)\n"
|
||||
description: "An organization that allocates identifiers within a specific geographic\
|
||||
\ area \nand/or domain of heritage institutions.\n\n**Key Distinction from RegistrationAuthority:**\n\
|
||||
\n- **RegistrationAuthority**: Maintains the GLOBAL registry for a standard\n\
|
||||
\ - Example: Danish Agency for Culture and Palaces maintains global ISIL registry\n\
|
||||
\ - Example: ISNI International Agency (WIPO) maintains global ISNI database\n\
|
||||
\n- **AllocationAgency**: Allocates identifiers LOCALLY within constraints\n\
|
||||
\ - Example: Koninklijke Bibliotheek allocates ISIL for Dutch public libraries\n\
|
||||
\ - Example: OCLC allocates ISIL for Dutch academic libraries\n - Example:\
|
||||
\ Nationaal Archief allocates ISIL for Dutch archives\n\n**Multi-Dimensional\
|
||||
\ Scope:**\n\nAllocationAgencies have both:\n1. **Geographic scope**: Which\
|
||||
\ country/region they serve\n2. **Domain scope**: Which types of institutions\
|
||||
\ they serve\n\nThis allows multiple agencies per country, each serving different\
|
||||
\ domains:\n- NL public libraries → KB\n- NL academic libraries → OCLC\n- NL\
|
||||
\ archives → Nationaal Archief\n\n**Relationship to Standard:**\n\nAn AllocationAgency\
|
||||
\ allocates for one or more Standards:\n- AllocationAgency.allocates_for → Standard[]\n\
|
||||
- Standard can have multiple AllocationAgencies (one per country/domain)\n\n\
|
||||
**Examples:**\n\n| Agency | Country | Domain | Standard |\n|--------|---------|--------|----------|\n\
|
||||
| Koninklijke Bibliotheek | NL | Public libraries | ISIL |\n| OCLC | NL | Academic\
|
||||
\ libraries | ISIL |\n| Nationaal Archief | NL | Archives | ISIL |\n| British\
|
||||
\ Library | GB | All | ISIL |\n| Library of Congress | US | All | ISIL |\n|\
|
||||
\ OCLC | Global | Academic | VIAF |\n| Deutsche Nationalbibliothek | DE | All\
|
||||
\ | ISNI |\n\n**Ontology Alignment:**\n\n- org:FormalOrganization - W3C Organization\
|
||||
\ Ontology\n- Extends gleif_base:RegistrationAuthority concept (but for allocation,\
|
||||
\ not registration)\n"
|
||||
exact_mappings:
|
||||
- org:FormalOrganization
|
||||
close_mappings:
|
||||
- gleif_base:RegistrationAuthority
|
||||
- schema:Organization
|
||||
attributes:
|
||||
id:
|
||||
identifier: true
|
||||
slot_uri: schema:identifier
|
||||
description: 'Unique identifier for this allocation agency.
|
||||
|
||||
|
||||
Recommended format: {country}-{abbreviation} or {abbreviation}
|
||||
|
||||
|
||||
Examples: "nl-kb", "nl-oclc", "nl-na", "gb-bl", "us-loc"
|
||||
|
||||
'
|
||||
range: uriorcurie
|
||||
required: true
|
||||
name:
|
||||
slot_uri: schema:name
|
||||
description: 'Official full name of the allocation agency.
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
- "Koninklijke Bibliotheek"
|
||||
|
||||
- "Nationaal Archief"
|
||||
|
||||
- "British Library"
|
||||
|
||||
- "Library of Congress"
|
||||
|
||||
'
|
||||
range: string
|
||||
required: true
|
||||
name_local:
|
||||
slot_uri: schema:alternateName
|
||||
description: "Name in local language (if different from English name).\n\nExamples:\n- \"Koninklijke Bibliotheek\" (Dutch)\n- \"Deutsche Nationalbibliothek\" (German)\n- \"Biblioth\xE8que nationale de France\" (French)\n"
|
||||
range: string
|
||||
has_or_had_abbreviation:
|
||||
slot_uri: schema:alternateName
|
||||
description: 'Common abbreviation.
|
||||
|
||||
|
||||
Examples: "KB", "NA", "BL", "LOC", "BnF", "DNB"
|
||||
|
||||
'
|
||||
range: string
|
||||
country_scope:
|
||||
slot_uri: gleif_base:hasCoverageArea
|
||||
description: 'Geographic area(s) where this agency allocates identifiers.
|
||||
|
||||
|
||||
Usually a single country, but can be multiple countries or subregions.
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
- [NL] for Koninklijke Bibliotheek
|
||||
|
||||
- [GB] for British Library
|
||||
|
||||
- [US] for Library of Congress
|
||||
|
||||
- [DE-BY, DE-BW] for regional German agency
|
||||
|
||||
'
|
||||
range: Country
|
||||
multivalued: true
|
||||
required: true
|
||||
inlined: false
|
||||
subregion_scope:
|
||||
slot_uri: schema:areaServed
|
||||
description: "Subregion-level geographic scope (if more specific than country).\n\nFor agencies that only serve specific regions within a country.\n\nExamples:\n- Staatsarchiv M\xFCnchen: [DE-BY] (Bavaria only)\n"
|
||||
range: Subregion
|
||||
multivalued: true
|
||||
inlined: false
|
||||
allocation_domain:
|
||||
slot_uri: schema:audienceType
|
||||
description: 'Types of institutions this agency allocates identifiers for.
|
||||
|
||||
|
||||
Multiple values allowed for agencies serving multiple domains.
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
- KB: [LIBRARY_PUBLIC]
|
||||
|
||||
- OCLC: [LIBRARY_ACADEMIC, LIBRARY_RESEARCH]
|
||||
|
||||
- Nationaal Archief: [ARCHIVE]
|
||||
|
||||
- British Library: [LIBRARY_PUBLIC, LIBRARY_ACADEMIC, ARCHIVE] (all types)
|
||||
|
||||
'
|
||||
range: AllocationDomainEnum
|
||||
multivalued: true
|
||||
required: true
|
||||
allocates_for:
|
||||
slot_uri: schema:serviceOutput
|
||||
description: 'Standards for which this agency allocates identifiers.
|
||||
|
||||
|
||||
Most agencies allocate for a single standard, but some handle multiple.
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
- KB: [ISIL]
|
||||
|
||||
- DNB: [ISIL, ISNI]
|
||||
|
||||
- OCLC: [ISIL, VIAF]
|
||||
|
||||
'
|
||||
range: Standard
|
||||
multivalued: true
|
||||
required: true
|
||||
inlined: false
|
||||
allocation_prefix:
|
||||
slot_uri: schema:identifier
|
||||
description: 'Prefix used by this agency when allocating identifiers.
|
||||
|
||||
|
||||
For ISIL, this is typically the country code.
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
- Netherlands ISIL: "NL-"
|
||||
|
||||
- Germany ISIL: "DE-"
|
||||
|
||||
- UK ISIL: "UK-" or "GB-" (both used historically)
|
||||
|
||||
'
|
||||
range: string
|
||||
parent_registration_authority:
|
||||
slot_uri: schema:parentOrganization
|
||||
description: "The registration authority to which this agency reports allocations.\n\nAllocationAgencies report their allocations to the global RegistrationAuthority.\n\nExamples:\n- KB (NL ISIL) \u2192 Danish Agency for Culture and Palaces\n- DNB (DE ISNI) \u2192 ISNI International Agency\n"
|
||||
range: RegistrationAuthority
|
||||
inlined: false
|
||||
allocation_start_date:
|
||||
slot_uri: schema:startDate
|
||||
description: 'Date when this agency started allocating identifiers.
|
||||
|
||||
|
||||
Format: ISO 8601 date
|
||||
|
||||
'
|
||||
range: date
|
||||
allocation_end_date:
|
||||
slot_uri: schema:endDate
|
||||
description: 'Date when this agency stopped allocating (if no longer active).
|
||||
|
||||
|
||||
Null if still active.
|
||||
|
||||
'
|
||||
range: date
|
||||
is_active:
|
||||
slot_uri: schema:status
|
||||
description: Whether this agency is currently allocating identifiers
|
||||
range: boolean
|
||||
required: true
|
||||
website:
|
||||
slot_uri: hc:hasWebsite
|
||||
description: 'Official website of the allocation agency.
|
||||
|
||||
|
||||
Preferably the page about identifier allocation services.
|
||||
|
||||
|
||||
Note: slot_uri changed from schema:url to hc:hasWebsite to resolve OWL ambiguous type warning. schema:url is typically a DatatypeProperty but range: uri in LinkML can be ambiguous.
|
||||
|
||||
'
|
||||
range: uri
|
||||
close_mappings:
|
||||
- schema:url
|
||||
allocation_policy_url:
|
||||
slot_uri: schema:usageInfo
|
||||
description: 'URL to the allocation policy documentation.
|
||||
|
||||
|
||||
Describes eligibility, process, requirements for obtaining identifiers.
|
||||
|
||||
'
|
||||
range: uri
|
||||
agency_description:
|
||||
slot_uri: schema:description
|
||||
description: Description of the agency's allocation services and scope
|
||||
range: string
|
||||
slots:
|
||||
- specificity_annotation
|
||||
- has_or_had_score
|
||||
- name
|
||||
- name_local
|
||||
- is_active
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
|
|
|
|||
|
|
@ -26,10 +26,8 @@ classes:
|
|||
- temporal_extent
|
||||
slot_usage:
|
||||
temporal_extent:
|
||||
description: Time period when the allocation occurred.
|
||||
required: true
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -48,20 +48,15 @@ classes:
|
|||
has_or_had_code:
|
||||
pattern: ^[A-Z]{2}$
|
||||
required: true
|
||||
description: Two-letter ISO 3166-1 alpha-2 country code
|
||||
examples:
|
||||
- value: NL
|
||||
description: Netherlands
|
||||
- value: BE
|
||||
description: Belgium
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
annotations:
|
||||
specificity_score: '0.30'
|
||||
specificity_rationale: Low specificity - standard country codes used broadly.
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: NL
|
||||
description: Netherlands country code
|
||||
has_or_had_code: NL
|
||||
|
|
@ -48,20 +48,15 @@ classes:
|
|||
has_or_had_code:
|
||||
pattern: ^[A-Z]{3}$
|
||||
required: true
|
||||
description: Three-letter ISO 3166-1 alpha-3 country code
|
||||
examples:
|
||||
- value: NLD
|
||||
description: Netherlands
|
||||
- value: BEL
|
||||
description: Belgium
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
annotations:
|
||||
specificity_score: '0.30'
|
||||
specificity_rationale: Low specificity - standard country codes used broadly.
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
examples:
|
||||
- value:
|
||||
has_or_had_code: NLD
|
||||
description: Netherlands country code
|
||||
has_or_had_code: NLD
|
||||
|
|
@ -13,25 +13,22 @@ imports:
|
|||
default_range: string
|
||||
classes:
|
||||
AlternativeName:
|
||||
description: "Alternative name with language and source information, representing a variant or translated form of an institution's name.\nOntology mapping rationale: - class_uri is skos:altLabel because this represents an alternative\n lexical label for a concept (the institution)\n- exact_mappings includes schema:alternateName as both represent variant names - related_mappings includes rdfs:label for general labeling context"
|
||||
description: "Alternative name with language and source information, representing\
|
||||
\ a variant or translated form of an institution's name.\nOntology mapping rationale:\
|
||||
\ - class_uri is skos:altLabel because this represents an alternative\n lexical\
|
||||
\ label for a concept (the institution)\n- exact_mappings includes schema:alternateName\
|
||||
\ as both represent variant names - related_mappings includes rdfs:label for\
|
||||
\ general labeling context"
|
||||
class_uri: skos:altLabel
|
||||
exact_mappings:
|
||||
- schema:alternateName
|
||||
related_mappings:
|
||||
- rdfs:label
|
||||
attributes:
|
||||
name:
|
||||
range: string
|
||||
required: true
|
||||
description: The alternative name
|
||||
language:
|
||||
range: string
|
||||
description: ISO 639-1 language code
|
||||
source:
|
||||
range: string
|
||||
description: Source of this alternative name (e.g., wikidata, isil_registry)
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
slots:
|
||||
- name
|
||||
- language
|
||||
- source
|
||||
|
|
|
|||
|
|
@ -1,6 +1,22 @@
|
|||
id: https://nde.nl/ontology/hc/class/Altitude
|
||||
name: Altitude
|
||||
title: Altitude
|
||||
description: The altitude of a place.
|
||||
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/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_unit
|
||||
- ../slots/has_or_had_value
|
||||
classes:
|
||||
Altitude:
|
||||
class_uri: schema:QuantitativeValue
|
||||
exact_mappings:
|
||||
- crm:E54_Dimension
|
||||
description: The altitude of a place.
|
||||
slots:
|
||||
- has_or_had_value
|
||||
|
|
@ -9,4 +25,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -1,3 +1,18 @@
|
|||
id: https://nde.nl/ontology/hc/class/AmendmentEvent
|
||||
name: AmendmentEvent
|
||||
title: Amendment Event
|
||||
description: An event where a document or agreement was amended.
|
||||
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/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/temporal_extent
|
||||
classes:
|
||||
AmendmentEvent:
|
||||
class_uri: prov:Activity
|
||||
|
|
@ -10,4 +25,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_label
|
||||
- ../slots/is_or_was_categorized_as
|
||||
- ./Species
|
||||
classes:
|
||||
|
|
@ -38,9 +38,7 @@ classes:
|
|||
slot_usage:
|
||||
is_or_was_categorized_as:
|
||||
range: Species
|
||||
description: The species classification of the animal.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -5,21 +5,22 @@ prefixes:
|
|||
linkml: https://w3id.org/linkml/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_identifier
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ./AnimalSoundArchiveRecordSetType
|
||||
- ./AnimalSoundArchiveRecordSetTypes
|
||||
- ./ArchiveOrganizationType
|
||||
- ./CollectionType
|
||||
- ./AnimalSoundArchiveRecordSetTypes
|
||||
- ../slots/hold_or_held_record_set_type
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ./WikidataAlignment
|
||||
- ./WikiDataEntry
|
||||
- ./AnimalSoundArchiveRecordSetType
|
||||
- ./WikidataAlignment
|
||||
classes:
|
||||
AnimalSoundArchive:
|
||||
is_a: ArchiveOrganizationType
|
||||
|
|
@ -32,7 +33,6 @@ classes:
|
|||
slot_usage:
|
||||
has_or_had_identifier:
|
||||
pattern: ^Q[0-9]+$
|
||||
description: Wikidata identifier for Animal Sound Archive concept
|
||||
exact_mappings:
|
||||
- skos:Concept
|
||||
close_mappings:
|
||||
|
|
@ -50,4 +50,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -6,16 +6,12 @@ prefixes:
|
|||
wd: http://www.wikidata.org/entity/
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ./CollectionType
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/is_or_was_related_to
|
||||
- ./WikidataAlignment
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/is_or_was_related_to
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
classes:
|
||||
AnimalSoundArchiveRecordSetType:
|
||||
description: A rico:RecordSetType for classifying collections of animal sound archive materials within heritage institutions.
|
||||
|
|
@ -40,4 +36,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -12,41 +12,27 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ./AnimalSoundArchiveRecordSetType
|
||||
- ./AnimalSoundArchive
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/specificity_annotation
|
||||
- ./AnimalSoundArchive
|
||||
- ./AnimalSoundArchiveRecordSetType
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/organizational_principle
|
||||
- ../slots/organizational_principle_uri
|
||||
- ../slots/record_holder
|
||||
- ../slots/record_holder_note
|
||||
- ../slots/record_set_type
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
classes:
|
||||
BioacousticRecordingCollection:
|
||||
is_a: AnimalSoundArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for Animal and nature sound recordings.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType following the collection \norganizational principle as defined by rico-rst:Collection.\n"
|
||||
description: "A rico:RecordSetType for Animal and nature sound recordings.\n\n\
|
||||
**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType following\
|
||||
\ the collection \norganizational principle as defined by rico-rst:Collection.\n"
|
||||
exact_mappings:
|
||||
- rico:RecordSetType
|
||||
related_mappings:
|
||||
|
|
@ -77,16 +63,21 @@ classes:
|
|||
record_holder:
|
||||
equals_string: AnimalSoundArchive
|
||||
record_holder_note:
|
||||
equals_string: This RecordSetType is typically held by AnimalSoundArchive custodians. Inverse of rico:isOrWasHolderOf.
|
||||
equals_string: This RecordSetType is typically held by AnimalSoundArchive
|
||||
custodians. Inverse of rico:isOrWasHolderOf.
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
broad_mappings:
|
||||
- rico:RecordSetType
|
||||
- skos:Concept
|
||||
FieldRecordingSeries:
|
||||
is_a: AnimalSoundArchiveRecordSetType
|
||||
class_uri: rico:RecordSetType
|
||||
description: "A rico:RecordSetType for Field research audio.\n\n**RiC-O Alignment**:\nThis class is a specialized rico:RecordSetType following the series \norganizational principle as defined by rico-rst:Series.\n"
|
||||
description: "A rico:RecordSetType for Field research audio.\n\n**RiC-O Alignment**:\n\
|
||||
This class is a specialized rico:RecordSetType following the series \norganizational\
|
||||
\ principle as defined by rico-rst:Series.\n"
|
||||
exact_mappings:
|
||||
- rico:RecordSetType
|
||||
related_mappings:
|
||||
|
|
@ -117,4 +108,8 @@ classes:
|
|||
record_holder:
|
||||
equals_string: AnimalSoundArchive
|
||||
record_holder_note:
|
||||
equals_string: This RecordSetType is typically held by AnimalSoundArchive custodians. Inverse of rico:isOrWasHolderOf.
|
||||
equals_string: This RecordSetType is typically held by AnimalSoundArchive
|
||||
custodians. Inverse of rico:isOrWasHolderOf.
|
||||
broad_mappings:
|
||||
- rico:RecordSetType
|
||||
- skos:Concept
|
||||
|
|
|
|||
|
|
@ -22,4 +22,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -9,15 +9,19 @@ prefixes:
|
|||
default_prefix: hc
|
||||
imports:
|
||||
- linkml:types
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/is_or_was_created_by
|
||||
- ../classes/Agent
|
||||
- ../slots/has_or_had_rationale
|
||||
- ../classes/Rationale
|
||||
- ../slots/contains_or_contained
|
||||
- ../classes/Segment
|
||||
- ../slots/has_or_had_type
|
||||
- ../classes/AnnotationType
|
||||
- ../classes/Rationale
|
||||
- ../classes/Segment
|
||||
- ../slots/contains_or_contained
|
||||
- ../slots/has_or_had_description
|
||||
- ../slots/has_or_had_rationale
|
||||
- ../slots/has_or_had_type
|
||||
- ../slots/is_or_was_created_by
|
||||
- ./Agent
|
||||
- ./AnnotationType
|
||||
- ./Rationale
|
||||
- ./Segment
|
||||
classes:
|
||||
Annotation:
|
||||
class_uri: oa:Annotation
|
||||
|
|
@ -37,21 +41,15 @@ classes:
|
|||
- has_or_had_type
|
||||
slot_usage:
|
||||
has_or_had_description:
|
||||
description: The content of the annotation (body).
|
||||
is_or_was_created_by:
|
||||
description: The agent who created the annotation.
|
||||
range: Agent
|
||||
has_or_had_rationale:
|
||||
description: The motivation for the annotation (e.g. commenting, tagging).
|
||||
range: Rationale
|
||||
contains_or_contained:
|
||||
description: The target segment being annotated.
|
||||
range: Segment
|
||||
has_or_had_type:
|
||||
description: The type of annotation.
|
||||
range: AnnotationType
|
||||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -18,25 +18,15 @@ default_prefix: hc
|
|||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/motivation_type_description
|
||||
- ../slots/motivation_type_id
|
||||
- ../slots/motivation_type_name
|
||||
- ../slots/motivation_type_description
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/motivation_type_description
|
||||
- ../slots/motivation_type_id
|
||||
- ../slots/motivation_type_name
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/motivation_type_description
|
||||
- ../slots/motivation_type_id
|
||||
- ../slots/motivation_type_name
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
classes:
|
||||
AnnotationMotivationType:
|
||||
class_uri: oa:Motivation
|
||||
|
|
@ -77,4 +67,3 @@ classes:
|
|||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
|
|
|
|||
|
|
@ -15,20 +15,14 @@ default_prefix: hc
|
|||
imports:
|
||||
- linkml:types
|
||||
- ../metadata
|
||||
- ./AnnotationMotivationType
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/motivation_type_name
|
||||
- ../slots/specificity_annotation
|
||||
- ./AnnotationMotivationType
|
||||
- ./SpecificityAnnotation
|
||||
- ./TemplateSpecificityScore
|
||||
- ./TemplateSpecificityType
|
||||
- ./TemplateSpecificityTypes
|
||||
- ../slots/motivation_type_name
|
||||
- ../slots/motivation_type_name
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
- ../slots/motivation_type_name
|
||||
- ../slots/specificity_annotation
|
||||
- ../slots/has_or_had_score
|
||||
classes:
|
||||
ClassifyingMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
|
|
@ -101,8 +95,9 @@ classes:
|
|||
annotations:
|
||||
specificity_score: 0.1
|
||||
specificity_rationale: Generic utility class/slot created during migration
|
||||
custodian_types: "['*']"
|
||||
custodian_types_rationale: Universal utility concept
|
||||
custodian_types: '[''*'']'
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
DescribingMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
class_uri: oa:describing
|
||||
|
|
@ -171,6 +166,8 @@ classes:
|
|||
comments:
|
||||
- W3C Web Annotation standard motivation
|
||||
- Fundamental to heritage cataloging and accessibility
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
IdentifyingMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
class_uri: oa:identifying
|
||||
|
|
@ -239,6 +236,8 @@ classes:
|
|||
comments:
|
||||
- W3C Web Annotation standard motivation
|
||||
- Links content to identified entities
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
TaggingMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
class_uri: oa:tagging
|
||||
|
|
@ -307,6 +306,8 @@ classes:
|
|||
comments:
|
||||
- W3C Web Annotation standard motivation
|
||||
- User-generated content enrichment
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
LinkingMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
class_uri: oa:linking
|
||||
|
|
@ -376,6 +377,8 @@ classes:
|
|||
comments:
|
||||
- W3C Web Annotation standard motivation
|
||||
- Enables Linked Open Data connections
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
CommentingMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
class_uri: oa:commenting
|
||||
|
|
@ -442,6 +445,8 @@ classes:
|
|||
comments:
|
||||
- W3C Web Annotation standard motivation
|
||||
- User and scholarly engagement
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
AccessibilityMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
class_uri: hc:accessibilityMotivation
|
||||
|
|
@ -525,6 +530,8 @@ classes:
|
|||
- Heritage-specific extension beyond W3C standard
|
||||
- Critical for inclusive heritage access
|
||||
- Supports WCAG compliance
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
DiscoveryMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
class_uri: hc:discoveryMotivation
|
||||
|
|
@ -606,6 +613,8 @@ classes:
|
|||
- Heritage-specific extension beyond W3C standard
|
||||
- Enables collection discoverability
|
||||
- Supports aggregator integration
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
PreservationMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
class_uri: hc:preservationMotivation
|
||||
|
|
@ -689,6 +698,8 @@ classes:
|
|||
- Heritage-specific extension beyond W3C standard
|
||||
- Critical for digital preservation
|
||||
- Supports OAIS and PREMIS compliance
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
ResearchMotivation:
|
||||
is_a: AnnotationMotivationType
|
||||
class_uri: hc:researchMotivation
|
||||
|
|
@ -770,3 +781,5 @@ classes:
|
|||
- Heritage-specific extension beyond W3C standard
|
||||
- Supports digital humanities and research
|
||||
- Enables computational analysis documentation
|
||||
broad_mappings:
|
||||
- skos:Concept
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue