Refactor and update schema definitions

- Removed obsolete slots: `has_or_had_custodian_observation`, `provider`, and `specificity_annotation`.
- Updated `has_or_had_score` slot to use `SpecificityScore` class and modified its description and examples.
- Added new slots: `end_seconds`, `end_time`, `has_archive_path`, `has_or_had_custodian_name`, `protocol_name`, and `protocol_version`.
- Introduced a script `check_annotation_types.py` to validate the presence and structure of `custodian_types` in YAML files.
- Added a script `update_specificity.py` to automate updates related to `SpecificityAnnotation` to `SpecificityScore`.
This commit is contained in:
kempersc 2026-02-01 19:55:38 +01:00
parent 01e382b53b
commit fc405445c6
1965 changed files with 11325 additions and 16727 deletions

59
break_archive_cycles.py Normal file
View 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
View 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")

View file

@ -2,6 +2,9 @@ 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"):
@ -9,35 +12,56 @@ def check_dir(directory):
with open(path, 'r') as f:
lines = f.readlines()
# Store (indentation, key) to check for duplicates in the current block
# This is complex to implement perfectly for YAML, but we can look for
# "related_mappings:" specifically.
related_mappings_indices = [i for i, line in enumerate(lines) if "related_mappings:" in line.strip()]
keys_at_indent = {} # {indent: {key: line_no}}
prev_indent = 0
if len(related_mappings_indices) > 1:
# Check indentation
indents = [len(lines[i]) - len(lines[i].lstrip()) for i in related_mappings_indices]
for i in range(len(related_mappings_indices) - 1):
idx1 = related_mappings_indices[i]
idx2 = related_mappings_indices[i+1]
indent1 = indents[i]
indent2 = indents[i+1]
for i, line in enumerate(lines):
stripped = line.strip()
if not stripped or stripped.startswith('#') or stripped.startswith('-'):
continue
if indent1 == indent2:
# Check if there is a line between them with LOWER indentation (parent key)
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(idx1 + 1, idx2):
line = lines[j]
if line.strip() and not line.strip().startswith('#'):
curr_indent = len(line) - len(line.lstrip())
if curr_indent < indent1:
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"Potential duplicate related_mappings in {path} at lines {idx1+1} and {idx2+1}")
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/classes")
check_dir("schemas/20251121/linkml/modules/slots")

33
check_self_imports.py Normal file
View 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
View 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
View 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")

33
find_custodian_types.py Normal file
View 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
View 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)

59
fix_dangling.py Normal file
View 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")

38
fix_indentation.py Normal file
View file

@ -0,0 +1,38 @@
import os
def fix_indentation(path):
with open(path, 'r') as f:
lines = f.readlines()
new_lines = []
in_imports = False
for line in lines:
stripped = line.strip()
if stripped == "imports:":
in_imports = True
new_lines.append("imports:\n")
continue
if in_imports:
if not stripped.startswith("-"):
if stripped and not stripped.startswith("#"):
in_imports = False
new_lines.append(line)
else:
# Force 2 spaces indent
# content is stripped, so just prepend " "
new_lines.append(f" {stripped}\n")
else:
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_indentation(os.path.join(root, file))
process_directory("schemas/20251121/linkml/modules/classes")

