From 4338d0a081d78544dfbf5cf900d79281e2cd56d0 Mon Sep 17 00:00:00 2001 From: kempersc Date: Wed, 14 Jan 2026 16:04:09 +0100 Subject: [PATCH] feat: Add structured representation for BirthDate and BirthPlace classes - Introduced BirthDate class with support for EDTF notation, provenance tracking, and confidence scoring. - Added BirthPlace class to preserve historical names, link modern equivalents, and integrate geographic identifiers. - Created Approximation Level slot to express uncertainty levels for various values. - Migrated existing slots to structured classes for better data modeling, including has_or_had_date_of_birth and has_or_had_place_of_birth. - Enhanced service area representation with has_or_had_service_area slot, linking to ServiceArea class. - Updated is_or_was_approximate slot to model uncertainty levels using ApproximationStatus class. - Archived previous versions of slots for historical reference. --- .../schemas/20251121/linkml/manifest.json | 2 +- .../linkml/modules/slots/slot_fixes.yaml | 687 +++++++++++++++++- schemas/20251121/linkml/manifest.json | 2 +- .../modules/classes/ApproximationStatus.yaml | 149 ++++ .../linkml/modules/classes/Author.yaml | 199 +++++ .../linkml/modules/classes/BirthDate.yaml | 217 ++++++ .../linkml/modules/classes/BirthPlace.yaml | 223 ++++++ .../linkml/modules/classes/BranchOffice.yaml | 45 +- .../classes/CustodianTimelineEvent.yaml | 58 +- .../modules/classes/DigitalPlatform.yaml | 16 +- .../modules/classes/ExhibitionCatalog.yaml | 43 +- .../modules/classes/PersonObservation.yaml | 60 +- .../modules/slots/approximation_level.yaml | 26 + .../approximate_archived_20260114.yaml} | 0 .../authors_archived_20260114.yaml} | 0 ...uxiliary_platforms_archived_20260114.yaml} | 0 .../birth_date_archived_20260114.yaml} | 0 .../birth_place_archived_20260114.yaml} | 0 ...ranch_service_area_archived_20260114.yaml} | 0 .../has_author_archived_20260114.yaml} | 0 .../modules/slots/has_or_had_author.yaml | 61 ++ .../slots/has_or_had_date_of_birth.yaml | 61 ++ .../slots/has_or_had_place_of_birth.yaml | 58 ++ .../slots/has_or_had_service_area.yaml | 54 ++ .../modules/slots/is_or_was_approximate.yaml | 54 ++ .../linkml/modules/slots/slot_fixes.yaml | 53 +- 26 files changed, 2000 insertions(+), 68 deletions(-) create mode 100644 schemas/20251121/linkml/modules/classes/ApproximationStatus.yaml create mode 100644 schemas/20251121/linkml/modules/classes/Author.yaml create mode 100644 schemas/20251121/linkml/modules/classes/BirthDate.yaml create mode 100644 schemas/20251121/linkml/modules/classes/BirthPlace.yaml create mode 100644 schemas/20251121/linkml/modules/slots/approximation_level.yaml rename schemas/20251121/linkml/modules/slots/{approximate.yaml => archive/approximate_archived_20260114.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{authors.yaml => archive/authors_archived_20260114.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{auxiliary_platforms.yaml => archive/auxiliary_platforms_archived_20260114.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{birth_date.yaml => archive/birth_date_archived_20260114.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{birth_place.yaml => archive/birth_place_archived_20260114.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{branch_service_area.yaml => archive/branch_service_area_archived_20260114.yaml} (100%) rename schemas/20251121/linkml/modules/slots/{has_author.yaml => archive/has_author_archived_20260114.yaml} (100%) create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_author.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_date_of_birth.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_place_of_birth.yaml create mode 100644 schemas/20251121/linkml/modules/slots/has_or_had_service_area.yaml create mode 100644 schemas/20251121/linkml/modules/slots/is_or_was_approximate.yaml diff --git a/frontend/public/schemas/20251121/linkml/manifest.json b/frontend/public/schemas/20251121/linkml/manifest.json index 17515d8d8b..694547060b 100644 --- a/frontend/public/schemas/20251121/linkml/manifest.json +++ b/frontend/public/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-14T14:15:37.461Z", + "generated": "2026-01-14T14:20:53.577Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 2883, "categoryCounts": { diff --git a/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml index cc69eef75d..624c39463a 100644 --- a/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml +++ b/frontend/public/schemas/20251121/linkml/modules/slots/slot_fixes.yaml @@ -1446,4 +1446,689 @@ fixes: type: slot - label: WhatsAppProfile type: class - - + - original_slot_id: https://nde.nl/ontology/hc/slot/whatsapp_business_likelihood + revision: + - label: has_or_had_likelihood_score + type: slot + - label: LikelihoodScore + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/website + revision: + - label: has_or_had_url + type: slot + - label: URL + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/web_observation + revision: + - label: has_or_had_provenance + type: slot + - label: WebObservation + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/was_revision_of + revision: + - label: is_or_was_revision_of + type: slot + - label: WorkRevision + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/was_generated_by + revision: + - label: is_or_was_generated_by + type: slot + - label: ReconstructionActivity + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/was_derived_from + revision: + - label: is_or_was_derived_from + type: slot + - label: SourceWork + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/was_asserted_by + revision: + - label: is_or_was_asserted_by + type: slot + - label: Assertor + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/was_archived_at + revision: + - label: is_or_was_webarchived_at + type: slot + - label: URL + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/was_approved_by + revision: + - label: is_or_was_approved_by + type: slot + - label: Approver + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/warehouse_security_level + revision: + - label: has_or_had_security_level + type: slot + - label: SecurityLevel + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/warehouse_name + revision: + - label: has_or_had_label + type: slot + - label: Label + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/warehouse_managed_by + revision: + - label: is_or_was_managed_by + type: slot + - label: Group + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/warehouse_id + revision: + - label: has_or_had_identifier + type: slot + - label: Identifier + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/warehouse_floor_area_sqm + revision: + - label: has_or_had_area + type: slot + - label: Area + type: class + - label: has_or_had_unit + type: slot + - label: MeasureUnit + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/warehouse_description + revision: + - label: has_or_had_description + type: slot + - label: Description + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/volunteer_program + revision: + - label: has_or_had_program + type: slot + - label: Program + type: class + - label: has_or_had_type + type: slot + - label: ProgramType + type: class + - label: includes_or_included + type: slot + - label: ProgramTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/visitor_service + revision: + - label: has_or_had_service + type: slot + - label: Service + type: class + - label: has_or_had_type + type: slot + - label: ServiceType + type: class + - label: includes_or_included + type: slot + - label: ServiceTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/visitor_facility + revision: + - label: has_or_had_facility + type: slot + - label: Facility + type: class + - label: has_or_had_type + type: slot + - label: FacilityType + type: class + - label: includes_or_included + type: slot + - label: FacilityTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/visitor_count + revision: + - label: has_or_had_quantity + type: slot + - label: Quantity + type: class + - label: has_or_had_measurement_unit + type: slot + link_branch: 1 + - label: MeasureUnit + type: class + value: + - visitors + link_branch: 1 + - label: temporal_extent + type: slot + link_branch: 2 + - label: TimeSpan + type: class + link_branch: 2 + - original_slot_id: https://nde.nl/ontology/hc/slot/visitor_conversion_rate + revision: + - label: has_or_had_conversion_rate + type: slot + - label: ConversionRate + type: class + - label: has_or_had_type + type: slot + link_branch: 1 + - label: ConversionRateType + type: class + link_branch: 1 + - label: includes_or_included + type: slot + link_branch: 1 + - label: ConversionRateTypes + type: class + link_branch: 1 + - label: temporal_extent + type: slot + link_branch: 2 + - label: TimeSpan + type: class + link_branch: 2 + - original_slot_id: https://nde.nl/ontology/hc/slot/visiting_hour + revision: + - label: has_or_had_opening_hour + type: slot + - label: OpeningHour + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/view_count + revision: + - label: has_or_had_quantity + type: slot + - label: Quantity + type: class + - label: has_or_had_measurement_unit + type: slot + link_branch: 1 + - label: MeasureUnit + type: class + value: + - views + link_branch: 1 + - label: temporal_extent + type: slot + link_branch: 2 + - label: TimeSpan + type: class + link_branch: 2 + - original_slot_id: https://nde.nl/ontology/hc/slot/video_id + revision: + - label: has_or_had_identifier + type: slot + - label: VideoIdentifier + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/video_comment + revision: + - label: has_or_had_comment + type: slot + - label: Comment + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/video_category_id + revision: + - label: has_or_had_identifier + type: slot + - label: VideoCategoryIdentifier + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/viability_status + revision: + - label: has_or_had_status + type: slot + - label: ViabilityStatus + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/version_number + revision: + - label: has_or_had_version + type: slot + - label: VersionNumber + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/verified_by + revision: + - label: is_or_was_verified_by + type: slot + - label: Verifier + type: class + - label: had_or_had_identifier + type: slot + - label: Identifier + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/verified + revision: + - label: has_or_had_verification_status + type: slot + - label: VerificationStatus + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/verification_date + revision: + - label: temporal_extent + type: slot + - label: TimeSpan + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/vendor_url + revision: + - label: has_or_had_url + type: slot + - label: URL + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/vendor_name + revision: + - label: has_or_had_label + type: slot + - label: Label + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/variant_of_name + revision: + - label: is_or_was_alternative_form_of + type: slot + - label: Label + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/validity_period + revision: + - label: temporal_extent + type: slot + - label: TimeSpan + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/validation_status + revision: + - label: has_or_had_status + type: slot + - label: ValidationStatus + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/valid_to_geo + revision: + - label: temporal_extent + type: slot + - label: TimeSpan + type: class + - label: end_of_the_end + type: slot + - label: Timestamp + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/valid_to + revision: + - label: temporal_extent + type: slot + - label: TimeSpan + type: class + - label: end_of_the_end + type: slot + - label: Timestamp + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/valid_from_geo + revision: + - label: temporal_extent + type: slot + - label: TimeSpan + type: class + - label: begin_of_the_begin + type: slot + - label: Timestamp + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/valid_from + revision: + - label: temporal_extent + type: slot + - label: TimeSpan + type: class + - label: begin_of_the_begin + type: slot + - label: Timestamp + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/uv_filtered_required + revision: + - label: is_or_was_required + type: slot + - label: RequirementStatus + type: class + - label: has_or_had_type + type: slot + - label: RequirementType + type: class + - label: includes_or_included + type: slot + - label: RequirementTypes + type: class + value: + - UV Filtered lighting + - original_slot_id: https://nde.nl/ontology/hc/slot/user_community + revision: + - label: serves_or_served + type: slot + - label: UserCommunity + type: class + - label: has_or_had_type + type: slot + - label: UserCommunityType + type: class + - label: includes_or_included + type: slot + - label: UserCommunityTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/used_by_custodian + revision: + - label: is_or_was_used_by + type: slot + - label: Custodian + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/used_by + revision: + - label: provides_or_provided_provenance_to + type: slot + - label: Entity + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/used + revision: + - label: provides_or_provided_provenance_to + type: slot + - label: ReconstructionActivity + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/url + revision: + - label: has_or_had_url + type: slot + - label: URL + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/updated_at + revision: + - label: was_last_updated_at + type: slot + - label: TimeSpan + type: class + - label: end_of_the_end + type: slot + - label: Timestamp + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/update_frequency + revision: + - label: has_or_had_frequency + type: slot + - label: UpdateFrequency + type: class + - label: has_or_had_quantity + type: slot + link_branch: 1 + - label: Quantity + type: class + link_branch: 1 + - label: has_or_had_time_interval + type: slot + link_branch: 2 + - label: TimeInterval + type: class + link_branch: 2 + - original_slot_id: https://nde.nl/ontology/hc/slot/unit_type + revision: + - label: has_or_had_type + type: slot + - label: OrganizationalUnitType + type: class + - label: includes_or_included + type: slot + - label: OrganizationalUnitTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/unit_name + revision: + - label: has_or_had_label + type: slot + - label: Label + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/unit_identifier + revision: + - label: has_or_had_identifier + type: slot + - label: Identifier + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/unit_id + revision: + - label: has_or_had_identifier + type: slot + - label: Identifier + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/unit_description + revision: + - label: has_or_had_description + type: slot + - label: Description + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/unit_affiliation + revision: + - label: is_or_was_affiliated_with + type: slot + - label: OrganizationUnit + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/unique_object_count + revision: + - label: has_or_had_quantity + type: slot + - label: Quantity + type: class + - label: had_or_had_measurement_unit + type: slot + value: + - object + link_branch: 1 + - label: MeasureUnit + type: class + link_branch: 1 + - label: has_or_had_methodology + type: slot + link_branch: 2 + - label: Methodology + type: class + value: + - entity_resolution + link_branch: 2 + - original_slot_id: https://nde.nl/ontology/hc/slot/unique_face_count + revision: + - label: has_or_had_quantity + type: slot + - label: Quantity + type: class + - label: had_or_had_measurement_unit + type: slot + link_branch: 1 + - label: MeasureUnit + type: class + value: + - face + link_branch: 1 + - label: has_or_had_methodology + type: slot + link_branch: 2 + - label: Methodology + type: class + value: + - entity_resolution + link_branch: 2 + - original_slot_id: https://nde.nl/ontology/hc/slot/uniform_title + revision: + - label: has_or_had_label + type: slot + - label: Label + type: class + - label: has_or_had_type + type: slot + - label: TitleType + type: class + - label: includes_or_included + type: slot + - label: TitleTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/unesco_list_status + revision: + - label: has_or_had_status + type: slot + - label: UNESCOListStatus + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/unesco_inscription_year + revision: + - label: temporal_extent + type: slot + - label: TimeSpan + type: class + - label: begin_of_the_begin + type: slot + - label: Timestamp + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/unesco_domain + revision: + - label: is_or_was_categorized_as + type: slot + - label: UNESCODomain + type: class + - label: has_or_had_type + type: slot + - label: UNESCODomainType + type: class + - label: includes_or_included + type: slot + - label: UNESCODomainTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_technical_feature + revision: + - label: has_or_had_feature + type: slot + - label: TechnicalFeature + type: class + - label: has_or_had_type + type: slot + - label: TechnicalFeatureType + type: class + - label: includes_or_included + type: slot + - label: TechnicalFeatureTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_scope + revision: + - label: has_or_had_scope + type: slot + - label: Scope + type: class + - label: has_or_had_type + type: slot + - label: ScopeType + type: class + - label: includes_or_included + type: slot + - label: ScopeTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_responsibility + revision: + - label: has_or_had_responsibility + type: slot + - label: Responsibility + type: class + - label: has_or_had_type + type: slot + - label: ResponsibilityType + type: class + - label: includes_or_included + type: slot + - label: ResponsibilityTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_response_formats + revision: + - label: has_or_had_format + type: slot + - label: ResponseFormat + type: class + - label: has_or_had_type + type: slot + - label: ResponseFormatType + type: class + - label: includes_or_included + type: slot + - label: ResponseFormatTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_metadata_standard + revision: + - label: has_or_had_standard + type: slot + - label: MetadataStandard + type: class + - label: has_or_had_type + type: slot + - label: MetadataStandardType + type: class + - label: includes_or_included + type: slot + - label: MetadataStandardTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_http_methods + revision: + - label: has_or_had_method + type: slot + - label: HTTPMethod + type: class + - label: has_or_had_type + type: slot + - label: HTTPMethodType + type: class + - label: includes_or_included + type: slot + - label: HTTPMethodTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_grant_range + revision: + - label: has_or_had_range + type: slot + - label: GrantRange + type: class + - label: minimal_of_minimal + type: slot + link_branch: 1 + - label: Quantity + type: class + link_branch: 1 + - label: maximal_of_maximal + type: slot + link_branch: 2 + - label: Quantity + type: class + link_branch: 2 + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_domain + revision: + - label: has_or_had_domain + type: slot + - label: Domain + type: class + - label: has_or_had_type + type: slot + - label: DomainType + type: class + - label: includes_or_included + type: slot + - label: DomainTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_condition + revision: + - label: has_or_had_condition + type: slot + - label: Condition + type: class + - label: has_or_had_type + type: slot + - label: ConditionType + type: class + - label: includes_or_included + type: slot + - label: ConditionTypes + type: class + - original_slot_id: https://nde.nl/ontology/hc/slot/typical_approval_time + revision: + - label: has_or_had_time_interval + type: slot + - label: TimeInterval + type: class + - label: has_or_had_type + type: slot + - label: ApprovalTimeType + type: class + - label: includes_or_included + type: slot + - label: ApprovalTimeTypes + type: class + + + + diff --git a/schemas/20251121/linkml/manifest.json b/schemas/20251121/linkml/manifest.json index 694547060b..7cf38617c6 100644 --- a/schemas/20251121/linkml/manifest.json +++ b/schemas/20251121/linkml/manifest.json @@ -1,5 +1,5 @@ { - "generated": "2026-01-14T14:20:53.577Z", + "generated": "2026-01-14T15:04:09.918Z", "schemaRoot": "/schemas/20251121/linkml", "totalFiles": 2883, "categoryCounts": { diff --git a/schemas/20251121/linkml/modules/classes/ApproximationStatus.yaml b/schemas/20251121/linkml/modules/classes/ApproximationStatus.yaml new file mode 100644 index 0000000000..6eb967ad8b --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/ApproximationStatus.yaml @@ -0,0 +1,149 @@ +id: https://nde.nl/ontology/hc/class/ApproximationStatus +name: approximation_status_class +title: ApproximationStatus 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/ + rico: https://www.ica.org/standards/RiC/ontology# + skos: http://www.w3.org/2004/02/skos/core# +imports: +- linkml:types +- ../metadata +- ../slots/approximation_level +- ../slots/has_or_had_label +- ../slots/has_or_had_description +- ./SpecificityAnnotation +- ./TemplateSpecificityScores +- ../slots/specificity_annotation +- ../slots/template_specificity +default_prefix: hc +classes: + ApproximationStatus: + class_uri: hc:ApproximationStatus + description: >- + Status indicating the level of approximation or uncertainty for a value. + + **PURPOSE**: + + ApproximationStatus captures structured uncertainty information for values + like dates, quantities, and measurements where precision varies. This + replaces simple boolean "approximate: true/false" with richer modeling. + + **UNCERTAINTY LEVELS**: + + | Level | Label | Description | Example | + |-------|-------|-------------|---------| + | EXACT | Exact | Known with certainty | "1880-03-15" | + | APPROXIMATE | Approximate | Close but not exact | "circa 1880" | + | ESTIMATED | Estimated | Calculated/inferred | "estimated 1875-1885" | + | UNCERTAIN | Uncertain | Significant doubt | "possibly 19th century" | + | UNKNOWN | Unknown | Cannot be determined | "date unknown" | + + **CIDOC-CRM ALIGNMENT**: + + CIDOC-CRM models time-span precision through E52_Time-Span with fuzzy + boundaries. ApproximationStatus provides a complementary vocabulary for + expressing certainty levels. + + **USE CASES**: + + 1. **Date Uncertainty**: Founding dates known only to decade + 2. **Quantity Estimates**: Collection size approximations + 3. **Location Precision**: Address known only to city level + 4. **Historical Events**: Uncertain timing of organizational changes + + **EXAMPLE**: + + ```yaml + event_date: "1880" + is_or_was_approximate: + approximation_level: APPROXIMATE + has_or_had_label: "circa 1880" + has_or_had_description: "Founding date known only to year from secondary sources" + ``` + exact_mappings: + - crm:E52_Time-Span + close_mappings: + - rico:DateType + related_mappings: + - skos:note + slots: + - approximation_level + - has_or_had_label + - has_or_had_description + - specificity_annotation + - template_specificity + slot_usage: + approximation_level: + range: ApproximationLevelEnum + required: true + description: >- + Level of approximation/uncertainty for the value. + has_or_had_label: + range: string + required: false + description: >- + Human-readable label for the approximation status. + examples: + - value: "circa 1880" + description: Approximate date label + - value: "approximately 10,000" + description: Approximate quantity label + has_or_had_description: + range: string + required: false + description: >- + Explanation of why the value is approximate and how uncertainty + was determined. + examples: + - value: "Founding date derived from secondary sources, exact day unknown" + description: Provenance of uncertainty + comments: + - ApproximationStatus replaces simple boolean approximate field + - Provides structured uncertainty modeling for dates, quantities, etc. + - Aligned with CIDOC-CRM E52_Time-Span precision concepts + - Used by is_or_was_approximate slot + see_also: + - https://www.cidoc-crm.org/Entity/e52-time-span/version-7.1.3 + examples: + - value: + approximation_level: EXACT + has_or_had_label: "1880-03-15" + description: Exact date with full precision + - value: + approximation_level: APPROXIMATE + has_or_had_label: "circa 1880" + has_or_had_description: "Founding date known only to year from newspaper accounts" + description: Approximate date with explanation + - value: + approximation_level: ESTIMATED + has_or_had_label: "estimated 1875-1885" + has_or_had_description: "Date range inferred from building construction records" + description: Estimated date range + - value: + approximation_level: UNKNOWN + has_or_had_label: "date unknown" + has_or_had_description: "No founding records survive" + description: Unknown date + annotations: + specificity_score: 0.30 + specificity_rationale: >- + Approximation status is broadly useful across contexts where + uncertainty needs to be expressed. + +enums: + ApproximationLevelEnum: + description: Levels of approximation/uncertainty for values. + permissible_values: + EXACT: + description: Value is known with certainty + APPROXIMATE: + description: Value is close but not exact (circa, roughly) + ESTIMATED: + description: Value is calculated or inferred + UNCERTAIN: + description: Significant doubt about accuracy + UNKNOWN: + description: Value cannot be determined diff --git a/schemas/20251121/linkml/modules/classes/Author.yaml b/schemas/20251121/linkml/modules/classes/Author.yaml new file mode 100644 index 0000000000..6bf58f009c --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/Author.yaml @@ -0,0 +1,199 @@ +id: https://nde.nl/ontology/hc/class/Author +name: author_class +title: Author Class +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + dcterms: http://purl.org/dc/terms/ + bf: http://id.loc.gov/ontologies/bibframe/ + bibo: http://purl.org/ontology/bibo/ + foaf: http://xmlns.com/foaf/0.1/ + rico: https://www.ica.org/standards/RiC/ontology# +imports: +- linkml:types +- ../metadata +- ../slots/has_or_had_label +- ../slots/has_or_had_description +- ../slots/has_or_had_identifier +- ./SpecificityAnnotation +- ./TemplateSpecificityScores +- ../slots/specificity_annotation +- ../slots/template_specificity +default_prefix: hc +classes: + Author: + class_uri: schema:Person + description: >- + Person or organization that authored/created a creative work. + + **PURPOSE**: + + Author models the creator(s) of works produced by heritage custodians, + such as exhibition catalogs, research publications, finding aids, and + reports. Replaces simple string author lists with structured data. + + **ONTOLOGY ALIGNMENT**: + + | Ontology | Class/Property | Usage | + |----------|----------------|-------| + | **Schema.org** | `schema:Person`, `schema:author` | Primary class and property | + | **Dublin Core** | `dcterms:creator` | Creator relationship | + | **BIBFRAME** | `bf:Contribution`, `bf:Agent` | Bibliographic contributions | + | **FOAF** | `foaf:Person`, `foaf:name` | Personal information | + | **RiC-O** | `rico:Agent` | Archival agent modeling | + + **AUTHOR TYPES**: + + Authors may be: + - **Individual persons**: Named authors with affiliations + - **Organizations**: Corporate authors (e.g., "Rijksmuseum Staff") + - **Anonymous**: Works with unknown authorship + - **Collective**: Group authorships + + **ROLES**: + + Beyond simple "author", works may have multiple contributor types: + - Author (primary creator) + - Editor + - Compiler + - Translator + - Illustrator + - Contributor + + **EXAMPLE**: + + ```yaml + has_or_had_author: + - author_name: "Jan de Vries" + author_role: AUTHOR + author_affiliation: "Rijksmuseum Amsterdam" + - author_name: "Maria van Dijk" + author_role: EDITOR + ``` + exact_mappings: + - schema:Person + - foaf:Person + close_mappings: + - bf:Agent + - rico:Agent + related_mappings: + - bf:Contribution + - dcterms:creator + slots: + - author_name + - author_role + - author_affiliation + - author_identifier + - has_or_had_identifier + - has_or_had_label + - has_or_had_description + - specificity_annotation + - template_specificity + slot_usage: + author_name: + range: string + required: true + description: >- + Full name of the author (person or organization). + examples: + - value: "Jan de Vries" + description: Individual author + - value: "Rijksmuseum Research Department" + description: Corporate author + author_role: + range: AuthorRoleEnum + required: false + ifabsent: "string(AUTHOR)" + description: >- + Role of this person in creating the work. + examples: + - value: AUTHOR + description: Primary author + - value: EDITOR + description: Editor + author_affiliation: + range: string + required: false + description: >- + Organization the author is affiliated with. + examples: + - value: "Rijksmuseum Amsterdam" + description: Museum affiliation + - value: "Universiteit van Amsterdam" + description: University affiliation + author_identifier: + range: uriorcurie + required: false + description: >- + Identifier for the author (ORCID, VIAF, etc.). + examples: + - value: "https://orcid.org/0000-0001-2345-6789" + description: ORCID identifier + - value: "https://viaf.org/viaf/12345678" + description: VIAF identifier + comments: + - Author replaces simple string author lists with structured data + - Supports both individual and organizational authors + - Includes roles (author, editor, compiler, etc.) + - Can link to identifier systems (ORCID, VIAF) + see_also: + - https://schema.org/author + - https://schema.org/Person + - http://id.loc.gov/ontologies/bibframe/Contribution + examples: + - value: + author_name: "Jan de Vries" + author_role: AUTHOR + author_affiliation: "Rijksmuseum Amsterdam" + author_identifier: "https://orcid.org/0000-0001-2345-6789" + description: Individual author with full metadata + - value: + author_name: "Maria van Dijk" + author_role: EDITOR + description: Editor with minimal metadata + - value: + author_name: "Rijksmuseum Research Department" + author_role: AUTHOR + description: Corporate author + annotations: + specificity_score: 0.35 + specificity_rationale: >- + Authorship is broadly useful for creative/documentary works. + +slots: + author_name: + description: Full name of the author (person or organization). + range: string + slot_uri: schema:name + author_role: + description: Role of this person in creating the work. + range: string + slot_uri: hc:authorRole + author_affiliation: + description: Organization the author is affiliated with. + range: string + slot_uri: schema:affiliation + author_identifier: + description: Identifier for the author (ORCID, VIAF, etc.). + range: uriorcurie + slot_uri: schema:identifier + +enums: + AuthorRoleEnum: + description: Roles for contributors to a creative work. + permissible_values: + AUTHOR: + description: Primary creator of the work + EDITOR: + description: Person who edited the work + COMPILER: + description: Person who compiled/assembled the work + TRANSLATOR: + description: Person who translated the work + ILLUSTRATOR: + description: Person who created illustrations + CONTRIBUTOR: + description: General contributor + PHOTOGRAPHER: + description: Person who created photographs diff --git a/schemas/20251121/linkml/modules/classes/BirthDate.yaml b/schemas/20251121/linkml/modules/classes/BirthDate.yaml new file mode 100644 index 0000000000..e9976f502e --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/BirthDate.yaml @@ -0,0 +1,217 @@ +id: https://nde.nl/ontology/hc/class/BirthDate +name: birth_date_class +title: Birth Date 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/ + time: http://www.w3.org/2006/time# + pico: https://personsincontext.org/model# + dcterms: http://purl.org/dc/terms/ + xsd: http://www.w3.org/2001/XMLSchema# +imports: + - linkml:types + - ../metadata + - ../slots/specificity_annotation + - ../slots/template_specificity + - ./SpecificityAnnotation + - ./TemplateSpecificityScores +default_prefix: hc +classes: + BirthDate: + class_uri: schema:Date + description: >- + Structured representation of a person's birth date with support for + uncertainty, incomplete dates, and provenance tracking. + + **PURPOSE**: + + BirthDate replaces simple string birth_date slots to provide: + - EDTF (Extended Date/Time Format) support for uncertain/incomplete dates + - Provenance tracking for inferred dates (Rule 45) + - Confidence scoring + - Source preservation (original format from documents) + + **EDTF NOTATION** (Rule 44): + + | Pattern | Meaning | Example | + |---------|---------|---------| + | `YYYY` | Year only | `1970` | + | `YYYY-MM` | Year and month | `1970-08` | + | `YYYY-MM-DD` | Full date | `1970-08-15` | + | `YYYX` | Decade | `197X` (1970s) | + | `YYXX` | Century | `19XX` (1900s) | + | `YYYY~` | Approximate | `1985~` (circa 1985) | + | `YYYY?` | Uncertain | `1985?` (possibly 1985) | + | `XXXX` | Unknown | Must have search provenance | + + **INFERRED DATA** (Rule 45): + + When birth date is inferred (e.g., from earliest education date): + - Store in `inferred_birth_date` with full inference chain + - Set `is_inferred: true` + - Document inference method and sources + + **ONTOLOGY ALIGNMENT**: + + | Ontology | Mapping | Usage | + |----------|---------|-------| + | **Schema.org** | `schema:Date` | Primary class | + | **CIDOC-CRM** | `crm:E52_Time-Span` | Temporal extent | + | **PiCo** | Birth date observation | Source fidelity | + | **TIME** | `time:Instant` | Point in time | + + **EXAMPLE**: + + ```yaml + has_or_had_date_of_birth: + birth_edtf: "1970-08-15" + birth_iso_date: "1970-08-15" + is_inferred: false + confidence: high + ``` + exact_mappings: + - schema:Date + close_mappings: + - crm:E52_Time-Span + - time:Instant + related_mappings: + - pico:PersonObservation + slots: + - birth_edtf + - birth_iso_date + - birth_source_text + - is_inferred + - inference_provenance + - confidence + - specificity_annotation + - template_specificity + slot_usage: + birth_edtf: + range: string + required: true + description: >- + Birth date in EDTF notation (Extended Date/Time Format). + Supports incomplete dates, uncertainty, and approximation. + examples: + - value: "1970-08-15" + description: Full date known + - value: "1970-08" + description: Year and month known + - value: "1970" + description: Only year known + - value: "197X" + description: Decade known (1970s) + - value: "1970~" + description: Approximate (circa 1970) + - value: "XXXX" + description: Unknown (requires search provenance) + birth_iso_date: + range: date + required: false + description: >- + Birth date as ISO 8601 date (YYYY-MM-DD) when full date is known. + Optional - use birth_edtf for partial/uncertain dates. + examples: + - value: "1970-08-15" + birth_source_text: + range: string + required: false + description: >- + Original date text from source document, preserved verbatim. + Useful for archival/historical sources with non-standard notation. + examples: + - value: "born in the year of our Lord 1823" + - value: "ca. 1750" + - value: "late 18th century" + is_inferred: + range: boolean + required: false + ifabsent: "false" + description: >- + Whether this birth date was inferred (vs. directly extracted). + If true, inference_provenance MUST be provided per Rule 45. + inference_provenance: + range: string + required: false + description: >- + JSON string documenting inference chain per Rule 45. + Required when is_inferred is true. + examples: + - value: '{"method": "earliest_education_heuristic", "inference_chain": [...]}' + confidence: + range: BirthDateConfidenceEnum + required: false + description: >- + Confidence level in the birth date value. + comments: + - "Replaces simple birth_date string slot (Rule 53)" + - "EDTF notation enables uncertain/incomplete date representation" + - "Inference provenance required when is_inferred=true (Rule 45)" + - "Source text preservation supports archival/historical research" + see_also: + - https://www.loc.gov/standards/datetime/ + - https://schema.org/birthDate + examples: + - value: + birth_edtf: "1970-08-15" + birth_iso_date: "1970-08-15" + is_inferred: false + confidence: HIGH + 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 + 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 + description: Year extracted from historical document + annotations: + specificity_score: 0.45 + specificity_rationale: >- + Birth dates are relevant for person research across all heritage sectors. + +slots: + birth_edtf: + description: Birth date in EDTF notation. + range: string + slot_uri: dcterms:date + birth_iso_date: + description: Birth date as ISO 8601 date when full date is known. + range: date + slot_uri: schema:birthDate + birth_source_text: + description: Original date text from source document. + range: string + slot_uri: hc:sourceText + is_inferred: + description: Whether this date was inferred. + range: boolean + slot_uri: hc:isInferred + inference_provenance: + description: JSON documenting inference chain. + range: string + slot_uri: hc:inferenceProvenance + confidence: + description: Confidence level in the date value. + range: string + slot_uri: hc:confidence + +enums: + BirthDateConfidenceEnum: + description: Confidence levels for birth date values. + permissible_values: + HIGH: + description: Full date from authoritative source (e.g., birth certificate) + MEDIUM: + description: Date from reliable source (e.g., official biography) + LOW: + description: Date inferred or from uncertain source + VERY_LOW: + description: Decade/century estimated from indirect evidence diff --git a/schemas/20251121/linkml/modules/classes/BirthPlace.yaml b/schemas/20251121/linkml/modules/classes/BirthPlace.yaml new file mode 100644 index 0000000000..b590688859 --- /dev/null +++ b/schemas/20251121/linkml/modules/classes/BirthPlace.yaml @@ -0,0 +1,223 @@ +id: https://nde.nl/ontology/hc/class/BirthPlace +name: birth_place_class +title: Birth Place 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/ + gn: http://www.geonames.org/ontology# + wdt: http://www.wikidata.org/prop/direct/ +imports: + - linkml:types + - ../metadata + - ../slots/specificity_annotation + - ../slots/template_specificity + - ./SpecificityAnnotation + - ./TemplateSpecificityScores +default_prefix: hc +classes: + BirthPlace: + class_uri: schema:Place + description: >- + Structured representation of a person's place of birth with support + for historical place names, modern equivalents, and geographic identifiers. + + **PURPOSE**: + + BirthPlace replaces simple string birth_place slots to provide: + - Historical place name preservation + - Modern place name linkage + - Geographic identifier integration (GeoNames, Wikidata) + - Coordinate storage for mapping applications + + **HISTORICAL VS. MODERN NAMES**: + + Many birth places used historical names that have since changed: + - "Batavia" → "Jakarta" + - "Bombay" → "Mumbai" + - "Leningrad" → "St. Petersburg" + - "Saigon" → "Ho Chi Minh City" + + BirthPlace preserves the source name while linking to modern identifiers. + + **GEOGRAPHIC RESOLUTION**: + + Per AGENTS.md Rule on GeoNames as authoritative source: + - `geonames_id`: Links to GeoNames for standardization + - `wikidata_id`: Links to Wikidata for additional context + - `coordinates`: Lat/lon for mapping + + **ONTOLOGY ALIGNMENT**: + + | Ontology | Mapping | Usage | + |----------|---------|-------| + | **Schema.org** | `schema:Place` | Primary class | + | **CIDOC-CRM** | `crm:E53_Place` | Place entity | + | **GeoNames** | `gn:Feature` | Geographic feature | + + **EXAMPLE**: + + ```yaml + has_or_had_place_of_birth: + place_name: "Batavia" + modern_place_name: "Jakarta" + country_code: "ID" + geonames_id: 1642911 + wikidata_id: "Q3630" + ``` + exact_mappings: + - schema:Place + close_mappings: + - crm:E53_Place + - gn:Feature + slots: + - place_name + - modern_place_name + - country_code + - region_code + - geonames_id + - wikidata_id + - coordinates + - place_source_text + - specificity_annotation + - template_specificity + slot_usage: + place_name: + range: string + required: true + description: >- + Name of the birth place as recorded in source. + May be historical name that has since changed. + examples: + - value: "Amsterdam" + description: Current name + - value: "Batavia" + description: Historical name (now Jakarta) + modern_place_name: + range: string + required: false + description: >- + Modern equivalent name if place_name is historical. + Leave null if place_name is current. + examples: + - value: "Jakarta" + description: Modern name for Batavia + country_code: + range: string + required: false + pattern: "^[A-Z]{2}$" + description: >- + ISO 3166-1 alpha-2 country code. + examples: + - value: "NL" + - value: "ID" + region_code: + range: string + required: false + description: >- + ISO 3166-2 region/province code or GeoNames admin1 code. + examples: + - value: "NH" + description: Noord-Holland + geonames_id: + range: integer + required: false + description: >- + GeoNames geographic identifier for the place. + Authoritative source per AGENTS.md. + examples: + - value: 2759794 + description: Amsterdam GeoNames ID + wikidata_id: + range: string + required: false + pattern: "^Q[0-9]+$" + description: >- + Wikidata entity identifier for the place. + examples: + - value: "Q727" + description: Amsterdam Wikidata ID + coordinates: + range: string + required: false + description: >- + Geographic coordinates as "lat,lon" string. + examples: + - value: "52.3676,4.9041" + description: Amsterdam coordinates + place_source_text: + range: string + required: false + description: >- + Original place text from source document, preserved verbatim. + Useful when source contains additional context. + examples: + - value: "born at the family estate in rural Gelderland" + comments: + - "Replaces simple birth_place string slot (Rule 53)" + - "Preserves historical place names while linking to modern identifiers" + - "GeoNames ID is authoritative per AGENTS.md" + see_also: + - https://schema.org/birthPlace + - https://www.geonames.org/ + examples: + - value: + place_name: "Amsterdam" + country_code: "NL" + region_code: "NH" + geonames_id: 2759794 + wikidata_id: "Q727" + coordinates: "52.3676,4.9041" + description: Birth place with full geographic resolution + - value: + place_name: "Batavia" + modern_place_name: "Jakarta" + country_code: "ID" + geonames_id: 1642911 + wikidata_id: "Q3630" + description: Historical place name with modern equivalent + - value: + place_name: "rural Gelderland" + country_code: "NL" + region_code: "GE" + place_source_text: "born at the family estate in rural Gelderland" + description: Imprecise location from archival source + annotations: + specificity_score: 0.45 + specificity_rationale: >- + Birth places are relevant for person research across heritage sectors. + +slots: + place_name: + description: Name of the place as recorded in source. + range: string + slot_uri: schema:name + modern_place_name: + description: Modern equivalent name if different from source name. + range: string + slot_uri: hc:modernPlaceName + country_code: + description: ISO 3166-1 alpha-2 country code. + range: string + slot_uri: schema:addressCountry + region_code: + description: ISO 3166-2 region/province code. + range: string + slot_uri: schema:addressRegion + geonames_id: + description: GeoNames geographic identifier. + range: integer + slot_uri: gn:geonamesId + wikidata_id: + description: Wikidata entity identifier. + range: string + slot_uri: wdt:P625 + coordinates: + description: Geographic coordinates as lat,lon string. + range: string + slot_uri: schema:geo + place_source_text: + description: Original place text from source document. + range: string + slot_uri: hc:sourceText diff --git a/schemas/20251121/linkml/modules/classes/BranchOffice.yaml b/schemas/20251121/linkml/modules/classes/BranchOffice.yaml index 513c70d542..b8c6065b26 100644 --- a/schemas/20251121/linkml/modules/classes/BranchOffice.yaml +++ b/schemas/20251121/linkml/modules/classes/BranchOffice.yaml @@ -9,7 +9,10 @@ imports: - ../slots/has_or_had_description - ../slots/has_or_had_identifier - ../slots/has_or_had_label -- ../slots/branch_service_area +# REMOVED - migrated to has_or_had_service_area (Rule 53) +# - ../slots/branch_service_area +- ../slots/has_or_had_service_area +- ./ServiceArea - ../slots/branch_staff_count - ../slots/has_local_collection - ../slots/is_public_facing @@ -69,7 +72,9 @@ classes: - has_or_had_description - has_or_had_identifier - has_or_had_label - - branch_service_area + # REMOVED - migrated to has_or_had_service_area (Rule 53) + # - branch_service_area + - has_or_had_service_area - branch_staff_count - has_local_collection - is_public_facing @@ -115,13 +120,27 @@ classes: - value: Regional branch serving Zaanstreek-Waterland area. Holds municipal records from Zaandam, Wormerland, Purmerend. Open to researchers Tuesday-Thursday. description: Archive branch description - branch_service_area: - range: string + # REMOVED - migrated to has_or_had_service_area (Rule 53) + # branch_service_area: + # range: string + # examples: + # - value: Zaanstreek-Waterland region + # description: Regional coverage + # - value: Amsterdam Schiphol Airport travelers + # description: Specific community served + has_or_had_service_area: + range: ServiceArea + inlined: true + description: >- + Geographic area or community served by this branch. + MIGRATED from branch_service_area (Rule 53) - changed from string to + ServiceArea class for richer geographic modeling. examples: - - value: Zaanstreek-Waterland region - description: Regional coverage - - value: Amsterdam Schiphol Airport travelers - description: Specific community served + - value: + service_area_id: https://nde.nl/ontology/hc/servicearea/zaanstreek-waterland + service_area_name: Zaanstreek-Waterland region + service_area_type: REGIONAL + description: Regional coverage as structured ServiceArea is_public_facing: range: boolean required: true @@ -177,7 +196,10 @@ classes: has_or_had_label: Noord-Hollands Archief - Zaanstreek-Waterland has_or_had_description: Regional branch serving Zaanstreek-Waterland area. Holds municipal records from Zaandam, Wormerland, Purmerend. - branch_service_area: Zaanstreek-Waterland region + has_or_had_service_area: + service_area_id: https://nde.nl/ontology/hc/servicearea/zaanstreek-waterland + service_area_name: Zaanstreek-Waterland region + service_area_type: REGIONAL is_public_facing: true services_offered: - Archival research access @@ -192,7 +214,10 @@ classes: has_or_had_label: Rijksmuseum Schiphol has_or_had_description: Exhibition space at Schiphol Airport featuring rotating highlights from the Rijksmuseum collection. Free admission. - branch_service_area: Amsterdam Schiphol Airport travelers + has_or_had_service_area: + service_area_id: https://nde.nl/ontology/hc/servicearea/schiphol-travelers + service_area_name: Amsterdam Schiphol Airport travelers + service_area_type: COMMUNITY is_public_facing: true services_offered: - Exhibition viewing diff --git a/schemas/20251121/linkml/modules/classes/CustodianTimelineEvent.yaml b/schemas/20251121/linkml/modules/classes/CustodianTimelineEvent.yaml index f55fece8aa..db7db23d21 100644 --- a/schemas/20251121/linkml/modules/classes/CustodianTimelineEvent.yaml +++ b/schemas/20251121/linkml/modules/classes/CustodianTimelineEvent.yaml @@ -18,7 +18,10 @@ imports: - ../enums/DataTierEnum - ../enums/DatePrecisionEnum - ../enums/TimelineExtractionMethodEnum -- ../slots/approximate +# REMOVED - migrated to is_or_was_approximate (Rule 53) +# - ../slots/approximate +- ../slots/is_or_was_approximate +- ./ApproximationStatus - ../slots/has_archive_path - ../slots/data_tier - ../slots/date_precision @@ -53,8 +56,8 @@ classes: \ Scope decrease (ingekrompen)\n- REORGANIZATION: Complex restructuring (herstructurering)\n\n**EXCLUDED EVENT TYPES**\n\ \nSome patterns are NOT mapped to events:\n- predecessor: This is a relationship, not an event\n- friends_org: Separate\ \ organization (Vrienden van...)\n- reopening: Not in OrganizationalChangeEventTypeEnum\n\n**EXAMPLE USAGE**\n\n```yaml\n\ - timeline_events:\n - event_type: FOUNDING\n event_date: \"2005-04-30\"\n date_precision: day\n approximate:\ - \ false\n description: >-\n Het RHC Drents Archief werd opgericht op 30 april 2005.\n Het is de voortzetting\ + timeline_events:\n - event_type: FOUNDING\n event_date: \"2005-04-30\"\n date_precision: day\n is_or_was_approximate:\n\ + \ approximation_level: EXACT\n description: >-\n Het RHC Drents Archief werd opgericht op 30 april 2005.\n Het is de voortzetting\ \ van het Rijksarchief in Drenthe (sinds 2000).\n source_url:\n - \"https://nl.wikipedia.org/wiki/Drents_Archief\"\ \n - \"https://bizzy.ai/nl/nl/52454037/regionaal-historisch-centrum-rhc-drents-archief\"\n extraction_method:\ \ api_response_regex\n extraction_timestamp: \"2025-12-16T10:00:00Z\"\n extraction_notes: >-\n Query: \"\ @@ -67,7 +70,9 @@ classes: - tooi:Wijzigingsgebeurtenis - schema:Event slots: - - approximate + # REMOVED - migrated to is_or_was_approximate (Rule 53) + # - approximate + - is_or_was_approximate - archive_path - data_tier - date_precision @@ -88,8 +93,26 @@ classes: required: false date_precision: required: true - is_approximate: + # REMOVED - migrated to is_or_was_approximate (Rule 53) + # is_approximate: + # required: true + is_or_was_approximate: + range: ApproximationStatus + inlined: true required: true + description: >- + Whether the event date is approximate or uncertain. + MIGRATED from approximate (Rule 53) - changed from boolean to + ApproximationStatus class for structured uncertainty modeling. + examples: + - value: + approximation_level: EXACT + description: Exact date known + - value: + approximation_level: APPROXIMATE + has_or_had_label: "circa 1880" + has_or_had_description: "Founding date known only to year" + description: Approximate date with explanation description: required: true source_url: @@ -134,7 +157,8 @@ classes: event_type: FOUNDING event_date: '2005-04-30' date_precision: day - approximate: false + is_or_was_approximate: + approximation_level: EXACT description: Het RHC Drents Archief werd opgericht op 30 april 2005. source_url: - https://nl.wikipedia.org/wiki/Drents_Archief @@ -148,7 +172,8 @@ classes: event_type: MERGER event_date: '2005' date_precision: year - approximate: false + is_or_was_approximate: + approximation_level: EXACT description: In 2005 ging het Gemeentearchief Assen op in het Drents Archief. source_url: - https://nl.wikipedia.org/wiki/Drents_Archief @@ -160,7 +185,8 @@ classes: event_type: FOUNDING event_date: '1810' date_precision: year - approximate: false + is_or_was_approximate: + approximation_level: EXACT description: The Rijksmuseum was founded in 1810 as the Royal Museum. source_url: - https://www.wikidata.org/wiki/Q190804 @@ -173,7 +199,8 @@ classes: event_type: TRANSFER event_date: '1885' date_precision: year - approximate: false + is_or_was_approximate: + approximation_level: EXACT description: The Rijksmuseum moved to its current building designed by Cuypers. source_url: - https://www.rijksmuseum.nl/en/about-us/what-we-do/history @@ -183,3 +210,16 @@ classes: archive_path: web/0001/rijksmuseum.nl/about-us/rendered.html data_tier: TIER_2_VERIFIED description: Relocation event from institutional website + - value: + event_type: FOUNDING + event_date: '1880' + date_precision: year + is_or_was_approximate: + approximation_level: APPROXIMATE + has_or_had_label: "circa 1880" + has_or_had_description: "Founding date derived from secondary sources, exact year uncertain" + description: Museum founded around 1880, exact date unknown. + extraction_method: manual_research + extraction_timestamp: '2025-12-20T16:00:00Z' + data_tier: TIER_4_INFERRED + description: Founding event with approximate date diff --git a/schemas/20251121/linkml/modules/classes/DigitalPlatform.yaml b/schemas/20251121/linkml/modules/classes/DigitalPlatform.yaml index 8850d0db5c..c7b2065d34 100644 --- a/schemas/20251121/linkml/modules/classes/DigitalPlatform.yaml +++ b/schemas/20251121/linkml/modules/classes/DigitalPlatform.yaml @@ -16,7 +16,9 @@ imports: - ./SearchAPI - ./METSAPI - ./DataServiceEndpointTypes -- ../slots/auxiliary_platforms +# REMOVED - migrated to has_or_had_auxiliary_entities with range AuxiliaryDigitalPlatform (Rule 53) +# - ../slots/auxiliary_platforms +- ../slots/has_or_had_auxiliary_entities - ../slots/has_or_had_powered_by_cm - ../slots/has_or_had_access_restriction - ../slots/preservation_level @@ -103,7 +105,9 @@ classes: slots: - has_or_had_access_restriction - has_or_had_api_endpoint - - auxiliary_platforms + # MIGRATED from auxiliary_platforms to has_or_had_auxiliary_entities (Rule 53) + # - auxiliary_platforms + - has_or_had_auxiliary_entities - collection_web_address - has_or_had_data_service_endpoint - fixity_check_date @@ -241,7 +245,11 @@ classes: description: Open to all users - value: API key required description: Developer registration needed - has_auxiliary_platform: + # MIGRATED from auxiliary_platforms / has_auxiliary_platform (Rule 53) + has_or_had_auxiliary_entities: + description: | + MIGRATED from auxiliary_platforms (Rule 53). + Subordinate or auxiliary digital platforms associated with this platform. range: AuxiliaryDigitalPlatform multivalued: true inlined_as_list: true @@ -326,7 +334,7 @@ classes: - 'Multivalued on Custodian: one custodian can have multiple platforms (website + API + mobile app)' - Temporal validity tracks platform lifecycle (launch, shutdown, migration) - IIIF and linked data flags enable discovery of interoperable platforms - - 'NEW: auxiliary_platforms links to subordinate AuxiliaryDigitalPlatform sites (project portals, microsites, APIs)' + - 'MIGRATED: auxiliary_platforms → has_or_had_auxiliary_entities for AuxiliaryDigitalPlatform sites (project portals, microsites, APIs)' - Hierarchical pattern mirrors CustodianName → CustodianAppellation relationship see_also: - https://schema.org/WebSite diff --git a/schemas/20251121/linkml/modules/classes/ExhibitionCatalog.yaml b/schemas/20251121/linkml/modules/classes/ExhibitionCatalog.yaml index 5487267fc1..7a1865d5f3 100644 --- a/schemas/20251121/linkml/modules/classes/ExhibitionCatalog.yaml +++ b/schemas/20251121/linkml/modules/classes/ExhibitionCatalog.yaml @@ -20,7 +20,10 @@ imports: - ../slots/isbn - ../slots/language - ../slots/price -- ../slots/authors +# REMOVED - migrated to has_or_had_author (Rule 53) +# - ../slots/authors +- ../slots/has_or_had_author +- ./Author # REMOVED: ../slots/binding - Use has_or_had_type with BindingType instead (2026-01-15) - ../slots/has_or_had_type - ./BindingType @@ -51,7 +54,7 @@ imports: - ../slots/worldcat_id - ./SpecificityAnnotation - ./TemplateSpecificityScores -- ../slots/has_author +# REMOVED: ../slots/has_author - migrated to has_or_had_author (Rule 53) default_prefix: hc classes: ExhibitionCatalog: @@ -80,7 +83,8 @@ classes: - bf:Instance - bibo:Book slots: - - authors + # REMOVED: authors - migrated to has_or_had_author (Rule 53) + - has_or_had_author # REMOVED: binding - Use has_or_had_type with BindingType instead (2026-01-15) - has_or_had_type - catalog_description @@ -146,13 +150,28 @@ classes: examples: - value: PRINT_CATALOG - value: DIGITAL_CATALOG - has_author: + has_or_had_author: + description: >- + Authors of the exhibition catalog. + MIGRATED from authors/has_author slots (Rule 53). + + Uses Author class for structured authorship data including + name, role (author/editor/translator), affiliation, and identifiers. required: false - range: string + range: Author + inlined: true multivalued: true examples: - - value: Pieter Roelofs - - value: Gregor J.M. Weber + - value: | + author_name: Pieter Roelofs + author_role: AUTHOR + author_affiliation: Rijksmuseum Amsterdam + description: Primary author with affiliation + - value: | + author_name: Gregor J.M. Weber + author_role: AUTHOR + author_identifier: https://orcid.org/0000-0002-1234-5678 + description: Author with ORCID identifier editor: required: false range: string @@ -340,9 +359,13 @@ classes: catalog_title: Vermeer catalog_for: https://nde.nl/ontology/hc/exhibition/rijksmuseum-vermeer-2023 catalog_type: PRINT_CATALOG - has_author: - - Pieter Roelofs - - Gregor J.M. Weber + has_or_had_author: + - author_name: Pieter Roelofs + author_role: AUTHOR + author_affiliation: Rijksmuseum Amsterdam + - author_name: Gregor J.M. Weber + author_role: AUTHOR + author_affiliation: Rijksmuseum Amsterdam editor: - Pieter Roelofs publisher: Rijksmuseum / Hannibal Publishing diff --git a/schemas/20251121/linkml/modules/classes/PersonObservation.yaml b/schemas/20251121/linkml/modules/classes/PersonObservation.yaml index c3653ba6b9..8c11d70506 100644 --- a/schemas/20251121/linkml/modules/classes/PersonObservation.yaml +++ b/schemas/20251121/linkml/modules/classes/PersonObservation.yaml @@ -17,8 +17,14 @@ imports: - ../slots/id - ../slots/person_name - ../slots/has_person_name -- ../slots/birth_date -- ../slots/birth_place +# REMOVED - migrated to has_or_had_date_of_birth (Rule 53) +# - ../slots/birth_date +- ../slots/has_or_had_date_of_birth +- ./BirthDate +# REMOVED - migrated to has_or_had_place_of_birth (Rule 53) +# - ../slots/birth_place +- ../slots/has_or_had_place_of_birth +- ./BirthPlace - ../slots/death_place - ../slots/date_of_death - ../slots/deceased @@ -99,8 +105,10 @@ classes: slots: - is_or_was_affected_by_event - has_age - - birth_date - - birth_place + # REMOVED: birth_date - migrated to has_or_had_date_of_birth (Rule 53) + - has_or_had_date_of_birth + # REMOVED: birth_place - migrated to has_or_had_place_of_birth (Rule 53) + - has_or_had_place_of_birth - contact_email - created - date_of_death @@ -148,12 +156,48 @@ classes: - Required is false initially to allow PersonObservation without hub linkage - Production data SHOULD always have this link for full PICO compliance - 'Inverse relationship: Person.has_person_observation (implemented v0.9.8)' - birth_date: - range: string + has_or_had_date_of_birth: + description: >- + Birth date of the person using structured BirthDate class. + MIGRATED from birth_date slot (Rule 53). + + Supports EDTF notation for uncertain/incomplete dates and + tracks provenance for inferred dates per Rule 45. + range: BirthDate + inlined: true required: false - birth_place: - range: string + examples: + - value: | + birth_edtf: "1970-08-15" + is_inferred: false + confidence: HIGH + description: Full date known + - value: | + birth_edtf: "197X" + is_inferred: true + confidence: LOW + description: Decade inferred from career start + has_or_had_place_of_birth: + description: >- + Birth place of the person using structured BirthPlace class. + MIGRATED from birth_place slot (Rule 53). + + Supports historical vs. modern place names and links to + GeoNames/Wikidata for geographic resolution. + range: BirthPlace + inlined: true required: false + examples: + - value: | + place_name: Amsterdam + country_code: NL + geonames_id: 2759794 + description: Birth place with geographic identifiers + - value: | + place_name: Batavia + modern_place_name: Jakarta + country_code: ID + description: Historical place name death_place: range: string required: false diff --git a/schemas/20251121/linkml/modules/slots/approximation_level.yaml b/schemas/20251121/linkml/modules/slots/approximation_level.yaml new file mode 100644 index 0000000000..6a40a87ed5 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/approximation_level.yaml @@ -0,0 +1,26 @@ +id: https://nde.nl/ontology/hc/slot/approximation_level +name: approximation_level_slot +title: Approximation Level Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ +imports: +- linkml:types +default_prefix: hc +slots: + approximation_level: + description: >- + Level of approximation/uncertainty for a value. + + See ApproximationLevelEnum for valid values: + - EXACT: Known with certainty + - APPROXIMATE: Close but not exact + - ESTIMATED: Calculated/inferred + - UNCERTAIN: Significant doubt + - UNKNOWN: Cannot be determined + range: string + slot_uri: hc:approximationLevel + annotations: + specificity_score: 0.30 + specificity_rationale: >- + Approximation level is broadly useful for expressing uncertainty. diff --git a/schemas/20251121/linkml/modules/slots/approximate.yaml b/schemas/20251121/linkml/modules/slots/archive/approximate_archived_20260114.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/approximate.yaml rename to schemas/20251121/linkml/modules/slots/archive/approximate_archived_20260114.yaml diff --git a/schemas/20251121/linkml/modules/slots/authors.yaml b/schemas/20251121/linkml/modules/slots/archive/authors_archived_20260114.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/authors.yaml rename to schemas/20251121/linkml/modules/slots/archive/authors_archived_20260114.yaml diff --git a/schemas/20251121/linkml/modules/slots/auxiliary_platforms.yaml b/schemas/20251121/linkml/modules/slots/archive/auxiliary_platforms_archived_20260114.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/auxiliary_platforms.yaml rename to schemas/20251121/linkml/modules/slots/archive/auxiliary_platforms_archived_20260114.yaml diff --git a/schemas/20251121/linkml/modules/slots/birth_date.yaml b/schemas/20251121/linkml/modules/slots/archive/birth_date_archived_20260114.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/birth_date.yaml rename to schemas/20251121/linkml/modules/slots/archive/birth_date_archived_20260114.yaml diff --git a/schemas/20251121/linkml/modules/slots/birth_place.yaml b/schemas/20251121/linkml/modules/slots/archive/birth_place_archived_20260114.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/birth_place.yaml rename to schemas/20251121/linkml/modules/slots/archive/birth_place_archived_20260114.yaml diff --git a/schemas/20251121/linkml/modules/slots/branch_service_area.yaml b/schemas/20251121/linkml/modules/slots/archive/branch_service_area_archived_20260114.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/branch_service_area.yaml rename to schemas/20251121/linkml/modules/slots/archive/branch_service_area_archived_20260114.yaml diff --git a/schemas/20251121/linkml/modules/slots/has_author.yaml b/schemas/20251121/linkml/modules/slots/archive/has_author_archived_20260114.yaml similarity index 100% rename from schemas/20251121/linkml/modules/slots/has_author.yaml rename to schemas/20251121/linkml/modules/slots/archive/has_author_archived_20260114.yaml diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_author.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_author.yaml new file mode 100644 index 0000000000..7119994aa7 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_author.yaml @@ -0,0 +1,61 @@ +id: https://nde.nl/ontology/hc/slot/has_or_had_author +name: has_or_had_author_slot +title: Has Or Had Author Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + dcterms: http://purl.org/dc/terms/ + bf: http://id.loc.gov/ontologies/bibframe/ + bibo: http://purl.org/ontology/bibo/ + rico: https://www.ica.org/standards/RiC/ontology# +imports: +- linkml:types +default_prefix: hc +slots: + has_or_had_author: + description: >- + Person or organization that authored/created a work. + + Links to Author class which models creators of creative works such as + catalogs, publications, reports, and other documentary outputs. + + **RiC-O Alignment**: Follows RiC-O temporal relationship pattern (has/had) + for properties that may change over time (e.g., posthumous attributions, + disputed authorship). + + **Schema.org/Dublin Core Alignment**: Maps to schema:author and dcterms:creator. + + **BIBFRAME Alignment**: Related to bf:contribution for bibliographic works. + + **Use Cases**: + - Exhibition catalog authors + - Research report authors + - Finding aid compilers + - Publication contributors + + **MIGRATED from authors (Rule 53)**: Changed from string to Author class + for structured authorship modeling including roles, affiliations, and temporal + aspects. + slot_uri: schema:author + range: Author + multivalued: true + inlined: true + exact_mappings: + - schema:author + - dcterms:creator + close_mappings: + - bf:contribution + - bibo:authorList + related_mappings: + - rico:hasOrHadAuthor + annotations: + owl.template: |- + AnnotationAssertion( rdfs:label {{slot_uri}} "has or had author"@en ) + specificity_score: 0.35 + specificity_rationale: >- + Authorship is broadly useful for any creative/documentary work + produced by heritage custodians. + custodian_types: '["*"]' + custodian_types_rationale: >- + All custodian types may produce authored works (catalogs, reports, etc.). diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_date_of_birth.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_date_of_birth.yaml new file mode 100644 index 0000000000..deb678e94b --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_date_of_birth.yaml @@ -0,0 +1,61 @@ +id: https://nde.nl/ontology/hc/slot/has_or_had_date_of_birth +name: has_or_had_date_of_birth_slot +title: Has or Had Date of Birth Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + crm: http://www.cidoc-crm.org/cidoc-crm/ + rico: https://www.ica.org/standards/RiC/ontology# + foaf: http://xmlns.com/foaf/0.1/ +imports: + - linkml:types +default_prefix: hc +slots: + has_or_had_date_of_birth: + slot_uri: schema:birthDate + description: >- + The birth date of a person, modeled as a structured BirthDate class. + + **TEMPORAL SEMANTICS (RiC-O Pattern)**: + + Uses "has_or_had" prefix to indicate the relationship may be: + - Current (person is alive with this birth date) + - Historical (person is deceased, birth date is historical fact) + + **ONTOLOGY ALIGNMENT**: + + | Ontology | Property | Usage | + |----------|----------|-------| + | **Schema.org** | `schema:birthDate` | Primary property (web semantics) | + | **FOAF** | `foaf:birthday` | Social network date | + | **CIDOC-CRM** | `crm:P98i_was_born` → `crm:E67_Birth` | Birth event | + | **RiC-O** | `rico:birthDate` | Archival person modeling | + + **INCOMPLETE DATES**: + + Per Rule 44 (EDTF), incomplete dates are modeled using BirthDate class: + - Decade known: `birth_edtf: "197X"` + - Century known: `birth_edtf: "19XX"` + - Approximate: `birth_edtf: "1985~"` + + **MIGRATION NOTE**: + + Replaces simple `birth_date` string slot with structured BirthDate class + per Rule 53 (Full Slot Migration). This enables: + - EDTF date notation support + - Provenance tracking for inferred dates + - Confidence scoring + range: BirthDate + required: false + inlined: true + exact_mappings: + - schema:birthDate + - foaf:birthday + close_mappings: + - crm:P98i_was_born + - rico:birthDate + comments: + - "MIGRATED from birth_date slot (Rule 53)" + - "Supports EDTF notation for uncertain/incomplete dates" + - "BirthDate class provides provenance for inferred birth dates" diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_place_of_birth.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_place_of_birth.yaml new file mode 100644 index 0000000000..ed45c04390 --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_place_of_birth.yaml @@ -0,0 +1,58 @@ +id: https://nde.nl/ontology/hc/slot/has_or_had_place_of_birth +name: has_or_had_place_of_birth_slot +title: Has or Had Place of Birth Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + crm: http://www.cidoc-crm.org/cidoc-crm/ + rico: https://www.ica.org/standards/RiC/ontology# + foaf: http://xmlns.com/foaf/0.1/ +imports: + - linkml:types +default_prefix: hc +slots: + has_or_had_place_of_birth: + slot_uri: schema:birthPlace + description: >- + The place where a person was born, modeled as a structured BirthPlace class. + + **TEMPORAL SEMANTICS (RiC-O Pattern)**: + + Uses "has_or_had" prefix to indicate the relationship: + - Historical fact (birth location doesn't change) + - May use historical place names vs. modern equivalents + + **ONTOLOGY ALIGNMENT**: + + | Ontology | Property | Usage | + |----------|----------|-------| + | **Schema.org** | `schema:birthPlace` | Primary property | + | **FOAF** | `foaf:based_near` | Location association | + | **CIDOC-CRM** | `crm:P7_took_place_at` via Birth event | Place of birth event | + | **RiC-O** | `rico:birthPlace` | Archival person modeling | + + **PLACE RESOLUTION**: + + BirthPlace class enables: + - Historical place name preservation (e.g., "Batavia") + - Modern equivalent linkage (e.g., "Jakarta") + - GeoNames/Wikidata identifier linking + - Coordinate storage for mapping + + **MIGRATION NOTE**: + + Replaces simple `birth_place` string slot with structured BirthPlace class + per Rule 53 (Full Slot Migration). + range: BirthPlace + required: false + inlined: true + exact_mappings: + - schema:birthPlace + close_mappings: + - crm:P7_took_place_at + - rico:birthPlace + comments: + - "MIGRATED from birth_place slot (Rule 53)" + - "Supports historical vs. modern place names" + - "Links to GeoNames/Wikidata for disambiguation" diff --git a/schemas/20251121/linkml/modules/slots/has_or_had_service_area.yaml b/schemas/20251121/linkml/modules/slots/has_or_had_service_area.yaml new file mode 100644 index 0000000000..426f32ab3e --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/has_or_had_service_area.yaml @@ -0,0 +1,54 @@ +id: https://nde.nl/ontology/hc/slot/has_or_had_service_area +name: has_or_had_service_area_slot +title: Has Or Had Service Area Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + org: http://www.w3.org/ns/org# + rico: https://www.ica.org/standards/RiC/ontology# +imports: +- linkml:types +default_prefix: hc +slots: + has_or_had_service_area: + description: >- + Geographic area or community served by an entity. + + Links to ServiceArea class which models the "werkgebied" (operational territory) + of heritage custodians - the geographic area where they provide services and + collect materials. + + **RiC-O Alignment**: Follows RiC-O temporal relationship pattern (has/had) + for properties that may change over time. + + **Schema.org Alignment**: Maps to schema:areaServed for service coverage. + + **Use Cases**: + - Archive branch serving specific municipalities + - Library branch serving neighborhood/district + - Museum outpost serving regional community + + **MIGRATED from branch_service_area (Rule 53)**: Changed from string to + ServiceArea class for richer geographic modeling including boundaries, + temporal validity, and administrative hierarchy. + slot_uri: schema:areaServed + range: ServiceArea + inlined: true + exact_mappings: + - schema:areaServed + close_mappings: + - org:hasSite + - rico:hasOrHadLocation + annotations: + owl.template: |- + AnnotationAssertion( rdfs:label {{slot_uri}} "has or had service area"@en ) + specificity_score: 0.45 + specificity_rationale: >- + Service area is moderately specific - relevant for organizational/geographic + contexts but not universally applicable. + custodian_types: '["A", "L", "M", "O", "R"]' + custodian_types_rationale: >- + Service areas are most relevant to archives (A), libraries (L), museums (M), + official institutions (O), and research centers (R) that have geographic + service mandates. diff --git a/schemas/20251121/linkml/modules/slots/is_or_was_approximate.yaml b/schemas/20251121/linkml/modules/slots/is_or_was_approximate.yaml new file mode 100644 index 0000000000..c2b94c086e --- /dev/null +++ b/schemas/20251121/linkml/modules/slots/is_or_was_approximate.yaml @@ -0,0 +1,54 @@ +id: https://nde.nl/ontology/hc/slot/is_or_was_approximate +name: is_or_was_approximate_slot +title: Is Or Was Approximate Slot +prefixes: + linkml: https://w3id.org/linkml/ + hc: https://nde.nl/ontology/hc/ + schema: http://schema.org/ + crm: http://www.cidoc-crm.org/cidoc-crm/ + rico: https://www.ica.org/standards/RiC/ontology# +imports: +- linkml:types +default_prefix: hc +slots: + is_or_was_approximate: + description: >- + Indicates whether a value (date, quantity, etc.) is approximate or uncertain. + + Links to ApproximationStatus class which models different levels of uncertainty: + - exact: Known with certainty + - approximate: Close but not exact (circa, roughly) + - estimated: Calculated/inferred value + - uncertain: Significant doubt about accuracy + - unknown: Value cannot be determined + + **RiC-O Alignment**: Follows RiC-O temporal relationship pattern (is/was) + for properties that may change over time as more information becomes available. + + **CIDOC-CRM Alignment**: Related to crm:E52_Time-Span precision modeling. + + **Use Cases**: + - Date approximation: "circa 1880" vs "1880-03-15" + - Event timing uncertainty: founding date known only to year + - Quantity estimates: "approximately 10,000 items" + + **MIGRATED from approximate (Rule 53)**: Changed from string to + ApproximationStatus class for structured uncertainty modeling. + slot_uri: hc:isOrWasApproximate + range: ApproximationStatus + inlined: true + close_mappings: + - crm:P79_beginning_is_qualified_by + - crm:P80_end_is_qualified_by + related_mappings: + - rico:certainty + annotations: + owl.template: |- + AnnotationAssertion( rdfs:label {{slot_uri}} "is or was approximate"@en ) + specificity_score: 0.30 + specificity_rationale: >- + Approximation status is broadly useful across many contexts where + uncertainty needs to be expressed (dates, quantities, etc.). + custodian_types: '["*"]' + custodian_types_rationale: >- + Approximation/uncertainty is universal across all custodian types. diff --git a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml index e7bf681de5..c995bd96d8 100644 --- a/schemas/20251121/linkml/modules/slots/slot_fixes.yaml +++ b/schemas/20251121/linkml/modules/slots/slot_fixes.yaml @@ -438,10 +438,10 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/approximate processed: - status: false - timestamp: null - session: null - notes: "Requires ApproximationStatus class creation" + status: true + timestamp: "2026-01-14T12:45:00Z" + session: "slot-migration-session-20260114" + notes: "COMPLETED: Created is_or_was_approximate slot and ApproximationStatus class with ApproximationLevelEnum (EXACT, APPROXIMATE, ESTIMATED, UNCERTAIN, UNKNOWN). Also created approximation_level slot. Updated CustodianTimelineEvent.yaml imports, slots list, slot_usage with range ApproximationStatus, and examples (added 5th example showing approximate date). Archived approximate to archive/approximate_archived_20260114.yaml" revision: - label: is_or_was_approximate type: slot @@ -579,10 +579,10 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/authors processed: - status: false - timestamp: null - session: null - notes: "Requires Author class creation" + status: true + timestamp: '2026-01-14T15:30:00Z' + session: "session-2026-01-14-author-migration" + notes: "FULLY MIGRATED: ExhibitionCatalog.yaml - authors and has_author slots replaced with has_or_had_author (range: Author). Author class with AuthorRoleEnum created. Both authors.yaml and has_author.yaml archived." revision: - label: has_or_had_author type: slot @@ -644,10 +644,15 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/auxiliary_platforms processed: - status: false - timestamp: null - session: null - notes: "Maps to existing AuxiliaryPlatform class" + status: true + timestamp: '2026-01-14T11:45:00Z' + session: "slot-migration-session-8" + notes: | + MIGRATED: auxiliary_platforms → has_or_had_auxiliary_entities + AuxiliaryDigitalPlatform + - has_or_had_auxiliary_entities slot created earlier this session + - AuxiliaryDigitalPlatform class already existed + - Updated DigitalPlatform.yaml: imports, slots list, slot_usage + - Archived to modules/slots/archive/auxiliary_platforms_archived_20260114.yaml revision: - label: has_or_had_auxiliary_entities type: slot @@ -845,10 +850,10 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/birth_date processed: - status: false - timestamp: null - session: null - notes: "Requires BirthDate class creation" + status: true + timestamp: '2026-01-14T16:00:00Z' + session: "session-2026-01-14-birth-date-migration" + notes: "FULLY MIGRATED: PersonObservation.yaml - birth_date replaced with has_or_had_date_of_birth (range: BirthDate). BirthDate class created with EDTF support, confidence enum, and inference provenance. birth_date.yaml archived." revision: - label: has_or_had_date_of_birth type: slot @@ -857,10 +862,10 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/birth_place processed: - status: false - timestamp: null - session: null - notes: "Requires BirthPlace class creation" + status: true + timestamp: '2026-01-14T16:15:00Z' + session: "session-2026-01-14-birth-place-migration" + notes: "FULLY MIGRATED: PersonObservation.yaml - birth_place replaced with has_or_had_place_of_birth (range: BirthPlace). BirthPlace class created with historical/modern place names, GeoNames/Wikidata integration. birth_place.yaml archived." revision: - label: has_or_had_place_of_birth type: slot @@ -1057,10 +1062,10 @@ fixes: - original_slot_id: https://nde.nl/ontology/hc/slot/branch_service_area processed: - status: false - timestamp: null - session: null - notes: "Requires ServiceArea class creation" + status: true + timestamp: "2026-01-14T12:30:00Z" + session: "slot-migration-session-20260114" + notes: "COMPLETED: Created has_or_had_service_area slot with range ServiceArea. Updated BranchOffice.yaml imports, slots list, slot_usage, and examples. ServiceArea class already existed with full geographic modeling. Archived branch_service_area to archive/branch_service_area_archived_20260114.yaml" revision: - label: has_or_had_service_area type: slot