Extends migration to all class types (museums, libraries, galleries, etc.) New slots added to class_metadata_slots.yaml: - RiC-O: rico_record_set_type, rico_organizational_principle, rico_has_or_had_holder, rico_note - Multilingual: label_de, label_es, label_fr, label_nl, label_it, label_pt - Scope: scope_includes, scope_excludes, custodian_only, organizational_level, geographic_restriction - Notes: privacy_note, preservation_note, legal_note Migration script now handles 30+ annotation types. All migrated schemas pass linkml-validate. Total: 387 class files now use proper slots instead of annotations.
415 lines
15 KiB
YAML
415 lines
15 KiB
YAML
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/
|
|
imports:
|
|
- linkml:types
|
|
- ../enums/OrganizationalChangeEventTypeEnum
|
|
- ../enums/DataTierEnum
|
|
- ../slots/description
|
|
- ../slots/extraction_method
|
|
- ../slots/extraction_timestamp
|
|
- ../slots/class_metadata_slots
|
|
default_prefix: hc
|
|
enums:
|
|
DatePrecisionEnum:
|
|
description: |
|
|
Precision level of an extracted date.
|
|
Used to indicate how specific the date information is.
|
|
permissible_values:
|
|
day:
|
|
description: Full date with day precision (YYYY-MM-DD)
|
|
comments:
|
|
- 'Example: 2005-04-30 (30 april 2005)'
|
|
month:
|
|
description: Month precision only (YYYY-MM)
|
|
comments:
|
|
- 'Example: 2005-04 (april 2005)'
|
|
year:
|
|
description: Year precision only (YYYY)
|
|
comments:
|
|
- 'Example: 2005 (in 2005)'
|
|
decade:
|
|
description: Decade precision (YYYY0s)
|
|
comments:
|
|
- 'Example: 2000s (begin 21e eeuw)'
|
|
century:
|
|
description: Century precision
|
|
comments:
|
|
- 'Example: 1900s (begin 20e eeuw)'
|
|
unknown:
|
|
description: Date mentioned but precision cannot be determined
|
|
TimelineExtractionMethodEnum:
|
|
description: |
|
|
Method used to extract the timeline event.
|
|
Source-agnostic enum covering various extraction methods.
|
|
permissible_values:
|
|
api_response_regex:
|
|
description: Date extracted via regex patterns from API response text
|
|
comments:
|
|
- 'Patterns: YYYY-MM-DD, DD-MM-YYYY, ''in YYYY'', ''op DD maand YYYY'''
|
|
api_response_llm:
|
|
description: Date extracted using LLM analysis of API response
|
|
comments:
|
|
- Used for complex temporal expressions
|
|
web_scrape_xpath:
|
|
description: Date extracted via XPath from archived HTML
|
|
comments:
|
|
- High confidence - verifiable against archived HTML
|
|
wikidata_sparql:
|
|
description: Date extracted from Wikidata SPARQL query
|
|
comments:
|
|
- Uses inception date (P571) or other temporal properties
|
|
manual_research:
|
|
description: Event discovered through manual research
|
|
comments:
|
|
- Human-verified from institutional sources
|
|
manual_verification:
|
|
description: Event manually verified and corrected
|
|
comments:
|
|
- Promoted from TIER_4 to higher tier after verification
|
|
slots:
|
|
event_type:
|
|
slot_uri: hc:eventType
|
|
range: OrganizationalChangeEventTypeEnum
|
|
required: true
|
|
description: |
|
|
Type of organizational change event.
|
|
Constrained to values from OrganizationalChangeEventTypeEnum.
|
|
|
|
Mapping from extraction patterns:
|
|
- founding, opgericht, gesticht → FOUNDING
|
|
- merger, fusie, samengevoegd → MERGER
|
|
- dissolution, opgeheven, gesloten → DISSOLUTION
|
|
- name_change, hernoemd, naamswijziging → RENAMING
|
|
- relocation, verhuisd, verplaatst → TRANSFER
|
|
- expansion, uitgebreid, geabsorbeerd → EXPANSION
|
|
- split, opgesplitst → SPLIT
|
|
- spin_off, afgesplitst → SPIN_OFF
|
|
- reduction, ingekrompen → REDUCTION
|
|
- reorganization, herstructurering → REORGANIZATION
|
|
event_date:
|
|
slot_uri: schema:startDate
|
|
range: string
|
|
description: |
|
|
The date of the event in ISO 8601 format.
|
|
Precision indicated by date_precision slot.
|
|
|
|
Format depends on precision:
|
|
- day: YYYY-MM-DD (e.g., "2005-04-30")
|
|
- month: YYYY-MM (e.g., "2005-04")
|
|
- year: YYYY (e.g., "2005")
|
|
- decade: YYYY (e.g., "2000" for 2000s)
|
|
- century: YYYY (e.g., "1900" for 20th century)
|
|
pattern: ^\d{4}(-\d{2})?(-\d{2})?$
|
|
date_precision:
|
|
slot_uri: hc:datePrecision
|
|
range: DatePrecisionEnum
|
|
required: true
|
|
description: |
|
|
Precision level of the event_date.
|
|
Essential for proper interpretation and display.
|
|
approximate:
|
|
slot_uri: hc:approximate
|
|
range: boolean
|
|
required: true
|
|
description: |
|
|
Whether the date is approximate (circa, ongeveer, rond).
|
|
True if source uses hedging language:
|
|
- "circa 1900", "rond 2000", "ongeveer in 2005"
|
|
- "begin 20e eeuw", "eind jaren '90"
|
|
source_urls:
|
|
slot_uri: dcterms:source
|
|
range: string
|
|
multivalued: true
|
|
description: |
|
|
URLs of sources that document this event.
|
|
Can be institutional websites, Wikipedia, Wikidata, etc.
|
|
|
|
Used for manual verification - users can check these URLs
|
|
to confirm the extracted information.
|
|
extraction_notes:
|
|
slot_uri: hc:extractionNotes
|
|
range: string
|
|
description: "Free-text notes about the extraction process.\n\nUse this for source-specific\
|
|
\ details that don't fit elsewhere:\n- API query used (if from an API)\n- XPath\
|
|
\ location (if from web scraping)\n- Wikidata property ID (if from SPARQL)\n\
|
|
- Research notes (if manual)\n\nExample for API-sourced data:\n \"Query: 'Drents\
|
|
\ Archief opgericht' via Linkup API.\n Answer archived at: web/0002/linkup/linkup_founding_20251215T160438Z.json\"\
|
|
\n \n"
|
|
archive_path:
|
|
slot_uri: hc:archivePath
|
|
range: string
|
|
description: |
|
|
Relative path to archived source material (JSON, HTML, etc.).
|
|
Path is relative to the data/custodian/ directory.
|
|
|
|
Examples:
|
|
- web/0002/linkup/linkup_founding_20251215T160438Z.json (API response)
|
|
- web/0002/example.org/rendered.html (archived webpage)
|
|
data_tier:
|
|
slot_uri: hc:dataTier
|
|
range: DataTierEnum
|
|
required: true
|
|
description: |
|
|
Data quality tier for this event.
|
|
|
|
Typical values:
|
|
- TIER_4_INFERRED: Initial extraction from LLM/API (requires verification)
|
|
- TIER_3_CROWD_SOURCED: Verified against Wikipedia/Wikidata
|
|
- TIER_2_VERIFIED: Verified against institutional website
|
|
- TIER_1_AUTHORITATIVE: Verified against official registry
|
|
observation_ref:
|
|
slot_uri: prov:wasGeneratedBy
|
|
range: uriorcurie
|
|
description: |
|
|
Optional reference to the observation that generated this event.
|
|
Links to a WebObservation or CustodianObservation for full provenance.
|
|
|
|
Use this to connect events to their source observations when
|
|
detailed provenance (XPath, API response, etc.) is needed.
|
|
classes:
|
|
CustodianTimelineEvent:
|
|
class_uri: prov:Entity
|
|
description: |
|
|
An organizational change event for a heritage custodian.
|
|
|
|
**PURPOSE**
|
|
|
|
Captures organizational change events (founding, mergers, name changes, etc.)
|
|
as domain entities, independent of how they were discovered.
|
|
|
|
**SOURCE-AGNOSTIC DESIGN**
|
|
|
|
This class models WHAT happened, not HOW we know. For source-specific
|
|
provenance, use observation classes:
|
|
|
|
- `WebObservation` - For web-scraped data with XPath or API provenance
|
|
- `CustodianObservation` - For institutional source documents
|
|
|
|
The optional `observation_ref` slot links events to their source observations
|
|
when detailed provenance is needed.
|
|
|
|
**DATA QUALITY**
|
|
|
|
Use `data_tier` to indicate trustworthiness:
|
|
- TIER_4_INFERRED: Initial extraction (LLM-generated, unverified)
|
|
- TIER_3_CROWD_SOURCED: Verified against Wikipedia/Wikidata
|
|
- TIER_2_VERIFIED: Verified against institutional website
|
|
- TIER_1_AUTHORITATIVE: Verified against official registry
|
|
|
|
Use `extraction_notes` to capture source-specific details:
|
|
- API queries and responses
|
|
- XPath locations in archived HTML
|
|
- Wikidata property references
|
|
- Manual research notes
|
|
|
|
**EVENT TYPE MAPPING**
|
|
|
|
Events are classified using OrganizationalChangeEventTypeEnum:
|
|
- FOUNDING: Institution creation (opgericht, gesticht)
|
|
- MERGER: Multiple institutions combining (fusie, samenvoeging)
|
|
- DISSOLUTION: Institution closure (opgeheven, gesloten)
|
|
- RENAMING: Name change only (hernoemd, naamswijziging)
|
|
- TRANSFER: Physical relocation (verhuisd, verplaatst)
|
|
- EXPANSION: Absorbing other units (uitgebreid, geabsorbeerd)
|
|
- SPLIT: Division into multiple units (opgesplitst)
|
|
- SPIN_OFF: Parts becoming independent (afgesplitst)
|
|
- REDUCTION: Scope decrease (ingekrompen)
|
|
- REORGANIZATION: Complex restructuring (herstructurering)
|
|
|
|
**EXCLUDED EVENT TYPES**
|
|
|
|
Some patterns are NOT mapped to events:
|
|
- predecessor: This is a relationship, not an event
|
|
- friends_org: Separate organization (Vrienden van...)
|
|
- reopening: Not in OrganizationalChangeEventTypeEnum
|
|
|
|
**EXAMPLE USAGE**
|
|
|
|
```yaml
|
|
timeline_events:
|
|
- event_type: FOUNDING
|
|
event_date: "2005-04-30"
|
|
date_precision: day
|
|
approximate: false
|
|
description: >-
|
|
Het RHC Drents Archief werd opgericht op 30 april 2005.
|
|
Het is de voortzetting van het Rijksarchief in Drenthe (sinds 2000).
|
|
source_urls:
|
|
- "https://nl.wikipedia.org/wiki/Drents_Archief"
|
|
- "https://bizzy.ai/nl/nl/52454037/regionaal-historisch-centrum-rhc-drents-archief"
|
|
extraction_method: api_response_regex
|
|
extraction_timestamp: "2025-12-16T10:00:00Z"
|
|
extraction_notes: >-
|
|
Query: "Regionaal Historisch Centrum (RHC) Drents Archief" Assen opgericht
|
|
Answer archived at: web/0002/linkup/linkup_founding_20251215T160438Z.json
|
|
archive_path: web/0002/linkup/linkup_founding_20251215T160438Z.json
|
|
data_tier: TIER_4_INFERRED
|
|
```
|
|
exact_mappings:
|
|
- prov:Entity
|
|
close_mappings:
|
|
- crm:E5_Event
|
|
- tooi:Wijzigingsgebeurtenis
|
|
- schema:Event
|
|
slots:
|
|
- approximate
|
|
- archive_path
|
|
- data_tier
|
|
- date_precision
|
|
- description
|
|
- event_date
|
|
- event_type
|
|
- extraction_method
|
|
- extraction_notes
|
|
- extraction_timestamp
|
|
- observation_ref
|
|
- source_urls
|
|
- specificity_annotation
|
|
- template_specificity
|
|
slot_usage:
|
|
event_type:
|
|
required: true
|
|
description: |
|
|
Type of organizational change event.
|
|
Must be a valid OrganizationalChangeEventTypeEnum value.
|
|
event_date:
|
|
required: false
|
|
description: |
|
|
Date of the event. Optional because some events may not have
|
|
a determinable date from the source.
|
|
date_precision:
|
|
required: true
|
|
description: |
|
|
Always required to indicate how to interpret event_date.
|
|
Use 'unknown' if date is mentioned but precision unclear.
|
|
approximate:
|
|
required: true
|
|
description: |
|
|
Always required. Default to false unless hedging language detected.
|
|
description:
|
|
required: true
|
|
description: |
|
|
Human-readable summary of the event.
|
|
Should describe what happened, not how it was discovered.
|
|
source_urls:
|
|
required: false
|
|
description: |
|
|
URLs documenting the event. May be empty if no web sources available.
|
|
extraction_method:
|
|
required: true
|
|
range: TimelineExtractionMethodEnum
|
|
description: |
|
|
How the event was extracted. Required for transparency.
|
|
extraction_timestamp:
|
|
required: true
|
|
description: |
|
|
When extraction occurred. Required for temporal provenance.
|
|
extraction_notes:
|
|
required: false
|
|
description: |
|
|
Optional notes for source-specific details (API queries, XPaths, etc.)
|
|
archive_path:
|
|
required: false
|
|
description: |
|
|
Path to archived source material. Recommended for audit trail.
|
|
data_tier:
|
|
required: true
|
|
description: |
|
|
Quality tier. Use TIER_4_INFERRED for unverified extractions.
|
|
observation_ref:
|
|
required: false
|
|
description: |
|
|
Optional link to source observation for detailed provenance.
|
|
specificity_annotation:
|
|
range: SpecificityAnnotation
|
|
inlined: true
|
|
template_specificity:
|
|
range: TemplateSpecificityScores
|
|
inlined: true
|
|
rules:
|
|
- preconditions:
|
|
slot_conditions:
|
|
event_date:
|
|
value_presence: PRESENT
|
|
postconditions:
|
|
slot_conditions:
|
|
date_precision:
|
|
value_presence: PRESENT
|
|
description: If event_date is provided, date_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/enums/OrganizationalChangeEventTypeEnum.yaml
|
|
- 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
|
|
event_date: '2005-04-30'
|
|
date_precision: day
|
|
approximate: false
|
|
description: Het RHC Drents Archief werd opgericht op 30 april 2005.
|
|
source_urls:
|
|
- https://nl.wikipedia.org/wiki/Drents_Archief
|
|
extraction_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
|
|
data_tier: TIER_4_INFERRED
|
|
description: Founding event extracted from API response
|
|
- value:
|
|
event_type: MERGER
|
|
event_date: '2005'
|
|
date_precision: year
|
|
approximate: false
|
|
description: In 2005 ging het Gemeentearchief Assen op in het Drents Archief.
|
|
source_urls:
|
|
- https://nl.wikipedia.org/wiki/Drents_Archief
|
|
extraction_method: api_response_regex
|
|
extraction_timestamp: '2025-12-16T10:05:00Z'
|
|
data_tier: TIER_4_INFERRED
|
|
description: Merger event with year-only precision
|
|
- value:
|
|
event_type: FOUNDING
|
|
event_date: '1810'
|
|
date_precision: year
|
|
approximate: false
|
|
description: The Rijksmuseum was founded in 1810 as the Royal Museum.
|
|
source_urls:
|
|
- https://www.wikidata.org/wiki/Q190804
|
|
extraction_method: wikidata_sparql
|
|
extraction_timestamp: '2025-12-20T14:30:00Z'
|
|
extraction_notes: Wikidata P571 (inception date) query
|
|
data_tier: TIER_3_CROWD_SOURCED
|
|
description: Founding event from Wikidata
|
|
- value:
|
|
event_type: TRANSFER
|
|
event_date: '1885'
|
|
date_precision: year
|
|
approximate: false
|
|
description: The Rijksmuseum moved to its current building designed by Cuypers.
|
|
source_urls:
|
|
- https://www.rijksmuseum.nl/en/about-us/what-we-do/history
|
|
extraction_method: web_scrape_xpath
|
|
extraction_timestamp: '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
|
|
data_tier: TIER_2_VERIFIED
|
|
description: Relocation event from institutional website
|