48
fix_self_imports.py Normal file
View 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
View 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
View 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
View 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")

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-31T22:55:48.691Z",
"generated": "2026-02-01T01:04:01.193Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2906,
"categoryCounts": {

53
nuke_class_imports.py Normal file
View file

@ -0,0 +1,53 @@
import os
def nuke_imports(path):
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()
# Remove imports of sibling classes (starting with ./)
if import_path.startswith("./"):
# But keep some if absolutely necessary? No, try removing all.
# Keep SpecificityScore maybe? No.
# Keep Type/Types? No.
print(f"Removing sibling import in {path}: {stripped}")
modified = True
continue
# Remove imports of parent classes (starting with ../classes/)
elif import_path.startswith("../classes/"):
print(f"Removing parent class 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"):
nuke_imports(os.path.join(root, file))
process_directory("schemas/20251121/linkml/modules/classes")

79
populate_01_imports.py Normal file
View file

@ -0,0 +1,79 @@
import os
def populate_imports(main_schema_path, classes_dir):
with open(main_schema_path, 'r') as f:
lines = f.readlines()
# Find start and end of imports section
start_idx = -1
end_idx = -1
for i, line in enumerate(lines):
if line.strip() == "imports:":
start_idx = i
break
if start_idx == -1:
print("imports: section not found")
return
# Find where imports block ends (next top-level key or end of file)
for i in range(start_idx + 1, len(lines)):
line = lines[i]
if line.strip() and not line.startswith(" ") and not line.startswith("#"):
end_idx = i
break
if end_idx == -1:
end_idx = len(lines)
# Keep existing non-class imports (slots, enums, metadata, types)
# Filter out modules/classes/* imports
preserved_imports = []
for i in range(start_idx + 1, end_idx):
line = lines[i]
stripped = line.strip()
if stripped.startswith("- modules/classes/"):
continue # We will regenerate these
if stripped.startswith("- ./"): # Should not happen in 01_...
continue
if stripped.strip():
preserved_imports.append(line)
# Collect all class files
class_imports = []
for root, dirs, files in os.walk(classes_dir):
if 'archive' in dirs:
dirs.remove('archive')
if 'deprecated' in dirs:
dirs.remove('deprecated')
if 'archive' in root.split(os.sep):
continue
if 'deprecated' in root.split(os.sep):
continue
for file in files:
if file.endswith(".yaml"):
# Path relative to 01_... location (schemas/20251121/linkml)
# classes_dir is schemas/20251121/linkml/modules/classes
# relative path: modules/classes/Filename
# Check for duplicate base names? e.g. .yaml vs .yaml.bak?
# assume clean dir.
rel_path = f"modules/classes/{file.replace('.yaml', '')}"
class_imports.append(f" - {rel_path}\n")
class_imports.sort()
# Reassemble file
new_lines = lines[:start_idx + 1] + preserved_imports + class_imports + lines[end_idx:]
with open(main_schema_path, 'w') as f:
f.writelines(new_lines)
print(f"Updated {main_schema_path} with {len(class_imports)} class imports.")
populate_imports("schemas/20251121/linkml/01_custodian_name_modular.yaml", "schemas/20251121/linkml/modules/classes")

View file

@ -0,0 +1,46 @@
import os
def fix_file(path):
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 class: - ../classes/ClassName
if import_path.startswith("../classes/"):
print(f"Removing class import in {path}: {stripped}")
modified = True
# Comment it out instead of deleting? Or delete. Deleting is cleaner.
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/slots")

78
remove_duplicates.py Normal file
View file

@ -0,0 +1,78 @@
import os
def remove_duplicates_in_file(path):
with open(path, 'r') as f:
lines = f.readlines()
new_lines = []
# Track keys at each indentation level to detect duplicates
# keys_at_indent: {indent: set(keys)}
# But we need to clear deeper levels when indent decreases.
keys_at_indent = {}
prev_indent = 0
# We also need to skip lines belonging to the removed duplicate key (list items)
skip_mode = False
skip_indent = -1
keys_to_check = ["broad_mappings", "close_mappings", "related_mappings", "exact_mappings"]
for i, line in enumerate(lines):
stripped = line.strip()
# Determine indent
if not stripped:
new_lines.append(line)
continue
indent = len(line) - len(line.lstrip())
# If we are skipping a block (children of removed key)
if skip_mode:
if indent > skip_indent:
# Still inside the block of removed key
continue
else:
# Block ended
skip_mode = False
skip_indent = -1
# Update indentation tracking
if indent > prev_indent:
pass
elif indent < prev_indent:
# Clear keys for deeper levels
levels = [k for k in keys_at_indent if k > indent]
for l in levels:
del keys_at_indent[l]
if indent not in keys_at_indent:
keys_at_indent[indent] = set()
# Check if line is a key
if ':' in stripped and not stripped.startswith('-') and not stripped.startswith('#'):
key = stripped.split(':')[0].strip()
if key in keys_to_check:
if key in keys_at_indent[indent]:
print(f"Removing duplicate key '{key}' in {path} at line {i+1}")
skip_mode = True
skip_indent = indent
continue
else:
keys_at_indent[indent].add(key)
new_lines.append(line)
prev_indent = indent
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"):
remove_duplicates_in_file(os.path.join(root, file))
process_directory("schemas/20251121/linkml/modules/classes")

105
reorder_imports.py Normal file
View file

@ -0,0 +1,105 @@
import os
def reorder_imports(path):
with open(path, 'r') as f:
lines = f.readlines()
# Find imports block
start_idx = -1
end_idx = -1
for i, line in enumerate(lines):
if line.strip() == "imports:":
start_idx = i
break
if start_idx == -1:
return
for i in range(start_idx + 1, len(lines)):
line = lines[i]
if line.strip() and not line.startswith(" ") and not line.startswith("#"):
end_idx = i
break
if end_idx == -1:
end_idx = len(lines)
imports = lines[start_idx + 1:end_idx]
# Separate class imports
class_imports = []
other_imports = []
for line in imports:
if "modules/classes/" in line:
class_imports.append(line)
else:
other_imports.append(line)
# Define priority classes
priority_classes = [
"ReconstructedEntity",
"CustodianType",
"Activity",
"Event",
"Provenance",
"Identifier",
"Label",
"Description",
"Content",
"CollectionType",
"FindingAidType",
"DocumentType",
"StatementType",
"NameType",
"LabelType",
"Place",
"TimeSpan",
"Agent",
"Organization",
"Person",
"Group",
"Thing",
"Concept",
"InformationObject",
"DigitalPlatform",
"Storage",
"FinancialStatement",
"Budget",
"Plan",
"Action"
]
sorted_class_imports = []
remaining_class_imports = []
# Extract priority
for p in priority_classes:
import_line = f"- modules/classes/{p}\n"
# Find matching line (ignoring whitespace)
found = False
# Iterate over copy to allow removal
for line in list(class_imports):
if p in line and line.strip().endswith(p): # Endswith classname
sorted_class_imports.append(line)
class_imports.remove(line)
found = True
break
if not found:
# Try to find without exact match
pass
# Sort remaining
class_imports.sort()
final_imports = other_imports + sorted_class_imports + class_imports
new_lines = lines[:start_idx + 1] + final_imports + lines[end_idx:]
with open(path, 'w') as f:
f.writelines(new_lines)
print(f"Reordered imports in {path}")
reorder_imports("schemas/20251121/linkml/01_custodian_name_modular.yaml")

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
{
"generated": "2026-02-01T01:04:01.193Z",
"generated": "2026-02-01T18:55:42.704Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2906,
"categoryCounts": {

View file

@ -20,6 +20,6 @@ classes:
specificity_rationale: Generic utility class/slot created during migration
custodian_types: "['*']"
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_url
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_url

View file

@ -9,10 +9,10 @@ prefixes:
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
- linkml:types
- ../slots/has_or_had_endpoint
- ../slots/has_or_had_provenance
- ../slots/has_or_had_version
classes:
APIRequest:
class_uri: prov:Activity

View file

@ -9,9 +9,9 @@ prefixes:
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
- linkml:types
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
classes:
APIVersion:
class_uri: schema:SoftwareApplication

View file

@ -15,9 +15,9 @@ prefixes:
xsd: http://www.w3.org/2001/XMLSchema#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_name
- ../slots/has_or_had_type
- linkml:types
- ../slots/has_or_had_name
- ../slots/has_or_had_type
classes:
AVEquipment:
class_uri: schema:Product

View file

@ -8,28 +8,15 @@ prefixes:
rico: https://www.ica.org/standards/RiC/ontology#
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
- ./DualClassLink
- ./Scope
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./WikiDataEntry
- ./WikidataAlignment
- 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
classes:
AcademicArchive:
is_a: ArchiveOrganizationType
@ -40,7 +27,6 @@ classes:
- hold_or_held_record_set_type
- has_or_had_hypernym
- has_or_had_label
- specificity_annotation
- has_or_had_score
- is_or_was_related_to
structured_aliases:

View file

@ -8,16 +8,11 @@ prefixes:
rico: https://www.ica.org/standards/RiC/ontology#
wd: http://www.wikidata.org/entity/
imports:
- linkml:types
- ../slots/has_or_had_scope
- ../slots/has_or_had_score
- ../slots/has_or_had_type
- ../slots/is_or_was_related_to
- ../slots/specificity_annotation
- ./CollectionType
- ./DualClassLink
- ./Scope
- ./WikidataAlignment
- linkml:types
- ../slots/has_or_had_scope
- ../slots/has_or_had_score
- ../slots/has_or_had_type
- ../slots/is_or_was_related_to
classes:
AcademicArchiveRecordSetType:
description: A rico:RecordSetType for classifying collections of academic and
@ -26,7 +21,6 @@ classes:
class_uri: rico:RecordSetType
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- has_or_had_scope
- is_or_was_related_to

View file

@ -12,23 +12,17 @@ prefixes:
bf: http://id.loc.gov/ontologies/bibframe/
default_prefix: hc
imports:
- linkml:types
- ../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
- ./AcademicArchiveRecordSetType
- linkml:types
- ../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
classes:
UniversityAdministrativeFonds:
is_a: AcademicArchiveRecordSetType
@ -67,11 +61,10 @@ classes:
- accreditation records
- executive correspondence
- institutional bylaws
exact_mappings:
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Fonds
broad_mappings:
- wd:Q1643722
- rico:RecordSetType
- skos:Concept
@ -83,7 +76,6 @@ classes:
- rico-rst:Fonds
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- organizational_principle
- organizational_principle_uri
@ -151,11 +143,10 @@ classes:
- disciplinary records
- student organizations
- financial aid records
exact_mappings:
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Series
broad_mappings:
- wd:Q185583
- rico:RecordSetType
- skos:Concept
@ -168,7 +159,6 @@ classes:
- UniversityAdministrativeFonds
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- organizational_principle
- organizational_principle_uri
@ -235,11 +225,10 @@ classes:
- conference papers
- professional papers
- academic papers
exact_mappings:
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Fonds
broad_mappings:
- wd:Q22075301
- rico:RecordSetType
- skos:Concept
@ -255,7 +244,6 @@ classes:
restrictions on access or publication specified by donor agreement.
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- organizational_principle
- organizational_principle_uri
@ -319,11 +307,10 @@ classes:
- event documentation
- building documentation
- campus life
exact_mappings:
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
broad_mappings:
- wd:Q9388534
- rico:RecordSetType
- skos:Concept
@ -339,7 +326,6 @@ classes:
by subject, format, or documentation purpose rather than strict provenance.
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- organizational_principle
- organizational_principle_uri

View file

@ -8,8 +8,8 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_name
- linkml:types
- ../slots/has_or_had_name
classes:
AcademicInstitution:
class_uri: schema:EducationalOrganization

View file

@ -8,8 +8,8 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_name
- linkml:types
- ../slots/has_or_had_name
classes:
AcademicProgram:
class_uri: schema:EducationalOccupationalProgram

View file

@ -9,16 +9,14 @@ prefixes:
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- 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
- 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
classes:
Access:
class_uri: dcterms:RightsStatement

View file

@ -7,11 +7,10 @@ prefixes:
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- ../slots/has_or_had_url
- ./URL
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- ../slots/has_or_had_url
default_prefix: hc
classes:
AccessApplication:

View file

@ -8,8 +8,8 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_description
- linkml:types
- ../slots/has_or_had_description
classes:
AccessControl:
class_uri: schema:DigitalDocumentPermission

View file

@ -7,11 +7,10 @@ prefixes:
hc: https://nde.nl/ontology/hc/
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
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- ../slots/has_or_had_url
default_prefix: hc
classes:
AccessInterface:

View file

@ -8,8 +8,8 @@ prefixes:
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- linkml:types
- ../slots/has_or_had_label
classes:
AccessLevel:
class_uri: skos:Concept

View file

@ -12,37 +12,26 @@ prefixes:
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/credentials_required
- ../slots/cultural_protocol_url
- ../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
- ../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/temporal_extent
- ./AccessLevel
- ./Appointment
- ./Condition
- ./Description
- ./Fee
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./TimeSpan
- linkml:types
- ../slots/credentials_required
- ../slots/cultural_protocol_url
- ../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
- ../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/temporal_extent
classes:
AccessPolicy:
class_uri: premis:RightsStatus
@ -53,8 +42,8 @@ classes:
\ for preservation, not current access\n- Access restricted until triggering conditions (time, event)\n- \"Gray literature\" or un-catalogued backlogs awaiting processing\n"
exact_mappings:
- premis:RightsStatus
- dcterms:accessRights
close_mappings:
- dcterms:accessRights
- rico:Rule
- schema:ActionAccessSpecification
related_mappings:
@ -77,7 +66,6 @@ classes:
- review_date
- rights_statement
- rights_statement_url
- specificity_annotation
- has_or_had_score
- temporal_extent
slot_usage:

View file

@ -9,9 +9,9 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/temporal_extent
- linkml:types
- ../slots/has_or_had_description
- ../slots/temporal_extent
classes:
AccessTriggerEvent:
class_uri: prov:Activity

View file

@ -12,9 +12,9 @@ prefixes:
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
classes:
AccessibilityFeature:
class_uri: schema:LocationFeatureSpecification

View file

@ -8,13 +8,11 @@ prefixes:
rico: https://www.ica.org/standards/RiC/ontology#
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/temporal_extent
- ./Identifier
- ./TimeSpan
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/temporal_extent
default_prefix: hc
classes:
AccessionEvent:

View file

@ -9,10 +9,9 @@ prefixes:
crm: http://www.cidoc-crm.org/cidoc-crm/
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- ./Identifier
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
default_prefix: hc
classes:
AccessionNumber:

View file

@ -12,8 +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

View file

@ -12,8 +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

View file

@ -12,8 +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

View file

@ -12,8 +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

View file

@ -12,8 +12,8 @@ prefixes:
default_prefix: hc
imports:
- linkml:types
- ../slots/temporal_extent
- linkml:types
- ../slots/temporal_extent
classes:
AccreditationEvent:
class_uri: prov:Activity

View file

@ -9,9 +9,9 @@ prefixes:
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
- linkml:types
- ../slots/has_or_had_description
- ../slots/temporal_extent
classes:
Accumulation:
class_uri: rico:AccumulationRelation

View file

@ -9,10 +9,10 @@ prefixes:
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
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- ../slots/has_or_had_value
classes:
AccuracyLevel:
class_uri: skos:Concept

View file

@ -15,15 +15,9 @@ prefixes:
org: http://www.w3.org/ns/org#
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
- ../slots/has_or_had_score
- ../slots/specificity_annotation
- ../slots/temporal_extent
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./TimeSpan
- linkml:types
- ../slots/has_or_had_score
- ../slots/temporal_extent
default_range: string
enums:
AcquisitionMethodEnum:
@ -89,7 +83,6 @@ classes:
- dwc:Event
slots:
- temporal_extent
- specificity_annotation
- has_or_had_score
comments:
- Created per slot_fixes.yaml revision for collection_date migration

View file

@ -1,21 +0,0 @@
id: https://nde.nl/ontology/hc/class/AcquisitionBudget
name: AcquisitionBudget
title: AcquisitionBudget
description: >-
Budget allocated for acquisitions.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
classes:
AcquisitionBudget:
class_uri: schema:MonetaryAmount
description: Acquisition budget.
annotations:
specificity_score: 0.1
specificity_rationale: "Generic utility class created during migration"
custodian_types: '["*"]'
slots:

View file

@ -8,15 +8,11 @@ prefixes:
rico: https://www.ica.org/standards/RiC/ontology#
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
- ../slots/has_or_had_method
- ../slots/has_or_had_origin
- ../slots/has_or_had_provenance
- ../slots/temporal_extent
- ./AcquisitionMethod
- ./Entity
- ./Provenance
- ./TimeSpan
- linkml:types
- ../slots/has_or_had_method
- ../slots/has_or_had_origin
- ../slots/has_or_had_provenance
- ../slots/temporal_extent
default_prefix: hc
classes:
AcquisitionEvent:

View file

@ -14,9 +14,9 @@ prefixes:
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_label
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
default_prefix: hc
classes:
AcquisitionMethod:

View file

@ -13,29 +13,17 @@ prefixes:
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../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
- ./Description
- ./Identifier
- ./Label
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./TimeSpan
- ./Activity
- linkml:types
- ../metadata
- ../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/temporal_extent
classes:
Activity:
class_uri: prov:Activity
@ -58,7 +46,6 @@ classes:
- preceding_activity
- has_or_had_status
- note
- specificity_annotation
- has_or_had_score
slot_usage:
has_or_had_identifier:

View file

@ -12,19 +12,13 @@ prefixes:
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../slots/created
- ../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
- linkml:types
- ../slots/created
- ../slots/has_or_had_description
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_score
- ../slots/modified
classes:
ActivityType:
class_uri: skos:Concept
@ -43,7 +37,6 @@ classes:
slots:
- created
- modified
- specificity_annotation
- has_or_had_score
- has_or_had_description
- has_or_had_identifier

View file

@ -7,8 +7,8 @@ prefixes:
hc: https://nde.nl/ontology/hc/
default_prefix: hc
imports:
- linkml:types
- ./ActivityType
- ./ActivityType
- linkml:types
classes:
ActivityTypes:
class_uri: hc:ActivityTypes

View file

@ -8,9 +8,9 @@ prefixes:
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_name
- ../slots/has_or_had_role
- linkml:types
- ../slots/has_or_had_name
- ../slots/has_or_had_role
classes:
Actor:
class_uri: prov:Agent

View file

@ -12,28 +12,19 @@ prefixes:
dcterms: http://purl.org/dc/terms/
skos: http://www.w3.org/2004/02/skos/core#
imports:
- 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
- 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
default_range: string
classes:
Address:

View file

@ -8,12 +8,10 @@ prefixes:
vcard: http://www.w3.org/2006/vcard/ns#
locn: http://www.w3.org/ns/locn#
imports:
- linkml:types
- ../slots/has_or_had_type
- ../slots/long_name
- ../slots/short_name
- ./ComponentType
- ./ComponentTypes
- linkml:types
- ../slots/has_or_had_type
- ../slots/long_name
- ../slots/short_name
default_range: string
classes:
AddressComponent:

View file

@ -12,17 +12,15 @@ prefixes:
crm: http://www.cidoc-crm.org/cidoc-crm/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_code
- ../slots/has_or_had_description
- ../slots/has_or_had_hypernym
- ../slots/has_or_had_hyponym
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/is_or_was_equivalent_to
- ../slots/is_or_was_related_to
- ./WikiDataIdentifier
- ./AddressType
- linkml:types
- ../slots/has_or_had_code
- ../slots/has_or_had_description
- ../slots/has_or_had_hypernym
- ../slots/has_or_had_hyponym
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/is_or_was_equivalent_to
- ../slots/is_or_was_related_to
classes:
AddressType:
class_uri: skos:Concept

View file

@ -9,8 +9,8 @@ prefixes:
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ./AddressType
- ./AddressType
- linkml:types
classes:
HeadquartersAddress:
is_a: AddressType

View file

@ -9,10 +9,10 @@ prefixes:
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
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
classes:
Administration:
class_uri: org:OrganizationalUnit

View file

@ -14,10 +14,10 @@ prefixes:
xsd: http://www.w3.org/2001/XMLSchema#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_code
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- linkml:types
- ../slots/has_or_had_code
- ../slots/has_or_had_description
- ../slots/has_or_had_label
classes:
AdministrativeLevel:
class_uri: skos:Concept

View file

@ -2,33 +2,17 @@ id: https://nde.nl/ontology/hc/class/administrative-office
name: administrative_office_class
title: AdministrativeOffice Class
imports:
- linkml:types
- ../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/lease_expiry
- ../slots/specificity_annotation
- ./CustodianObservation
- ./FunctionType
- ./ReconstructedEntity
- ./ReconstructionActivity
- ./SpecificityAnnotation
- ./Staff
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./Description
- ./Identifier
- ./Label
- linkml:types
- ../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/lease_expiry
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
@ -63,7 +47,6 @@ classes:
- has_or_had_function
- is_leased
- lease_expiry
- specificity_annotation
- has_or_had_score
- is_or_was_derived_from
- is_or_was_generated_by

View file

@ -12,8 +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

View file

@ -9,7 +9,7 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- linkml:types
classes:
AdmissionFee:
class_uri: schema:PriceSpecification

View file

@ -8,7 +8,7 @@ prefixes:
prov: http://www.w3.org/ns/prov#
xsd: http://www.w3.org/2001/XMLSchema#
imports:
- linkml:types
- linkml:types
default_range: string
classes:
AdmissionInfo:

View file

@ -4,30 +4,18 @@ title: Advertising Radio Archive Type
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
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./WikiDataEntry
- ./WikidataAlignment
- 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
classes:
AdvertisingRadioArchive:
is_a: ArchiveOrganizationType
class_uri: skos:Concept
slots:
- hold_or_held_record_set_type
- specificity_annotation
- has_or_had_score
description: 'Sound archive specializing in advertising radio productions and commercials.

View file

@ -5,13 +5,10 @@ prefixes:
linkml: https://w3id.org/linkml/
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
- ./WikidataAlignment
- linkml:types
- ../slots/has_or_had_score
- ../slots/has_or_had_type
- ../slots/is_or_was_related_to
classes:
AdvertisingRadioArchiveRecordSetType:
description: A rico:RecordSetType for classifying collections of advertising radio productions and commercials within heritage institutions.
@ -29,7 +26,6 @@ classes:
- AdvertisingRadioArchive
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- is_or_was_related_to
annotations:

View file

@ -11,21 +11,15 @@ prefixes:
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../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
- ./AdvertisingRadioArchiveRecordSetType
- linkml:types
- ../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
classes:
RadioAdvertisementCollection:
is_a: AdvertisingRadioArchiveRecordSetType
@ -33,7 +27,7 @@ classes:
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:
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
@ -44,7 +38,6 @@ classes:
- rico:RecordSetType
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- organizational_principle
- organizational_principle_uri
@ -69,16 +62,13 @@ classes:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
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"
exact_mappings:
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Series
@ -89,7 +79,6 @@ classes:
- rico:RecordSetType
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- organizational_principle
- organizational_principle_uri
@ -110,6 +99,3 @@ classes:
record_holder_note:
equals_string: This RecordSetType is typically held by AdvertisingRadioArchive
custodians. Inverse of rico:isOrWasHolderOf.
broad_mappings:
- rico:RecordSetType
- skos:Concept

View file

@ -8,10 +8,10 @@ prefixes:
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_quantity
- ../slots/has_or_had_unit
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_quantity
- ../slots/has_or_had_unit
classes:
Age:
class_uri: schema:QuantitativeValue

View file

@ -8,9 +8,9 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
classes:
Agenda:
class_uri: schema:Action

View file

@ -10,10 +10,10 @@ prefixes:
dcterms: http://purl.org/dc/terms/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_identifier
- ../slots/has_or_had_name
- ../slots/has_or_had_type
- linkml:types
- ../slots/has_or_had_identifier
- ../slots/has_or_had_name
- ../slots/has_or_had_type
classes:
Agent:
class_uri: prov:Agent

View file

@ -7,10 +7,10 @@ prefixes:
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_code
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- linkml:types
- ../slots/has_or_had_code
- ../slots/has_or_had_description
- ../slots/has_or_had_label
classes:
AgentType:
class_uri: skos:Concept

View file

@ -7,8 +7,8 @@ description: 'Concrete subclasses for AgentType taxonomy.
'
imports:
- linkml:types
- ./AgentType
- ./AgentType
- linkml:types
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/

View file

@ -14,12 +14,11 @@ prefixes:
xsd: http://www.w3.org/2001/XMLSchema#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- ../slots/is_or_was_signed_on
- ../slots/temporal_extent
- ./TimeSpan
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- ../slots/is_or_was_signed_on
- ../slots/temporal_extent
classes:
Agreement:
class_uri: schema:Contract

View file

@ -7,11 +7,9 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_quantity
- ../slots/has_or_had_unit
- ./Quantity
- ./Unit
- linkml:types
- ../slots/has_or_had_quantity
- ../slots/has_or_had_unit
classes:
AirChanges:
class_uri: schema:QuantitativeValue

View file

@ -8,10 +8,10 @@ description: 'Represents positioning or alignment information for content elemen
- Visual element placement in layouts
'
imports:
- linkml:types
- ../slots/has_or_had_alignment
- ../slots/has_or_had_unit
- ../slots/has_or_had_value
- 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/

View file

@ -8,20 +8,11 @@ prefixes:
gleif_base: https://www.gleif.org/ontology/Base/
hc: https://nde.nl/ontology/hc/
imports:
- linkml:types
- ../enums/AllocationDomainEnum
- ../metadata
- ../slots/has_or_had_description
- ../slots/has_or_had_score
- ../slots/specificity_annotation
- ./Country
- ./RegistrationAuthority
- ./SpecificityAnnotation
- ./Standard
- ./Subregion
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- linkml:types
- ../enums/AllocationDomainEnum
- ../metadata
- ../slots/has_or_had_description
- ../slots/has_or_had_score
classes:
AllocationAgency:
class_uri: org:FormalOrganization
@ -55,7 +46,6 @@ classes:
- gleif_base:RegistrationAuthority
- schema:Organization
slots:
- specificity_annotation
- has_or_had_score
- name
- name_local

View file

@ -8,9 +8,8 @@ prefixes:
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
- ../slots/temporal_extent
- ./TimeSpan
- linkml:types
- ../slots/temporal_extent
classes:
AllocationEvent:
class_uri: prov:Activity

View file

@ -8,8 +8,8 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_code
- linkml:types
- ../slots/has_or_had_code
classes:
Alpha2Code:
class_uri: skos:Concept

View file

@ -8,8 +8,8 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_code
- linkml:types
- ../slots/has_or_had_code
classes:
Alpha3Code:
class_uri: skos:Concept

View file

@ -1,36 +0,0 @@
id: https://nde.nl/ontology/hc/classes/AlternativeName
name: AlternativeName
title: AlternativeName
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
prov: http://www.w3.org/ns/prov#
xsd: http://www.w3.org/2001/XMLSchema#
skos: http://www.w3.org/2004/02/skos/core#
imports:
- linkml:types
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"
class_uri: skos:altLabel
exact_mappings:
- skos:altLabel
close_mappings:
- schema:alternateName
related_mappings:
- rdfs:label
annotations:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
custodian_types: '[''*'']'
slots:
- name
- language
- source

View file

@ -9,9 +9,9 @@ prefixes:
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
- linkml:types
- ../slots/has_or_had_unit
- ../slots/has_or_had_value
classes:
Altitude:
class_uri: schema:QuantitativeValue

View file

@ -9,10 +9,10 @@ prefixes:
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
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_identifier
- ../slots/temporal_extent
classes:
AmendmentEvent:
class_uri: prov:Activity

View file

@ -15,11 +15,10 @@ prefixes:
xsd: http://www.w3.org/2001/XMLSchema#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- ../slots/is_or_was_categorized_as
- ./Species
- linkml:types
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- ../slots/is_or_was_categorized_as
classes:
Animal:
class_uri: schema:Animal

View file

@ -4,30 +4,18 @@ title: Animal Sound Archive Type
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
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./WikiDataEntry
- ./WikidataAlignment
- 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
classes:
AnimalSoundArchive:
is_a: ArchiveOrganizationType
class_uri: skos:Concept
slots:
- hold_or_held_record_set_type
- specificity_annotation
- has_or_had_score
description: "Archive specializing in animal sound recordings for research and preservation.\n\n**Wikidata**: Q18574935\n\n**Scope**:\nAnimal sound archives (Tierstimmenarchive) preserve:\n- Bioacoustic recordings of wildlife\n- Species identification recordings\n- Environmental soundscapes with animal vocalizations\n- Scientific research recordings\n- Educational materials for species identification\n\n**Scientific Context**:\nThese archives support:\n- Biodiversity monitoring and conservation\n- Species identification and taxonomy\n- Behavioral ecology research\n- Environmental impact assessment\n- Educational outreach\n\n**Related Types**:\n- SoundArchive (Q2230431) - Broader audio collection type\n- ScientificArchive (Q27032095) - Research-focused archives\n\n**Notable Examples**:\n- Tierstimmenarchiv (Museum f\xFCr Naturkunde Berlin)\n- Macaulay Library (Cornell Lab of Ornithology)\n- British Library Sound Archive wildlife collection\n"
slot_usage:

View file

@ -5,13 +5,10 @@ prefixes:
linkml: https://w3id.org/linkml/
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
- ./WikidataAlignment
- linkml:types
- ../slots/has_or_had_score
- ../slots/has_or_had_type
- ../slots/is_or_was_related_to
classes:
AnimalSoundArchiveRecordSetType:
description: A rico:RecordSetType for classifying collections of animal sound archive materials within heritage institutions.
@ -29,7 +26,6 @@ classes:
- AnimalSoundArchive
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- is_or_was_related_to
annotations:

View file

@ -11,21 +11,15 @@ prefixes:
wd: http://www.wikidata.org/entity/
default_prefix: hc
imports:
- linkml:types
- ../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
- ./AnimalSoundArchiveRecordSetType
- linkml:types
- ../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
classes:
BioacousticRecordingCollection:
is_a: AnimalSoundArchiveRecordSetType
@ -33,7 +27,7 @@ classes:
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:
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Collection
@ -44,7 +38,6 @@ classes:
- rico:RecordSetType
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- organizational_principle
- organizational_principle_uri
@ -69,16 +62,13 @@ classes:
specificity_score: 0.1
specificity_rationale: Generic utility class/slot created during migration
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**:\n\
This class is a specialized rico:RecordSetType following the series \norganizational\
\ principle as defined by rico-rst:Series.\n"
exact_mappings:
broad_mappings:
- rico:RecordSetType
related_mappings:
- rico-rst:Series
@ -89,7 +79,6 @@ classes:
- rico:RecordSetType
slots:
- has_or_had_type
- specificity_annotation
- has_or_had_score
- organizational_principle
- organizational_principle_uri
@ -110,6 +99,3 @@ classes:
record_holder_note:
equals_string: This RecordSetType is typically held by AnimalSoundArchive
custodians. Inverse of rico:isOrWasHolderOf.
broad_mappings:
- rico:RecordSetType
- skos:Concept

View file

@ -8,9 +8,9 @@ prefixes:
prov: http://www.w3.org/ns/prov#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_reason
- ../slots/temporal_extent
- linkml:types
- ../slots/has_or_had_reason
- ../slots/temporal_extent
classes:
AnnexCreationEvent:
class_uri: prov:Activity

View file

@ -8,20 +8,12 @@ prefixes:
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../classes/Agent
- ../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
- linkml:types
- ../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
classes:
Annotation:
class_uri: oa:Annotation

View file

@ -16,17 +16,12 @@ prefixes:
xsd: http://www.w3.org/2001/XMLSchema#
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/specificity_annotation
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- linkml:types
- ../metadata
- ../slots/has_or_had_score
- ../slots/motivation_type_description
- ../slots/motivation_type_id
- ../slots/motivation_type_name
classes:
AnnotationMotivationType:
class_uri: oa:Motivation
@ -46,7 +41,6 @@ classes:
- motivation_type_id
- motivation_type_name
- motivation_type_description
- specificity_annotation
- has_or_had_score
slot_usage:
motivation_type_id:

View file

@ -13,20 +13,17 @@ prefixes:
wcag: https://www.w3.org/WAI/WCAG21/
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_score
- ../slots/motivation_type_name
- ../slots/specificity_annotation
- ./AnnotationMotivationType
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ./AnnotationMotivationType
- linkml:types
- ../metadata
- ../slots/has_or_had_score
- ../slots/motivation_type_name
classes:
ClassifyingMotivation:
is_a: AnnotationMotivationType
class_uri: oa:classifying
class_uri: hc:ClassifyingMotivation
exact_mappings:
- oa:classifying
description: 'Motivation for categorizing or classifying content.
@ -78,16 +75,14 @@ classes:
- Iconographic classification (Iconclass)
'
exact_mappings:
- oa:classifying
close_mappings:
- oa:classifying
- skos:Concept
- crm:E17_Type_Assignment
slot_usage:
motivation_type_name:
equals_string: classifying
slots:
- specificity_annotation
- has_or_had_score
comments:
- W3C Web Annotation standard motivation
@ -100,7 +95,9 @@ classes:
- skos:Concept
DescribingMotivation:
is_a: AnnotationMotivationType
class_uri: oa:describing
class_uri: hc:DescribingMotivation
exact_mappings:
- oa:describing
description: 'Motivation for adding descriptive information to content.
@ -152,16 +149,14 @@ classes:
- Video/audio content summarization
'
exact_mappings:
- oa:describing
close_mappings:
- oa:describing
- dcterms:description
- crm:E62_String
slot_usage:
motivation_type_name:
equals_string: describing
slots:
- specificity_annotation
- has_or_had_score
comments:
- W3C Web Annotation standard motivation
@ -170,7 +165,9 @@ classes:
- skos:Concept
IdentifyingMotivation:
is_a: AnnotationMotivationType
class_uri: oa:identifying
class_uri: hc:IdentifyingMotivation
exact_mappings:
- oa:identifying
description: 'Motivation for identifying depicted entities.
@ -222,16 +219,14 @@ classes:
- Object-to-record linking (computer vision)
'
exact_mappings:
- oa:identifying
close_mappings:
- oa:identifying
- crm:E15_Identifier_Assignment
- schema:identifier
slot_usage:
motivation_type_name:
equals_string: identifying
slots:
- specificity_annotation
- has_or_had_score
comments:
- W3C Web Annotation standard motivation
@ -240,7 +235,9 @@ classes:
- skos:Concept
TaggingMotivation:
is_a: AnnotationMotivationType
class_uri: oa:tagging
class_uri: hc:TaggingMotivation
exact_mappings:
- oa:tagging
description: 'Motivation for adding tags or keywords.
@ -292,16 +289,14 @@ classes:
- Folksonomies alongside controlled vocabularies
'
exact_mappings:
- oa:tagging
close_mappings:
- oa:tagging
- skos:Concept
- schema:keywords
slot_usage:
motivation_type_name:
equals_string: tagging
slots:
- specificity_annotation
- has_or_had_score
comments:
- W3C Web Annotation standard motivation
@ -310,7 +305,9 @@ classes:
- skos:Concept
LinkingMotivation:
is_a: AnnotationMotivationType
class_uri: oa:linking
class_uri: hc:LinkingMotivation
exact_mappings:
- oa:linking
description: 'Motivation for linking to external resources.
@ -362,9 +359,8 @@ classes:
- Bibliographic references
'
exact_mappings:
- oa:linking
close_mappings:
- oa:linking
- dcterms:relation
- skos:related
- schema:relatedLink
@ -372,7 +368,6 @@ classes:
motivation_type_name:
equals_string: linking
slots:
- specificity_annotation
- has_or_had_score
comments:
- W3C Web Annotation standard motivation
@ -381,7 +376,9 @@ classes:
- skos:Concept
CommentingMotivation:
is_a: AnnotationMotivationType
class_uri: oa:commenting
class_uri: hc:CommentingMotivation
exact_mappings:
- oa:commenting
description: 'Motivation for adding commentary.
@ -431,16 +428,14 @@ classes:
- Community engagement features
'
exact_mappings:
- oa:commenting
close_mappings:
- oa:commenting
- schema:Comment
- schema:UserComments
slot_usage:
motivation_type_name:
equals_string: commenting
slots:
- specificity_annotation
- has_or_had_score
comments:
- W3C Web Annotation standard motivation
@ -524,7 +519,6 @@ classes:
motivation_type_name:
equals_string: accessibility
slots:
- specificity_annotation
- has_or_had_score
comments:
- Heritage-specific extension beyond W3C standard
@ -607,7 +601,6 @@ classes:
motivation_type_name:
equals_string: discovery
slots:
- specificity_annotation
- has_or_had_score
comments:
- Heritage-specific extension beyond W3C standard
@ -692,7 +685,6 @@ classes:
motivation_type_name:
equals_string: preservation
slots:
- specificity_annotation
- has_or_had_score
comments:
- Heritage-specific extension beyond W3C standard
@ -775,7 +767,6 @@ classes:
motivation_type_name:
equals_string: research
slots:
- specificity_annotation
- has_or_had_score
comments:
- Heritage-specific extension beyond W3C standard

View file

@ -7,10 +7,10 @@ prefixes:
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_code
- ../slots/has_or_had_description
- ../slots/has_or_had_label
- linkml:types
- ../slots/has_or_had_code
- ../slots/has_or_had_description
- ../slots/has_or_had_label
classes:
AnnotationType:
class_uri: skos:Concept

View file

@ -7,14 +7,14 @@ description: 'Concrete subclasses for AnnotationType taxonomy.
'
imports:
- linkml:types
- ./AnnotationType
- ./AnnotationType
- linkml:types
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
default_prefix: hc
classes:
Comment:
CommentAnnotation:
is_a: AnnotationType
class_uri: hc:Comment
description: A comment on a resource.
@ -24,7 +24,7 @@ classes:
custodian_types: '[''*'']'
broad_mappings:
- skos:Concept
Tag:
TagAnnotation:
is_a: AnnotationType
class_uri: hc:Tag
description: A tag or keyword associated with a resource.

View file

@ -5,7 +5,7 @@ prefixes:
hc: https://nde.nl/ontology/hc/
owl: http://www.w3.org/2002/07/owl#
imports:
- linkml:types
- linkml:types
classes:
Any:
class_uri: owl:Thing

View file

@ -12,18 +12,11 @@ prefixes:
dcterms: http://purl.org/dc/terms/
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
imports:
- linkml:types
- ../enums/AppellationTypeEnum
- ../metadata
- ../slots/has_or_had_score
- ../slots/is_or_was_alternative_form_of
- ../slots/specificity_annotation
- ./CustodianName
- ./Label
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- linkml:types
- ../enums/AppellationTypeEnum
- ../metadata
- ../slots/has_or_had_score
- ../slots/is_or_was_alternative_form_of
classes:
CustodianAppellation:
class_uri: crm:E41_Appellation
@ -38,12 +31,12 @@ classes:
- rdfs:label
- dcterms:title
slots:
- specificity_annotation
- has_or_had_score
- is_or_was_alternative_form_of
slot_usage:
is_or_was_alternative_form_of:
range: Label
range: uriorcurie
# range: Label
inlined: true
examples:
- value: "Label:\n label_value: \"Rijksmuseum\"\n label_language: \"nl\"\n"

View file

@ -9,8 +9,8 @@ prefixes:
rico: https://www.ica.org/standards/RiC/ontology#
wd: http://www.wikidata.org/entity/
imports:
- linkml:types
- ../slots/has_or_had_label
- linkml:types
- ../slots/has_or_had_label
classes:
AppellationType:
class_uri: skos:Concept

View file

@ -10,12 +10,11 @@ prefixes:
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_type
- ./ApplicantType
- linkml:types
- ../metadata
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- ../slots/has_or_had_type
classes:
Applicant:
class_uri: schema:Person

View file

@ -14,13 +14,11 @@ prefixes:
xsd: http://www.w3.org/2001/XMLSchema#
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/can_or_could_be_fulfilled_by
- ../slots/has_or_had_description
- ../slots/imposes_or_imposed
- ./Applicant
- ./GeographicExtent
- linkml:types
- ../metadata
- ../slots/can_or_could_be_fulfilled_by
- ../slots/has_or_had_description
- ../slots/imposes_or_imposed
classes:
ApplicantRequirement:
class_uri: schema:Requirement

View file

@ -10,10 +10,10 @@ prefixes:
default_prefix: hc
imports:
- linkml:types
- ../metadata
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
- linkml:types
- ../metadata
- ../slots/has_or_had_identifier
- ../slots/has_or_had_label
classes:
ApplicantType:
class_uri: skos:Concept

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