feat(schema): migrate collection_focus to has_or_had_category and create Category class; archive collection_discovery_score

This commit is contained in:
kempersc 2026-01-19 16:14:01 +01:00
parent f622450304
commit 79314c48ae
10 changed files with 315 additions and 13 deletions

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-19T14:55:27.224Z",
"generated": "2026-01-19T15:05:33.164Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2969,
"categoryCounts": {

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-19T15:05:33.164Z",
"generated": "2026-01-19T15:14:02.103Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 2969,
"categoryCounts": {

View file

@ -0,0 +1,135 @@
id: https://nde.nl/ontology/hc/class/Category
name: category_class
title: Category Class
# Created per slot_fixes.yaml revision for collection_focus migration
# RULE 53: Structured category class based on SKOS Concept
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
imports:
- linkml:types
- ../slots/specificity_annotation
- ../slots/has_or_had_score
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
default_range: string
enums:
CategoryTypeEnum:
description: Types of categories for classification.
permissible_values:
SUBJECT:
description: Subject or topic category (art, science, history)
meaning: skos:Concept
THEME:
description: Thematic category (Dutch Golden Age, WWII, Islamic art)
MATERIAL:
description: Material or medium category (paintings, manuscripts, specimens)
GEOGRAPHIC:
description: Geographic category (European, Asian, African)
TEMPORAL:
description: Temporal/period category (Medieval, Renaissance, Contemporary)
CREATOR:
description: Creator-focused category (single artist, school, movement)
TYPOLOGY:
description: Typological category (portraits, landscapes, genre scenes)
FORMAT:
description: Format category (books, photographs, digital)
GENRE:
description: Genre category (fiction, documentary, liturgical)
classes:
Category:
class_uri: skos:Concept
description: >-
A category or classification term, based on SKOS Concept model.
Categories represent hierarchical or faceted classifications used to
describe the focus, subject, or scope of collections and items.
**Use cases**:
- Collection focus (thematic specialization)
- Subject classification (AAT, LCSH, custom vocabularies)
- Material classification (medium, format)
- Geographic scope (regions, countries)
- Temporal scope (periods, eras)
**Examples**:
- "Dutch Golden Age paintings" (THEME + TEMPORAL + MATERIAL)
- "Lepidoptera" (SUBJECT, scientific classification)
- "First edition literature" (FORMAT + TYPOLOGY)
exact_mappings:
- skos:Concept
close_mappings:
- schema:DefinedTerm
- dcterms:subject
slots:
- specificity_annotation
- has_or_had_score
attributes:
category_name:
range: string
required: true
description: Name of the category.
slot_uri: skos:prefLabel
category_type:
range: CategoryTypeEnum
description: Type of category (subject, theme, material, geographic, etc.).
category_description:
range: string
description: Description of what this category encompasses.
slot_uri: skos:definition
broader_category:
range: string
description: >-
Broader (parent) category in hierarchy.
E.g., "Paintings" is broader than "Oil paintings"
slot_uri: skos:broader
narrower_category:
range: string
multivalued: true
description: >-
Narrower (child) categories.
E.g., "Oil paintings", "Watercolors" are narrower than "Paintings"
slot_uri: skos:narrower
vocabulary_source:
range: string
description: >-
Source vocabulary or thesaurus (AAT, LCSH, custom).
vocabulary_id:
range: string
description: >-
Identifier in the source vocabulary (e.g., AAT term ID).
comments:
- "Created per slot_fixes.yaml revision for collection_focus migration"
- "SKOS-based category model for collection classification"
- "RULE 53: Part of collection_focus → has_or_had_category + Category migration"
annotations:
specificity_score: 0.45
specificity_rationale: "Broadly useful - applies to many collection contexts"
examples:
- value: |
category_name: "Dutch Golden Age paintings"
category_type: THEME
category_description: "Paintings from the Dutch Golden Age (17th century)"
broader_category: "European paintings"
vocabulary_source: "AAT"
- value: |
category_name: "Lepidoptera"
category_type: SUBJECT
category_description: "Butterflies and moths"
broader_category: "Insects"
vocabulary_source: "ITIS"
- value: |
category_name: "First edition literature"
category_type: FORMAT
category_description: "First printings of literary works"
broader_category: "Rare books"

View file

@ -0,0 +1,86 @@
id: https://nde.nl/ontology/hc/class/CollectionDiscoveryScore
name: collection_discovery_score_class
title: Collection Discovery Score Class
# Created per slot_fixes.yaml revision for collection_discovery_score migration
# RULE 53: Structured score class replacing primitive float
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
sosa: http://www.w3.org/ns/sosa/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
imports:
- linkml:types
- ../slots/has_or_had_score
- ../slots/specificity_annotation
- ./SpecificityAnnotation
- ./TemplateSpecificityScore
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
default_range: string
classes:
CollectionDiscoveryScore:
class_uri: sosa:Observation
description: >-
Structured score for collection discovery/exploration relevance.
Captures the computed relevance score from search/retrieval algorithms
acting as observation systems, along with metadata about when and how
the score was computed.
**Use cases**:
- RAG retrieval relevance scores for collection metadata
- Search result ranking scores
- Collection exploration priority scores
- Template-specific relevance for different query contexts
**Score semantics**:
- 0.0 = Not relevant to query/context
- 0.5 = Moderately relevant
- 1.0 = Highly relevant
exact_mappings:
- sosa:Observation
close_mappings:
- prov:Entity
- schema:Rating
slots:
- has_or_had_score
- specificity_annotation
attributes:
score_context:
range: string
description: >-
Context or query type for which this score was computed.
E.g., "collection_discovery", "archive_search", "museum_search"
computed_at:
range: datetime
description: When the score was computed.
algorithm_version:
range: string
description: >-
Version of the scoring algorithm used.
Enables reproducibility and score comparison across versions.
score_notes:
range: string
description: Additional notes about the score computation.
comments:
- "Created per slot_fixes.yaml revision for collection_discovery_score migration"
- "Replaces primitive float with structured observation"
- "RULE 53: Part of collection_discovery_score → has_or_had_score + CollectionDiscoveryScore migration"
annotations:
specificity_score: 0.75
specificity_rationale: "Fairly specific - applies to collection search/discovery contexts"
examples:
- value: |
has_or_had_score: 0.85
score_context: "collection_discovery"
computed_at: "2026-01-19T12:00:00Z"
algorithm_version: "v1.2.0"
- value: |
has_or_had_score: 0.92
score_context: "archive_search"
computed_at: "2026-01-19T14:30:00Z"

View file

@ -4,7 +4,9 @@ title: Museum Type Classification
imports:
- linkml:types
- ./CustodianType
- ../slots/collection_focus
# REMOVED 2026-01-19: ../slots/collection_focus - migrated to has_or_had_category + Category (Rule 53)
- ../slots/has_or_had_category
- ./Category
# - ../slots/cataloging_standard # ARCHIVED 2026-01-17: migrated to complies_or_complied_with + CatalogingStandard per Rule 53/56
- ../slots/complies_or_complied_with
- ./CatalogingStandard
@ -139,7 +141,8 @@ classes:
\ entities with type='M'\nin `data/wikidata/GLAMORCUBEPSXHFN/hyponyms_curated_full.yaml`.\n"
slots:
- complies_or_complied_with # was: cataloging_standard - migrated per Rule 53/56 (2026-01-17)
- collection_focus
# REMOVED 2026-01-19: collection_focus - migrated to has_or_had_category + Category (Rule 53)
- has_or_had_category
- conservation_lab
- has_or_had_custodian_type
- exhibition_program
@ -179,6 +182,13 @@ classes:
range: CatalogingStandard
inlined: true
multivalued: true
has_or_had_category: # was: collection_focus - migrated per Rule 53 (2026-01-19)
description: |
MIGRATED from collection_focus per slot_fixes.yaml (Rule 53, 2026-01-19).
Subject areas and thematic focus of the museum's collections using Category class.
range: Category
inlined: true
multivalued: true
exact_mappings:
- skos:Concept
- schema:Museum

View file

@ -12,7 +12,9 @@ description: 'Specialized CustodianType for individual private collectors and th
imports:
- linkml:types
- ./CustodianType
- ../slots/collection_focus
# REMOVED 2026-01-19: ../slots/collection_focus - migrated to has_or_had_category + Category (Rule 53)
- ../slots/has_or_had_category
- ./Category
# REMOVED 2026-01-19: ../slots/collection_size - migrated to has_or_had_quantity + Quantity (Rule 53)
- ../slots/has_or_had_quantity
- ./Quantity
@ -183,7 +185,8 @@ classes:
slots:
- has_or_had_access_restriction
- has_acquisition_history
- collection_focus
# REMOVED 2026-01-19: collection_focus - migrated to has_or_had_category + Category (Rule 53)
- has_or_had_category
# REMOVED 2026-01-19: collection_size - migrated to has_or_had_quantity + Quantity (Rule 53)
- has_or_had_quantity
- has_or_had_custodian_type
@ -193,16 +196,26 @@ classes:
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
slot_usage:
collection_focus:
range: string
has_or_had_category: # was: collection_focus - migrated per Rule 53 (2026-01-19)
description: |
MIGRATED from collection_focus per slot_fixes.yaml (Rule 53, 2026-01-19).
Subject areas and thematic focus of the personal collection using Category class.
range: Category
inlined: true
multivalued: true
required: true
examples:
- value: Dutch Golden Age paintings, Rembrandt
- value:
category_name: Dutch Golden Age paintings
category_type: SUBJECT
description: Art collector focus
- value: First editions, Modernist poetry, Fine press
description: Bibliophile focus
- value: Roman coins, Medieval numismatics
- value:
category_name: Rembrandt works
category_type: CREATOR
description: Artist-focused collection
- value:
category_name: Roman coins
category_type: TYPOLOGY
description: Numismatist focus
has_or_had_quantity: # was: collection_size - migrated per Rule 53 (2026-01-19)
description: |

View file

@ -0,0 +1,52 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_category
name: has_or_had_category_slot
title: Has or Had Category Slot
# Created per slot_fixes.yaml revision for collection_focus migration
# RULE 53: Generic category relationship pattern
# RULE 39: RiC-O temporal naming convention
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
dcterms: http://purl.org/dc/terms/
schema: http://schema.org/
imports:
- linkml:types
default_prefix: hc
slots:
has_or_had_category:
description: >-
Links an entity to its category or classification.
Categories represent hierarchical or faceted classifications:
- Subject categories (art, science, history)
- Thematic categories (Dutch Golden Age, WWII, Islamic art)
- Material categories (paintings, manuscripts, specimens)
- Geographic categories (European, Asian, African)
- Temporal categories (Medieval, Renaissance, Contemporary)
The Category class enables structured categorization with:
- Category name and description
- Category type (subject, theme, material, geographic, temporal)
- Hierarchical relationships (broader/narrower terms)
- Provenance tracking
range: Category
slot_uri: dcterms:subject
multivalued: true
inlined: true
inlined_as_list: true
exact_mappings:
- dcterms:subject
- skos:Concept
close_mappings:
- schema:about
- schema:category
related_mappings:
- skos:broader
- skos:narrower
annotations:
rule_53_migration: "Replaces collection_focus with structured Category"

View file

@ -80,7 +80,6 @@
"cms_id.yaml",
"cms_product_name.yaml",
"collection_description.yaml",
"collection_discovery_score.yaml",
"collection_focus.yaml",
"collection_id.yaml",
"collection_locality_text.yaml",
@ -1925,9 +1924,11 @@
"takes_or_took_place_at.yaml",
"temperature_target.yaml",
"template_specificity.yaml",
"temporal_dynamics.yaml",
"temporal_extent.yaml",
"total_amount.yaml",
"track_id.yaml",
"use_cases.yaml",
"uses_or_used_technique.yaml",
"was_archived_at.yaml",
"was_acquired_through.yaml",

View file

@ -9983,6 +9983,11 @@ fixes:
type: slot
- label: CollectionDiscoveryScore
type: class
processed:
status: true
notes: '2026-01-19: Created CollectionDiscoveryScore.yaml class (sosa:Observation based). Slot was only used in archived files
(TemplateSpecificityScores_archived_20260117.yaml). Uses existing has_or_had_score slot. Archived collection_discovery_score.yaml
to archive/collection_discovery_score_archived_20260119.yaml.'
- original_slot_id: https://nde.nl/ontology/hc/slot/collection_focus
revision:
- label: has_or_had_content