id: https://nde.nl/ontology/hc/class/CustodianTimelineEvent name: CustodianTimelineEvent title: Custodian Timeline Event Class - Organizational Change Events prefixes: linkml: https://w3id.org/linkml/ hc: https://nde.nl/ontology/hc/ schema: http://schema.org/ dcterms: http://purl.org/dc/terms/ prov: http://www.w3.org/ns/prov# xsd: http://www.w3.org/2001/XMLSchema# crm: http://www.cidoc-crm.org/cidoc-crm/ tooi: https://identifier.overheid.nl/tooi/def/ont/ skos: http://www.w3.org/2004/02/skos/core# rdfs: http://www.w3.org/2000/01/rdf-schema# org: http://www.w3.org/ns/org# imports: - linkml:types - ./SpecificityAnnotation - ./TemplateSpecificityScore - ./TemplateSpecificityType - ./TemplateSpecificityTypes - ../slots/is_or_was_approximate - ./ApproximationStatus - ../slots/has_or_had_file_path - ../slots/has_or_had_level - ./DataTierLevel - ./DatePrecision - ../slots/has_or_had_description - ../slots/temporal_extent - ./TimeSpan - ./Timestamp - ../slots/has_or_had_type - ../slots/has_or_had_method - ../slots/has_or_had_note - ../slots/is_or_was_retrieved_through - ./RetrievalEvent - ../slots/observation_ref - ../slots/source_url - ../slots/specificity_annotation - ../slots/has_or_had_score default_prefix: hc classes: CustodianTimelineEvent: class_uri: prov:Entity description: "An organizational change event for a heritage custodian.\n\n**PURPOSE**\n\nCaptures organizational change events (founding, mergers, name changes, etc.)\nas domain entities, independent of how they were discovered.\n\n**SOURCE-AGNOSTIC DESIGN**\n\nThis class models WHAT happened, not HOW we know. For source-specific\nprovenance, use observation classes:\n\n- `WebObservation` - For web-scraped data with XPath or API provenance\n- `CustodianObservation` - For institutional source documents\n\nThe optional `observation_ref` slot links events to their source observations\nwhen detailed provenance is needed.\n\n**DATA QUALITY**\n\nUse `has_or_had_level` (DataTierLevel) to indicate trustworthiness:\n- TIER_4_INFERRED: Initial extraction (LLM-generated, unverified)\n- TIER_3_CROWD_SOURCED: Verified against Wikipedia/Wikidata\n- TIER_2_VERIFIED: Verified against institutional website\n- TIER_1_AUTHORITATIVE: Verified against official registry\n\nUse `extraction_notes` to capture\ \ source-specific details:\n- API queries and responses\n- XPath locations in archived HTML\n- Wikidata property references\n- Manual research notes\n\n**EVENT TYPE MAPPING**\n\nEvents are classified using OrganizationalChangeEventTypeEnum:\n- FOUNDING: Institution creation (opgericht, gesticht)\n- MERGER: Multiple institutions combining (fusie, samenvoeging)\n- DISSOLUTION: Institution closure (opgeheven, gesloten)\n- RENAMING: Name change only (hernoemd, naamswijziging)\n- TRANSFER: Physical relocation (verhuisd, verplaatst)\n- EXPANSION: Absorbing other units (uitgebreid, geabsorbeerd)\n- SPLIT: Division into multiple units (opgesplitst)\n- SPIN_OFF: Parts becoming independent (afgesplitst)\n- REDUCTION: 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\ntimeline_events:\n - event_type: FOUNDING\n event_date: \"2005-04-30\"\n degree_of_certainty:\n has_or_had_code: 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: \"Regionaal Historisch Centrum (RHC) Drents Archief\" Assen opgericht\n Answer archived at: web/0002/linkup/linkup_founding_20251215T160438Z.json\n archive_path: web/0002/linkup/linkup_founding_20251215T160438Z.json\n has_or_had_level:\n has_or_had_code:\ \ TIER_4_INFERRED\n```\n" exact_mappings: - prov:Entity close_mappings: - crm:E5_Event - tooi:Wijzigingsgebeurtenis - schema:Event slots: - is_or_was_approximate - archive_path - has_or_had_level - degree_of_certainty - has_or_had_description - temporal_extent - has_or_had_type - has_or_had_method - has_or_had_note - is_or_was_retrieved_through - observation_ref - source_url - specificity_annotation - has_or_had_score slot_usage: has_or_had_type: required: true range: OrganizationalChangeEventTypeEnum description: Type of event. MIGRATED from event_type (2026-01-26). temporal_extent: range: TimeSpan inlined: true description: Time period of the event. MIGRATED from event_date per slot_fixes.yaml (Rule 53). Use begin_of_the_begin for single point in time events. examples: - value: begin_of_the_begin: '2005-04-30' end_of_the_end: '2005-04-30' description: Event date degree_of_certainty: range: DatePrecision inlined: true required: true description: 'Precision level of the event date. Standard codes: DAY, MONTH, YEAR, DECADE, CENTURY, UNKNOWN' examples: - value: has_or_had_code: DAY has_or_had_description: Full date with day precision description: Day precision - value: has_or_had_code: YEAR has_or_had_description: Year-only precision description: Year precision 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: has_or_had_status: EXACT description: Exact date known - value: has_or_had_status: 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: required: false has_or_had_method: required: true range: TimelineExtractionMethodEnum is_or_was_retrieved_through: description: 'Retrieval event containing extraction timestamp. MIGRATED from extraction_timestamp per Rule 53 (2026-01-26). ' range: RetrievalEvent inlined: true required: true has_or_had_note: required: false has_archive_path: required: false has_or_had_level: range: DataTierLevel inlined: true required: true description: 'Data quality tier indicating trustworthiness of this event data. Standard codes: TIER_1_AUTHORITATIVE, TIER_2_VERIFIED, TIER_3_CROWD_SOURCED, TIER_4_INFERRED' examples: - value: has_or_had_code: TIER_4_INFERRED has_or_had_description: Extracted via LLM - pending verification description: Initial extraction tier - value: has_or_had_code: TIER_2_VERIFIED has_or_had_description: Verified against institutional website description: Verified tier observation_ref: required: false rules: - preconditions: slot_conditions: temporal_extent: value_presence: PRESENT postconditions: slot_conditions: degree_of_certainty: value_presence: PRESENT description: If temporal_extent is provided, degree_of_certainty (precision) must be specified comments: - 'Source-agnostic design - see Rule 37: Provenance Separation' - Use observation_ref to link to detailed source provenance - Use extraction_notes for source-specific details (API queries, XPaths) - Event types constrained to OrganizationalChangeEventTypeEnum - Use CIDOC-CRM TimeSpan for fuzzy dates if needed see_also: - schemas/20251121/linkml/modules/classes/WebObservation.yaml - schemas/20251121/linkml/modules/classes/CustodianObservation.yaml - schemas/20251121/linkml/modules/classes/TimeSpan.yaml - .opencode/PROVENANCE_SEPARATION_RULE.md examples: - value: event_type: FOUNDING temporal_extent: begin_of_the_begin: '2005-04-30' end_of_the_end: '2005-04-30' degree_of_certainty: has_or_had_code: DAY has_or_had_description: Full date with day precision is_or_was_approximate: has_or_had_status: EXACT description: Het RHC Drents Archief werd opgericht op 30 april 2005. source_url: - https://nl.wikipedia.org/wiki/Drents_Archief has_or_had_method: api_response_regex extraction_timestamp: '2025-12-16T10:00:00Z' extraction_notes: 'Query: "Drents Archief" Assen opgericht OR gesticht API: Linkup. Archived at: web/0002/linkup/linkup_founding_20251215T160438Z.json' archive_path: web/0002/linkup/linkup_founding_20251215T160438Z.json has_or_had_level: has_or_had_code: TIER_4_INFERRED has_or_had_description: Extracted via API response - pending verification description: Founding event extracted from API response - value: has_or_had_type: MERGER temporal_extent: begin_of_the_begin: '2005' end_of_the_end: '2005' degree_of_certainty: has_or_had_code: YEAR has_or_had_description: Year-only precision is_or_was_approximate: has_or_had_status: EXACT description: In 2005 ging het Gemeentearchief Assen op in het Drents Archief. source_url: - https://nl.wikipedia.org/wiki/Drents_Archief has_or_had_method: api_response_regex is_or_was_retrieved_through: temporal_extent: begin_of_the_begin: '2025-12-16T10:05:00Z' end_of_the_end: '2025-12-16T10:05:00Z' has_or_had_level: has_or_had_code: TIER_4_INFERRED has_or_had_description: Extracted via API - pending verification description: Merger event with year-only precision - value: has_or_had_type: FOUNDING temporal_extent: begin_of_the_begin: '1810' end_of_the_end: '1810' degree_of_certainty: has_or_had_code: YEAR has_or_had_description: Year-only precision is_or_was_approximate: has_or_had_status: EXACT description: The Rijksmuseum was founded in 1810 as the Royal Museum. source_url: - https://www.wikidata.org/wiki/Q190804 has_or_had_method: wikidata_sparql is_or_was_retrieved_through: temporal_extent: begin_of_the_begin: '2025-12-20T14:30:00Z' end_of_the_end: '2025-12-20T14:30:00Z' extraction_notes: Wikidata P571 (inception date) query has_or_had_level: has_or_had_code: TIER_3_CROWD_SOURCED has_or_had_description: Verified against Wikidata description: Founding event from Wikidata - value: has_or_had_type: TRANSFER temporal_extent: begin_of_the_begin: '1885' end_of_the_end: '1885' degree_of_certainty: has_or_had_code: YEAR has_or_had_description: Year-only precision is_or_was_approximate: has_or_had_status: EXACT description: The Rijksmuseum moved to its current building designed by Cuypers. source_url: has_or_had_method: web_scrape_xpath is_or_was_retrieved_through: temporal_extent: begin_of_the_begin: '2025-12-20T15:00:00Z' end_of_the_end: '2025-12-20T15:00:00Z' extraction_notes: 'XPath: /html/body/main/section[2]/div/p[3]' archive_path: web/0001/rijksmuseum.nl/about-us/rendered.html has_or_had_level: has_or_had_code: TIER_2_VERIFIED has_or_had_description: Verified against institutional website description: Relocation event from institutional website - value: has_or_had_type: FOUNDING temporal_extent: begin_of_the_begin: '1880' end_of_the_end: '1880' degree_of_certainty: has_or_had_code: YEAR has_or_had_description: Year-only precision is_or_was_approximate: has_or_had_status: 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. has_or_had_method: manual_research is_or_was_retrieved_through: temporal_extent: begin_of_the_begin: '2025-12-20T16:00:00Z' end_of_the_end: '2025-12-20T16:00:00Z' has_or_had_level: has_or_had_code: TIER_4_INFERRED has_or_had_description: Manual research - pending verification description: Founding event with approximate date annotations: specificity_score: 0.1 specificity_rationale: Generic utility class/slot created during migration custodian_types: "['*']" custodian_types_rationale: Universal utility concept