glam/schemas/20251121/linkml/modules/classes/BirthDate.yaml
kempersc 2a75ddf7cc feat: Add ConflictType and ConflictTypes schemas for heritage conflict taxonomy
- Introduced abstract class ConflictType to define a taxonomy for various conflict types affecting heritage institutions.
- Added concrete subclasses in ConflictTypes.yaml, detailing specific conflict types such as ArmedConflict, NaturalDisaster, CivilUnrest, Terrorism, Looting, Neglect, Occupation, and Sanctions.
- Implemented Permission and PermissionType schemas to represent authorization requirements for accessing heritage materials, including subclasses like BishopsPermission and InstitutionalAffiliation.
- Created SocialNetworkMember class for representing members in social/professional networks, facilitating heritage sector network analysis.
- Established slots for canonical access rules, conflict status, and connection metadata, enhancing the data model for heritage custodians.
- Developed ConnectionDegree and ConnectionDegreeType classes to represent degrees of connection in social networks, with subclasses for first, second, and third-plus degrees.
- Added slots for birth dates in EDTF and ISO formats, improving the representation of heritage custodian entities.
2026-01-22 20:41:06 +01:00

273 lines
11 KiB
YAML

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/has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
- ./SpecificityAnnotation
- ./TemplateSpecificityScore # was: TemplateSpecificityScores - migrated per Rule 53 (2026-01-17)
- ./TemplateSpecificityType
- ./TemplateSpecificityTypes
# MIGRATED 2026-01-19: confidence → is_or_was_generated_by + GenerationEvent + ConfidenceScore
- ../slots/is_or_was_generated_by
- ./GenerationEvent
- ./ConfidenceScore
# REMOVED 2026-01-22: birth_edtf, birth_iso_date → temporal_extent (TimeSpan.has_or_had_notation) per slot_fixes.yaml feedback
# MIGRATED 2026-01-22: birth_source_text → has_or_had_reference + Reference per slot_fixes.yaml feedback
- ../slots/has_or_had_reference
- ./Reference
- ../slots/inference_provenance
- ../slots/is_inferred
# MIGRATED 2026-01-22: Added temporal_extent for semantic interoperability per slot_fixes.yaml feedback
- ../slots/temporal_extent
- ./TimeSpan
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:
temporal_extent:
has_or_had_notation: "1970-08-15"
begin_of_the_begin: "1970-08-15T00:00:00Z"
end_of_the_end: "1970-08-15T23:59:59Z"
is_inferred: false
```
exact_mappings:
- schema:Date
close_mappings:
- crm:E52_Time-Span
- time:Instant
related_mappings:
- pico:PersonObservation
slots:
# REMOVED 2026-01-22: birth_edtf, birth_iso_date → temporal_extent (TimeSpan.has_or_had_notation)
# MIGRATED 2026-01-22: birth_source_text → has_or_had_reference + Reference
- has_or_had_reference
- is_inferred
- inference_provenance
# MIGRATED 2026-01-19: confidence → is_or_was_generated_by (structured ConfidenceScore)
- is_or_was_generated_by
- specificity_annotation
- has_or_had_score # was: template_specificity - migrated per Rule 53 (2026-01-17)
# PRIMARY: temporal_extent with TimeSpan (has_or_had_notation preserves EDTF string)
- temporal_extent
slot_usage:
# REMOVED 2026-01-22: birth_edtf, birth_iso_date slot_usage
# EDTF notation now stored in temporal_extent.has_or_had_notation
has_or_had_reference:
range: Reference
required: false
inlined: true
multivalued: true
description: >-
Source reference for the birth date information.
MIGRATED 2026-01-22: Replaces birth_source_text with structured Reference.
Reference.citation_text preserves original verbatim source text.
examples:
- value:
citation_text: "born in the year of our Lord 1823"
source_type: "parish_register"
source_location: "Amsterdam Stadsarchief, DTB 456"
description: Parish register reference
- value:
citation_text: "ca. 1750"
source_type: "biography"
description: Biographical reference with approximate date
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": [...]}'
is_or_was_generated_by:
range: GenerationEvent
required: false
inlined: true
description: >-
Generation event containing confidence score for birth date determination.
MIGRATED 2026-01-19: Replaces confidence slot with structured pattern.
examples:
- value:
has_or_had_score:
has_or_had_score: 0.95
has_or_had_method: "document_extraction"
description: High confidence date extraction
- value:
has_or_had_score:
has_or_had_score: 0.50
has_or_had_method: "education_inference"
has_or_had_description: "Inferred from education start year"
description: Low confidence inferred date
temporal_extent:
range: TimeSpan
required: true
inlined: true
description: >-
CIDOC-CRM TimeSpan representation with EDTF notation preservation.
MIGRATED 2026-01-22: Replaces birth_edtf and birth_iso_date per slot_fixes.yaml feedback.
**STRUCTURE**:
- has_or_had_notation: Original EDTF string (e.g., "1970-08-15", "197X", "1970~")
- begin_of_the_begin: Earliest possible start (ISO 8601)
- end_of_the_end: Latest possible end (ISO 8601)
**EXAMPLES**:
Full date "1970-08-15":
- has_or_had_notation: "1970-08-15"
- begin_of_the_begin: "1970-08-15T00:00:00Z"
- end_of_the_end: "1970-08-15T23:59:59Z"
Decade "197X":
- has_or_had_notation: "197X"
- begin_of_the_begin: "1970-01-01T00:00:00Z"
- end_of_the_end: "1979-12-31T23:59:59Z"
examples:
- value:
has_or_had_notation: "1970-08-15"
begin_of_the_begin: "1970-08-15T00:00:00Z"
end_of_the_end: "1970-08-15T23:59:59Z"
description: Full date known - EDTF and TimeSpan bounds
- value:
has_or_had_notation: "197X"
begin_of_the_begin: "1970-01-01T00:00:00Z"
end_of_the_end: "1979-12-31T23:59:59Z"
description: Decade known (1970s) - EDTF with 10-year range
- value:
has_or_had_notation: "1970~"
begin_of_the_begin: "1968-01-01T00:00:00Z"
end_of_the_end: "1972-12-31T23:59:59Z"
description: Approximate (circa 1970) - EDTF with uncertainty range
comments:
- "MIGRATED 2026-01-22: birth_edtf, birth_iso_date → temporal_extent.has_or_had_notation"
- "TimeSpan provides CIDOC-CRM E52 temporal bounds with EDTF notation preservation"
- "Inference provenance required when is_inferred=true (Rule 45)"
- "Source text preserved via has_or_had_reference → Reference"
see_also:
- https://www.loc.gov/standards/datetime/
- https://schema.org/birthDate
examples:
- value:
temporal_extent:
has_or_had_notation: "1970-08-15"
begin_of_the_begin: "1970-08-15T00:00:00Z"
end_of_the_end: "1970-08-15T23:59:59Z"
is_inferred: false
is_or_was_generated_by:
has_or_had_score:
has_or_had_score: 0.95
has_or_had_method: "birth_certificate_extraction"
description: Full date known with high confidence
- value:
temporal_extent:
has_or_had_notation: "197X"
begin_of_the_begin: "1970-01-01T00:00:00Z"
end_of_the_end: "1979-12-31T23:59:59Z"
is_inferred: true
inference_provenance: '{"method": "earliest_education_heuristic", "source_field": "education[0].start_year"}'
is_or_was_generated_by:
has_or_had_score:
has_or_had_score: 0.40
has_or_had_method: "education_inference"
description: Decade inferred from education start year
- value:
temporal_extent:
has_or_had_notation: "1823"
begin_of_the_begin: "1823-01-01T00:00:00Z"
end_of_the_end: "1823-12-31T23:59:59Z"
has_or_had_reference:
- citation_text: "born in the year of our Lord 1823"
source_type: "parish_register"
source_location: "Amsterdam Stadsarchief, DTB 456, folio 23r"
is_inferred: false
is_or_was_generated_by:
has_or_had_score:
has_or_had_score: 0.75
has_or_had_method: "document_extraction"
description: Year extracted from historical document with structured reference
annotations:
specificity_score: 0.45
specificity_rationale: >-
Birth dates are relevant for person research across all heritage sectors.
# REMOVED inline slots 2026-01-16 - Rule 48 violation
# Slots are imported from ../slots/ - do not define inline
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