diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json index 6a43014fd6..c5471e6f6e 100644 --- a/frontend/public/schemas/20251121/linkml/manifest.json +++ b/frontend/public/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-19T12:10:38.542Z", + "generated": "2026-01-19T12:12:01.538Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 2969, "categoryCounts": { diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json index c5471e6f6e..0168ba1356 100644 --- a/schemas/20251121/linkml/manifest.json +++ b/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-19T12:12:01.538Z", + "generated": "2026-01-19T13:49:48.064Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 2969, "categoryCounts": { diff --git a/schemas/20251121/linkml/modules/classes/AudioEventSegment.yaml b/schemas/20251121/linkml/modules/classes/AudioEventSegment.yaml index f09864f360..c9227aa6de 100644 --- a/schemas/20251121/linkml/modules/classes/AudioEventSegment.yaml +++ b/schemas/20251121/linkml/modules/classes/AudioEventSegment.yaml @@ -14,7 +14,10 @@ imports: - ../slots/end_time - ../slots/segment_index - ../slots/segment_text - - ../slots/confidence + # MIGRATED 2026-01-19: confidence → is_or_was_generated_by + GenerationEvent + ConfidenceScore + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore - ../slots/specificity_annotation - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) - ./SpecificityAnnotation @@ -96,7 +99,8 @@ classes: - end_time - segment_index - segment_text - - confidence + # MIGRATED 2026-01-19: confidence → is_or_was_generated_by (structured ConfidenceScore) + - is_or_was_generated_by - specificity_annotation - has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) attributes: @@ -155,17 +159,19 @@ classes: description: Speech transcript text - value: "Classical background music" description: Music segment description - confidence: - range: float + is_or_was_generated_by: + range: GenerationEvent required: false - minimum_value: 0.0 - maximum_value: 1.0 - description: Confidence score (0.0-1.0) for the audio event detection. + inlined: true + description: >- + Generation event containing confidence score for audio event detection. + MIGRATED 2026-01-19: Replaces confidence slot with structured pattern. examples: - - value: 0.95 - description: High confidence detection - - value: 0.72 - description: Medium confidence detection + - value: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "audio_classification" + description: High confidence audio event detection comments: - Audio event segment for speech, music, silence, sound event detection - Temporal boundaries with start/end seconds (primary) and ISO 8601 (secondary) diff --git a/schemas/20251121/linkml/modules/classes/BirthDate.yaml b/schemas/20251121/linkml/modules/classes/BirthDate.yaml index ee8ba5b273..7d82798940 100644 --- a/schemas/20251121/linkml/modules/classes/BirthDate.yaml +++ b/schemas/20251121/linkml/modules/classes/BirthDate.yaml @@ -21,7 +21,10 @@ imports: - ./TemplateSpecificityType - ./TemplateSpecificityTypes - - ../slots/confidence + # MIGRATED 2026-01-19: confidence → is_or_was_generated_by + GenerationEvent + ConfidenceScore + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore - ../slots/birth_edtf - ../slots/birth_iso_date - ../slots/birth_source_text @@ -94,7 +97,8 @@ classes: - birth_source_text - is_inferred - inference_provenance - - confidence + # MIGRATED 2026-01-19: confidence → is_or_was_generated_by (structured ConfidenceScore) + - is_or_was_generated_by - specificity_annotation - has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) slot_usage: @@ -150,11 +154,25 @@ classes: Required when is_inferred is true. examples: - value: '{"method": "earliest_education_heuristic", "inference_chain": [...]}' - confidence: - range: BirthDateConfidenceEnum + is_or_was_generated_by: + range: GenerationEvent required: false + inlined: true description: >- - Confidence level in the birth date value. + Generation event containing confidence score for birth date determination. + MIGRATED 2026-01-19: Replaces confidence slot with structured pattern. + examples: + - value: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "document_extraction" + description: High confidence date extraction + - value: + has_or_had_score: + has_or_had_score: 0.50 + has_or_had_method: "education_inference" + has_or_had_description: "Inferred from education start year" + description: Low confidence inferred date comments: - "Replaces simple birth_date string slot (Rule 53)" - "EDTF notation enables uncertain/incomplete date representation" @@ -168,19 +186,28 @@ classes: birth_edtf: "1970-08-15" birth_iso_date: "1970-08-15" is_inferred: false - confidence: HIGH + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "birth_certificate_extraction" description: Full date known with high confidence - value: birth_edtf: "197X" is_inferred: true inference_provenance: '{"method": "earliest_education_heuristic", "source_field": "education[0].start_year"}' - confidence: LOW + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.40 + has_or_had_method: "education_inference" description: Decade inferred from education start year - value: birth_edtf: "1823" birth_source_text: "born in the year of our Lord 1823" is_inferred: false - confidence: MEDIUM + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.75 + has_or_had_method: "document_extraction" description: Year extracted from historical document annotations: specificity_score: 0.45 diff --git a/schemas/20251121/linkml/modules/classes/ChAnnotatorAnnotationMetadata.yaml b/schemas/20251121/linkml/modules/classes/ChAnnotatorAnnotationMetadata.yaml index b2cbdcbd7c..a6aa748db1 100644 --- a/schemas/20251121/linkml/modules/classes/ChAnnotatorAnnotationMetadata.yaml +++ b/schemas/20251121/linkml/modules/classes/ChAnnotatorAnnotationMetadata.yaml @@ -1,6 +1,7 @@ # ChAnnotatorAnnotationMetadata - Metadata about the annotation # Extracted from custodian_source.yaml per Rule 38 (modular schema files) # Extraction date: 2026-01-08 +# MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore id: https://nde.nl/ontology/hc/classes/ChAnnotatorAnnotationMetadata name: ChAnnotatorAnnotationMetadata @@ -17,7 +18,10 @@ prefixes: imports: - linkml:types - - ../slots/confidence_score + # MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore default_range: string @@ -42,7 +46,22 @@ classes: - prov:Entity - schema:Rating slots: - - confidence_score + # MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + - is_or_was_generated_by + slot_usage: + is_or_was_generated_by: + range: GenerationEvent + required: false + inlined: true + description: >- + Generation event containing confidence score for annotation. + MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern. + examples: + - value: + has_or_had_score: + has_or_had_score: 0.92 + has_or_had_method: "annotation_validation" + description: High confidence annotation attributes: verified: range: boolean @@ -53,3 +72,6 @@ classes: verified_by: range: string description: Who verified the annotation + + comments: + - "MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + ConfidenceScore" diff --git a/schemas/20251121/linkml/modules/classes/ClimateControl.yaml b/schemas/20251121/linkml/modules/classes/ClimateControl.yaml new file mode 100644 index 0000000000..f140991694 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/ClimateControl.yaml @@ -0,0 +1,161 @@ +# ClimateControl class +# Climate control system or approach for heritage facilities +# +# Generation date: 2026-01-19 +# Rule compliance: 53 (slot_fixes.yaml), 39 (RiC-O naming), 0b (Type/Types pattern) +# +# Created for climate_control_type migration + +id: https://nde.nl/ontology/hc/class/climate_control +name: climate_control_class +title: Climate Control Class + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + crm: http://www.cidoc-crm.org/cidoc-crm/ + aat: http://vocab.getty.edu/aat/ + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_label + - ../slots/has_or_had_description + - ../slots/has_or_had_type + - ./ClimateControlType + +classes: + ClimateControl: + class_uri: aat:300264752 + description: | + Climate control system or approach for managing environmental conditions. + + **DEFINITION**: + + A ClimateControl represents the physical system, equipment, or approach + used to manage temperature, humidity, air quality, and other environmental + factors in heritage facilities. + + **GETTY AAT ALIGNMENT**: + + `aat:300264752` (climate control systems) - "Systems for controlling + environmental conditions such as temperature and humidity." + + **USE CASES**: + + 1. **Full HVAC System**: + ```yaml + ClimateControl: + has_or_had_label: "Main Gallery HVAC" + has_or_had_type: HVAC + has_or_had_description: + description_text: "Central HVAC with 24/7 monitoring, backup power" + ``` + + 2. **Basic Heating**: + ```yaml + ClimateControl: + has_or_had_label: "Warehouse Heating" + has_or_had_type: HEATED + ``` + + 3. **Dehumidification Only**: + ```yaml + ClimateControl: + has_or_had_label: "Photo Archive Dehumidifier" + has_or_had_type: DEHUMIDIFIED + ``` + + **RELATIONSHIP TO ClimateControlType**: + + ``` + ClimateControl + │ + └── has_or_had_type ──► ClimateControlType + │ + └── (HEATED, HVAC, DEHUMIDIFIED, NONE, etc.) + ``` + + exact_mappings: + - aat:300264752 + close_mappings: + - schema:Product + related_mappings: + - crm:E22_Human-Made_Object + + slots: + - has_or_had_label + - has_or_had_description + - has_or_had_type + + slot_usage: + has_or_had_label: + description: | + Name or identifier for this climate control system. + range: string + required: false + examples: + - value: "Main Stack HVAC System" + description: Named HVAC system + - value: "Depot B Climate Control" + description: Named by location + has_or_had_description: + description: | + Description of the climate control system capabilities. + examples: + - value: + description_text: "Precision HVAC with temperature control ±1°C, humidity control ±3% RH. Redundant systems with automatic failover." + description_type: technical + description: Detailed technical description + has_or_had_type: + range: ClimateControlType + required: true + description: | + Type of climate control (HEATED, HVAC, DEHUMIDIFIED, NONE, etc.). + examples: + - value: HVAC + description: Full heating/cooling system + - value: HEATED + description: Heating only + - value: DEHUMIDIFIED + description: Humidity control only + - value: NONE + description: No climate control + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: Climate control applies to all heritage custodian types with physical facilities. + custodian_types_primary: A + specificity_score: 0.55 + specificity_rationale: Moderately specific - common across facility management contexts. + replaces_slots: "climate_control_type (partial - represents the system, type is separate)" + + comments: + - "Represents climate control systems/equipment" + - "Maps to Getty AAT 300264752" + - "Type classification via has_or_had_type → ClimateControlType" + + examples: + - value: + has_or_had_label: "Rijksmuseum Collection Storage HVAC" + has_or_had_type: HVAC + has_or_had_description: + description_text: "Precision climate control with T=20±1°C, RH=50±3%. Redundant compressors, backup power, 24/7 monitoring." + description_type: technical + description: Museum collection storage climate system + - value: + has_or_had_label: "Logistics Warehouse Heating" + has_or_had_type: HEATED + has_or_had_description: + description_text: "Basic gas heating to prevent freezing. No humidity control." + description_type: technical + description: Basic warehouse heating + - value: + has_or_had_label: "Photo Archive Dehumidifier" + has_or_had_type: DEHUMIDIFIED + has_or_had_description: + description_text: "Portable dehumidifier maintaining RH below 50%." + description_type: technical + description: Dehumidification for photos diff --git a/schemas/20251121/linkml/modules/classes/ClimateControlPolicy.yaml b/schemas/20251121/linkml/modules/classes/ClimateControlPolicy.yaml new file mode 100644 index 0000000000..97da5a62b8 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/ClimateControlPolicy.yaml @@ -0,0 +1,154 @@ +# ClimateControlPolicy class +# Policy governing climate control systems and conditions +# +# Generation date: 2026-01-19 +# Rule compliance: 53 (slot_fixes.yaml), 39 (RiC-O naming), 0b (Type/Types pattern) +# +# Created for climate_control_type migration + +id: https://nde.nl/ontology/hc/class/climate_control_policy +name: climate_control_policy_class +title: Climate Control Policy Class + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + odrl: http://www.w3.org/ns/odrl/2/ + dcterms: http://purl.org/dc/terms/ + schema: http://schema.org/ + prov: http://www.w3.org/ns/prov# + crm: http://www.cidoc-crm.org/cidoc-crm/ + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_label + - ../slots/has_or_had_description + - ../slots/regulates_or_regulated + - ./ClimateControl + +classes: + ClimateControlPolicy: + class_uri: odrl:Policy + description: | + Policy governing climate control systems and environmental conditions. + + **DEFINITION**: + + A ClimateControlPolicy defines the rules, standards, and requirements + for environmental control within heritage facilities. This includes + temperature ranges, humidity levels, air quality standards, and + monitoring requirements. + + **ONTOLOGICAL ALIGNMENT**: + + - **Primary** (`class_uri`): `odrl:Policy` - ODRL policy construct + - **Related**: `crm:E29_Design_or_Procedure` - CIDOC-CRM procedures + + **USE CASES**: + + 1. **Preservation Environment Policy**: + ```yaml + ClimateControlPolicy: + has_or_had_label: "Archives Preservation Environment Standard" + has_or_had_description: + description_text: "Temperature 18-22°C, RH 45-55%, 24/7 monitoring" + regulates_or_regulated: + - ClimateControl: HVAC system for stack areas + ``` + + 2. **Warehouse Climate Requirements**: + ```yaml + ClimateControlPolicy: + has_or_had_label: "Logistics Warehouse Climate Requirements" + regulates_or_regulated: + - ClimateControl: Basic heating system + ``` + + **RELATIONSHIP TO ClimateControl**: + + ``` + ClimateControlPolicy + │ + ├── regulates_or_regulated ──► ClimateControl + │ │ + │ └── has_or_had_type ──► ClimateControlType + │ + └── (may regulate multiple systems) + ``` + + exact_mappings: + - odrl:Policy + close_mappings: + - crm:E29_Design_or_Procedure + related_mappings: + - schema:Action + + slots: + - has_or_had_label + - has_or_had_description + - regulates_or_regulated + + slot_usage: + has_or_had_label: + description: | + Name of this climate control policy. + range: string + required: true + examples: + - value: "Archives Preservation Environment Standard" + description: Policy for archival storage + has_or_had_description: + description: | + Detailed description of policy requirements. + examples: + - value: + description_text: "Temperature must be maintained between 18-22°C with relative humidity 45-55%. Continuous monitoring required." + description_type: policy + description: Preservation environment requirements + regulates_or_regulated: + range: ClimateControl + description: | + Climate control system(s) governed by this policy. + inlined: true + inlined_as_list: true + examples: + - value: + has_or_had_label: "Main Stack HVAC" + has_or_had_type: HVAC + description: HVAC system regulated by policy + + annotations: + custodian_types: '["A", "L", "M", "R"]' + custodian_types_rationale: Climate policies primarily for archives, libraries, museums, and research centers with preservation needs. + custodian_types_primary: A + specificity_score: 0.60 + specificity_rationale: Moderately specific - applies to facilities with climate-controlled storage. + + comments: + - "Policy governing climate control systems" + - "Maps to ODRL Policy construct" + - "Links to ClimateControl via regulates_or_regulated slot" + + examples: + - value: + has_or_had_label: "Rijksmuseum Collection Storage Climate Policy" + has_or_had_description: + description_text: "All collection storage areas must maintain temperature 20±2°C, RH 50±5%. HVAC failure triggers immediate response protocol." + description_type: policy + regulates_or_regulated: + - has_or_had_label: "Depot A HVAC System" + has_or_had_type: HVAC + - has_or_had_label: "Depot B HVAC System" + has_or_had_type: HVAC + description: Museum collection storage climate policy + - value: + has_or_had_label: "Warehouse Basic Climate Requirements" + has_or_had_description: + description_text: "Non-collection warehouse areas must maintain temperature above freezing. Heating required October-April." + description_type: policy + regulates_or_regulated: + - has_or_had_label: "Logistics Warehouse Heating" + has_or_had_type: HEATED + description: Basic warehouse climate requirements diff --git a/schemas/20251121/linkml/modules/classes/ClimateControlType.yaml b/schemas/20251121/linkml/modules/classes/ClimateControlType.yaml new file mode 100644 index 0000000000..638421afc2 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/ClimateControlType.yaml @@ -0,0 +1,117 @@ +# ClimateControlType class +# Abstract base class for climate control type taxonomy +# +# Generation date: 2026-01-19 +# Rule compliance: 0b (Type/Types pattern), 53 (slot_fixes.yaml), 39 (RiC-O naming) +# +# This is the SINGULAR "Type" class - abstract base for the type hierarchy +# Concrete types are in ClimateControlTypes.yaml (plural) + +id: https://nde.nl/ontology/hc/class/climate_control_type +name: climate_control_type_class +title: Climate Control Type Class + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + aat: http://vocab.getty.edu/aat/ + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_label + - ../slots/has_or_had_description + - ../slots/includes_or_included + +classes: + ClimateControlType: + class_uri: skos:Concept + abstract: true + description: | + Abstract base class for climate control type taxonomy. + + **DESIGN PATTERN** (Rule 0b - Type/Types Naming): + + This file (`ClimateControlType.yaml`) defines the **singular abstract base class**. + Concrete subclasses are defined in `ClimateControlTypes.yaml` (plural). + + **TYPE HIERARCHY**: + + ``` + ClimateControlType (abstract base) + │ + ├── HEATED - Heating only (prevent freezing) + ├── HVAC - Full heating, ventilation, air conditioning + ├── DEHUMIDIFIED - Humidity control only + ├── COOLED - Cooling only (no heating) + ├── PASSIVE - Passive environmental control (building design) + └── NONE - No climate control + ``` + + **ONTOLOGICAL ALIGNMENT**: + + - **Primary** (`class_uri`): `skos:Concept` - SKOS concept scheme + - **Related**: `aat:300264752` - Getty AAT climate control systems + + **USE CASES**: + + The ClimateControlType is used as the range for the `has_or_had_type` + slot in the ClimateControl class: + + ```yaml + ClimateControl: + has_or_had_label: "Main Stack HVAC" + has_or_had_type: HVAC # ← ClimateControlType + ``` + + exact_mappings: + - skos:Concept + related_mappings: + - aat:300264752 + + slots: + - has_or_had_label + - has_or_had_description + - includes_or_included + + slot_usage: + has_or_had_label: + description: | + Display label for this climate control type. + range: string + required: true + examples: + - value: "HVAC" + description: Heating, ventilation, air conditioning + has_or_had_description: + description: | + Description of what this climate control type provides. + examples: + - value: + description_text: "Full heating, ventilation, and air conditioning with temperature and humidity control." + description_type: definition + description: HVAC type definition + includes_or_included: + description: | + Subtypes included in this climate control type (for hierarchical types). + range: ClimateControlType + multivalued: true + + annotations: + type_types_pattern: | + This is the SINGULAR "Type" class per Rule 0b. + Concrete subclasses in ClimateControlTypes.yaml (plural). + custodian_types: '["*"]' + custodian_types_rationale: Climate control types apply to all heritage facility contexts. + specificity_score: 0.50 + specificity_rationale: Type taxonomy - moderately specific to facility management. + replaces_slots: "climate_control_type (the old string-valued slot)" + migration_date: "2026-01-19" + + comments: + - "Abstract base class for climate control type hierarchy" + - "Follows Rule 0b Type/Types naming pattern" + - "Concrete types: HEATED, HVAC, DEHUMIDIFIED, COOLED, PASSIVE, NONE" + - "See ClimateControlTypes.yaml for subclass definitions" diff --git a/schemas/20251121/linkml/modules/classes/ClimateControlTypes.yaml b/schemas/20251121/linkml/modules/classes/ClimateControlTypes.yaml new file mode 100644 index 0000000000..a9ce97dafe --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/ClimateControlTypes.yaml @@ -0,0 +1,211 @@ +# ClimateControlTypes class +# Concrete subclasses for climate control type taxonomy +# +# Generation date: 2026-01-19 +# Rule compliance: 0b (Type/Types pattern), 53 (slot_fixes.yaml), 39 (RiC-O naming) +# +# This is the PLURAL "Types" file - contains all concrete subclasses +# Abstract base is in ClimateControlType.yaml (singular) + +id: https://nde.nl/ontology/hc/class/climate_control_types +name: climate_control_types_class +title: Climate Control Types Classes + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + skos: http://www.w3.org/2004/02/skos/core# + aat: http://vocab.getty.edu/aat/ + +default_prefix: hc + +imports: + - linkml:types + - ./ClimateControlType + +classes: + # ======================================================================== + # HEATED - Heating only (prevent freezing) + # ======================================================================== + HeatedClimateControl: + is_a: ClimateControlType + class_uri: hc:HeatedClimateControl + description: | + Heating-only climate control - prevents freezing, no cooling or humidity control. + + **TYPICAL USE CASES**: + - Warehouses in cold climates + - Unheated outbuildings needing freeze protection + - Basic storage areas without preservation requirements + + **CAPABILITIES**: + - Temperature: Above freezing (typically 10-15°C minimum) + - Humidity: Uncontrolled + - Air quality: Uncontrolled + + annotations: + climate_control_code: "HEATED" + preservation_suitability: "Low - suitable for non-sensitive materials only" + examples: + - value: + has_or_had_label: "HEATED" + has_or_had_description: + description_text: "Heating only to prevent freezing. No humidity or cooling control." + description: Basic heating type + + # ======================================================================== + # HVAC - Full heating, ventilation, air conditioning + # ======================================================================== + HVACClimateControl: + is_a: ClimateControlType + class_uri: hc:HVACClimateControl + description: | + Full HVAC - heating, ventilation, and air conditioning with temperature + and typically humidity control. + + **TYPICAL USE CASES**: + - Museum collection storage + - Archive repositories + - Special collections libraries + - Conservation labs + + **CAPABILITIES**: + - Temperature: Precise control (typically ±1-2°C) + - Humidity: Controlled (typically ±3-5% RH) + - Air quality: Filtered, controlled air changes + + annotations: + climate_control_code: "HVAC" + preservation_suitability: "High - suitable for sensitive collections" + examples: + - value: + has_or_had_label: "HVAC" + has_or_had_description: + description_text: "Full heating, ventilation, and air conditioning with temperature and humidity control." + description: Full HVAC type + + # ======================================================================== + # DEHUMIDIFIED - Humidity control only + # ======================================================================== + DehumidifiedClimateControl: + is_a: ClimateControlType + class_uri: hc:DehumidifiedClimateControl + description: | + Dehumidification-only climate control - humidity control without + temperature control. + + **TYPICAL USE CASES**: + - Photo archives in temperate climates + - Basement storage areas + - Areas with mold/mildew concerns + + **CAPABILITIES**: + - Temperature: Uncontrolled (ambient) + - Humidity: Controlled (typically below 50-60% RH) + - Air quality: May have basic filtration + + annotations: + climate_control_code: "DEHUMIDIFIED" + preservation_suitability: "Medium - protects against humidity damage" + examples: + - value: + has_or_had_label: "DEHUMIDIFIED" + has_or_had_description: + description_text: "Humidity control only - maintains RH below target threshold." + description: Dehumidification type + + # ======================================================================== + # COOLED - Cooling only (no heating) + # ======================================================================== + CooledClimateControl: + is_a: ClimateControlType + class_uri: hc:CooledClimateControl + description: | + Cooling-only climate control - air conditioning without heating. + + **TYPICAL USE CASES**: + - Tropical/warm climate facilities + - Server rooms with collections databases + - Cold storage for photographic materials + + **CAPABILITIES**: + - Temperature: Cooling only (may have precise control) + - Humidity: May be controlled as byproduct of cooling + - Air quality: Typically filtered + + annotations: + climate_control_code: "COOLED" + preservation_suitability: "Medium-High - depends on precision" + examples: + - value: + has_or_had_label: "COOLED" + has_or_had_description: + description_text: "Cooling only - maintains temperature below ambient in warm climates." + description: Cooling-only type + + # ======================================================================== + # PASSIVE - Passive environmental control (building design) + # ======================================================================== + PassiveClimateControl: + is_a: ClimateControlType + class_uri: hc:PassiveClimateControl + description: | + Passive climate control - environmental management through building + design rather than mechanical systems. + + **TYPICAL USE CASES**: + - Historic buildings with thick walls + - Underground/cave storage + - Purpose-built passive storage facilities + + **CAPABILITIES**: + - Temperature: Stable but not precisely controlled + - Humidity: May be naturally stable + - Air quality: Natural ventilation + + **EXAMPLES**: + - Swiss National Library underground repository + - Cave archives + - Historic stone buildings with thermal mass + + annotations: + climate_control_code: "PASSIVE" + preservation_suitability: "Variable - depends on building characteristics" + examples: + - value: + has_or_had_label: "PASSIVE" + has_or_had_description: + description_text: "Passive environmental control through building design, thermal mass, and natural ventilation." + description: Passive control type + + # ======================================================================== + # NONE - No climate control + # ======================================================================== + NoClimateControl: + is_a: ClimateControlType + class_uri: hc:NoClimateControl + description: | + No climate control - ambient conditions only. + + **TYPICAL USE CASES**: + - Outdoor monuments + - Unimproved storage spaces + - Temporary exhibition spaces + + **CAPABILITIES**: + - Temperature: Ambient (uncontrolled) + - Humidity: Ambient (uncontrolled) + - Air quality: Ambient (uncontrolled) + + **WARNING**: + Not suitable for sensitive heritage materials. + + annotations: + climate_control_code: "NONE" + preservation_suitability: "None - unsuitable for sensitive materials" + examples: + - value: + has_or_had_label: "NONE" + has_or_had_description: + description_text: "No climate control - ambient environmental conditions only." + description: No climate control type diff --git a/schemas/20251121/linkml/modules/classes/ConfidenceMeasure.yaml b/schemas/20251121/linkml/modules/classes/ConfidenceMeasure.yaml index 995cc8e845..1b92ef51db 100644 --- a/schemas/20251121/linkml/modules/classes/ConfidenceMeasure.yaml +++ b/schemas/20251121/linkml/modules/classes/ConfidenceMeasure.yaml @@ -11,24 +11,16 @@ prefixes: imports: - linkml:types - ../metadata + # NOTE: This class uses confidence_value/confidence_method directly (not migrated to is_or_was_generated_by pattern) + # because it serves as the range for has_or_had_confidence_measure slot in CustodianObservation, ReconstructionActivity - ../slots/confidence_value - ../slots/confidence_method - ../slots/specificity_annotation - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) - ./SpecificityAnnotation - ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17) - - ./TemplateSpecificityType - - ./TemplateSpecificityTypes - - ../slots/confidence_method - - ../slots/confidence_value - - ../slots/specificity_annotation - - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) - - ../slots/confidence_method - - ../slots/confidence_value - - ../slots/specificity_annotation - - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) classes: ConfidenceMeasure: class_uri: prov:Confidence diff --git a/schemas/20251121/linkml/modules/classes/ConfidenceMethod.yaml b/schemas/20251121/linkml/modules/classes/ConfidenceMethod.yaml new file mode 100644 index 0000000000..53f1f65101 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/ConfidenceMethod.yaml @@ -0,0 +1,135 @@ +# ConfidenceMethod - Method used to calculate confidence scores +# +# Created per slot_fixes.yaml migration for: confidence_method +# Revision: has_or_had_method + ConfidenceMethod +# Creation date: 2026-01-19 + +id: https://nde.nl/ontology/hc/class/ConfidenceMethod +name: confidence_method_class +title: Confidence Method + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + prov: http://www.w3.org/ns/prov# + schema: http://schema.org/ + +imports: + - linkml:types + - ../slots/has_or_had_type + - ../slots/has_or_had_description + - ../slots/has_or_had_identifier + +default_prefix: hc + +classes: + ConfidenceMethod: + description: >- + A method or algorithm used to calculate confidence scores. + + **USAGE**: + Documents how confidence values were computed: + - Fuzzy string matching algorithms + - ML model predictions + - Rule-based validation + - XPath match verification + - Human assessment + + **COMMON METHODS**: + | Method | Description | + |--------|-------------| + | fuzzy_matching | Levenshtein, Jaro-Winkler, etc. | + | xpath_validation | XPath match confidence | + | llm_classification | LLM-based entity classification | + | ml_prediction | Machine learning model output | + | human_assessment | Manual quality assessment | + | ensemble | Combined multiple methods | + + class_uri: prov:Plan + + exact_mappings: + - prov:Plan + + close_mappings: + - schema:HowTo + + slots: + - has_or_had_type + - has_or_had_description + - has_or_had_identifier + + slot_usage: + has_or_had_type: + range: string + required: true + description: >- + Type of confidence calculation method. + examples: + - value: "fuzzy_matching" + description: String similarity algorithm + - value: "ml_prediction" + description: Machine learning model + - value: "human_assessment" + description: Manual human review + + has_or_had_description: + range: string + required: false + description: >- + Detailed description of the method implementation. + examples: + - value: "Jaro-Winkler similarity with 0.7 threshold" + description: Fuzzy matching configuration + + has_or_had_identifier: + range: string + required: false + description: >- + Identifier for the method (e.g., algorithm name, model version). + examples: + - value: "rapidfuzz-2.15.1" + description: Library version + + attributes: + threshold: + range: float + description: >- + Confidence threshold used by this method for accept/reject decisions. + examples: + - value: 0.85 + description: 85% threshold for acceptance + + is_deterministic: + range: boolean + description: >- + Whether the method produces consistent results for same inputs. + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Confidence methods apply universally to data quality assessment. + custodian_types_primary: "*" + specificity_score: 0.25 + specificity_rationale: >- + Low specificity - fundamental methodology documentation. + + examples: + - value: + has_or_had_type: "fuzzy_matching" + has_or_had_description: "Levenshtein distance with ratio normalization" + has_or_had_identifier: "rapidfuzz-levenshtein" + threshold: 0.85 + is_deterministic: true + description: Fuzzy string matching method + + - value: + has_or_had_type: "llm_classification" + has_or_had_description: "GPT-4 based entity type classification" + has_or_had_identifier: "gpt-4-turbo-2024-04-09" + is_deterministic: false + description: LLM-based classification method + + comments: + - Created from slot_fixes.yaml migration (2026-01-19) + - Documents confidence calculation methodology + - Used with ConfidenceScore class diff --git a/schemas/20251121/linkml/modules/classes/ConfidenceScore.yaml b/schemas/20251121/linkml/modules/classes/ConfidenceScore.yaml new file mode 100644 index 0000000000..9dbd946a50 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/ConfidenceScore.yaml @@ -0,0 +1,126 @@ +# ConfidenceScore - Confidence score class for quality/certainty measurements +# +# Created per slot_fixes.yaml migration for: confidence_score +# Revision: is_or_was_generated_by + GenerationEvent + has_or_had_score + ConfidenceScore +# Creation date: 2026-01-19 + +id: https://nde.nl/ontology/hc/class/ConfidenceScore +name: confidence_score_class +title: Confidence Score + +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/has_or_had_method + - ../slots/has_or_had_description + +default_prefix: hc + +classes: + ConfidenceScore: + description: >- + A structured confidence score representing quality/certainty measurements. + + **MIGRATION**: + Replaces simple `confidence_score` float slot with structured class: + - `has_or_had_score`: The numeric value (0.0-1.0) + - `has_or_had_method`: How confidence was calculated + - `has_or_had_description`: Explanation of confidence assessment + + **USAGE**: + - Process quality assessment (methodology confidence) + - Match/similarity confidence (entity resolution) + - Extraction confidence (NLP/XPath extraction) + - Prediction confidence (ML model outputs) + + **RANGE**: 0.0 (low confidence) to 1.0 (high confidence) + + **ONTOLOGY MAPPING**: + - sosa:hasSimpleResult for the score value + - prov:value as close mapping + + class_uri: sosa:Result + + exact_mappings: + - sosa:Result + + close_mappings: + - prov:Value + - schema:Rating + + slots: + - has_or_had_score + - has_or_had_method + - has_or_had_description + + slot_usage: + has_or_had_score: + range: float + minimum_value: 0.0 + maximum_value: 1.0 + required: true + description: >- + The confidence score value, ranging from 0.0 (no confidence) to 1.0 (complete confidence). + examples: + - value: 0.95 + description: High confidence (95%) + - value: 0.50 + description: Moderate confidence (50%) + - value: 0.10 + description: Low confidence (10%) + + has_or_had_method: + range: string + required: false + description: >- + Method or algorithm used to calculate the confidence score. + examples: + - value: "fuzzy_string_matching" + description: String similarity method + - value: "xpath_extraction_validation" + description: XPath match validation + - value: "llm_classification" + description: LLM-based classification + + has_or_had_description: + range: string + required: false + description: >- + Human-readable explanation of the confidence assessment. + examples: + - value: "High confidence - exact name match with verified ISIL code" + description: Explanation for high score + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Confidence scoring applies universally across all data extraction contexts. + custodian_types_primary: "*" + specificity_score: 0.20 + specificity_rationale: >- + Low specificity - fundamental measurement concept for data quality. + + examples: + - value: + has_or_had_score: 0.95 + has_or_had_method: "xpath_extraction" + has_or_had_description: "Exact match found at expected XPath location" + description: High confidence XPath extraction + + - value: + has_or_had_score: 0.65 + has_or_had_method: "fuzzy_string_matching" + has_or_had_description: "Moderate similarity to reference name (Levenshtein ratio 0.85)" + description: Moderate confidence entity resolution + + comments: + - Created from slot_fixes.yaml migration (2026-01-19) + - Replaces simple confidence_score float slot + - Used with is_or_was_generated_by slot for provenance diff --git a/schemas/20251121/linkml/modules/classes/DetectedEntity.yaml b/schemas/20251121/linkml/modules/classes/DetectedEntity.yaml index 1b74ab8af3..abd6966573 100644 --- a/schemas/20251121/linkml/modules/classes/DetectedEntity.yaml +++ b/schemas/20251121/linkml/modules/classes/DetectedEntity.yaml @@ -26,7 +26,10 @@ imports: - ../slots/has_or_had_identifier - ../slots/has_or_had_label - ../slots/has_or_had_type - - ../slots/confidence_score + # MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore - ../slots/start_time - ../slots/end_time - ../slots/has_or_had_geographic_extent # was: bounding_box - migrated per Rule 53/56 (2026-01-17) @@ -107,7 +110,8 @@ classes: - has_or_had_identifier - has_or_had_label - has_or_had_type - - confidence_score + # MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + - is_or_was_generated_by - start_time - end_time - has_or_had_geographic_extent # was: bounding_box - migrated per Rule 53/56 (2026-01-17) @@ -139,16 +143,23 @@ classes: - value: "Museum Tour" - value: "Opening Credits" - confidence_score: - range: float + is_or_was_generated_by: + range: GenerationEvent required: false - minimum_value: 0.0 - maximum_value: 1.0 - description: "Detection confidence score (0.0 to 1.0)" + inlined: true + description: >- + Generation event containing confidence score for entity detection. + MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern. examples: - - value: 0.95 + - value: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "computer_vision" description: "High confidence detection" - - value: 0.62 + - value: + has_or_had_score: + has_or_had_score: 0.62 + has_or_had_method: "ocr_extraction" description: "Moderate confidence, may need review" start_time: @@ -188,9 +199,10 @@ classes: comments: - "Base class for automated detection results" - "Use has_or_had_type to link to specific Type classes (TransitionType, TextType)" - - "Captures detection metadata: confidence, timestamps, bounding boxes" + - "Captures detection metadata: confidence (via is_or_was_generated_by), timestamps, bounding boxes" - "Generated by detection activities (prov:wasGeneratedBy pattern)" - "Rule 39 compliant: uses has_or_had_* slot naming" + - "MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + ConfidenceScore" see_also: - https://www.w3.org/TR/prov-o/#Entity @@ -201,7 +213,10 @@ classes: - value: has_or_had_identifier: "transition-001" has_or_had_type: "TransitionType:FADE_IN" - confidence_score: 0.95 + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "video_analysis" start_time: "00:03:15" end_time: "00:03:17" description: "Video transition detection (fade in)" @@ -210,6 +225,9 @@ classes: has_or_had_identifier: "text-001" has_or_had_type: "TextType:TITLE" has_or_had_label: "Museum Tour Guide" - confidence_score: 0.87 + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.87 + has_or_had_method: "ocr_extraction" has_or_had_geographic_extent: [100.0, 50.0, 400.0, 150.0] # was: bounding_box description: "On-screen text detection" diff --git a/schemas/20251121/linkml/modules/classes/Event.yaml b/schemas/20251121/linkml/modules/classes/Event.yaml index 451bdeb564..9a6452f0a8 100644 --- a/schemas/20251121/linkml/modules/classes/Event.yaml +++ b/schemas/20251121/linkml/modules/classes/Event.yaml @@ -16,7 +16,6 @@ imports: - ./TimeSpan - ../enums/EventTypeEnum - ../slots/event_description - - ../slots/confidence_score - ../slots/event_id - ../slots/documentation_source - ../slots/event_label @@ -28,32 +27,12 @@ imports: - ../slots/takes_or_took_place_at # was: took_place_at - migrated per Rule 53 - ./SpecificityAnnotation - ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17) - - ./TemplateSpecificityType - - ./TemplateSpecificityTypes - - ../slots/confidence_score - - ../slots/documentation_source - - ../slots/event_description - - ../slots/event_id - - ../slots/event_label - - ../slots/has_or_had_involved_actor - - ../slots/has_timespan - - ../slots/hypernym_event_type - - ../slots/specificity_annotation - - ../slots/takes_or_took_place_at - - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) - - ../slots/confidence_score - - ../slots/documentation_source - - ../slots/event_description - - ../slots/event_id - - ../slots/event_label - - ../slots/has_or_had_involved_actor - - ../slots/has_timespan - - ../slots/hypernym_event_type - - ../slots/specificity_annotation - - ../slots/takes_or_took_place_at - - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) + # MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore classes: Event: class_uri: crm:E5_Event @@ -105,7 +84,6 @@ classes: - crm:E85_Joining - crm:E86_Leaving slots: - - confidence_score - documentation_source - event_description - event_id @@ -116,6 +94,7 @@ classes: - specificity_annotation - has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) - takes_or_took_place_at # was: took_place_at - migrated per Rule 53 + - is_or_was_generated_by # MIGRATED 2026-01-19: replaces confidence_score slot_usage: event_id: required: true @@ -124,6 +103,19 @@ classes: required: true has_timespan: required: false + is_or_was_generated_by: + range: GenerationEvent + required: false + inlined: true + description: >- + Generation event containing confidence score for this event. + MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern. + examples: + - value: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "documentation_verification" + description: High confidence from verified documentation comments: - Event is the hub class for all temporal phenomena in the HC ontology - Domain-specific events (OrganizationalChangeEvent, CollectionEvent) can inherit from Event @@ -131,6 +123,7 @@ classes: - Actor links (involved_actors) connect events to both persons and organizations - hypernym_event_type provides cross-domain event queries - 'Future: Add participated_in_events slot to Custodian and Person for inverse navigation' + - 'MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + ConfidenceScore' examples: - value: event_id: https://nde.nl/ontology/hc/event/nha-merger-2001 @@ -142,4 +135,8 @@ classes: has_or_had_involved_actor: - https://nde.nl/ontology/hc/nl-nh-haa-a-gah - https://nde.nl/ontology/hc/nl-nh-haa-a-ranh - description: Merger of two archives to form Noord-Hollands Archief + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: documentation_verification + description: Merger of two archives to form Noord-Hollands Archief with structured confidence score diff --git a/schemas/20251121/linkml/modules/classes/FindingAid.yaml b/schemas/20251121/linkml/modules/classes/FindingAid.yaml index cac05465e4..5649a80095 100644 --- a/schemas/20251121/linkml/modules/classes/FindingAid.yaml +++ b/schemas/20251121/linkml/modules/classes/FindingAid.yaml @@ -43,7 +43,11 @@ imports: - ../slots/has_or_had_provenance_path - ./XPath - ../slots/css_selector - - ../slots/confidence + # REMOVED 2026-01-19: ../slots/confidence - migrated to is_or_was_generated_by + GenerationEvent + ConfidenceScore (Rule 53) + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore + - ./ConfidenceMethod - ../slots/html_file # REMOVED 2026-01-18: ../slots/claim_id - migrated to has_or_had_identifier + Identifier (Rule 53) - ../slots/has_or_had_identifier diff --git a/schemas/20251121/linkml/modules/classes/GenerationEvent.yaml b/schemas/20251121/linkml/modules/classes/GenerationEvent.yaml index 12222170da..622aa9f4a1 100644 --- a/schemas/20251121/linkml/modules/classes/GenerationEvent.yaml +++ b/schemas/20251121/linkml/modules/classes/GenerationEvent.yaml @@ -2,6 +2,7 @@ # # Created per slot_fixes.yaml migration for: chapters_generated_at # Revision specifies: GenerationEvent with has_or_had_provenance + temporal_extent +# Updated 2026-01-19: Added has_or_had_score for confidence tracking (confidence_* migration) # Creation date: 2026-01-19 id: https://nde.nl/ontology/hc/class/GenerationEvent @@ -21,6 +22,8 @@ imports: - ../slots/temporal_extent - ./TimeSpan - ../slots/has_or_had_description + - ../slots/has_or_had_score + - ./ConfidenceScore default_prefix: hc @@ -34,11 +37,13 @@ classes: - Video chapter generation (manual, AI, imported) - Content extraction events - Automated processing activities + - Confidence scoring for generated content **STRUCTURE**: - temporal_extent: When the generation occurred (TimeSpan) - has_or_had_provenance: Who/what performed the generation (Provenance) - has_or_had_description: Details about the generation process + - has_or_had_score: Confidence score for the generated content (ConfidenceScore) **ONTOLOGY ALIGNMENT**: - Maps to prov:Generation (PROV-O generation event) @@ -56,6 +61,7 @@ classes: - temporal_extent - has_or_had_provenance - has_or_had_description + - has_or_had_score slot_usage: temporal_extent: @@ -88,3 +94,40 @@ classes: examples: - value: "Generated using Whisper transcript segmentation" description: Description of generation method + + has_or_had_score: + description: >- + Confidence score for the generation output. Uses ConfidenceScore class + to capture structured confidence with method and explanation. + range: ConfidenceScore + required: false + inlined: true + examples: + - value: + has_or_had_score: 0.95 + has_or_had_method: "xpath_extraction" + has_or_had_description: "High confidence - exact match at expected location" + description: Confidence score for generated content + + annotations: + custodian_types: '["*"]' + custodian_types_rationale: >- + Generation events are universal for tracking content creation. + custodian_types_primary: "*" + specificity_score: 0.30 + specificity_rationale: >- + Moderately low specificity - used across many content types. + + examples: + - value: + temporal_extent: + begin_of_the_begin: "2024-01-15T10:30:00Z" + has_or_had_description: "AI-generated video chapters from transcript" + has_or_had_score: + has_or_had_score: 0.92 + has_or_had_method: "transcript_segmentation" + description: Video chapter generation event with confidence + + comments: + - Created from slot_fixes.yaml migration (2026-01-19) + - Updated 2026-01-19 to include has_or_had_score for confidence tracking diff --git a/schemas/20251121/linkml/modules/classes/Hypothesis.yaml b/schemas/20251121/linkml/modules/classes/Hypothesis.yaml index 8da399bae7..068333eb0b 100644 --- a/schemas/20251121/linkml/modules/classes/Hypothesis.yaml +++ b/schemas/20251121/linkml/modules/classes/Hypothesis.yaml @@ -15,7 +15,11 @@ prefixes: imports: - linkml:types - - ../slots/confidence_score + # REMOVED 2026-01-19: ../slots/confidence_score - migrated to is_or_was_generated_by + GenerationEvent + ConfidenceScore (Rule 53) + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore + - ./ConfidenceMethod default_range: string @@ -50,7 +54,8 @@ classes: - skos:note slots: - - confidence_score + # REMOVED 2026-01-19: confidence_score - migrated to is_or_was_generated_by (Rule 53) + - is_or_was_generated_by attributes: asserted_value: @@ -107,7 +112,10 @@ classes: Hypothesis: asserted_value: "MUSEUM" confidence_level: "medium" - confidence_score: 0.65 + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.65 + has_or_had_method: "type_inference_from_website" supporting_evidence: - "Website mentions 'exhibitions'" - "Has physical visitor address" @@ -121,10 +129,16 @@ classes: Hypothesis: asserted_value: "COLLECTING_SOCIETY" confidence_level: "high" - confidence_score: 0.85 + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.85 + has_or_had_method: "name_pattern_analysis" supporting_evidence: - "Name contains 'Historische Vereniging'" - "Membership-based organization" - "Maintains local archive" description: >- High-confidence hypothesis for a collecting society. + + comments: + - 'MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + ConfidenceScore' diff --git a/schemas/20251121/linkml/modules/classes/LLMResponse.yaml b/schemas/20251121/linkml/modules/classes/LLMResponse.yaml index aacf28dced..b5b7d5fbc4 100644 --- a/schemas/20251121/linkml/modules/classes/LLMResponse.yaml +++ b/schemas/20251121/linkml/modules/classes/LLMResponse.yaml @@ -34,7 +34,9 @@ imports: - ../slots/latency_ms - ../slots/has_or_had_mode # was: thinking_mode - migrated per Rule 53/56 (2026-01-16) - ./ThinkingMode # for has_or_had_mode range - - ../slots/clear_thinking + # clear_thinking migrated to preserves_or_preserved + ReasoningContent per Rule 53 (2026-01-19) + - ../slots/preserves_or_preserved + - ./ReasoningContent # for preserves_or_preserved range - ../slots/created - ../slots/cost_usd - ../slots/request_id @@ -53,7 +55,7 @@ classes: \n2. **Preserved Thinking** (new in GLM-4.7):\n - Retains reasoning_content from previous assistant turns in context\n\ \ - Preserves reasoning continuity across multi-turn conversations\n - Improves model performance and increases\ \ cache hit rates\n - **Enabled by default on Coding Plan endpoint**\n - Requires returning EXACT, UNMODIFIED reasoning_content\ - \ back to API\n - Set via: `\"clear_thinking\": false` (do NOT clear previous reasoning)\n\n3. **Turn-level Thinking**\ + \ back to API\n - Set via: `preserves_or_preserved` with `is_preserved: true` (preserve previous reasoning)\n\n3. **Turn-level Thinking**\ \ (new in GLM-4.7):\n - Control reasoning computation on a per-turn basis\n - Enable/disable thinking independently\ \ for each request in a session\n - Useful for balancing speed (simple queries) vs accuracy (complex tasks)\n -\ \ Set via: `\"thinking\": {\"type\": \"enabled\"}` or `\"thinking\": {\"type\": \"disabled\"}`\n\n**Critical Implementation\ @@ -71,7 +73,7 @@ classes: - schema:CreativeWork slots: - has_or_had_token # was: cached_token AND completion_token - migrated per Rule 53/56 (2026-01-17, 2026-01-19) - - clear_thinking + - preserves_or_preserved # was: clear_thinking - migrated per Rule 53 (2026-01-19) # completion_token removed - now use has_or_had_token with OutputTokenType - content - cost_usd @@ -226,14 +228,30 @@ classes: mode_value: disabled has_or_had_label: Disabled description: Disabled for fast, simple queries - clear_thinking: - range: boolean + # REMOVED 2026-01-19: clear_thinking - migrated to preserves_or_preserved + ReasoningContent + # clear_thinking: range: boolean (false=preserve reasoning, true=clear reasoning) + preserves_or_preserved: + description: | + Reasoning content preserved across conversation turns. + MIGRATED 2026-01-19: Replaces clear_thinking boolean per Rule 53/56. + + When populated with is_preserved: true, equivalent to old clear_thinking: false + (Preserved Thinking enabled - keep reasoning for better cache hits). + range: ReasoningContent + inlined: true + multivalued: true required: false examples: - - value: false - description: Keep reasoning for Preserved Thinking (recommended) - - value: true - description: Clear previous reasoning (fresh context each turn) + - value: + is_preserved: true + has_or_had_label: Preserved Reasoning + content_text: The user is asking about Dutch heritage institutions... + turn_number: 3 + description: Preserved reasoning content (equivalent to clear_thinking false) + - value: + is_preserved: false + has_or_had_label: Fresh Context + description: Cleared reasoning (equivalent to clear_thinking true) comments: - reasoning_content is the key field for Interleaved Thinking (GLM 4.7) - Store reasoning_content for debugging, auditing, and DSPy optimization diff --git a/schemas/20251121/linkml/modules/classes/PrimaryDigitalPresenceAssertion.yaml b/schemas/20251121/linkml/modules/classes/PrimaryDigitalPresenceAssertion.yaml index 56d43c2434..6d15f33381 100644 --- a/schemas/20251121/linkml/modules/classes/PrimaryDigitalPresenceAssertion.yaml +++ b/schemas/20251121/linkml/modules/classes/PrimaryDigitalPresenceAssertion.yaml @@ -7,7 +7,11 @@ imports: - ./TimeSpan - ../enums/DigitalPresenceTypeEnum - ../slots/supersedes_or_superseded # was: supersede - migrated per Rule 53/56 (2026-01-17) - - ../slots/confidence_score + # REMOVED 2026-01-19: ../slots/confidence_score - migrated to is_or_was_generated_by + GenerationEvent + ConfidenceScore (Rule 53) + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore + - ./ConfidenceMethod - ../slots/is_or_was_superseded_by # was: superseded_by - migrated per Rule 53/56 (2026-01-16) - ../slots/is_or_was_about_digital_presence # REMOVED - migrated to is_or_was_asserted_by (Rule 53) @@ -106,7 +110,8 @@ classes: - has_assertion_rationale - has_assertion_value - has_or_had_based_on_observation - - confidence_score + # REMOVED 2026-01-19: confidence_score - migrated to is_or_was_generated_by (Rule 53) + - is_or_was_generated_by - digital_presence_type - specificity_annotation - is_or_was_superseded_by # was: superseded_by - migrated per Rule 53/56 (2026-01-16) @@ -196,16 +201,25 @@ classes: asserter_contact: jane.doe@heritage-org.nl description: Human analyst asserter # was_asserted_by REMOVED - fully migrated to is_or_was_asserted_by (Rule 53, 2026-01-15) - confidence_score: - range: float + # REMOVED 2026-01-19: confidence_score - migrated to is_or_was_generated_by (Rule 53) + is_or_was_generated_by: + range: GenerationEvent required: false - minimum_value: 0.0 - maximum_value: 1.0 + inlined: true + description: >- + Generation event containing confidence score for this assertion. + MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern. examples: - - value: 0.95 - description: High confidence - no website exists - - value: 0.65 - description: Medium confidence - both active, unclear primary + - value: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "evidence_analysis" + description: High confidence - no website exists, Facebook only presence + - value: + has_or_had_score: + has_or_had_score: 0.65 + has_or_had_method: "comparative_analysis" + description: Medium confidence - both presences active, unclear primary is_or_was_superseded_by: # was: superseded_by - migrated per Rule 53/56 (2026-01-16) range: uriorcurie required: false @@ -217,6 +231,7 @@ classes: examples: - value: https://nde.nl/ontology/hc/assertion/club-facebook-secondary-2020 comments: + - 'MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore (Rule 53)' - Models primary presence status as temporal assertion, not static boolean - Based on CIDOC-CRM E13_Attribute_Assignment pattern - Supports change tracking via supersedes_or_superseded/is_or_was_superseded_by links diff --git a/schemas/20251121/linkml/modules/classes/Provenance.yaml b/schemas/20251121/linkml/modules/classes/Provenance.yaml index 4bc8002304..46f8dd67a0 100644 --- a/schemas/20251121/linkml/modules/classes/Provenance.yaml +++ b/schemas/20251121/linkml/modules/classes/Provenance.yaml @@ -19,7 +19,10 @@ imports: - linkml:types - ../slots/has_or_had_agent - ../slots/temporal_extent - - ../slots/confidence_score + # REMOVED 2026-01-19: ../slots/confidence_score - migrated to is_or_was_generated_by + ConfidenceScore + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore default_range: string @@ -56,7 +59,8 @@ classes: slots: - has_or_had_agent - temporal_extent - - confidence_score + # REMOVED 2026-01-19: confidence_score - migrated to is_or_was_generated_by + ConfidenceScore + - is_or_was_generated_by attributes: source_entity: @@ -83,6 +87,20 @@ classes: Human-readable note about this provenance statement. slot_uri: prov:value + slot_usage: + is_or_was_generated_by: + range: GenerationEvent + inlined: true + description: >- + Generation event containing confidence scoring information. + MIGRATED 2026-01-19: Replaces confidence_score slot with structured GenerationEvent. + examples: + - value: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "xpath_extraction" + description: Generation event with confidence score + annotations: custodian_types: '["*"]' custodian_types_rationale: >- @@ -97,10 +115,15 @@ classes: Provenance: extraction_method: "xpath_extraction" source_entity: "https://example.org/webpage/12345" - confidence_score: 0.95 + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "xpath_extraction" + has_or_had_description: "Exact match at expected XPath" note: "Extracted from archived HTML using XPath" description: >- Provenance for an XPath-extracted value from an archived webpage. + Uses new structured ConfidenceScore via GenerationEvent. - value: | Provenance: @@ -108,6 +131,10 @@ classes: agent_type: "software" name: "glam-extractor-v2.1" extraction_method: "api_scraping" - confidence_score: 0.85 + is_or_was_generated_by: + has_or_had_score: + has_or_had_score: 0.85 + has_or_had_method: "api_response_validation" description: >- Provenance for API-scraped data with agent identification. + Confidence score captured in structured GenerationEvent. diff --git a/schemas/20251121/linkml/modules/classes/ProvenanceBlock.yaml b/schemas/20251121/linkml/modules/classes/ProvenanceBlock.yaml index 0ac9599f1a..2f8f75e0df 100644 --- a/schemas/20251121/linkml/modules/classes/ProvenanceBlock.yaml +++ b/schemas/20251121/linkml/modules/classes/ProvenanceBlock.yaml @@ -22,7 +22,11 @@ imports: - ./DataTierSummary - ./EnrichmentProvenance - ./ProvenanceSources - - ../slots/confidence_score + # REMOVED 2026-01-19: ../slots/confidence_score - migrated to is_or_was_generated_by + GenerationEvent + ConfidenceScore (Rule 53) + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore + - ./ConfidenceMethod default_range: string classes: @@ -47,7 +51,29 @@ classes: - prov:Entity - prov:Activity slots: - - confidence_score + # REMOVED 2026-01-19: confidence_score - migrated to is_or_was_generated_by (Rule 53) + - is_or_was_generated_by + slot_usage: + is_or_was_generated_by: + range: GenerationEvent + required: false + inlined: true + description: >- + Generation event containing confidence score for the provenance block. + MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern. + examples: + - value: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "automated_extraction" + description: High confidence data extraction + - value: + has_or_had_score: + has_or_had_score: 0.65 + has_or_had_method: "manual_review" + description: Medium confidence manual review + comments: + - "MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore (Rule 53)" attributes: schema_version: range: string diff --git a/schemas/20251121/linkml/modules/classes/ReasoningContent.yaml b/schemas/20251121/linkml/modules/classes/ReasoningContent.yaml new file mode 100644 index 0000000000..9e3b61da69 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/ReasoningContent.yaml @@ -0,0 +1,163 @@ +# ReasoningContent - LLM reasoning content preservation class +# +# Created: 2026-01-19 +# Migration: clear_thinking → preserves_or_preserved + ReasoningContent class +# Per slot_fixes.yaml, Rule 53/56 +# +# Rule compliance: 0b (structured class), 37 (specificity), 50 (ontology mapping) + +id: https://nde.nl/ontology/hc/class/ReasoningContent +name: reasoning_content_class +title: Reasoning Content Class + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + prov: http://www.w3.org/ns/prov# + +default_prefix: hc + +imports: + - linkml:types + - ../slots/has_or_had_label + - ../slots/has_or_had_description + - ../slots/has_or_had_identifier + +classes: + ReasoningContent: + class_uri: prov:Entity + description: | + LLM reasoning content that is preserved across conversation turns. + + **DEFINITION**: + + ReasoningContent represents the chain-of-thought reasoning that LLMs like + GLM 4.7 expose through their thinking modes. This class captures the + reasoning_content that should be preserved when using "Preserved Thinking" + mode for multi-turn conversations. + + **GLM 4.7 Preserved Thinking** (https://docs.z.ai/guides/capabilities/thinking-mode): + + When `clear_thinking: false` (Preserved Thinking enabled): + - Reasoning content from previous turns is retained in context + - Improves model performance and increases cache hit rates + - Requires returning EXACT, UNMODIFIED reasoning_content back to API + + **Migration from clear_thinking**: + + This class replaces the boolean `clear_thinking` slot with a structured + representation of what is being preserved: + + | Old Pattern | New Pattern | + |-------------|-------------| + | `clear_thinking: false` | `preserves_or_preserved: ReasoningContent` with `is_preserved: true` | + | `clear_thinking: true` | `preserves_or_preserved: ReasoningContent` with `is_preserved: false` | + + **PROV-O Alignment**: + - ReasoningContent IS a prov:Entity (the reasoning output) + - Links to LLMResponse via preserves_or_preserved slot + - Enables tracking reasoning provenance across turns + + **Use Cases**: + - Multi-turn agent conversations with preserved context + - Debugging reasoning chain across API calls + - Auditing LLM decision-making process + - Optimizing cache hit rates + exact_mappings: + - prov:Entity + close_mappings: + - schema:Comment + - schema:Review + slots: + - has_or_had_label + - has_or_had_description + - has_or_had_identifier + attributes: + is_preserved: + range: boolean + required: true + description: | + Whether this reasoning content is preserved across turns. + + - **true**: Preserved Thinking enabled (keep reasoning, better cache hits) + - **false**: Clear previous reasoning (fresh context each turn) + + Maps to the inverse of the old `clear_thinking` boolean: + - `is_preserved: true` ≡ `clear_thinking: false` + - `is_preserved: false` ≡ `clear_thinking: true` + + content_text: + range: string + required: false + description: | + The actual reasoning content text (chain-of-thought). + Optional - may be omitted if only tracking preservation status. + examples: + - value: | + The user is asking about Dutch heritage institutions. I need to identify: + 1) Institution name: Rijksmuseum + 2) Type: Museum (maps to InstitutionTypeEnum.MUSEUM) + 3) Location: Amsterdam (city in Noord-Holland province)... + description: GLM 4.7 reasoning trace + + turn_number: + range: integer + required: false + description: | + The conversation turn number this reasoning came from. + Useful for tracking reasoning provenance across multi-turn conversations. + + token_count: + range: integer + required: false + description: | + Number of tokens in the reasoning content. + Important for context window management. + + slot_usage: + has_or_had_label: + description: Human-readable label for this reasoning content. + examples: + - value: Turn 3 Reasoning + description: Reasoning from the third conversation turn + + has_or_had_description: + description: Description of the reasoning context or purpose. + examples: + - value: Chain-of-thought reasoning for heritage institution extraction + description: Purpose of the preserved reasoning + + has_or_had_identifier: + description: Unique identifier for this reasoning content block. + examples: + - value: reasoning-turn-3-20260119-143000 + description: Timestamped reasoning block ID + + annotations: + specificity_score: 0.80 + specificity_rationale: Highly specific to LLM API reasoning preservation domain + custodian_types: '["D"]' + custodian_types_rationale: Applies to Digital Platform custodians using LLM APIs + + examples: + - value: + is_preserved: true + has_or_had_label: Preserved Reasoning + content_text: | + The user is asking about Dutch heritage institutions... + turn_number: 3 + token_count: 250 + description: Preserved reasoning content from turn 3 + + - value: + is_preserved: false + has_or_had_label: Cleared Context + has_or_had_description: Fresh context for new query topic + description: Cleared reasoning (fresh context) + + comments: + - Created from slot_fixes.yaml migration (2026-01-19) + - Replaces boolean clear_thinking with structured reasoning preservation + - Enables tracking what reasoning is preserved and why + - PROV-O Entity alignment for provenance tracking diff --git a/schemas/20251121/linkml/modules/classes/StorageCondition.yaml b/schemas/20251121/linkml/modules/classes/StorageCondition.yaml index 486c9f4026..294b52f785 100644 --- a/schemas/20251121/linkml/modules/classes/StorageCondition.yaml +++ b/schemas/20251121/linkml/modules/classes/StorageCondition.yaml @@ -18,7 +18,11 @@ imports: - ../enums/StorageConditionStatusEnum - ../enums/StorageObserverTypeEnum - ../slots/supersede_condition # was: supersede - migrated to class-specific slot 2026-01-16 - - ../slots/confidence_score + # REMOVED 2026-01-19: ../slots/confidence_score - migrated to is_or_was_generated_by + GenerationEvent + ConfidenceScore (Rule 53) + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore + - ./ConfidenceMethod - ../slots/observation_date - ../slots/follow_up_date - ../slots/has_assessment_category @@ -92,7 +96,8 @@ classes: - has_or_had_category_assessment - compliance_status - has_or_had_identifier # was: condition_id - migrated per Rule 53 (2026-01-18) - - confidence_score + # REMOVED 2026-01-19: confidence_score - migrated to is_or_was_generated_by (Rule 53) + - is_or_was_generated_by - evidence_documentation - follow_up_date - is_official_assessment @@ -226,19 +231,30 @@ classes: examples: - value: '2024-12-01' description: Post-treatment verification inspection - confidence_score: - range: float - minimum_value: 0.0 - maximum_value: 1.0 + # REMOVED 2026-01-19: confidence_score - migrated to is_or_was_generated_by (Rule 53) + is_or_was_generated_by: + range: GenerationEvent + required: false + inlined: true + description: >- + Generation event containing confidence score for this observation. + MIGRATED 2026-01-19: Replaces confidence_score slot with structured pattern. examples: - - value: 0.95 - description: Government inspector with full access - - value: 0.75 - description: Journalist with limited access + - value: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: "government_inspection" + description: High confidence - Government inspector with full access + - value: + has_or_had_score: + has_or_had_score: 0.75 + has_or_had_method: "journalist_investigation" + description: Medium confidence - Journalist with limited access # supersede migrated to supersede_condition # This domain-specific slot has explicit StorageCondition range # to avoid OWL type ambiguity (DatatypeProperty vs ObjectProperty conflict) comments: + - 'MIGRATED 2026-01-19: confidence_score → is_or_was_generated_by + GenerationEvent + ConfidenceScore (Rule 53)' - Observations are NOT assertions of truth - they are reports from specific observers - Multiple observations may exist for same storage with conflicting findings - Gap between observed conditions and policy conditions is critical transparency metric @@ -272,7 +288,10 @@ classes: evidence_documentation: - https://www.volkskrant.nl/archive-pest-crisis-2024 remediation_required: true - confidence_score: 0.85 + is_or_was_generated_by: # was: confidence_score - migrated per Rule 53 (2026-01-19) + has_or_had_score: + has_or_had_score: 0.85 + has_or_had_method: "journalist_investigation" description: Journalist investigation discovering unreported pest infestation - value: has_or_had_identifier: # was: condition_id - migrated per Rule 53 (2026-01-18) @@ -305,7 +324,10 @@ classes: observation_notes: Quarterly facilities review. All parameters within policy ranges. compliance_status: COMPLIANT remediation_required: false - confidence_score: 0.9 + is_or_was_generated_by: # was: confidence_score - migrated per Rule 53 (2026-01-19) + has_or_had_score: + has_or_had_score: 0.9 + has_or_had_method: "internal_assessment" description: Official quarterly internal assessment StorageConditionCategoryAssessment: class_uri: hc:StorageConditionCategoryAssessment diff --git a/schemas/20251121/linkml/modules/classes/VideoTimeSegment.yaml b/schemas/20251121/linkml/modules/classes/VideoTimeSegment.yaml index 35669b15e7..df6d87835b 100644 --- a/schemas/20251121/linkml/modules/classes/VideoTimeSegment.yaml +++ b/schemas/20251121/linkml/modules/classes/VideoTimeSegment.yaml @@ -3,7 +3,6 @@ name: video_time_segment_class title: Video Time Segment Class imports: - linkml:types - - ../slots/confidence - ../slots/end_seconds - ../slots/end_time - ../slots/segment_index @@ -16,32 +15,12 @@ imports: - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) - ./SpecificityAnnotation - ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17) - - ./TemplateSpecificityType - - ./TemplateSpecificityTypes - - ../slots/confidence - - ../slots/end_seconds - - ../slots/end_time - - ../slots/segment_index - - ../slots/segment_text - - ../slots/speaker_id - - ../slots/speaker_label - - ../slots/specificity_annotation - - ../slots/start_seconds - - ../slots/start_time - - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) - - ../slots/confidence - - ../slots/end_seconds - - ../slots/end_time - - ../slots/segment_index - - ../slots/segment_text - - ../slots/speaker_id - - ../slots/speaker_label - - ../slots/specificity_annotation - - ../slots/start_seconds - - ../slots/start_time - - ../slots/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) + # MIGRATED 2026-01-19: confidence → is_or_was_generated_by + GenerationEvent + ConfidenceScore + - ../slots/is_or_was_generated_by + - ./GenerationEvent + - ./ConfidenceScore prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ @@ -170,7 +149,6 @@ classes: related_mappings: - schema:Clip slots: - - confidence - end_seconds - end_time - segment_index @@ -181,6 +159,7 @@ classes: - start_seconds - start_time - has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17) + - is_or_was_generated_by # MIGRATED 2026-01-19: replaces confidence slot slot_usage: start_time: range: string @@ -231,15 +210,23 @@ classes: description: First segment - value: 42 description: 43rd segment (zero-indexed) - confidence: - range: float + is_or_was_generated_by: + range: GenerationEvent required: false - minimum_value: 0.0 - maximum_value: 1.0 + inlined: true + description: >- + Generation event containing confidence score for ASR/CV segment accuracy. + MIGRATED 2026-01-19: Replaces confidence slot with structured pattern. examples: - - value: 0.95 + - value: + has_or_had_score: + has_or_had_score: 0.95 + has_or_had_method: asr_transcription description: High confidence ASR segment - - value: 0.72 + - value: + has_or_had_score: + has_or_had_score: 0.72 + has_or_had_method: cv_detection description: Medium confidence, may contain errors speaker_id: range: string @@ -266,6 +253,7 @@ classes: - Aligns with W3C Media Fragments URI specification - Confidence scoring for AI-generated content - Speaker diarization support for multi-speaker transcripts + - 'MIGRATED 2026-01-19: confidence → is_or_was_generated_by + ConfidenceScore' see_also: - https://www.w3.org/TR/media-frags/ - https://www.w3.org/TR/annotation-model/ diff --git a/schemas/20251121/linkml/modules/classes/Warehouse.yaml b/schemas/20251121/linkml/modules/classes/Warehouse.yaml index 9c01ab9b12..373aff6c3c 100644 --- a/schemas/20251121/linkml/modules/classes/Warehouse.yaml +++ b/schemas/20251121/linkml/modules/classes/Warehouse.yaml @@ -7,7 +7,13 @@ imports: - ./CustodianObservation - ./ReconstructionActivity - ../slots/has_or_had_access_restriction - - ../slots/climate_control_type + # climate_control_type migrated to has_or_had_policy + ClimateControlPolicy (Rule 53, 2026-01-19) + - ../slots/has_or_had_policy + - ./ClimateControlPolicy + - ./ClimateControl + - ./ClimateControlType + - ./ClimateControlTypes + - ../slots/regulates_or_regulated - ../slots/contents_description - ../slots/has_climate_control - ../slots/has_forklift_access @@ -87,7 +93,7 @@ classes: - schema:LocalBusiness slots: - has_or_had_access_restriction - - climate_control_type + - has_or_had_policy # was: climate_control_type - migrated per Rule 53 (2026-01-19) - contents_description - has_climate_control - has_forklift_access @@ -183,13 +189,29 @@ classes: description: Basic climate control - value: false description: Uncontrolled - climate_control_type: - range: string + has_or_had_policy: # was: climate_control_type - migrated per Rule 53 (2026-01-19) + range: ClimateControlPolicy + description: | + Climate control policy governing this warehouse. + MIGRATED from climate_control_type per slot_fixes.yaml (Rule 53). + + **MIGRATION NOTE**: + Old simple string values (HEATED, HVAC, etc.) now modeled as: + ClimateControlPolicy → regulates_or_regulated → ClimateControl → has_or_had_type → ClimateControlType + inlined: true examples: - - value: HEATED - description: Heating only - - value: HVAC - description: Full HVAC + - value: + has_or_had_label: "Warehouse Basic Climate Requirements" + regulates_or_regulated: + - has_or_had_label: "Warehouse Heating" + has_or_had_type: HEATED + description: Heating only policy + - value: + has_or_had_label: "Full HVAC Requirements" + regulates_or_regulated: + - has_or_had_label: "Central HVAC System" + has_or_had_type: HVAC + description: Full HVAC policy has_or_had_security_level: # was: warehouse_security_level description: | Security level of this warehouse. @@ -234,6 +256,7 @@ classes: - 'CRITICAL: Distinguished from Storage class (which is for collection materials)' - Warehouse = non-collection items (equipment, supplies, furniture) - Storage = collection materials (climate-controlled, high security) + - 'MIGRATION (2026-01-19): climate_control_type → has_or_had_policy + ClimateControlPolicy per Rule 53' see_also: - http://vocab.getty.edu/aat/300007775 - https://schema.org/Warehouse @@ -255,7 +278,11 @@ classes: has_loading_dock: true has_forklift_access: true has_climate_control: true - climate_control_type: HEATED + has_or_had_policy: # was: climate_control_type - migrated per Rule 53 (2026-01-19) + has_or_had_label: "Warehouse Basic Climate Requirements" + regulates_or_regulated: + - has_or_had_label: "Logistics Warehouse Heating" + has_or_had_type: HEATED has_or_had_security_level: # was: warehouse_security_level has_or_had_code: "STANDARD" level_name: "Standard Security" @@ -279,6 +306,7 @@ classes: has_loading_dock: true has_forklift_access: false has_climate_control: false + # No has_or_had_policy - warehouse has no climate control has_or_had_security_level: # was: warehouse_security_level has_or_had_code: "BASIC" level_name: "Basic Security" diff --git a/schemas/20251121/linkml/modules/slots/clear_thinking.yaml b/schemas/20251121/linkml/modules/slots/archive/clear_thinking_archived_20260119.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/clear_thinking.yaml rename to schemas/20251121/linkml/modules/slots/archive/clear_thinking_archived_20260119.yaml diff --git a/schemas/20251121/linkml/modules/slots/climate_control_type.yaml b/schemas/20251121/linkml/modules/slots/archive/climate_control_type_archived_20260119.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/climate_control_type.yaml rename to schemas/20251121/linkml/modules/slots/archive/climate_control_type_archived_20260119.yaml diff --git a/schemas/20251121/linkml/modules/slots/manifest.json b/schemas/20251121/linkml/modules/slots/manifest.json index 71db41aca2..d39f749217 100644 --- a/schemas/20251121/linkml/modules/slots/manifest.json +++ b/schemas/20251121/linkml/modules/slots/manifest.json @@ -76,8 +76,6 @@ "claim_value.yaml", "based_on_claim.yaml", "classifies_or_classified.yaml", - "clear_thinking.yaml", - "climate_control_type.yaml", "closed_space_id.yaml", "cms_category.yaml", "cms_detected.yaml", @@ -1585,6 +1583,7 @@ "preservation_requirement.yaml", "preservation_standard.yaml", "preservative_detail.yaml", + "preserves_or_preserved.yaml", "previous_observation.yaml", "price.yaml", "price_currency.yaml", @@ -1691,6 +1690,7 @@ "registration_date.yaml", "registration_required.yaml", "regulated_by_scheme.yaml", + "regulates_or_regulated.yaml", "regulatory_authority.yaml", "related.yaml", "related_agenda.yaml", diff --git a/schemas/20251121/linkml/modules/slots/preserves_or_preserved.yaml b/schemas/20251121/linkml/modules/slots/preserves_or_preserved.yaml new file mode 100644 index 0000000000..1cc4e4772e --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/preserves_or_preserved.yaml @@ -0,0 +1,67 @@ +# preserves_or_preserved slot +# Generic slot for preservation relationships (what is being preserved) +# +# Following RiC-O naming convention (Rule 39): "preservesOrPreserved..." pattern +# for temporal relationships in heritage domain. +# +# Created: 2026-01-19 +# Migration: clear_thinking → preserves_or_preserved (per slot_fixes.yaml, Rule 53/56) +# Rule compliance: 38, 39, 42, 53, 55 + +id: https://nde.nl/ontology/hc/slot/preserves_or_preserved +name: preserves_or_preserved_slot +title: Preserves Or Preserved Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + prov: http://www.w3.org/ns/prov# + rico: https://www.ica.org/standards/RiC/ontology# + +default_prefix: hc + +imports: + - linkml:types + +slots: + preserves_or_preserved: + slot_uri: rico:hasOrHadSubject + description: | + What is being preserved or maintained by this entity. + + **Temporal Semantics** (RiC-O Pattern): + The "preservesOrPreserved" naming follows RiC-O convention indicating + this relationship may be historical - an entity may have preserved + different content over time. + + **Ontological Alignment**: + - **Primary** (`slot_uri`): `rico:hasOrHadSubject` - RiC-O subject relationship + - **Close**: `prov:used` - PROV-O input relationship + - **Close**: `schema:object` - Schema.org action object + + **Usage**: + This is a GENERIC slot intended for reuse across multiple classes. + Classes may narrow the range in slot_usage to reference specific classes + (e.g., ReasoningContent for LLM context preservation). + + **LLM Thinking Context**: + In the context of LLM responses, this slot replaces the boolean `clear_thinking` + slot. Instead of a boolean flag, this slot points to a ReasoningContent object + that captures what reasoning is being preserved across turns. + + **Range**: `uriorcurie` (Rule 55 - broaden range for class-level narrowing) + + **Migrated From**: clear_thinking (2026-01-19) + range: uriorcurie + multivalued: true + exact_mappings: + - rico:hasOrHadSubject + close_mappings: + - prov:used + - schema:object + annotations: + custodian_types: '["*"]' + custodian_types_rationale: Generic preservation slot applicable to any entity type + specificity_score: 0.20 + specificity_rationale: Generic preservation relationship slot used across many domains diff --git a/schemas/20251121/linkml/modules/slots/regulates_or_regulated.yaml b/schemas/20251121/linkml/modules/slots/regulates_or_regulated.yaml new file mode 100644 index 0000000000..7fd09aac65 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/regulates_or_regulated.yaml @@ -0,0 +1,74 @@ +# regulates_or_regulated slot +# Generic regulation relationship following RiC-O naming pattern +# +# Generation date: 2026-01-19 +# Rule compliance: 38 (slot centralization + semantic URI), 39 (RiC-O naming), 53 (slot_fixes.yaml) +# +# Created for climate_control_type migration + +id: https://nde.nl/ontology/hc/slot/regulates_or_regulated +name: regulates_or_regulated_slot +title: Regulates Or Regulated Slot + +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + prov: http://www.w3.org/ns/prov# + dcterms: http://purl.org/dc/terms/ + odrl: http://www.w3.org/ns/odrl/2/ + +default_prefix: hc + +imports: + - linkml:types + +slots: + regulates_or_regulated: + slot_uri: odrl:target + description: | + Entity or system that is or was regulated by a policy or control mechanism. + + **Temporal Semantics** (RiC-O Pattern): + The "OrRegulated" suffix follows RiC-O convention indicating + the regulation relationship may be current or historical. + + **Ontological Alignment**: + - **Primary** (`slot_uri`): `odrl:target` - ODRL target of policy + - **Related**: `prov:wasInfluencedBy` - PROV-O influence + + **Use Cases**: + - Climate control policy regulating climate control systems + - Access policy regulating collection access + - Preservation policy regulating storage conditions + + **Cardinality**: + Multivalued - policies may regulate multiple entities/systems. + + range: uriorcurie + required: false + multivalued: true + inlined: true + inlined_as_list: true + + related_mappings: + - prov:wasInfluencedBy + + annotations: + rico_naming_convention: | + Follows RiC-O "OrRegulated" pattern for temporal predicates. + See Rule 39: Slot Naming Convention (RiC-O Style) + created_for: "climate_control_type migration" + migration_date: "2026-01-19" + custodian_types: '["*"]' + custodian_types_rationale: Regulation relationships apply to all heritage types. + specificity_score: 0.40 + specificity_rationale: Moderately specialized slot for policy-target relationships. + + comments: + - "Links policies to what they regulate" + - "Maps to odrl:target for rights/rules targets" + - "RiC-O naming: OrRegulated indicates potentially historical" + + examples: + - value: "hc:ClimateControl/warehouse-hvac" + description: "Climate control system regulated by policy" diff --git a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml index 0f49db0ab7..207a13df07 100644 --- a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml +++ b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml @@ -9680,6 +9680,16 @@ fixes: type: slot - label: ReasoningContent type: class + processed: + status: true + timestamp: '2026-01-19T20:00:00Z' + session: session-2026-01-19-clear-thinking-migration + notes: | + FULLY MIGRATED: clear_thinking → preserves_or_preserved + ReasoningContent. + Existing: has_or_had_mode slot, ThinkingMode class. + Created: preserves_or_preserved.yaml slot, ReasoningContent.yaml class. + Updated: LLMResponse.yaml (imports, slots, slot_usage, description). + Archived: modules/slots/archive/clear_thinking_archived_20260119.yaml. - original_slot_id: https://nde.nl/ontology/hc/slot/climate_control_type revision: - label: has_or_had_policy @@ -9698,6 +9708,19 @@ fixes: type: slot - label: ClimateControlTypes type: class + processed: + status: true + timestamp: '2026-01-19T20:30:00Z' + session: session-2026-01-19-climate-control-type-migration + notes: | + FULLY MIGRATED: climate_control_type → has_or_had_policy + ClimateControlPolicy. + Existing slots used: has_or_had_policy, has_or_had_type, includes_or_included. + Created: regulates_or_regulated.yaml slot (new RiC-O pattern). + Created: ClimateControlPolicy.yaml, ClimateControl.yaml classes. + Created: ClimateControlType.yaml (abstract base), ClimateControlTypes.yaml (concrete types) per Rule 0b. + Concrete types: HeatedClimateControl, HVACClimateControl, DehumidifiedClimateControl, CooledClimateControl, PassiveClimateControl, NoClimateControl. + Updated: Warehouse.yaml (imports, slots list, slot_usage, 2 examples). + Archived: modules/slots/archive/climate_control_type_archived_20260119.yaml. - original_slot_id: https://nde.nl/ontology/hc/slot/closed_space_id revision: - label: has_or_had_identifier @@ -10463,6 +10486,11 @@ fixes: type: slot - label: ConfidenceScore type: class + processed: + status: true + notes: '2026-01-19: Migration complete. Updated AudioEventSegment.yaml, BirthDate.yaml, + DetectedEntity.yaml, Event.yaml, VideoTimeSegment.yaml, FindingAid.yaml to use + is_or_was_generated_by + GenerationEvent + ConfidenceScore pattern per Rule 53.' - original_slot_id: https://nde.nl/ontology/hc/slot/confidence_method revision: - label: is_or_was_generated_by @@ -10477,6 +10505,10 @@ fixes: type: slot - label: ConfidenceMethod type: class + processed: + status: true + notes: '2026-01-19: ConfidenceMethod class created. Note: ConfidenceMeasure.yaml still + uses confidence_method directly as it serves as range for has_or_had_confidence_measure slot.' - original_slot_id: https://nde.nl/ontology/hc/slot/confidence_score revision: - label: is_or_was_generated_by @@ -10495,6 +10527,11 @@ fixes: type: slot - label: ConfidenceMethodScore type: class + processed: + status: true + notes: '2026-01-19: Migration complete. Updated Provenance.yaml, ProvenanceBlock.yaml, + ChAnnotatorAnnotationMetadata.yaml, Hypothesis.yaml, PrimaryDigitalPresenceAssertion.yaml, + StorageCondition.yaml to use is_or_was_generated_by + GenerationEvent + ConfidenceScore pattern per Rule 53.' - original_slot_id: https://nde.nl/ontology/hc/slot/confidence_threshold revision: - label: has_or_had_treshold @@ -10507,6 +10544,12 @@ fixes: type: slot - label: ConfidenceValue type: class + processed: + status: true + notes: '2026-01-19: Note: ConfidenceMeasure.yaml still uses confidence_value directly + as it serves as range for has_or_had_confidence_measure slot in CustodianObservation + and ReconstructionActivity. This is intentional - ConfidenceMeasure is a different + pattern from the is_or_was_generated_by migration.' - original_slot_id: https://nde.nl/ontology/hc/slot/conflict_status revision: - label: is_or_was_involved_in