From 181991940f8f37b0cb4c5faea3438a8e702169c5 Mon Sep 17 00:00:00 2001 From: kempersc Date: Wed, 7 Jan 2026 22:03:58 +0100 Subject: [PATCH] Add new LinkML schema modules for specificity and Wikidata alignment New classes: - SpecificityAnnotation: Track class relevance scores per template - TemplateSpecificityScores: 10 conversation template scores - WikidataAlignment: Link classes to Wikidata entities - DualClassLink: Model dual-aspect class relationships New enums: - WikidataMappingTypeEnum: exact/close/narrow/broad/related mappings - DualClassPatternEnum: place-custodian, collection-custodian patterns New slots (44 files): - Specificity slots: score, rationale, agent, timestamp - Template scores: archive_search, museum_search, library_search, etc. - Wikidata slots: entity_id, label, mapping_type, rationale - Multilingual labels: label_nl, label_de, label_fr, label_es, etc. - Custodian type annotations: custodian_types, rationale, primary - SKOS hierarchy: skos_broader, skos_narrower, skos_related --- .../linkml/modules/classes/DualClassLink.yaml | 44 + .../classes/SpecificityAnnotation.yaml | 50 ++ .../classes/TemplateSpecificityScores.yaml | 63 ++ .../modules/classes/WikidataAlignment.yaml | 79 ++ .../modules/enums/DualClassPatternEnum.yaml | 35 + .../enums/WikidataMappingTypeEnum.yaml | 49 ++ .../modules/slots/archive_search_score.yaml | 27 + .../modules/slots/class_metadata_slots.yaml | 811 +++--------------- .../slots/collection_discovery_score.yaml | 27 + .../linkml/modules/slots/custodian_only.yaml | 28 + .../linkml/modules/slots/custodian_types.yaml | 57 ++ .../slots/custodian_types_primary.yaml | 31 + .../slots/custodian_types_rationale.yaml | 30 + .../modules/slots/digital_platform_score.yaml | 27 + .../linkml/modules/slots/dual_class_link.yaml | 30 + .../linkml/modules/slots/dual_class_role.yaml | 33 + .../modules/slots/general_heritage_score.yaml | 27 + .../modules/slots/geographic_restriction.yaml | 32 + .../slots/identifier_lookup_score.yaml | 27 + .../linkml/modules/slots/label_de.yaml | 28 + .../linkml/modules/slots/label_es.yaml | 28 + .../linkml/modules/slots/label_fr.yaml | 28 + .../linkml/modules/slots/label_it.yaml | 28 + .../linkml/modules/slots/label_nl.yaml | 28 + .../linkml/modules/slots/label_pt.yaml | 28 + .../modules/slots/library_search_score.yaml | 27 + .../linkml/modules/slots/link_rationale.yaml | 31 + .../modules/slots/linked_class_name.yaml | 33 + .../modules/slots/location_browse_score.yaml | 27 + .../modules/slots/museum_search_score.yaml | 27 + .../slots/organizational_change_score.yaml | 27 + .../modules/slots/organizational_level.yaml | 32 + .../modules/slots/person_research_score.yaml | 27 + .../linkml/modules/slots/skos_broader.yaml | 34 + .../modules/slots/skos_broader_label.yaml | 31 + .../linkml/modules/slots/skos_narrower.yaml | 34 + .../linkml/modules/slots/skos_related.yaml | 32 + .../modules/slots/specificity_agent.yaml | 33 + .../modules/slots/specificity_annotation.yaml | 30 + .../modules/slots/specificity_rationale.yaml | 31 + .../modules/slots/specificity_score.yaml | 41 + .../modules/slots/specificity_timestamp.yaml | 31 + .../modules/slots/template_specificity.yaml | 30 + .../modules/slots/wikidata_alignment.yaml | 30 + .../modules/slots/wikidata_entity_id.yaml | 36 + .../modules/slots/wikidata_entity_label.yaml | 31 + .../slots/wikidata_mapping_rationale.yaml | 31 + .../modules/slots/wikidata_mapping_type.yaml | 34 + 48 files changed, 1696 insertions(+), 699 deletions(-) create mode 100644 schemas/20251121/linkml/modules/classes/DualClassLink.yaml create mode 100644 schemas/20251121/linkml/modules/classes/SpecificityAnnotation.yaml create mode 100644 schemas/20251121/linkml/modules/classes/TemplateSpecificityScores.yaml create mode 100644 schemas/20251121/linkml/modules/classes/WikidataAlignment.yaml create mode 100644 schemas/20251121/linkml/modules/enums/DualClassPatternEnum.yaml create mode 100644 schemas/20251121/linkml/modules/enums/WikidataMappingTypeEnum.yaml create mode 100644 schemas/20251121/linkml/modules/slots/archive_search_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/collection_discovery_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/custodian_only.yaml create mode 100644 schemas/20251121/linkml/modules/slots/custodian_types.yaml create mode 100644 schemas/20251121/linkml/modules/slots/custodian_types_primary.yaml create mode 100644 schemas/20251121/linkml/modules/slots/custodian_types_rationale.yaml create mode 100644 schemas/20251121/linkml/modules/slots/digital_platform_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/dual_class_link.yaml create mode 100644 schemas/20251121/linkml/modules/slots/dual_class_role.yaml create mode 100644 schemas/20251121/linkml/modules/slots/general_heritage_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/geographic_restriction.yaml create mode 100644 schemas/20251121/linkml/modules/slots/identifier_lookup_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/label_de.yaml create mode 100644 schemas/20251121/linkml/modules/slots/label_es.yaml create mode 100644 schemas/20251121/linkml/modules/slots/label_fr.yaml create mode 100644 schemas/20251121/linkml/modules/slots/label_it.yaml create mode 100644 schemas/20251121/linkml/modules/slots/label_nl.yaml create mode 100644 schemas/20251121/linkml/modules/slots/label_pt.yaml create mode 100644 schemas/20251121/linkml/modules/slots/library_search_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/link_rationale.yaml create mode 100644 schemas/20251121/linkml/modules/slots/linked_class_name.yaml create mode 100644 schemas/20251121/linkml/modules/slots/location_browse_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/museum_search_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/organizational_change_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/organizational_level.yaml create mode 100644 schemas/20251121/linkml/modules/slots/person_research_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/skos_broader.yaml create mode 100644 schemas/20251121/linkml/modules/slots/skos_broader_label.yaml create mode 100644 schemas/20251121/linkml/modules/slots/skos_narrower.yaml create mode 100644 schemas/20251121/linkml/modules/slots/skos_related.yaml create mode 100644 schemas/20251121/linkml/modules/slots/specificity_agent.yaml create mode 100644 schemas/20251121/linkml/modules/slots/specificity_annotation.yaml create mode 100644 schemas/20251121/linkml/modules/slots/specificity_rationale.yaml create mode 100644 schemas/20251121/linkml/modules/slots/specificity_score.yaml create mode 100644 schemas/20251121/linkml/modules/slots/specificity_timestamp.yaml create mode 100644 schemas/20251121/linkml/modules/slots/template_specificity.yaml create mode 100644 schemas/20251121/linkml/modules/slots/wikidata_alignment.yaml create mode 100644 schemas/20251121/linkml/modules/slots/wikidata_entity_id.yaml create mode 100644 schemas/20251121/linkml/modules/slots/wikidata_entity_label.yaml create mode 100644 schemas/20251121/linkml/modules/slots/wikidata_mapping_rationale.yaml create mode 100644 schemas/20251121/linkml/modules/slots/wikidata_mapping_type.yaml diff --git a/schemas/20251121/linkml/modules/classes/DualClassLink.yaml b/schemas/20251121/linkml/modules/classes/DualClassLink.yaml new file mode 100644 index 0000000000..f186740621 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/DualClassLink.yaml @@ -0,0 +1,44 @@ +# DualClassLink +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Structured metadata for dual-class pattern linking. +# Connects custodian types to their corresponding collection types and vice versa. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/class/DualClassLink +name: DualClassLink +title: Dual-Class Link + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + rdfs: http://www.w3.org/2000/01/rdf-schema# + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + - ../enums/DualClassPatternEnum + - ../slots/dual_class_role + - ../slots/linked_class_name + - ../slots/link_rationale + +classes: + DualClassLink: + class_uri: hc:DualClassLink + description: | + Structured metadata for dual-class pattern linking. + Connects custodian types to their corresponding collection types and vice versa. + + **Pattern**: + - Custodian type (organization) ↔ Collection type (rico:RecordSetType) + - E.g., AcademicArchive (custodian) ↔ AcademicArchiveRecordSetType (collection) + slots: + - dual_class_role + - linked_class_name + - link_rationale + annotations: + specificity_score: 0.4 + specificity_rationale: "Structural pattern for heritage ontology class linking" diff --git a/schemas/20251121/linkml/modules/classes/SpecificityAnnotation.yaml b/schemas/20251121/linkml/modules/classes/SpecificityAnnotation.yaml new file mode 100644 index 0000000000..fd9394bad9 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/SpecificityAnnotation.yaml @@ -0,0 +1,50 @@ +# SpecificityAnnotation +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Structured metadata for RAG retrieval specificity scoring. +# Documents how specific/general a class is for different search templates. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/class/SpecificityAnnotation +name: SpecificityAnnotation +title: Specificity Annotation + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + prov: http://www.w3.org/ns/prov# + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + - ../slots/specificity_score + - ../slots/specificity_rationale + - ../slots/specificity_timestamp + - ../slots/specificity_agent + - ../slots/template_specificity + +classes: + SpecificityAnnotation: + class_uri: hc:SpecificityAnnotation + description: | + Structured metadata for RAG retrieval specificity scoring. + Documents how specific/general a class is for different search templates. + + **Scoring Semantics** (LOWER = more broadly relevant): + - 0.00-0.20: Universal (HeritageCustodian, Location) + - 0.20-0.40: Broadly useful (Collection, Identifier) + - 0.40-0.60: Moderately specific (ChangeEvent, PersonProfile) + - 0.60-0.80: Fairly specific (Archive, Museum, Library) + - 0.80-1.00: Highly specific (LinkedInConnectionExtraction) + slots: + - specificity_score + - specificity_rationale + - specificity_timestamp + - specificity_agent + - template_specificity + annotations: + specificity_score: 0.2 + specificity_rationale: "Meta-class for specificity annotations" diff --git a/schemas/20251121/linkml/modules/classes/TemplateSpecificityScores.yaml b/schemas/20251121/linkml/modules/classes/TemplateSpecificityScores.yaml new file mode 100644 index 0000000000..211625945c --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/TemplateSpecificityScores.yaml @@ -0,0 +1,63 @@ +# TemplateSpecificityScores +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Per-template specificity scores for RAG context filtering. +# Allows different relevance weights for different conversation templates. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/class/TemplateSpecificityScores +name: TemplateSpecificityScores +title: Template Specificity Scores + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + - ../slots/archive_search_score + - ../slots/museum_search_score + - ../slots/library_search_score + - ../slots/collection_discovery_score + - ../slots/person_research_score + - ../slots/location_browse_score + - ../slots/identifier_lookup_score + - ../slots/organizational_change_score + - ../slots/digital_platform_score + - ../slots/general_heritage_score + +classes: + TemplateSpecificityScores: + class_uri: hc:TemplateSpecificityScores + description: | + Per-template specificity scores for RAG context filtering. + Allows different relevance weights for different conversation templates. + + **Templates**: + - archive_search: Archival institution queries + - museum_search: Museum and gallery queries + - library_search: Library and bibliographic queries + - collection_discovery: Collection exploration + - person_research: Staff and personnel queries + - location_browse: Geographic browsing + - identifier_lookup: Identifier resolution + - organizational_change: Change event queries + - digital_platform: Digital systems queries + - general_heritage: Fallback for unclassified queries + slots: + - archive_search_score + - museum_search_score + - library_search_score + - collection_discovery_score + - person_research_score + - location_browse_score + - identifier_lookup_score + - organizational_change_score + - digital_platform_score + - general_heritage_score + annotations: + specificity_score: 0.3 + specificity_rationale: "Template-specific relevance scoring" diff --git a/schemas/20251121/linkml/modules/classes/WikidataAlignment.yaml b/schemas/20251121/linkml/modules/classes/WikidataAlignment.yaml new file mode 100644 index 0000000000..149133b042 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/WikidataAlignment.yaml @@ -0,0 +1,79 @@ +# WikidataAlignment +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Structured metadata for Wikidata entity alignment. +# Replaces fragmented annotations with a proper structured object. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/class/WikidataAlignment +name: WikidataAlignment +title: Wikidata Alignment + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + wdt: http://www.wikidata.org/prop/direct/ + rdfs: http://www.w3.org/2000/01/rdf-schema# + +default_prefix: hc + +imports: + - linkml:types + - ../enums/WikidataMappingTypeEnum + +# Slot definitions are inlined here to avoid circular imports +# These slots are also available separately in ../slots/ for reuse + +slots: + wikidata_entity_id: + slot_uri: wdt:P31 + description: | + Wikidata entity ID (Q-number) for this class. + Links to the corresponding Wikidata concept. + range: string + pattern: "^Q[0-9]+$" + + wikidata_entity_label: + slot_uri: rdfs:label + description: | + Human-readable label for the linked Wikidata entity. + Stored for display purposes to avoid repeated API calls. + range: string + + wikidata_mapping_type: + slot_uri: skos:mappingRelation + description: | + Type of semantic mapping relationship to the Wikidata entity. + range: WikidataMappingTypeEnum + + wikidata_mapping_rationale: + slot_uri: skos:note + description: | + Explanation of the Wikidata mapping relationship. + range: string + +classes: + WikidataAlignment: + class_uri: hc:WikidataAlignment + description: | + Structured metadata for Wikidata entity alignment. + Replaces fragmented annotations with a proper structured object. + + **Example**: + ```yaml + wikidata_alignment: + entity_id: Q27032435 + entity_label: "academic archive" + mapping_type: exact + mapping_rationale: "AcademicArchive is semantically equivalent to Q27032435" + ``` + slots: + - wikidata_entity_id + - wikidata_entity_label + - wikidata_mapping_type + - wikidata_mapping_rationale + annotations: + specificity_score: 0.3 + specificity_rationale: "Universal utility for Wikidata alignment metadata" diff --git a/schemas/20251121/linkml/modules/enums/DualClassPatternEnum.yaml b/schemas/20251121/linkml/modules/enums/DualClassPatternEnum.yaml new file mode 100644 index 0000000000..4f80a78f54 --- /dev/null +++ b/schemas/20251121/linkml/modules/enums/DualClassPatternEnum.yaml @@ -0,0 +1,35 @@ +# DualClassPatternEnum +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Role in the dual-class pattern for heritage ontology. +# Distinguishes between custodian types (organizations) and collection types (materials). +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/enum/DualClassPatternEnum +name: DualClassPatternEnum +title: Dual-Class Pattern Enum + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +enums: + DualClassPatternEnum: + description: | + Role in the dual-class pattern for heritage ontology. + Distinguishes between custodian types (organizations) and collection types (materials). + permissible_values: + custodian_type: + description: | + This class represents the CUSTODIAN type (the organization). + Maps to cpov:PublicOrganisation or schema:Organization. + collection_type: + description: | + This class represents the COLLECTION type (rico:RecordSetType). + Maps to rico:RecordSetType for classifying record sets. diff --git a/schemas/20251121/linkml/modules/enums/WikidataMappingTypeEnum.yaml b/schemas/20251121/linkml/modules/enums/WikidataMappingTypeEnum.yaml new file mode 100644 index 0000000000..cf12c2e935 --- /dev/null +++ b/schemas/20251121/linkml/modules/enums/WikidataMappingTypeEnum.yaml @@ -0,0 +1,49 @@ +# WikidataMappingTypeEnum +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Type of mapping relationship to Wikidata entity. +# Indicates semantic relationship between this class and the Wikidata concept. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/enum/WikidataMappingTypeEnum +name: WikidataMappingTypeEnum +title: Wikidata Mapping Type Enum + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +enums: + WikidataMappingTypeEnum: + description: | + Type of mapping relationship to Wikidata entity. + Indicates semantic relationship between this class and the Wikidata concept. + permissible_values: + exact: + description: Exact semantic match - concepts are interchangeable + meaning: skos:exactMatch + close: + description: Close semantic match - concepts are similar but not identical + meaning: skos:closeMatch + broad: + description: Wikidata entity is broader/more general + meaning: skos:broadMatch + narrow: + description: Wikidata entity is narrower/more specific + meaning: skos:narrowMatch + related: + description: Associative relationship, not hierarchical + meaning: skos:relatedMatch + ontonym: + description: | + The Wikidata entity describes a broader concept (the organization type) + rather than the specific record set type being defined. Common in + dual-class patterns where Wikidata lacks separate entities for + collection types vs custodian types. diff --git a/schemas/20251121/linkml/modules/slots/archive_search_score.yaml b/schemas/20251121/linkml/modules/slots/archive_search_score.yaml new file mode 100644 index 0000000000..70129eeeeb --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/archive_search_score.yaml @@ -0,0 +1,27 @@ +# archive_search_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for archival institution queries +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/archive_search_score +name: archive_search_score_slot +title: Archive Search Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + archive_search_score: + slot_uri: hc:archiveSearchScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for archival institution queries diff --git a/schemas/20251121/linkml/modules/slots/class_metadata_slots.yaml b/schemas/20251121/linkml/modules/slots/class_metadata_slots.yaml index 1482380daa..a1b4005e58 100644 --- a/schemas/20251121/linkml/modules/slots/class_metadata_slots.yaml +++ b/schemas/20251121/linkml/modules/slots/class_metadata_slots.yaml @@ -1,5 +1,10 @@ -# Class Metadata Slots -# Slots for expressing class-level metadata that was previously in annotations +# Class Metadata Slots - Import Bundle +# +# This file serves as an import bundle for all class metadata slots. +# Each slot, enum, and class is now in its own file per Rule 38. +# +# REFACTORED: 2026-01-07 +# Original monolithic file archived at: archive/refactored/class_metadata_slots_monolithic_20260107.yaml # # These slots replace annotations with proper ontology-aligned predicates: # - SKOS for concept relationships (broader, narrower, related) @@ -7,715 +12,123 @@ # - PROV-O for provenance and attribution # - Dublin Core for descriptive metadata # - Custom HC slots for domain-specific metadata -# -# Generation date: 2026-01-06 id: https://nde.nl/ontology/hc/slots/class_metadata name: class_metadata_slots -title: Class Metadata Slots +title: Class Metadata Slots (Import Bundle) prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ - skos: http://www.w3.org/2004/02/skos/core# - wd: http://www.wikidata.org/entity/ - wdt: http://www.wikidata.org/prop/direct/ - dcterms: http://purl.org/dc/terms/ - prov: http://www.w3.org/ns/prov# - pav: http://purl.org/pav/ - rico: https://www.ica.org/standards/RiC/ontology# - owl: http://www.w3.org/2002/07/owl# - rdfs: http://www.w3.org/2000/01/rdf-schema# - schema: http://schema.org/ default_prefix: hc imports: - linkml:types - -# ============================================================================= -# ENUMS -# ============================================================================= - -enums: - # NOTE: CustodianTypeCodeEnum has been REPLACED by CustodianType class hierarchy - # See: ../classes/CustodianType.yaml and its subclasses (ArchiveOrganizationType, - # MuseumType, LibraryType, etc.) - # - # The custodian_types slot now references CustodianType class instead of an enum. - # Single-letter codes (GLAMORCUBESFIXPHDNT) are derived from class hierarchy. - - DualClassPatternEnum: - description: | - Role in the dual-class pattern for heritage ontology. - Distinguishes between custodian types (organizations) and collection types (materials). - permissible_values: - custodian_type: - description: | - This class represents the CUSTODIAN type (the organization). - Maps to cpov:PublicOrganisation or schema:Organization. - collection_type: - description: | - This class represents the COLLECTION type (rico:RecordSetType). - Maps to rico:RecordSetType for classifying record sets. - - WikidataMappingTypeEnum: - description: | - Type of mapping relationship to Wikidata entity. - Indicates semantic relationship between this class and the Wikidata concept. - permissible_values: - exact: - description: Exact semantic match - concepts are interchangeable - meaning: skos:exactMatch - close: - description: Close semantic match - concepts are similar but not identical - meaning: skos:closeMatch - broad: - description: Wikidata entity is broader/more general - meaning: skos:broadMatch - narrow: - description: Wikidata entity is narrower/more specific - meaning: skos:narrowMatch - related: - description: Associative relationship, not hierarchical - meaning: skos:relatedMatch - ontonym: - description: | - The Wikidata entity describes a broader concept (the organization type) - rather than the specific record set type being defined. Common in - dual-class patterns where Wikidata lacks separate entities for - collection types vs custodian types. - -# ============================================================================= -# CLASSES FOR STRUCTURED METADATA -# ============================================================================= - -classes: - WikidataAlignment: - class_uri: hc:WikidataAlignment - description: | - Structured metadata for Wikidata entity alignment. - Replaces fragmented annotations with a proper structured object. - - **Example**: - ```yaml - wikidata_alignment: - entity_id: Q27032435 - entity_label: "academic archive" - mapping_type: exact - mapping_rationale: "AcademicArchive is semantically equivalent to Q27032435" - ``` - slots: - - wikidata_entity_id - - wikidata_entity_label - - wikidata_mapping_type - - wikidata_mapping_rationale - annotations: - specificity_score: 0.3 - specificity_rationale: "Universal utility for Wikidata alignment metadata" - - DualClassLink: - class_uri: hc:DualClassLink - description: | - Structured metadata for dual-class pattern linking. - Connects custodian types to their corresponding collection types and vice versa. - - **Pattern**: - - Custodian type (organization) ↔ Collection type (rico:RecordSetType) - - E.g., AcademicArchive (custodian) ↔ AcademicArchiveRecordSetType (collection) - slots: - - dual_class_role - - linked_class_name - - link_rationale - annotations: - specificity_score: 0.4 - specificity_rationale: "Structural pattern for heritage ontology class linking" - - SpecificityAnnotation: - class_uri: hc:SpecificityAnnotation - description: | - Structured metadata for RAG retrieval specificity scoring. - Documents how specific/general a class is for different search templates. - - **Scoring Semantics** (LOWER = more broadly relevant): - - 0.00-0.20: Universal (HeritageCustodian, Location) - - 0.20-0.40: Broadly useful (Collection, Identifier) - - 0.40-0.60: Moderately specific (ChangeEvent, PersonProfile) - - 0.60-0.80: Fairly specific (Archive, Museum, Library) - - 0.80-1.00: Highly specific (LinkedInConnectionExtraction) - slots: - - specificity_score - - specificity_rationale - - specificity_timestamp - - specificity_agent - - template_specificity - annotations: - specificity_score: 0.2 - specificity_rationale: "Meta-class for specificity annotations" - - TemplateSpecificityScores: - class_uri: hc:TemplateSpecificityScores - description: | - Per-template specificity scores for RAG context filtering. - Allows different relevance weights for different conversation templates. - - **Templates**: - - archive_search: Archival institution queries - - museum_search: Museum and gallery queries - - library_search: Library and bibliographic queries - - collection_discovery: Collection exploration - - person_research: Staff and personnel queries - - location_browse: Geographic browsing - - identifier_lookup: Identifier resolution - - organizational_change: Change event queries - - digital_platform: Digital systems queries - - general_heritage: Fallback for unclassified queries - slots: - - archive_search_score - - museum_search_score - - library_search_score - - collection_discovery_score - - person_research_score - - location_browse_score - - identifier_lookup_score - - organizational_change_score - - digital_platform_score - - general_heritage_score - annotations: - specificity_score: 0.3 - specificity_rationale: "Template-specific relevance scoring" - -# ============================================================================= -# SLOTS - GLAMORCUBESFIXPHDNT CUSTODIAN TYPE CLASSIFICATION -# ============================================================================= - -slots: - # --------------------------------------------------------------------------- - # Custodian Type Classification - # --------------------------------------------------------------------------- - custodian_types: - slot_uri: hc:custodianTypes - description: | - References to CustodianType subclasses that this class applies to. - - **Class Hierarchy** (replaces CustodianTypeCodeEnum): - - ArchiveOrganizationType (A) - - BioCustodianType (B) - - CommercialOrganizationType (C) - - DigitalPlatformType (D) - - EducationProviderType (E) - - FeatureCustodianType (F) - - GalleryType (G) - - HolySacredSiteType (H) - - IntangibleHeritageGroupType (I) - - LibraryType (L) - - MuseumType (M) - - NonProfitType (N) - - OfficialInstitutionType (O) - - PersonalCollectionType (P) - - ResearchOrganizationType (R) - - HeritageSocietyType (S) - - TasteScentHeritageType (T) - - UnspecifiedType (U) - - MixedCustodianType (X) - - **Format**: Use CustodianType class URIs like 'hc:ArchiveOrganizationType'. - All schemas have been migrated from legacy single-letter codes to proper URIs. - range: uriorcurie - multivalued: true - inlined_as_list: true - examples: - - value: 'hc:ArchiveOrganizationType' - description: "Applies to Archive type only" - - value: '["hc:ArchiveOrganizationType", "hc:LibraryType", "hc:MuseumType"]' - description: "Applies to Archive, Library, and Museum types" - - custodian_types_rationale: - slot_uri: hc:custodianTypesRationale - description: | - Explanation of why specific custodian types were assigned. - Provides audit trail for type classification decisions. - range: string - examples: - - value: "AcademicArchive is an archival institution - maps to ArchiveOrganizationType" - description: "Rationale for archive classification" - - custodian_types_primary: - slot_uri: hc:custodianTypesPrimary - description: | - The primary custodian type when multiple types apply. - Used for mixed-type institutions to identify the dominant function. - References a CustodianType subclass. - range: uriorcurie - examples: - - value: "hc:ArchiveOrganizationType" - description: "Primary type is Archive" - - # --------------------------------------------------------------------------- - # Wikidata Alignment (replaces wikidata, wikidata_label annotations) - # --------------------------------------------------------------------------- - - wikidata_entity_id: - slot_uri: wdt:P31 - description: | - Wikidata entity ID (Q-number) for this class. - Links to the corresponding Wikidata concept. - - **Predicate**: Uses wdt:P31 (instance of) pattern from Wikidata. - range: string - pattern: "^Q[0-9]+$" - examples: - - value: "Q27032435" - description: "academic archive" - - value: "Q166118" - description: "archive" - - wikidata_entity_label: - slot_uri: rdfs:label - description: | - Human-readable label for the linked Wikidata entity. - Stored for display purposes to avoid repeated API calls. - range: string - examples: - - value: "academic archive" - description: "Label for Q27032435" - - wikidata_mapping_type: - slot_uri: skos:mappingRelation - description: | - Type of semantic mapping relationship to the Wikidata entity. - Indicates how closely this class aligns with the Wikidata concept. - range: WikidataMappingTypeEnum - examples: - - value: "exact" - description: "Exact semantic match" - - value: "ontonym" - description: "Wikidata describes broader concept" - - wikidata_mapping_rationale: - slot_uri: skos:note - description: | - Explanation of the Wikidata mapping relationship. - Documents why a particular mapping type was chosen. - range: string - examples: - - value: "The Wikidata entity Q27032435 describes the broader concept of 'academic archive' (the organization), not specifically the record set type." - description: "Ontonym mapping rationale" - - wikidata_alignment: - slot_uri: hc:wikidataAlignment - description: | - Structured Wikidata alignment metadata. - Combines entity ID, label, mapping type, and rationale in one object. - range: WikidataAlignment - inlined: true - - # --------------------------------------------------------------------------- - # SKOS Hierarchical Relationships (replaces skos_broader annotation) - # --------------------------------------------------------------------------- - - skos_broader: - slot_uri: skos:broader - description: | - SKOS broader (parent) concept in a concept hierarchy. - Used for taxonomic relationships between heritage custodian types. - - **Example**: AcademicArchive skos:broader wd:Q166118 (archive) - range: uriorcurie - multivalued: true - examples: - - value: "wd:Q166118" - description: "archive (broader concept)" - - skos_broader_label: - slot_uri: rdfs:label - description: | - Human-readable label for the broader concept. - Stored for display to avoid repeated lookups. - range: string - examples: - - value: "archive" - description: "Label for wd:Q166118" - - skos_narrower: - slot_uri: skos:narrower - description: | - SKOS narrower (child) concepts in a concept hierarchy. - Used for taxonomic relationships to more specific types. - - **Example**: archive skos:narrower AcademicArchive - range: uriorcurie - multivalued: true - examples: - - value: "hc:UniversityArchive" - description: "More specific university archive type" - - skos_related: - slot_uri: skos:related - description: | - SKOS related concepts (associative, non-hierarchical). - Used for concepts that are related but not in a parent-child relationship. - range: uriorcurie - multivalued: true - examples: - - value: "wd:Q1065413" - description: "Institutional repository (related but different function)" - - # --------------------------------------------------------------------------- - # Dual-Class Pattern (replaces linked_collection_type, dual_class_pattern) - # --------------------------------------------------------------------------- - - dual_class_role: - slot_uri: hc:dualClassRole - description: | - Role of this class in the dual-class pattern. - Either 'custodian_type' (organization) or 'collection_type' (record set). - range: DualClassPatternEnum - examples: - - value: "custodian_type" - description: "This class represents the organization" - - value: "collection_type" - description: "This class represents the record set type" - - linked_class_name: - slot_uri: rdfs:seeAlso - description: | - Name of the linked class in the dual-class pattern. - If this is a custodian_type, links to the collection_type and vice versa. - range: string - examples: - - value: "AcademicArchiveRecordSetType" - description: "Linked collection type for AcademicArchive custodian" - - value: "AcademicArchive" - description: "Linked custodian type for AcademicArchiveRecordSetType" - - link_rationale: - slot_uri: skos:editorialNote - description: | - Editorial note explaining the dual-class pattern linkage. - Documents the relationship between custodian and collection types. - range: string - examples: - - value: "This class represents the CUSTODIAN type. See linked_class_name for the corresponding rico:RecordSetType." - description: "Custodian type link explanation" - - dual_class_link: - slot_uri: hc:dualClassLink - description: | - Structured dual-class pattern metadata. - Combines role, linked class, and rationale in one object. - range: DualClassLink - inlined: true - - # --------------------------------------------------------------------------- - # Specificity Scoring for RAG (replaces specificity_* annotations) - # --------------------------------------------------------------------------- - - specificity_score: - slot_uri: hc:specificityScore - description: | - Specificity score for RAG retrieval filtering (0.0-1.0). - LOWER scores = more broadly relevant; HIGHER scores = more specific. - - **Score Ranges**: - - 0.00-0.20: Universal (HeritageCustodian, Location) - - 0.20-0.40: Broadly useful (Collection, Identifier) - - 0.40-0.60: Moderately specific (ChangeEvent, PersonProfile) - - 0.60-0.80: Fairly specific (Archive, Museum, Library) - - 0.80-1.00: Highly specific (LinkedInConnectionExtraction) - range: float - minimum_value: 0.0 - maximum_value: 1.0 - examples: - - value: 0.5 - description: "Moderately specific class" - - value: 0.2 - description: "Broadly useful class" - - specificity_rationale: - slot_uri: skos:note - description: | - Explanation for the assigned specificity score. - Documents reasoning for the score value. - range: string - examples: - - value: "Archive-related class with moderate specificity" - description: "Rationale for 0.5 score" - - specificity_timestamp: - slot_uri: prov:generatedAtTime - description: | - ISO 8601 timestamp when the specificity annotation was created. - Enables temporal tracking of annotation changes. - range: datetime - examples: - - value: "2026-01-05T10:51:51Z" - description: "Annotation timestamp" - - specificity_agent: - slot_uri: prov:wasAttributedTo - description: | - Agent (human or AI) that created the specificity annotation. - Uses standard agent identifier format. - range: string - examples: - - value: "opencode-claude-sonnet-4" - description: "AI agent identifier" - - value: "manual-human-curator" - description: "Human curator identifier" - - specificity_annotation: - slot_uri: hc:specificityAnnotation - description: | - Structured specificity annotation metadata. - Combines score, rationale, timestamp, and agent. - range: SpecificityAnnotation - inlined: true - - # Per-template specificity scores + # ============================================================================= + # ENUMS + # ============================================================================= + - ../enums/DualClassPatternEnum + - ../enums/WikidataMappingTypeEnum - template_specificity: - slot_uri: hc:templateSpecificity - description: | - Per-template specificity scores for context-aware RAG filtering. - Allows different relevance weights for different conversation templates. - range: TemplateSpecificityScores - inlined: true + # ============================================================================= + # CLASSES (Structured Metadata Objects) + # ============================================================================= + - ../classes/WikidataAlignment + - ../classes/DualClassLink + - ../classes/SpecificityAnnotation + - ../classes/TemplateSpecificityScores + + # ============================================================================= + # SLOTS - Custodian Type Classification + # ============================================================================= + - ./custodian_types + - ./custodian_types_rationale + - ./custodian_types_primary + + # ============================================================================= + # SLOTS - Wikidata Alignment + # ============================================================================= + - ./wikidata_entity_id + - ./wikidata_entity_label + - ./wikidata_mapping_type + - ./wikidata_mapping_rationale + - ./wikidata_alignment + + # ============================================================================= + # SLOTS - SKOS Hierarchical Relationships + # ============================================================================= + - ./skos_broader + - ./skos_broader_label + - ./skos_narrower + - ./skos_related + + # ============================================================================= + # SLOTS - Dual-Class Pattern + # ============================================================================= + - ./dual_class_role + - ./linked_class_name + - ./link_rationale + - ./dual_class_link + + # ============================================================================= + # SLOTS - Specificity Scoring for RAG + # ============================================================================= + - ./specificity_score + - ./specificity_rationale + - ./specificity_timestamp + - ./specificity_agent + - ./specificity_annotation + - ./template_specificity + + # ============================================================================= + # SLOTS - Per-Template Specificity Scores + # ============================================================================= + - ./archive_search_score + - ./museum_search_score + - ./library_search_score + - ./collection_discovery_score + - ./person_research_score + - ./location_browse_score + - ./identifier_lookup_score + - ./organizational_change_score + - ./digital_platform_score + - ./general_heritage_score + + # ============================================================================= + # SLOTS - RiC-O RecordSet Metadata + # ============================================================================= + - ./rico_organizational_principle + - ./rico_organizational_principle_uri + - ./rico_has_or_had_holder + - ./rico_has_or_had_holder_note + - ./rico_note + + # ============================================================================= + # SLOTS - Scope and Classification + # ============================================================================= + - ./custodian_only + - ./organizational_level + - ./geographic_restriction + + # ============================================================================= + # SLOTS - Multilingual Labels + # ============================================================================= + - ./label_de + - ./label_es + - ./label_fr + - ./label_nl + - ./label_it + - ./label_pt + + # ============================================================================= + # SLOTS - Notes and Documentation + # ============================================================================= + - ./privacy_note + - ./preservation_note + - ./legal_note - archive_search_score: - slot_uri: hc:archiveSearchScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for archival institution queries - - museum_search_score: - slot_uri: hc:museumSearchScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for museum and gallery queries - - library_search_score: - slot_uri: hc:librarySearchScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for library and bibliographic queries - - collection_discovery_score: - slot_uri: hc:collectionDiscoveryScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for collection exploration - - person_research_score: - slot_uri: hc:personResearchScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for staff and personnel queries - - location_browse_score: - slot_uri: hc:locationBrowseScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for geographic browsing - - identifier_lookup_score: - slot_uri: hc:identifierLookupScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for identifier resolution - - organizational_change_score: - slot_uri: hc:organizationalChangeScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for change event queries - - digital_platform_score: - slot_uri: hc:digitalPlatformScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for digital systems queries - - general_heritage_score: - slot_uri: hc:generalHeritageScore - range: float - minimum_value: 0.0 - maximum_value: 1.0 - description: Specificity score for general heritage queries (fallback) - - # --------------------------------------------------------------------------- - # Collection Holdings Relationship (rico:isOrWasHolderOf) - # --------------------------------------------------------------------------- - - # NOTE: holds_record_set_types is defined in ./holds_record_set_types.yaml - # DO NOT duplicate here - import that file instead - - # --------------------------------------------------------------------------- - # RiC-O RecordSet Metadata (for RecordSetType classes) - # --------------------------------------------------------------------------- - - # NOTE: rico_record_set_type is defined in ../slots/rico_record_set_type.yaml - # DO NOT duplicate here - import that file instead - - rico_organizational_principle: - slot_uri: rico:hasOrHadAllMembersWithOrganizationalPrinciple - description: | - The organizational principle by which records in this set are arranged. - From RiC-O vocabulary. - range: string - examples: - - value: "Provenance" - description: "Organized by creator/origin" - - value: "Subject" - description: "Organized by topic" - - rico_organizational_principle_uri: - slot_uri: rico:hasOrHadAllMembersWithOrganizationalPrinciple - description: | - URI for the RiC-O organizational principle. - range: string - examples: - - value: "rico:OrganizationalPrincipleProvenance" - description: "RiC-O provenance principle" - - rico_has_or_had_holder: - slot_uri: rico:hasOrHadHolder - description: | - The custodian type(s) that typically hold this type of record set. - Inverse of rico:isOrWasHolderOf. - range: string - multivalued: true - examples: - - value: "hc:AcademicArchive" - description: "Held by academic archives" - - rico_has_or_had_holder_note: - slot_uri: rico:scopeAndContent - description: | - Note explaining the typical custodial relationship for this record set type. - range: string - - rico_note: - slot_uri: rico:scopeAndContent - description: | - General RiC-O scope and content note for this class. - range: string - - # --------------------------------------------------------------------------- - # Multilingual Labels (SKOS) - # --------------------------------------------------------------------------- - - label_de: - slot_uri: skos:prefLabel - description: German language label for this class - range: string - annotations: - language: de - - label_es: - slot_uri: skos:prefLabel - description: Spanish language label for this class - range: string - annotations: - language: es - - label_fr: - slot_uri: skos:prefLabel - description: French language label for this class - range: string - annotations: - language: fr - - label_nl: - slot_uri: skos:prefLabel - description: Dutch language label for this class - range: string - annotations: - language: nl - - label_it: - slot_uri: skos:prefLabel - description: Italian language label for this class - range: string - annotations: - language: it - - label_pt: - slot_uri: skos:prefLabel - description: Portuguese language label for this class - range: string - annotations: - language: pt - - # --------------------------------------------------------------------------- - # Scope and Classification Metadata - # --------------------------------------------------------------------------- - - # NOTE: scope_includes and scope_excludes are defined in ./type_scope.yaml - # DO NOT duplicate here - - custodian_only: - slot_uri: hc:custodianOnly - description: | - If true, this class represents only a custodian type with no - corresponding rico:RecordSetType collection class. - range: boolean - - # NOTE: custodian_type is defined in ./custodian_type.yaml - # DO NOT duplicate here - - organizational_level: - slot_uri: hc:organizationalLevel - description: | - Administrative/organizational level of this institution type. - Examples: national, regional, provincial, municipal, local - range: string - examples: - - value: "national" - description: "National-level institution" - - value: "municipal" - description: "City/town-level institution" - - geographic_restriction: - slot_uri: hc:geographicRestriction - description: | - Geographic scope or restriction for this class. - Used when a class is specific to certain countries or regions. - range: string - examples: - - value: "France" - description: "Specific to France" - - value: "German-speaking countries" - description: "Germany, Austria, Switzerland" - - # --------------------------------------------------------------------------- - # Notes and Documentation - # --------------------------------------------------------------------------- - - privacy_note: - slot_uri: skos:note - description: | - Note about privacy considerations for this type of record/institution. - range: string - - preservation_note: - slot_uri: skos:note - description: | - Note about preservation considerations for this type of record/institution. - range: string - - legal_note: - slot_uri: skos:note - description: | - Note about legal considerations (access, copyright, retention) for this class. - range: string +# NOTE: All enums, classes, and slots are now defined in their individual files. +# This file serves only as an import bundle for backward compatibility. +# Classes that previously imported class_metadata_slots will continue to work. diff --git a/schemas/20251121/linkml/modules/slots/collection_discovery_score.yaml b/schemas/20251121/linkml/modules/slots/collection_discovery_score.yaml new file mode 100644 index 0000000000..90b4d87e67 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/collection_discovery_score.yaml @@ -0,0 +1,27 @@ +# collection_discovery_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for collection exploration +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/collection_discovery_score +name: collection_discovery_score_slot +title: Collection Discovery Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + collection_discovery_score: + slot_uri: hc:collectionDiscoveryScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for collection exploration diff --git a/schemas/20251121/linkml/modules/slots/custodian_only.yaml b/schemas/20251121/linkml/modules/slots/custodian_only.yaml new file mode 100644 index 0000000000..1d16387bb0 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/custodian_only.yaml @@ -0,0 +1,28 @@ +# custodian_only slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# If true, this class represents only a custodian type with no +# corresponding rico:RecordSetType collection class. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/custodian_only +name: custodian_only_slot +title: Custodian Only Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + custodian_only: + slot_uri: hc:custodianOnly + description: | + If true, this class represents only a custodian type with no + corresponding rico:RecordSetType collection class. + range: boolean diff --git a/schemas/20251121/linkml/modules/slots/custodian_types.yaml b/schemas/20251121/linkml/modules/slots/custodian_types.yaml new file mode 100644 index 0000000000..81f815d803 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/custodian_types.yaml @@ -0,0 +1,57 @@ +# custodian_types slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# References to CustodianType subclasses that this class applies to. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/custodian_types +name: custodian_types_slot +title: Custodian Types Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + custodian_types: + slot_uri: hc:custodianTypes + description: | + References to CustodianType subclasses that this class applies to. + + **Class Hierarchy** (replaces CustodianTypeCodeEnum): + - ArchiveOrganizationType (A) + - BioCustodianType (B) + - CommercialOrganizationType (C) + - DigitalPlatformType (D) + - EducationProviderType (E) + - FeatureCustodianType (F) + - GalleryType (G) + - HolySacredSiteType (H) + - IntangibleHeritageGroupType (I) + - LibraryType (L) + - MuseumType (M) + - NonProfitType (N) + - OfficialInstitutionType (O) + - PersonalCollectionType (P) + - ResearchOrganizationType (R) + - HeritageSocietyType (S) + - TasteScentHeritageType (T) + - UnspecifiedType (U) + - MixedCustodianType (X) + + **Format**: Use CustodianType class URIs like 'hc:ArchiveOrganizationType'. + All schemas have been migrated from legacy single-letter codes to proper URIs. + range: uriorcurie + multivalued: true + inlined_as_list: true + examples: + - value: 'hc:ArchiveOrganizationType' + description: "Applies to Archive type only" + - value: '["hc:ArchiveOrganizationType", "hc:LibraryType", "hc:MuseumType"]' + description: "Applies to Archive, Library, and Museum types" diff --git a/schemas/20251121/linkml/modules/slots/custodian_types_primary.yaml b/schemas/20251121/linkml/modules/slots/custodian_types_primary.yaml new file mode 100644 index 0000000000..3a9cb2e8ba --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/custodian_types_primary.yaml @@ -0,0 +1,31 @@ +# custodian_types_primary slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# The primary custodian type when multiple types apply. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/custodian_types_primary +name: custodian_types_primary_slot +title: Custodian Types Primary Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + custodian_types_primary: + slot_uri: hc:custodianTypesPrimary + description: | + The primary custodian type when multiple types apply. + Used for mixed-type institutions to identify the dominant function. + References a CustodianType subclass. + range: uriorcurie + examples: + - value: "hc:ArchiveOrganizationType" + description: "Primary type is Archive" diff --git a/schemas/20251121/linkml/modules/slots/custodian_types_rationale.yaml b/schemas/20251121/linkml/modules/slots/custodian_types_rationale.yaml new file mode 100644 index 0000000000..498d203a12 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/custodian_types_rationale.yaml @@ -0,0 +1,30 @@ +# custodian_types_rationale slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Explanation of why specific custodian types were assigned. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/custodian_types_rationale +name: custodian_types_rationale_slot +title: Custodian Types Rationale Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + custodian_types_rationale: + slot_uri: hc:custodianTypesRationale + description: | + Explanation of why specific custodian types were assigned. + Provides audit trail for type classification decisions. + range: string + examples: + - value: "AcademicArchive is an archival institution - maps to ArchiveOrganizationType" + description: "Rationale for archive classification" diff --git a/schemas/20251121/linkml/modules/slots/digital_platform_score.yaml b/schemas/20251121/linkml/modules/slots/digital_platform_score.yaml new file mode 100644 index 0000000000..864c771b71 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/digital_platform_score.yaml @@ -0,0 +1,27 @@ +# digital_platform_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for digital systems queries +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/digital_platform_score +name: digital_platform_score_slot +title: Digital Platform Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + digital_platform_score: + slot_uri: hc:digitalPlatformScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for digital systems queries diff --git a/schemas/20251121/linkml/modules/slots/dual_class_link.yaml b/schemas/20251121/linkml/modules/slots/dual_class_link.yaml new file mode 100644 index 0000000000..eae466419b --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/dual_class_link.yaml @@ -0,0 +1,30 @@ +# dual_class_link slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Structured dual-class pattern metadata. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/dual_class_link +name: dual_class_link_slot +title: Dual-Class Link Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + # NOTE: DualClassLink class is defined separately in ../classes/DualClassLink.yaml + # Import that file alongside this slot file when using in a class definition + +slots: + dual_class_link: + slot_uri: hc:dualClassLink + description: | + Structured dual-class pattern metadata. + Combines role, linked class, and rationale in one object. + range: DualClassLink + inlined: true diff --git a/schemas/20251121/linkml/modules/slots/dual_class_role.yaml b/schemas/20251121/linkml/modules/slots/dual_class_role.yaml new file mode 100644 index 0000000000..c0795fb5f5 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/dual_class_role.yaml @@ -0,0 +1,33 @@ +# dual_class_role slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Role of this class in the dual-class pattern. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/dual_class_role +name: dual_class_role_slot +title: Dual-Class Role Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + - ../enums/DualClassPatternEnum + +slots: + dual_class_role: + slot_uri: hc:dualClassRole + description: | + Role of this class in the dual-class pattern. + Either 'custodian_type' (organization) or 'collection_type' (record set). + range: DualClassPatternEnum + examples: + - value: "custodian_type" + description: "This class represents the organization" + - value: "collection_type" + description: "This class represents the record set type" diff --git a/schemas/20251121/linkml/modules/slots/general_heritage_score.yaml b/schemas/20251121/linkml/modules/slots/general_heritage_score.yaml new file mode 100644 index 0000000000..7026a98d2c --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/general_heritage_score.yaml @@ -0,0 +1,27 @@ +# general_heritage_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for general heritage queries (fallback) +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/general_heritage_score +name: general_heritage_score_slot +title: General Heritage Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + general_heritage_score: + slot_uri: hc:generalHeritageScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for general heritage queries (fallback) diff --git a/schemas/20251121/linkml/modules/slots/geographic_restriction.yaml b/schemas/20251121/linkml/modules/slots/geographic_restriction.yaml new file mode 100644 index 0000000000..40123975ea --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/geographic_restriction.yaml @@ -0,0 +1,32 @@ +# geographic_restriction slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Geographic scope or restriction for this class. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/geographic_restriction +name: geographic_restriction_slot +title: Geographic Restriction Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + geographic_restriction: + slot_uri: hc:geographicRestriction + description: | + Geographic scope or restriction for this class. + Used when a class is specific to certain countries or regions. + range: string + examples: + - value: "France" + description: "Specific to France" + - value: "German-speaking countries" + description: "Germany, Austria, Switzerland" diff --git a/schemas/20251121/linkml/modules/slots/identifier_lookup_score.yaml b/schemas/20251121/linkml/modules/slots/identifier_lookup_score.yaml new file mode 100644 index 0000000000..85262f2fd3 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/identifier_lookup_score.yaml @@ -0,0 +1,27 @@ +# identifier_lookup_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for identifier resolution +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/identifier_lookup_score +name: identifier_lookup_score_slot +title: Identifier Lookup Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + identifier_lookup_score: + slot_uri: hc:identifierLookupScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for identifier resolution diff --git a/schemas/20251121/linkml/modules/slots/label_de.yaml b/schemas/20251121/linkml/modules/slots/label_de.yaml new file mode 100644 index 0000000000..9ccd558f5e --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/label_de.yaml @@ -0,0 +1,28 @@ +# label_de slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# German language label for this class +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/label_de +name: label_de_slot +title: German Label Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + label_de: + slot_uri: skos:prefLabel + description: German language label for this class + range: string + annotations: + language: de diff --git a/schemas/20251121/linkml/modules/slots/label_es.yaml b/schemas/20251121/linkml/modules/slots/label_es.yaml new file mode 100644 index 0000000000..50d04fe1fe --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/label_es.yaml @@ -0,0 +1,28 @@ +# label_es slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Spanish language label for this class +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/label_es +name: label_es_slot +title: Spanish Label Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + label_es: + slot_uri: skos:prefLabel + description: Spanish language label for this class + range: string + annotations: + language: es diff --git a/schemas/20251121/linkml/modules/slots/label_fr.yaml b/schemas/20251121/linkml/modules/slots/label_fr.yaml new file mode 100644 index 0000000000..d73db9d46d --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/label_fr.yaml @@ -0,0 +1,28 @@ +# label_fr slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# French language label for this class +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/label_fr +name: label_fr_slot +title: French Label Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + label_fr: + slot_uri: skos:prefLabel + description: French language label for this class + range: string + annotations: + language: fr diff --git a/schemas/20251121/linkml/modules/slots/label_it.yaml b/schemas/20251121/linkml/modules/slots/label_it.yaml new file mode 100644 index 0000000000..1e42e07dc3 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/label_it.yaml @@ -0,0 +1,28 @@ +# label_it slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Italian language label for this class +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/label_it +name: label_it_slot +title: Italian Label Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + label_it: + slot_uri: skos:prefLabel + description: Italian language label for this class + range: string + annotations: + language: it diff --git a/schemas/20251121/linkml/modules/slots/label_nl.yaml b/schemas/20251121/linkml/modules/slots/label_nl.yaml new file mode 100644 index 0000000000..5934bf08a6 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/label_nl.yaml @@ -0,0 +1,28 @@ +# label_nl slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Dutch language label for this class +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/label_nl +name: label_nl_slot +title: Dutch Label Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + label_nl: + slot_uri: skos:prefLabel + description: Dutch language label for this class + range: string + annotations: + language: nl diff --git a/schemas/20251121/linkml/modules/slots/label_pt.yaml b/schemas/20251121/linkml/modules/slots/label_pt.yaml new file mode 100644 index 0000000000..5ce5488768 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/label_pt.yaml @@ -0,0 +1,28 @@ +# label_pt slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Portuguese language label for this class +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/label_pt +name: label_pt_slot +title: Portuguese Label Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + label_pt: + slot_uri: skos:prefLabel + description: Portuguese language label for this class + range: string + annotations: + language: pt diff --git a/schemas/20251121/linkml/modules/slots/library_search_score.yaml b/schemas/20251121/linkml/modules/slots/library_search_score.yaml new file mode 100644 index 0000000000..948bc400f1 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/library_search_score.yaml @@ -0,0 +1,27 @@ +# library_search_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for library and bibliographic queries +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/library_search_score +name: library_search_score_slot +title: Library Search Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + library_search_score: + slot_uri: hc:librarySearchScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for library and bibliographic queries diff --git a/schemas/20251121/linkml/modules/slots/link_rationale.yaml b/schemas/20251121/linkml/modules/slots/link_rationale.yaml new file mode 100644 index 0000000000..21026ee8bc --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/link_rationale.yaml @@ -0,0 +1,31 @@ +# link_rationale slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Editorial note explaining the dual-class pattern linkage. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/link_rationale +name: link_rationale_slot +title: Link Rationale Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + link_rationale: + slot_uri: skos:editorialNote + description: | + Editorial note explaining the dual-class pattern linkage. + Documents the relationship between custodian and collection types. + range: string + examples: + - value: "This class represents the CUSTODIAN type. See linked_class_name for the corresponding rico:RecordSetType." + description: "Custodian type link explanation" diff --git a/schemas/20251121/linkml/modules/slots/linked_class_name.yaml b/schemas/20251121/linkml/modules/slots/linked_class_name.yaml new file mode 100644 index 0000000000..ca879958a9 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/linked_class_name.yaml @@ -0,0 +1,33 @@ +# linked_class_name slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Name of the linked class in the dual-class pattern. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/linked_class_name +name: linked_class_name_slot +title: Linked Class Name Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + rdfs: http://www.w3.org/2000/01/rdf-schema# + +default_prefix: hc + +imports: + - linkml:types + +slots: + linked_class_name: + slot_uri: rdfs:seeAlso + description: | + Name of the linked class in the dual-class pattern. + If this is a custodian_type, links to the collection_type and vice versa. + range: string + examples: + - value: "AcademicArchiveRecordSetType" + description: "Linked collection type for AcademicArchive custodian" + - value: "AcademicArchive" + description: "Linked custodian type for AcademicArchiveRecordSetType" diff --git a/schemas/20251121/linkml/modules/slots/location_browse_score.yaml b/schemas/20251121/linkml/modules/slots/location_browse_score.yaml new file mode 100644 index 0000000000..8dd1736f79 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/location_browse_score.yaml @@ -0,0 +1,27 @@ +# location_browse_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for geographic browsing +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/location_browse_score +name: location_browse_score_slot +title: Location Browse Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + location_browse_score: + slot_uri: hc:locationBrowseScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for geographic browsing diff --git a/schemas/20251121/linkml/modules/slots/museum_search_score.yaml b/schemas/20251121/linkml/modules/slots/museum_search_score.yaml new file mode 100644 index 0000000000..b2d40ddb5d --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/museum_search_score.yaml @@ -0,0 +1,27 @@ +# museum_search_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for museum and gallery queries +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/museum_search_score +name: museum_search_score_slot +title: Museum Search Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + museum_search_score: + slot_uri: hc:museumSearchScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for museum and gallery queries diff --git a/schemas/20251121/linkml/modules/slots/organizational_change_score.yaml b/schemas/20251121/linkml/modules/slots/organizational_change_score.yaml new file mode 100644 index 0000000000..d1990a6316 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/organizational_change_score.yaml @@ -0,0 +1,27 @@ +# organizational_change_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for change event queries +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/organizational_change_score +name: organizational_change_score_slot +title: Organizational Change Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + organizational_change_score: + slot_uri: hc:organizationalChangeScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for change event queries diff --git a/schemas/20251121/linkml/modules/slots/organizational_level.yaml b/schemas/20251121/linkml/modules/slots/organizational_level.yaml new file mode 100644 index 0000000000..dfbfa5a93e --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/organizational_level.yaml @@ -0,0 +1,32 @@ +# organizational_level slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Administrative/organizational level of this institution type. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/organizational_level +name: organizational_level_slot +title: Organizational Level Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + organizational_level: + slot_uri: hc:organizationalLevel + description: | + Administrative/organizational level of this institution type. + Examples: national, regional, provincial, municipal, local + range: string + examples: + - value: "national" + description: "National-level institution" + - value: "municipal" + description: "City/town-level institution" diff --git a/schemas/20251121/linkml/modules/slots/person_research_score.yaml b/schemas/20251121/linkml/modules/slots/person_research_score.yaml new file mode 100644 index 0000000000..cb08536443 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/person_research_score.yaml @@ -0,0 +1,27 @@ +# person_research_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for staff and personnel queries +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/person_research_score +name: person_research_score_slot +title: Person Research Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + person_research_score: + slot_uri: hc:personResearchScore + range: float + minimum_value: 0.0 + maximum_value: 1.0 + description: Specificity score for staff and personnel queries diff --git a/schemas/20251121/linkml/modules/slots/skos_broader.yaml b/schemas/20251121/linkml/modules/slots/skos_broader.yaml new file mode 100644 index 0000000000..64d66c1844 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/skos_broader.yaml @@ -0,0 +1,34 @@ +# skos_broader slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# SKOS broader (parent) concept in a concept hierarchy. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/skos_broader +name: skos_broader_slot +title: SKOS Broader Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + skos_broader: + slot_uri: skos:broader + description: | + SKOS broader (parent) concept in a concept hierarchy. + Used for taxonomic relationships between heritage custodian types. + + **Example**: AcademicArchive skos:broader wd:Q166118 (archive) + range: uriorcurie + multivalued: true + examples: + - value: "wd:Q166118" + description: "archive (broader concept)" diff --git a/schemas/20251121/linkml/modules/slots/skos_broader_label.yaml b/schemas/20251121/linkml/modules/slots/skos_broader_label.yaml new file mode 100644 index 0000000000..49f333517e --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/skos_broader_label.yaml @@ -0,0 +1,31 @@ +# skos_broader_label slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Human-readable label for the broader concept. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/skos_broader_label +name: skos_broader_label_slot +title: SKOS Broader Label Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + rdfs: http://www.w3.org/2000/01/rdf-schema# + +default_prefix: hc + +imports: + - linkml:types + +slots: + skos_broader_label: + slot_uri: rdfs:label + description: | + Human-readable label for the broader concept. + Stored for display to avoid repeated lookups. + range: string + examples: + - value: "archive" + description: "Label for wd:Q166118" diff --git a/schemas/20251121/linkml/modules/slots/skos_narrower.yaml b/schemas/20251121/linkml/modules/slots/skos_narrower.yaml new file mode 100644 index 0000000000..8d3663b972 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/skos_narrower.yaml @@ -0,0 +1,34 @@ +# skos_narrower slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# SKOS narrower (child) concepts in a concept hierarchy. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/skos_narrower +name: skos_narrower_slot +title: SKOS Narrower Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + skos_narrower: + slot_uri: skos:narrower + description: | + SKOS narrower (child) concepts in a concept hierarchy. + Used for taxonomic relationships to more specific types. + + **Example**: archive skos:narrower AcademicArchive + range: uriorcurie + multivalued: true + examples: + - value: "hc:UniversityArchive" + description: "More specific university archive type" diff --git a/schemas/20251121/linkml/modules/slots/skos_related.yaml b/schemas/20251121/linkml/modules/slots/skos_related.yaml new file mode 100644 index 0000000000..1d7db542cf --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/skos_related.yaml @@ -0,0 +1,32 @@ +# skos_related slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# SKOS related concepts (associative, non-hierarchical). +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/skos_related +name: skos_related_slot +title: SKOS Related Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + skos_related: + slot_uri: skos:related + description: | + SKOS related concepts (associative, non-hierarchical). + Used for concepts that are related but not in a parent-child relationship. + range: uriorcurie + multivalued: true + examples: + - value: "wd:Q1065413" + description: "Institutional repository (related but different function)" diff --git a/schemas/20251121/linkml/modules/slots/specificity_agent.yaml b/schemas/20251121/linkml/modules/slots/specificity_agent.yaml new file mode 100644 index 0000000000..c0066761b3 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/specificity_agent.yaml @@ -0,0 +1,33 @@ +# specificity_agent slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Agent (human or AI) that created the specificity annotation. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/specificity_agent +name: specificity_agent_slot +title: Specificity Agent Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + prov: http://www.w3.org/ns/prov# + +default_prefix: hc + +imports: + - linkml:types + +slots: + specificity_agent: + slot_uri: prov:wasAttributedTo + description: | + Agent (human or AI) that created the specificity annotation. + Uses standard agent identifier format. + range: string + examples: + - value: "opencode-claude-sonnet-4" + description: "AI agent identifier" + - value: "manual-human-curator" + description: "Human curator identifier" diff --git a/schemas/20251121/linkml/modules/slots/specificity_annotation.yaml b/schemas/20251121/linkml/modules/slots/specificity_annotation.yaml new file mode 100644 index 0000000000..27e5420bbe --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/specificity_annotation.yaml @@ -0,0 +1,30 @@ +# specificity_annotation slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Structured specificity annotation metadata. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/specificity_annotation +name: specificity_annotation_slot +title: Specificity Annotation Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + # NOTE: SpecificityAnnotation class is defined separately in ../classes/SpecificityAnnotation.yaml + # Import that file alongside this slot file when using in a class definition + +slots: + specificity_annotation: + slot_uri: hc:specificityAnnotation + description: | + Structured specificity annotation metadata. + Combines score, rationale, timestamp, and agent. + range: SpecificityAnnotation + inlined: true diff --git a/schemas/20251121/linkml/modules/slots/specificity_rationale.yaml b/schemas/20251121/linkml/modules/slots/specificity_rationale.yaml new file mode 100644 index 0000000000..d1b229efe9 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/specificity_rationale.yaml @@ -0,0 +1,31 @@ +# specificity_rationale slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Explanation for the assigned specificity score. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/specificity_rationale +name: specificity_rationale_slot +title: Specificity Rationale Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + specificity_rationale: + slot_uri: skos:note + description: | + Explanation for the assigned specificity score. + Documents reasoning for the score value. + range: string + examples: + - value: "Archive-related class with moderate specificity" + description: "Rationale for 0.5 score" diff --git a/schemas/20251121/linkml/modules/slots/specificity_score.yaml b/schemas/20251121/linkml/modules/slots/specificity_score.yaml new file mode 100644 index 0000000000..b31090ffd7 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/specificity_score.yaml @@ -0,0 +1,41 @@ +# specificity_score slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Specificity score for RAG retrieval filtering (0.0-1.0). +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/specificity_score +name: specificity_score_slot +title: Specificity Score Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + specificity_score: + slot_uri: hc:specificityScore + description: | + Specificity score for RAG retrieval filtering (0.0-1.0). + LOWER scores = more broadly relevant; HIGHER scores = more specific. + + **Score Ranges**: + - 0.00-0.20: Universal (HeritageCustodian, Location) + - 0.20-0.40: Broadly useful (Collection, Identifier) + - 0.40-0.60: Moderately specific (ChangeEvent, PersonProfile) + - 0.60-0.80: Fairly specific (Archive, Museum, Library) + - 0.80-1.00: Highly specific (LinkedInConnectionExtraction) + range: float + minimum_value: 0.0 + maximum_value: 1.0 + examples: + - value: 0.5 + description: "Moderately specific class" + - value: 0.2 + description: "Broadly useful class" diff --git a/schemas/20251121/linkml/modules/slots/specificity_timestamp.yaml b/schemas/20251121/linkml/modules/slots/specificity_timestamp.yaml new file mode 100644 index 0000000000..74c8f8184d --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/specificity_timestamp.yaml @@ -0,0 +1,31 @@ +# specificity_timestamp slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# ISO 8601 timestamp when the specificity annotation was created. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/specificity_timestamp +name: specificity_timestamp_slot +title: Specificity Timestamp Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + prov: http://www.w3.org/ns/prov# + +default_prefix: hc + +imports: + - linkml:types + +slots: + specificity_timestamp: + slot_uri: prov:generatedAtTime + description: | + ISO 8601 timestamp when the specificity annotation was created. + Enables temporal tracking of annotation changes. + range: datetime + examples: + - value: "2026-01-05T10:51:51Z" + description: "Annotation timestamp" diff --git a/schemas/20251121/linkml/modules/slots/template_specificity.yaml b/schemas/20251121/linkml/modules/slots/template_specificity.yaml new file mode 100644 index 0000000000..c8e8a226fe --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/template_specificity.yaml @@ -0,0 +1,30 @@ +# template_specificity slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Per-template specificity scores for context-aware RAG filtering. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/template_specificity +name: template_specificity_slot +title: Template Specificity Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + # NOTE: TemplateSpecificityScores class is defined separately in ../classes/TemplateSpecificityScores.yaml + # Import that file alongside this slot file when using in a class definition + +slots: + template_specificity: + slot_uri: hc:templateSpecificity + description: | + Per-template specificity scores for context-aware RAG filtering. + Allows different relevance weights for different conversation templates. + range: TemplateSpecificityScores + inlined: true diff --git a/schemas/20251121/linkml/modules/slots/wikidata_alignment.yaml b/schemas/20251121/linkml/modules/slots/wikidata_alignment.yaml new file mode 100644 index 0000000000..f866f0bf99 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/wikidata_alignment.yaml @@ -0,0 +1,30 @@ +# wikidata_alignment slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Structured Wikidata alignment metadata. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/wikidata_alignment +name: wikidata_alignment_slot +title: Wikidata Alignment Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + +default_prefix: hc + +imports: + - linkml:types + # NOTE: WikidataAlignment class is defined separately in ../classes/WikidataAlignment.yaml + # Import that file alongside this slot file when using in a class definition + +slots: + wikidata_alignment: + slot_uri: hc:wikidataAlignment + description: | + Structured Wikidata alignment metadata. + Combines entity ID, label, mapping type, and rationale in one object. + range: WikidataAlignment + inlined: true diff --git a/schemas/20251121/linkml/modules/slots/wikidata_entity_id.yaml b/schemas/20251121/linkml/modules/slots/wikidata_entity_id.yaml new file mode 100644 index 0000000000..344cac400d --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/wikidata_entity_id.yaml @@ -0,0 +1,36 @@ +# wikidata_entity_id slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Wikidata entity ID (Q-number) for this class. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/wikidata_entity_id +name: wikidata_entity_id_slot +title: Wikidata Entity ID Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + wdt: http://www.wikidata.org/prop/direct/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + wikidata_entity_id: + slot_uri: wdt:P31 + description: | + Wikidata entity ID (Q-number) for this class. + Links to the corresponding Wikidata concept. + + **Predicate**: Uses wdt:P31 (instance of) pattern from Wikidata. + range: string + pattern: "^Q[0-9]+$" + examples: + - value: "Q27032435" + description: "academic archive" + - value: "Q166118" + description: "archive" diff --git a/schemas/20251121/linkml/modules/slots/wikidata_entity_label.yaml b/schemas/20251121/linkml/modules/slots/wikidata_entity_label.yaml new file mode 100644 index 0000000000..25d795a87f --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/wikidata_entity_label.yaml @@ -0,0 +1,31 @@ +# wikidata_entity_label slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Human-readable label for the linked Wikidata entity. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/wikidata_entity_label +name: wikidata_entity_label_slot +title: Wikidata Entity Label Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + rdfs: http://www.w3.org/2000/01/rdf-schema# + +default_prefix: hc + +imports: + - linkml:types + +slots: + wikidata_entity_label: + slot_uri: rdfs:label + description: | + Human-readable label for the linked Wikidata entity. + Stored for display purposes to avoid repeated API calls. + range: string + examples: + - value: "academic archive" + description: "Label for Q27032435" diff --git a/schemas/20251121/linkml/modules/slots/wikidata_mapping_rationale.yaml b/schemas/20251121/linkml/modules/slots/wikidata_mapping_rationale.yaml new file mode 100644 index 0000000000..c1563c23e2 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/wikidata_mapping_rationale.yaml @@ -0,0 +1,31 @@ +# wikidata_mapping_rationale slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Explanation of the Wikidata mapping relationship. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/wikidata_mapping_rationale +name: wikidata_mapping_rationale_slot +title: Wikidata Mapping Rationale Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + +slots: + wikidata_mapping_rationale: + slot_uri: skos:note + description: | + Explanation of the Wikidata mapping relationship. + Documents why a particular mapping type was chosen. + range: string + examples: + - value: "The Wikidata entity Q27032435 describes the broader concept of 'academic archive' (the organization), not specifically the record set type." + description: "Ontonym mapping rationale" diff --git a/schemas/20251121/linkml/modules/slots/wikidata_mapping_type.yaml b/schemas/20251121/linkml/modules/slots/wikidata_mapping_type.yaml new file mode 100644 index 0000000000..6a765466d4 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/wikidata_mapping_type.yaml @@ -0,0 +1,34 @@ +# wikidata_mapping_type slot +# Extracted from class_metadata_slots.yaml for Rule 38 compliance +# +# Type of semantic mapping relationship to the Wikidata entity. +# +# Generation date: 2026-01-07 + +id: https://nde.nl/ontology/hc/slot/wikidata_mapping_type +name: wikidata_mapping_type_slot +title: Wikidata Mapping Type Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + +default_prefix: hc + +imports: + - linkml:types + - ../enums/WikidataMappingTypeEnum + +slots: + wikidata_mapping_type: + slot_uri: skos:mappingRelation + description: | + Type of semantic mapping relationship to the Wikidata entity. + Indicates how closely this class aligns with the Wikidata concept. + range: WikidataMappingTypeEnum + examples: + - value: "exact" + description: "Exact semantic match" + - value: "ontonym" + description: "Wikidata describes broader concept"