Refactor manifest update script to dynamically scan and add YAML files for classes, slots, and enums; archive obsolete slots; add new slot definitions for various attributes including auction details, assessment categories, and authentication requirements; introduce new classes for aspect ratios, audits, and authority data; enhance slot descriptions and mappings for clarity and consistency.

This commit is contained in:
kempersc 2026-01-27 10:29:15 +01:00
parent 80eb3d969c
commit b2840d5db4
48 changed files with 610 additions and 335 deletions

View file

@ -42,6 +42,8 @@ RUN useradd -m -u 1000 -s /bin/bash glam
# Install Python dependencies first (better layer caching)
COPY requirements.txt .
# Install CPU-only PyTorch first to avoid massive CUDA download and runtime issues
RUN pip install --no-cache-dir torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
RUN pip install --no-cache-dir -r requirements.txt
# Copy application code

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-27T08:04:51.838Z",
"generated": "2026-01-27T09:07:17.016Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 3014,
"categoryCounts": {

View file

@ -1,5 +1,5 @@
{
"generated": "2026-01-27T09:07:17.016Z",
"generated": "2026-01-27T09:29:17.532Z",
"schemaRoot": "/schemas/20251121/linkml",
"totalFiles": 3014,
"categoryCounts": {

View file

@ -0,0 +1,35 @@
id: https://nde.nl/ontology/hc/class/AspectRatio
name: AspectRatio
title: AspectRatio
description: >-
The aspect ratio of a visual media object (video, image).
Used to store structured aspect ratio information (e.g., "16:9", "4:3").
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_degree
- ../slots/has_or_had_value
classes:
AspectRatio:
class_uri: schema:PropertyValue
description: Aspect ratio specification.
slots:
- has_or_had_degree
slot_usage:
has_or_had_degree:
range: string
description: The aspect ratio string (e.g., "16:9").
examples:
- value: "16:9"
- value: "4:3"

View file

@ -0,0 +1,29 @@
id: https://nde.nl/ontology/hc/class/AssessmentCategory
name: AssessmentCategory
title: AssessmentCategory
description: >-
A category or classification used in an assessment (e.g., condition assessment).
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_category
classes:
AssessmentCategory:
class_uri: skos:Concept
description: Assessment category concept.
slots:
- has_or_had_category
slot_usage:
has_or_had_category:
range: string
description: The category label or code.

View file

@ -0,0 +1,30 @@
id: https://nde.nl/ontology/hc/class/AuctionHouse
name: AuctionHouse
title: AuctionHouse
description: >-
An organization that conducts auctions.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/is_or_was_conducted_by
- ../slots/has_or_had_name
classes:
AuctionHouse:
class_uri: schema:AuctionHouse
description: An auction house.
slots:
- has_or_had_name
slot_usage:
has_or_had_name:
range: string
description: Name of the auction house.

View file

@ -0,0 +1,30 @@
id: https://nde.nl/ontology/hc/class/AuctionSaleCatalog
name: AuctionSaleCatalog
title: AuctionSaleCatalog
description: >-
A catalog published for an auction sale.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/publishes_or_published
- ../slots/has_or_had_name
classes:
AuctionSaleCatalog:
class_uri: schema:PublicationIssue
description: Auction sale catalog.
slots:
- has_or_had_name
slot_usage:
has_or_had_name:
range: string
description: Name or title of the auction sale/catalog.

View file

@ -0,0 +1,29 @@
id: https://nde.nl/ontology/hc/class/Audit
name: Audit
title: Audit
description: >-
An official inspection of an organization's accounts or processes, typically by an independent body.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
prov: http://www.w3.org/ns/prov#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/temporal_extent
- ../slots/draws_or_drew_opinion
- ../slots/is_or_was_conducted_by
classes:
Audit:
class_uri: prov:Activity
description: Audit event.
slots:
- temporal_extent
- draws_or_drew_opinion
- is_or_was_conducted_by

View file

@ -0,0 +1,26 @@
id: https://nde.nl/ontology/hc/class/AuditOpinion
name: AuditOpinion
title: AuditOpinion
description: >-
The opinion or conclusion drawn from an audit (e.g., Unqualified, Qualified, Adverse).
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/description
classes:
AuditOpinion:
class_uri: skos:Concept
description: Audit opinion.
slots:
- has_or_had_label
- description

View file

@ -0,0 +1,24 @@
id: https://nde.nl/ontology/hc/class/Auditor
name: Auditor
title: Auditor
description: >-
A person or organization authorized to review and verify the accuracy of financial records.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_name
classes:
Auditor:
class_uri: schema:Organization
description: Auditor entity.
slots:
- has_or_had_name

View file

@ -0,0 +1,23 @@
id: https://nde.nl/ontology/hc/class/Authentication
name: Authentication
title: Authentication
description: >-
Authentication requirements or status.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
default_prefix: hc
imports:
- linkml:types
- ../slots/requires_or_required
classes:
Authentication:
class_uri: hc:Authentication
description: Authentication details.
slots:
- requires_or_required

View file

@ -0,0 +1,26 @@
id: https://nde.nl/ontology/hc/class/AuthorityData
name: AuthorityData
title: AuthorityData
description: >-
Data from an authority file or controlled vocabulary.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
skos: http://www.w3.org/2004/02/skos/core#
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_label
- ../slots/has_or_had_type
classes:
AuthorityData:
class_uri: skos:Concept
description: Authority file data.
slots:
- has_or_had_label
- has_or_had_type

View file

@ -22,6 +22,8 @@ imports:
# associated_taxa REMOVED - migrated to is_or_was_associated_with (Rule 53)
- ../slots/is_or_was_associated_with
- ./Taxon
# has_associated_taxon REMOVED - migrated to has_or_had_hypernym + Taxon (Rule 53)
- ../slots/has_or_had_hypernym
# bold_id REMOVED - migrated to has_or_had_identifier with BOLDIdentifier class (Rule 53)
- ../slots/has_or_had_identifier
- ./BOLDIdentifier
@ -88,7 +90,8 @@ imports:
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ../slots/has_associated_taxon
# has_associated_taxon REMOVED - migrated to has_or_had_hypernym (Rule 53)
- ../slots/has_or_had_hypernym
default_prefix: hc
classes:
BiologicalObject:
@ -143,6 +146,8 @@ classes:
- describes_or_described
# collection_location REMOVED - migrated to has_or_had_place + CollectionEvent (Rule 53, 2026-01-19)
- has_or_had_place
# has_associated_taxon REMOVED - migrated to has_or_had_hypernym (Rule 53)
- has_or_had_hypernym
# REMOVED 2026-01-22: collector - migrated to is_or_was_acquired_by + Agent (Rule 53)
- is_or_was_acquired_by
# REMOVED 2026-01-22: common_name, common_name_language - migrated to has_or_had_name + Name (Rule 53)
@ -557,14 +562,24 @@ classes:
- value:
has_or_had_label: Coral reef
has_or_had_description: Depth 15m
has_associated_taxon:
has_or_had_hypernym: # was: has_associated_taxon - migrated per Rule 53
description: |
Associated taxon (e.g. host, parasite) relationship.
MIGRATED from has_associated_taxon per slot_fixes.yaml (Rule 53).
Uses Taxon class.
required: false
range: string
range: Taxon
multivalued: true
inlined: true
inlined_as_list: true
examples:
- value: host:Quercus robur
- value:
has_or_had_label: "Quercus robur"
description: "host:Quercus robur"
description: Insect collected from oak tree
- value: parasite of:Cervus elaphus
- value:
has_or_had_label: "Cervus elaphus"
description: "parasite of:Cervus elaphus"
iucn_status:
required: false
range: string

View file

@ -31,7 +31,9 @@ imports:
- ../slots/name_local
- ../slots/has_or_had_abbreviation
- ../slots/has_authority_file_name
- ../slots/has_authority_file_abbreviation
# has_authority_file_abbreviation REMOVED - migrated to contributes_or_contributed + AuthorityData (Rule 53)
- ../slots/contributes_or_contributed
- ./AuthorityData
- ../slots/has_authority_file_url
# MIGRATED 2026-01-26: entity_types_covered → provides_or_provided + AuthorityFile (Rule 53)
- ../slots/provides_or_provided
@ -57,7 +59,8 @@ imports:
- ../slots/entity_types_covered
- ../slots/governance_representative
- ../slots/governance_role
- ../slots/has_authority_file_abbreviation
# has_authority_file_abbreviation REMOVED - migrated to contributes_or_contributed (Rule 53)
- ../slots/contributes_or_contributed
- ../slots/has_authority_file_name
- ../slots/has_authority_file_url
- ../slots/has_or_had_abbreviation
@ -78,7 +81,8 @@ imports:
# - ../slots/entity_types_covered
- ../slots/is_or_was_represented_by # was: governance_representative - migrated per Rule 53 (2026-01-26)
- ../slots/has_or_had_role # was: governance_role - migrated per Rule 53 (2026-01-26)
- ../slots/has_authority_file_abbreviation
# has_authority_file_abbreviation REMOVED - migrated to contributes_or_contributed (Rule 53)
- ../slots/contributes_or_contributed
- ../slots/has_authority_file_name
- ../slots/has_authority_file_url
- ../slots/has_or_had_abbreviation
@ -259,7 +263,8 @@ classes:
- name_local
- has_or_had_abbreviation
- has_authority_file_name
- has_authority_file_abbreviation
# has_authority_file_abbreviation REMOVED - migrated to contributes_or_contributed (Rule 53)
- contributes_or_contributed
- has_authority_file_url
- record_format
# MIGRATED 2026-01-26: entity_types_covered → provides_or_provided
@ -310,3 +315,15 @@ classes:
description: |
Official website of the contributing agency.
MIGRATED from website slot per slot_fixes.yaml (Rule 53, 2025-01-15).
contributes_or_contributed:
description: |
Contributes authority data/abbreviation to the consortium.
MIGRATED from has_authority_file_abbreviation per Rule 53.
Uses AuthorityData class.
range: AuthorityData
inlined: true
examples:
- value:
has_or_had_label: "LCNAF"
has_or_had_type: "abbreviation"
description: Contributes the LCNAF abbreviation

View file

@ -17,7 +17,7 @@ imports:
- ./CollectionType
- ../slots/has_or_had_scope # was: type_scope - migrated per Rule 53 (2026-01-15)
- ./Scope # for has_or_had_scope range (2026-01-15)
- ../slots/has_archdiocese_name
- ./Archdiocese # for has_archdiocese_name migration (Rule 53)
# MIGRATED 2026-01-22: canonical_access_rule → requires_or_required + Permission per slot_fixes.yaml
- ../slots/requires_or_required
- ./Permission
@ -45,11 +45,10 @@ classes:
is_a: ArchiveOrganizationType
class_uri: schema:ArchiveOrganization
slots:
- has_archdiocese_name
- requires_or_required # was: canonical_access_rule - migrated 2026-01-22
- has_or_had_custodian_type
- originates_or_originated_from
- is_or_was_part_of # was: founding_date_diocese - migrated per Rule 53 (2026-01-22)
- is_or_was_part_of # was: founding_date_diocese (2026-01-22) + has_archdiocese_name (Rule 53)
- hold_or_held_record_set_type
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
@ -72,10 +71,6 @@ classes:
slot_usage:
has_or_had_identifier: # was: wikidata_entity - migrated per Rule 53 (2026-01-15)
# equals_string removed: Q11906839 (incompatible with uriorcurie range)
has_archdiocese_name:
range: string
examples:
- value: Archdiocese of Utrecht
originates_or_originated_from:
range: Diocese
description: |
@ -87,12 +82,15 @@ classes:
is_or_was_located_in:
has_or_had_label: Province of Utrecht
# MIGRATED 2026-01-22: founding_date_diocese → is_or_was_part_of + Diocese (Rule 53)
# MIGRATED 2026-01-27: has_archdiocese_name → is_or_was_part_of + Archdiocese (Rule 53)
is_or_was_part_of:
description: |
The diocese this archive is part of.
Diocese includes founding event with temporal extent.
Migrated from founding_date_diocese per slot_fixes.yaml revision.
range: Diocese
The diocese or archdiocese this archive is part of.
Migrated from founding_date_diocese (2026-01-22) and has_archdiocese_name (2026-01-27).
range: Organization
any_of:
- range: Diocese
- range: Archdiocese
inlined: true
examples:
- value:
@ -103,6 +101,9 @@ classes:
end_of_the_begin: "0695-12-31"
founding_description: "Established circa 695 by St. Willibrord"
description: Diocese of Utrecht established ~695
- value:
has_or_had_label: "Archdiocese of Utrecht"
description: Part of Archdiocese
requires_or_required:
range: Permission
inlined: true
@ -149,18 +150,17 @@ classes:
- archivo diocesano@es
- archives diocésaines@fr
has_or_had_description: Archive of a bishopric (diocese) # was: type_description - migrated per Rule 53/56 (2026-01-16)
has_archdiocese_name: Archdiocese of Utrecht
is_or_was_part_of:
- has_or_had_label: "Diocese of 's-Hertogenbosch"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "1559-05-12"
end_of_the_begin: "1559-05-12"
founding_description: "Established 12 May 1559"
- has_or_had_label: "Archdiocese of Utrecht"
originates_or_originated_from:
has_or_had_label: Diocese of 's-Hertogenbosch
is_or_was_located_in:
has_or_had_label: Province of Utrecht
# MIGRATED 2026-01-22: founding_date_diocese → is_or_was_part_of + Diocese (Rule 53)
is_or_was_part_of:
has_or_had_label: "Diocese of 's-Hertogenbosch"
is_or_was_founded_through:
temporal_extent:
begin_of_the_begin: "1559-05-12"
end_of_the_begin: "1559-05-12"
founding_description: "Established 12 May 1559"
canonical_access_rules: true
description: Diocesan archive example - Diocese of 's-Hertogenbosch

View file

@ -18,10 +18,12 @@ imports:
- ../slots/is_or_was_published_at # was: publication_date - migrated per Rule 53/56 (2026-01-18)
- ./PublicationEvent # for is_or_was_published_at range
- ./TimeSpan # for PublicationEvent.temporal_extent (already imported below but needed for PublicationEvent)
- ../slots/has_audit_date
- ../slots/has_audit_opinion
- ../slots/has_or_had_audit_status
- ../slots/has_auditor_name
# has_audit_* slots REMOVED - migrated to is_or_was_based_on + Audit (Rule 53)
- ../slots/is_or_was_based_on
- ./Audit
- ./Auditor
- ./AuditOpinion
- ../slots/draws_or_drew_opinion
# - ../slots/change_in_net_asset # ARCHIVED 2026-01-24: migrated to specifies_or_specified + NetAsset per Rule 53/56
- ../slots/specifies_or_specified
- ./NetAsset

View file

@ -9,7 +9,8 @@ imports:
- ./Area
- ../enums/FeatureTypeEnum
- ../slots/has_or_had_architect
- ../slots/has_architectural_style
- ../slots/has_or_had_style
- ../classes/ArchitecturalStyle
# REMOVED 2026-01-15: ../slots/building_floor_area_sqm - migrated to has_or_had_area + Area (Rule 53)
- ../slots/has_or_had_area
# REMOVED 2026-01-18: ../slots/complex_name - migrated to has_or_had_label + Label (Rule 53)
@ -90,7 +91,7 @@ classes:
- hc:FeaturePlace
slots:
- has_or_had_architect
- has_architectural_style
- has_or_had_style
- has_or_had_area
- has_or_had_label # was: complex_name - migrated per Rule 53 (2026-01-18)
- has_or_had_condition # was: condition_status - migrated per Rule 53 (2026-01-18)
@ -167,14 +168,22 @@ classes:
description: Known exact year
- value: APPROXIMATE
description: Circa date
has_architectural_style:
range: string
has_or_had_style:
description: |
Architectural style of the building.
MIGRATED from has_architectural_style per Rule 53.
Uses ArchitecturalStyle class.
range: ArchitecturalStyle
inlined: true
examples:
- value: Dutch Golden Age
- value:
has_or_had_label: "Dutch Golden Age"
description: 17th century Dutch
- value: Neo-Gothic
- value:
has_or_had_label: "Neo-Gothic"
description: Gothic revival
- value: Amsterdam School
- value:
has_or_had_label: "Amsterdam School"
description: Early 20th century Dutch
has_or_had_architect:
range: string
@ -339,7 +348,8 @@ classes:
has_or_had_type: HISTORIC_HOUSE_MUSEUM # was: feature_type_classification - migrated per Rule 53
construction_date: '1650'
construction_date_precision: APPROXIMATE
has_architectural_style: Dutch Golden Age
has_or_had_style:
has_or_had_label: Dutch Golden Age
heritage_status: Rijksmonument
monument_number: '16284'
is_open_to_public: false

View file

@ -20,7 +20,9 @@ imports:
- ../slots/has_or_had_about_text
- ../slots/has_or_had_provenance
- ./ProvenanceBlock
- ../slots/has_assessment_date
# has_assessment_date REMOVED - migrated to is_or_was_assessed_on + TimeSpan (Rule 53)
- ../slots/is_or_was_assessed_on
- ./TimeSpan
- ../slots/connections_text
- ../slots/has_or_had_source # was: data_source_whatsapp - migrated per Rule 53/56/57 (2026-01-23)
- ./DataSource
@ -70,7 +72,8 @@ imports:
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ../slots/has_assessment_date
# has_assessment_date REMOVED - migrated to is_or_was_assessed_on (Rule 53)
- ../slots/is_or_was_assessed_on
default_range: string
classes:
LinkedInProfile:
@ -352,7 +355,8 @@ classes:
'
slots:
- assessment_date
# MIGRATED 2026-01-27: has_assessment_date → is_or_was_assessed_on (Rule 53)
- is_or_was_assessed_on
- likelihood_confidence
- likelihood_factor
- likelihood_level
@ -376,8 +380,16 @@ classes:
likelihood_factor:
range: string
multivalued: true
has_assessment_date:
range: datetime
is_or_was_assessed_on:
description: |
Date when the likelihood score was assessed.
MIGRATED from has_assessment_date per Rule 53.
range: TimeSpan
inlined: true
examples:
- value:
start_of_the_start: "2024-01-01T12:00:00Z"
description: Assessment timestamp
WhatsAppEnrichmentMetadata:
class_uri: hc:WhatsAppEnrichmentMetadata
description: 'Metadata about the WhatsApp enrichment process.

View file

@ -111,10 +111,13 @@ classes:
# REMOVED - migrated to is_or_was_asserted_by (Rule 53)
# - asserted_by
- is_or_was_asserted_by
- has_assertion_date
# has_assertion_date REMOVED - migrated to is_or_was_asserted_on + TimeSpan (Rule 53)
- is_or_was_asserted_on
- has_or_had_identifier
- has_assertion_rationale
- has_assertion_value
# has_assertion_rationale REMOVED - migrated to has_or_had_rationale + Rationale (Rule 53)
- has_or_had_rationale
# has_assertion_value REMOVED - migrated to has_or_had_value + Value (Rule 53)
- has_or_had_value
- has_or_had_based_on_observation
# REMOVED 2026-01-19: confidence_score - migrated to is_or_was_generated_by (Rule 53)
- is_or_was_generated_by
@ -159,20 +162,36 @@ classes:
has_or_had_label: "Website"
has_or_had_identifier: "https://nde.nl/ontology/hc/type/website"
description: Characterizing main website
has_assertion_value:
range: boolean
has_or_had_value:
description: |
The boolean value of the assertion (true/false).
MIGRATED from has_assertion_value per Rule 53.
Uses Value class with value_content="true"/"false" and value_type="boolean".
range: Value
required: true
inlined: true
examples:
- value: true
- value:
value_content: "true"
value_type: "boolean"
description: Facebook IS the primary digital presence
- value: false
- value:
value_content: "false"
value_type: "boolean"
description: Instagram is secondary to main website
has_assertion_rationale:
range: string
has_or_had_rationale:
description: |
Rationale for this assertion.
MIGRATED from has_assertion_rationale per Rule 53.
Uses Rationale class.
range: Rationale
required: false
inlined: true
examples:
- value: No formal website exists for this heritage society. Facebook page is the only discoverable online presence
with 450 followers and regular updates about local history events.
- value:
has_or_had_rationale: "No formal website exists for this heritage society. Facebook page is the only discoverable online presence."
decision_type: "INFERENCE"
description: Rationale based on absence of website
temporal_extent:
range: TimeSpan
required: false
@ -191,11 +210,18 @@ classes:
- value:
- observation_id: '.../observation/hvn-website-check-2025-11'
- observation_id: '.../observation/hvn-facebook-scrape-2025-11'
has_assertion_date:
range: datetime
is_or_was_asserted_on:
description: |
Date/time when the assertion was made.
MIGRATED from has_assertion_date per Rule 53.
Uses TimeSpan (start_of_the_start).
range: TimeSpan
required: false
inlined: true
examples:
- value: '2025-11-29T14:30:00Z'
- value:
start_of_the_start: '2025-11-29T14:30:00Z'
description: Assertion made on specific date
is_or_was_asserted_by:
range: Asserter
inlined: true

View file

@ -32,8 +32,12 @@ imports:
- ../slots/has_or_had_provenance # was: provenance_text - migrated per Rule 53/56 (2026-01-18)
- ./Provenance
- ./Description
- ../slots/has_auction_house
- ../slots/has_auction_sale_name
# has_auction_house REMOVED - migrated to is_or_was_conducted_by + AuctionHouse (Rule 53)
- ../slots/is_or_was_conducted_by
- ./AuctionHouse
# has_auction_sale_name REMOVED - migrated to publishes_or_published + AuctionSaleCatalog (Rule 53)
- ../slots/publishes_or_published
- ./AuctionSaleCatalog
- ../slots/has_or_had_level # was: certainty_level, certainty_note - migrated per Rule 53/56 (2026-01-18)
- ./CertaintyLevel
- ../slots/has_or_had_custodian_type
@ -97,10 +101,10 @@ classes:
- crm:E7_Activity
- schema:Action
slots:
- has_auction_house
- has_auction_sale_name
- has_or_had_level # was: certainty_level, certainty_note - migrated per Rule 53/56 (2026-01-18)
- has_or_had_custodian_type
# has_auction_house REMOVED - migrated to is_or_was_conducted_by + AuctionHouse (Rule 53)
- is_or_was_conducted_by
# has_auction_sale_name REMOVED - migrated to publishes_or_published + AuctionSaleCatalog (Rule 53)
- publishes_or_published
# REMOVED 2026-01-24: dealer_name - migrated to is_or_was_associated_with + ArtDealer (Rule 53)
- is_or_was_associated_with
- has_or_had_reference
@ -277,20 +281,22 @@ classes:
- value: 30 guilders
- value: Purchased for 2 stuivers 10 guilders
- value: Forced sale for nominal sum
has_auction_house:
required: false
range: string
examples:
- value: Christie's
- value: Sotheby's
- value: Dorotheum
has_auction_sale_name:
required: false
range: string
examples:
- value: Dissius sale
- value: Important Old Master Paintings
- value: The Collection of [Name]
# MIGRATED 2026-01-27: has_auction_house → is_or_was_conducted_by (Rule 53)
# has_auction_house:
# required: false
# range: string
# examples:
# - value: Christie's
# - value: Sotheby's
# - value: Dorotheum
# MIGRATED 2026-01-27: has_auction_sale_name → publishes_or_published (Rule 53)
# has_auction_sale_name:
# required: false
# range: string
# examples:
# - value: Dissius sale
# - value: Important Old Master Paintings
# - value: The Collection of [Name]
lot_number:
required: false
range: string
@ -498,7 +504,9 @@ classes:
is_or_was_located_at:
- place_name: Amsterdam
country: NL
has_auction_sale_name: Dissius sale
# MIGRATED 2026-01-27: has_auction_sale_name → publishes_or_published (Rule 53)
publishes_or_published:
- has_or_had_name: "Dissius sale"
lot_number: '36'
price_text: Unknown
has_or_had_level: # was: certainty_level - migrated per Rule 53/56 (2026-01-18)

View file

@ -26,7 +26,9 @@ imports:
- ../slots/observation_date
- ../slots/indicates_or_indicated # was: follow_up_date - migrated per Rule 53 (2026-01-26)
- ./ConservationReview # for indicates_or_indicated range
- ../slots/has_assessment_category
# has_assessment_category REMOVED - migrated to has_or_had_category + AssessmentCategory (Rule 53)
- ../slots/has_or_had_category
- ./AssessmentCategory
- ../slots/has_or_had_category_assessment
# - ../slots/category_measurement # ARCHIVED 2026-01-24: migrated to has_or_had_measurement + Measurement per Rule 53/56
- ../slots/has_or_had_measurement
@ -128,6 +130,8 @@ classes:
- specificity_annotation
- supersede_condition
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
# has_assessment_category REMOVED - migrated to has_or_had_category (Rule 53)
- has_or_had_category
slot_usage:
has_or_had_identifier: # was: condition_id - migrated per Rule 53 (2026-01-18)
description: |
@ -207,6 +211,17 @@ classes:
has_or_had_note: # was: note - migrated per Rule 53/56 (2026-01-18)
- note_type: category
note_content: White ants discovered in main depot area
has_or_had_category:
description: |
Category of assessment (e.g., PEST_CONTROL, TEMPERATURE).
MIGRATED from has_assessment_category per Rule 53.
range: AssessmentCategory
multivalued: true
inlined: true
examples:
- value:
has_or_had_category: PEST_CONTROL
description: Pest control assessment
observation_note:
range: string
examples:

View file

@ -0,0 +1,38 @@
id: https://nde.nl/ontology/hc/class/Value
name: Value
title: Value
description: >-
A generic wrapper for values in assertions, claims, or measurements.
Allows storing typed values, units, and raw strings.
prefixes:
linkml: https://w3id.org/linkml/
hc: https://nde.nl/ontology/hc/
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
schema: http://schema.org/
default_prefix: hc
imports:
- linkml:types
- ../slots/has_or_had_value
classes:
Value:
class_uri: schema:StructuredValue
description: Structured value wrapper.
slots:
- has_or_had_value
attributes:
value_content:
range: string
description: The string representation of the value.
value_type:
range: string
description: The data type of the value (e.g., integer, float, boolean).
measurement_unit:
range: string
description: The unit of measurement (if applicable).

View file

@ -71,7 +71,9 @@ imports:
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
- ../slots/has_audio_event_segment
# has_audio_event_segment REMOVED - migrated to contains_or_contained + AudioEventSegment (Rule 53)
- ../slots/contains_or_contained
- ./AudioEventSegment
- ../enums/AudioEventTypeEnum
- ../enums/SoundEventTypeEnum
- ../enums/MusicTypeEnum
@ -135,6 +137,9 @@ classes:
# MIGRATED from audio_event_segments to has_or_had_segment (Rule 53)
# - audio_event_segments
- has_or_had_segment
# has_audio_event_segment REMOVED - migrated to contains_or_contained + AudioEventSegment (Rule 53)
# - has_audio_event_segment
- contains_or_contained
- audio_quality_score
# MIGRATED 2026-01-25: diarization_enabled → is_or_was_diarized (Rule 53)
- is_or_was_diarized
@ -175,66 +180,21 @@ classes:
description: Speech detection segment
- value: '[{has_or_had_type: MUSIC, start_seconds: 30.0, end_seconds: 60.0, segment_text: "Background classical music", confidence: 0.88}]'
description: Music detection segment
# NOTE: has_audio_event_segment is deprecated - use has_or_had_segment above
has_audio_event_segment:
range: VideoTimeSegment
multivalued: true
required: false
inlined_as_list: true
examples:
- value: '[{start_seconds: 0.0, end_seconds: 15.0, segment_text: ''Speech detected - Speaker 1''}]'
description: Speech detection segment
has_or_had_type:
range: AudioEventTypeEnum
required: true
contains_or_contained:
description: |
Primary type of audio event analysis.
MIGRATED from primary_audio_event_type (2026-01-26).
examples:
- value: SPEECH
description: Primary focus on speech analysis
speech_detected:
range: boolean
required: false
examples:
- value: true
description: Speech is present in video
has_or_had_speech_segment:
range: SpeechSegment
multivalued: true
required: false
inlined_as_list: true
examples:
- value: '[{start_seconds: 0.0, end_seconds: 15.0, speaker_id: ''spk_001'', language: ''nl''}]'
description: Dutch speech from speaker 1
speech_language:
range: string
required: false
examples:
- value: nl
description: Dutch is primary language
- value: en
description: English is primary language
speech_language_confidence:
range: float
required: false
minimum_value: 0.0
maximum_value: 1.0
examples:
- value: 0.95
description: High confidence language detection
languages_detected:
range: string
multivalued: true
required: false
examples:
- value: '[nl, en, de]'
description: Dutch, English, and German detected
# MIGRATED 2026-01-25: diarization_enabled → is_or_was_diarized (Rule 53)
is_or_was_diarized:
range: DiarizationStatus
Primary audio event segment.
MIGRATED from has_audio_event_segment per Rule 53.
Uses AudioEventSegment class.
range: AudioEventSegment
required: false
inlined: true
examples:
- value:
has_or_had_type: "SPEECH"
temporal_extent:
start_time: "0.0"
end_time: "10.5"
description: Main speech segment
description: |
Status of speaker diarization process.
MIGRATED from diarization_enabled (Rule 53).

View file

@ -6,7 +6,9 @@ imports:
- ./SocialMediaPost
- ./SocialMediaPostTypes
- ../slots/language
- ../slots/has_aspect_ratio
# has_aspect_ratio REMOVED - migrated to has_or_had_degree + AspectRatio (Rule 53)
- ../slots/has_or_had_degree
- ./AspectRatio
# REMOVED 2026-01-15: ../slots/available_caption_languages - migrated to has_available_caption_language
# MIGRATED 2026-01-22: caption_available → has_or_had_caption + Caption per slot_fixes.yaml feedback
- ../slots/has_or_had_caption
@ -234,7 +236,8 @@ classes:
- wikidata:Q34508
- wikidata:Q604644
slots:
- has_aspect_ratio
# has_aspect_ratio REMOVED - migrated to has_or_had_degree (Rule 53)
- has_or_had_degree
- has_available_caption_language
# MIGRATED 2026-01-22: caption_available → has_or_had_caption + Caption per slot_fixes.yaml feedback
- has_or_had_caption
@ -308,13 +311,20 @@ classes:
- value:
resolution_class: sd
description: Standard definition (simple enum for backward compatibility)
has_aspect_ratio:
range: string
has_or_had_degree:
description: |
Aspect ratio of the video.
MIGRATED from has_aspect_ratio per Rule 53.
Uses AspectRatio class for structured value.
range: AspectRatio
inlined: true
required: false
examples:
- value: '16:9'
- value:
has_or_had_degree: '16:9'
description: Standard widescreen
- value: '9:16'
- value:
has_or_had_degree: '9:16'
description: Vertical format for Shorts/Reels
# MIGRATED 2026-01-22: frame_rate → has_or_had_quantity + Quantity + has_or_had_unit + Unit (Rule 53)
# frame_rate:

View file

@ -0,0 +1,6 @@
id: https://nde.nl/ontology/hc/slot/contributes_or_contributed
name: contributes_or_contributed
title: contributes_or_contributed
description: Contributes data or resources.
slot_uri: prov:hadMember
range: AuthorityData

View file

@ -0,0 +1,6 @@
id: https://nde.nl/ontology/hc/slot/draws_or_drew_opinion
name: draws_or_drew_opinion
title: draws_or_drew_opinion
description: The opinion or conclusion drawn from an activity (e.g. audit).
slot_uri: prov:generated
range: AuditOpinion

View file

@ -0,0 +1,7 @@
id: https://nde.nl/ontology/hc/slot/has_or_had_value
name: has_or_had_value
title: has_or_had_value
description: The value associated with an assertion, claim, or measurement.
slot_uri: rdf:value
range: Value
multivalued: true

View file

@ -0,0 +1,6 @@
id: https://nde.nl/ontology/hc/slot/is_or_was_asserted_on
name: is_or_was_asserted_on
title: is_or_was_asserted_on
description: The date or timestamp when the assertion was made.
slot_uri: prov:atTime
range: TimeSpan

View file

@ -0,0 +1,6 @@
id: https://nde.nl/ontology/hc/slot/is_or_was_assessed_on
name: is_or_was_assessed_on
title: is_or_was_assessed_on
description: The date or timestamp when the assessment took place.
slot_uri: prov:atTime
range: TimeSpan

View file

@ -0,0 +1,6 @@
id: https://nde.nl/ontology/hc/slot/is_or_was_conducted_by
name: is_or_was_conducted_by
title: is_or_was_conducted_by
description: The agent or organization that conducted the event (e.g., auction, assessment).
slot_uri: prov:wasAssociatedWith
range: Agent

View file

@ -0,0 +1,7 @@
id: https://nde.nl/ontology/hc/slot/publishes_or_published
name: publishes_or_published
title: publishes_or_published
description: The work or document published by an entity.
slot_uri: schema:published
range: CreativeWork
multivalued: true

View file

@ -65,6 +65,10 @@ fixes:
- label: Timestamp
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_archdiocese_name
processed:
status: true
date: '2026-01-27'
notes: Fully migrated to is_or_was_part_of + Archdiocese class (Rule 53). DiocesanArchive.yaml updated. Slot archived.
revision:
- label: is_or_was_part_of
type: slot
@ -74,183 +78,10 @@ fixes:
type: slot
- label: Label
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/administrative_context
revision:
- label: is_or_was_used_in
type: slot
- label: GovernanceStructure
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/based_on_claim
revision:
- label: is_or_was_based_on
type: slot
- label: Claim
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_architectural_style
revision:
- label: has_or_had_style
type: slot
- label: ArchitecturalStyle
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_archival_reference
revision:
- label: has_or_had_identifier
type: slot
- label: ArchivalReference
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_archive_description
revision:
- label: has_or_had_description
type: slot
- label: Description
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_archive_memento_uri
revision:
- label: is_or_was_archived_as
type: slot
- label: Memento
type: class
- label: has_or_had_url
type: slot
- label: URL
type: class
processed:
status: true
date: '2026-01-27'
notes: Migrated to has_or_had_url + URL in ArticlesOfAssociation.yaml. Slot archived.
- original_slot_id: https://nde.nl/ontology/hc/slot/has_articles_document_url
revision:
- label: has_or_had_url
type: slot
- label: URL
type: class
processed:
status: true
date: '2026-01-27'
notes: Migrated to has_or_had_url + URL in ArticlesOfAssociation.yaml. Slot archived.
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_articles_of_association
revision:
- label: has_or_had_document
type: slot
- label: ArticlesOfAssociation
type: class
processed:
status: true
date: '2026-01-27'
notes: Migrated to has_or_had_document + ArticlesOfAssociation in relevant classes. Slot archived.
- original_slot_id: https://nde.nl/ontology/hc/slot/has_aspect_ratio
revision:
- label: has_or_had_degree
type: slot
- label: AspectRatio
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_assertion_date
revision:
- label: is_or_was_asserted_on
type: slot
- label: TimeSpan
type: class
- label: start_of_the_start
type: slot
- label: Timestamp
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_assertion_rationale
revision:
- label: has_or_had_rationale
type: slot
- label: Rationale
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_assertion_value
revision:
- label: has_or_had_value
type: slot
- label: Value
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_assessment_category
revision:
- label: has_or_had_category
type: slot
- label: AssessmentCategory
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_assessment_date
revision:
- label: is_or_was_assessed_on
type: slot
- label: TimeSpan
type: class
- label: start_of_the_start
type: slot
- label: Timestamp
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_associated_taxon
revision:
- label: has_or_had_hypernym
type: slot
- label: Taxon
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_auction_house
revision:
- label: is_or_was_conducted_by
type: slot
- label: AuctionHouse
type: class
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_auction_sale_name
revision:
- label: is_or_was_conducted_by
type: slot
- label: AuctionHouse
type: class
- label: publishes_or_published
type: slot
- label: AuctionSaleCatalog
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_audio_event_segment
revision:
- label: contains_or_contained
type: slot
- label: AudioEventSegment
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_audit_date
revision:
- label: is_or_was_based_on
type: slot
- label: Audit
type: class
- label: temporal_extent
type: slot
- label: TimeSpan
type: class
- label: start_of_the_start
type: slot
- label: Timestamp
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_audit_opinion
revision:
- label: is_or_was_based_on
type: slot
- label: Audit
type: class
- label: draws_or_drew_opinion
type: slot
- label: AuditOpinion
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_auditor_name
revision:
- label: is_or_was_based_on
type: slot
- label: Audit
type: class
- label: is_or_was_conducted_by
type: slot
- label: Auditor
type: class
- original_slot_id: https://nde.nl/ontology/hc/slot/has_authentication_required_flag
revision:
- label: requires_or_required
type: slot
- label: Authentication
type: class
notes: Migrated to contributes_or_contributed + AuthorityData in ContributingAgency.yaml. Slot archived.
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_authority_file_abbreviation
revision:
- label: contributes_or_contributed
@ -270,6 +101,10 @@ fixes:
- label: LabelTypes
type: class
note: AbbreviationLabel class is defined in the LinkML file
processed:
status: true
date: '2026-01-27'
notes: Migrated to contributes_or_contributed + AuthorityData in ContributingAgency.yaml. Slot archived.
- orignal_slot_id: https://nde.nl/ontology/hc/slot/has_authority_file_name
revision:
- label: contributes_or_contributed

View file

@ -41,19 +41,48 @@ def update_manifest(add_files, remove_files):
print("Manifest updated.")
if __name__ == "__main__":
# Define files to add
add_files = [
{"name": "RecordCycleStatus", "path": "modules/classes/RecordCycleStatus.yaml", "category": "class"},
{"name": "DocumentFormat", "path": "modules/classes/DocumentFormat.yaml", "category": "class"},
{"name": "has_or_had_document", "path": "modules/slots/has_or_had_document.yaml", "category": "slot"},
]
# Scan for all files in modules/classes and modules/slots
add_files = []
# Classes
for filename in os.listdir("modules/classes"):
if filename.endswith(".yaml"):
name = filename.replace(".yaml", "")
add_files.append({
"name": name,
"path": f"modules/classes/{filename}",
"category": "class"
})
# Slots
for filename in os.listdir("modules/slots"):
if filename.endswith(".yaml"):
name = filename.replace(".yaml", "")
# Check if it's a generic slot (usually starts with has_ or is_)
# But we add all of them to 'slot' category
add_files.append({
"name": name,
"path": f"modules/slots/{filename}",
"category": "slot"
})
# Define files to remove (archived slots)
remove_files = [
"has_articles_archival_stage",
"has_articles_document_format",
"has_articles_document_url",
"has_articles_of_association"
]
# Enums
if os.path.exists("modules/enums"):
for filename in os.listdir("modules/enums"):
if filename.endswith(".yaml"):
name = filename.replace(".yaml", "")
add_files.append({
"name": name,
"path": f"modules/enums/{filename}",
"category": "enum"
})
# Identify removed files (those in archive)
remove_files = []
if os.path.exists("archive/slots"):
for filename in os.listdir("archive/slots"):
if filename.endswith(".yaml"):
name = filename.replace(".yaml", "")
remove_files.append(name)
update_manifest(add_files, remove_files)