371 lines
13 KiB
YAML
371 lines
13 KiB
YAML
# =============================================================================
|
|
# GLAM-NER: TEMPORAL HYPERNYM MODULE
|
|
# =============================================================================
|
|
# Module: hypernyms/tmp.yaml
|
|
# Parent: entity_annotation_rules_v1.7.0_unified.yaml
|
|
# Purpose: TEMPORAL entity type - time references following TimeML/TIMEX3 model
|
|
# =============================================================================
|
|
# BREAKING CHANGE v1.7.0: Restructured from TEMPORAL_REFERENCE (TMP)
|
|
# Now follows TimeML/TIMEX3 typology with absolute vs. relative distinction
|
|
# =============================================================================
|
|
|
|
id: https://w3id.org/glam/ner/hypernym/temporal
|
|
name: glam-ner-temporal-hypernym
|
|
|
|
TEMPORAL:
|
|
code: "TMP"
|
|
definition: |
|
|
Temporal expressions following the TimeML/TIMEX3 standard. Temporal
|
|
expressions denote points, intervals, or frequencies on the timeline.
|
|
|
|
Key distinctions:
|
|
- ABSOLUTE: Resolved to specific calendar/clock ("15 July 1606")
|
|
- RELATIVE: Requires context to resolve ("last year", "recently")
|
|
- DURATION: Temporal extent ("three years", "for a decade")
|
|
- SET: Recurring frequencies ("every Monday", "annually")
|
|
|
|
TimeML/TIMEX3 is the ISO standard for temporal expression markup,
|
|
widely used in NLP (TimeBank, TempEval). This provides interoperability
|
|
with temporal reasoning systems.
|
|
|
|
design_rationale: |
|
|
NERD's generic "Time" class lacks the semantic precision needed for:
|
|
- Temporal reasoning and event ordering
|
|
- Calendar normalization (Julian vs. Gregorian)
|
|
- Duration calculations
|
|
- Frequency detection (for opening hours, events)
|
|
|
|
TimeML/TIMEX3 (ISO-TimeML) provides:
|
|
- TYPE attribute: DATE | TIME | DURATION | SET
|
|
- VALUE attribute: ISO 8601 normalized value
|
|
- MOD attribute: START | END | MID | BEFORE | AFTER | APPROX
|
|
|
|
CIDOC-CRM provides complementary modeling:
|
|
- E52 Time-Span: Temporal extent with fuzzy boundaries
|
|
- E61 Time Primitive: Precise instant or interval
|
|
- E4 Period: Named historical periods
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# ONTOLOGY MAPPINGS
|
|
# ---------------------------------------------------------------------------
|
|
ontology_mappings:
|
|
primary_class: "crm:E52_Time-Span"
|
|
primary_class_definition: |
|
|
CIDOC-CRM E52 Time-Span: "This class comprises abstract temporal extents,
|
|
in the sense of Galilean physics, having a beginning, an end and a
|
|
duration."
|
|
alternative_classes:
|
|
- "time:TemporalEntity" # W3C Time Ontology
|
|
- "time:Instant" # Specific point
|
|
- "time:Interval" # Duration with bounds
|
|
linkml_mapping:
|
|
class_uri: "crm:E52_Time-Span"
|
|
exact_mappings:
|
|
- "time:TemporalEntity"
|
|
close_mappings:
|
|
- "dct:temporal"
|
|
nerd_class: "nerd:Time"
|
|
nerd_deprecation_note: |
|
|
DEPRECATED: NERD's Time class is too generic, lacking the DATE/TIME/
|
|
DURATION/SET typology essential for temporal reasoning. Use TimeML
|
|
TIMEX3 types for NLP annotation; map to CIDOC-CRM for semantics.
|
|
Retain NERD mapping ONLY for basic NLP pipeline interchange.
|
|
timeml_mapping:
|
|
element: "TIMEX3"
|
|
attributes:
|
|
type: "DATE | TIME | DURATION | SET"
|
|
value: "ISO 8601 normalized value"
|
|
mod: "BEFORE | AFTER | APPROX | START | END | MID"
|
|
anchorTimeID: "ID of anchoring time for relative expressions"
|
|
note: |
|
|
W3C Time Ontology (OWL-Time) provides formal semantics for temporal
|
|
entities compatible with CIDOC-CRM. TimeML provides NLP annotation
|
|
conventions. Both map to ISO 8601 for interchange.
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# SUBCATEGORIES
|
|
# ---------------------------------------------------------------------------
|
|
subcategories:
|
|
# ----- ABSOLUTE TEMPORAL EXPRESSIONS -----
|
|
DATE_ABS:
|
|
code: "TMP.DAB"
|
|
definition: |
|
|
Absolute calendar dates that can be resolved without context.
|
|
Maps to TimeML TIMEX3 type="DATE" without relative modifiers.
|
|
examples:
|
|
- "15 July 1606"
|
|
- "March 2023"
|
|
- "1888"
|
|
- "12/04/1943"
|
|
- "the year 2000"
|
|
ontology_class: "time:Instant"
|
|
timeml_type: "DATE"
|
|
xsd_type: "xsd:date | xsd:gYear | xsd:gYearMonth"
|
|
linkml_mapping:
|
|
class_uri: "time:Instant"
|
|
exact_mappings:
|
|
- "xsd:date"
|
|
- "xsd:gYear"
|
|
note: |
|
|
Normalize to ISO 8601 format when possible:
|
|
- Full date: 1606-07-15
|
|
- Year-month: 2023-03
|
|
- Year only: 1888
|
|
|
|
Historical dates may require calendar specification (Julian/Gregorian).
|
|
|
|
DATE_REL:
|
|
code: "TMP.DRL"
|
|
definition: |
|
|
Relative dates requiring context (document date, speech time)
|
|
to resolve. Maps to TimeML TIMEX3 type="DATE" with anchorTimeID.
|
|
examples:
|
|
- "last year"
|
|
- "yesterday"
|
|
- "next month"
|
|
- "three years ago"
|
|
- "in recent decades"
|
|
- "since the war"
|
|
ontology_class: "crm:E52_Time-Span"
|
|
timeml_type: "DATE"
|
|
timeml_anchor: "Requires @anchorTimeID to resolve"
|
|
note: |
|
|
Relative dates are common in heritage texts but require context:
|
|
- "last year" → need document_date to resolve
|
|
- "since the war" → need historical context (which war?)
|
|
|
|
Mark with @certainty when resolution is uncertain.
|
|
|
|
TIME_ABS:
|
|
code: "TMP.TAB"
|
|
definition: |
|
|
Absolute clock times. Maps to TimeML TIMEX3 type="TIME".
|
|
examples:
|
|
- "10:00"
|
|
- "14:30"
|
|
- "midnight"
|
|
- "noon"
|
|
- "3 PM"
|
|
ontology_class: "time:Instant"
|
|
timeml_type: "TIME"
|
|
xsd_type: "xsd:time"
|
|
note: |
|
|
Normalize to 24-hour ISO 8601 format: HH:MM:SS
|
|
Named times: midnight → 00:00, noon → 12:00
|
|
|
|
TIME_REL:
|
|
code: "TMP.TRL"
|
|
definition: |
|
|
Relative clock times requiring context.
|
|
examples:
|
|
- "an hour later"
|
|
- "that morning"
|
|
- "in the evening"
|
|
ontology_class: "crm:E52_Time-Span"
|
|
timeml_type: "TIME"
|
|
|
|
# ----- DURATIONS -----
|
|
DURATION:
|
|
code: "TMP.DUR"
|
|
definition: |
|
|
Temporal durations: lengths of time without fixed endpoints.
|
|
Maps to TimeML TIMEX3 type="DURATION".
|
|
examples:
|
|
- "three years"
|
|
- "for a decade"
|
|
- "two hours"
|
|
- "the 17th century (100 years)"
|
|
- "a fortnight"
|
|
- "several months"
|
|
ontology_class: "time:Duration"
|
|
timeml_type: "DURATION"
|
|
xsd_type: "xsd:duration"
|
|
linkml_mapping:
|
|
class_uri: "time:Duration"
|
|
exact_mappings:
|
|
- "xsd:duration"
|
|
note: |
|
|
Normalize to ISO 8601 duration format: P[n]Y[n]M[n]DT[n]H[n]M[n]S
|
|
Examples:
|
|
- "three years" → P3Y
|
|
- "two hours" → PT2H
|
|
- "a decade" → P10Y
|
|
- "17th century" → P100Y (with temporal bounds for period)
|
|
|
|
# ----- RECURRING/PERIODIC TIMES -----
|
|
SET:
|
|
code: "TMP.SET"
|
|
definition: |
|
|
Recurring or periodic temporal expressions. Maps to TimeML
|
|
TIMEX3 type="SET". Common for opening hours, event schedules.
|
|
examples:
|
|
- "every Monday"
|
|
- "annually"
|
|
- "twice a week"
|
|
- "open Tuesday-Sunday"
|
|
- "each summer"
|
|
- "quarterly"
|
|
ontology_class: "schema:OpeningHoursSpecification"
|
|
timeml_type: "SET"
|
|
alternative_classes:
|
|
- "time:GeneralDateTimeDescription"
|
|
note: |
|
|
SET expressions describe recurring patterns:
|
|
- Frequency: "twice a week" → SET with @quant="2" @freq="1W"
|
|
- Schedule: "every Monday" → SET with value="XXXX-WXX-1"
|
|
|
|
For opening hours, schema:OpeningHoursSpecification provides
|
|
structured representation with dayOfWeek, opens, closes properties.
|
|
|
|
# ----- OPENING HOURS (specialized SET) -----
|
|
OPENHRS:
|
|
code: "TMP.OPH"
|
|
definition: |
|
|
Institutional opening hours and operational schedules. A specialized
|
|
form of SET expression.
|
|
examples:
|
|
- "open Tuesday-Sunday 10:00-17:00"
|
|
- "closed Mondays"
|
|
- "last entry at 16:30"
|
|
- "open daily except holidays"
|
|
ontology_class: "schema:OpeningHoursSpecification"
|
|
schema_properties:
|
|
dayOfWeek: "schema:DayOfWeek (Monday, Tuesday, etc.)"
|
|
opens: "xsd:time (opening time)"
|
|
closes: "xsd:time (closing time)"
|
|
validFrom: "xsd:date (seasonal start)"
|
|
validThrough: "xsd:date (seasonal end)"
|
|
note: |
|
|
Links to GROUP hypernym (heritage institutions) via schema:openingHours.
|
|
Use schema:specialOpeningHoursSpecification for holidays/exceptions.
|
|
|
|
# ----- DATE RANGES -----
|
|
RANGE:
|
|
code: "TMP.RNG"
|
|
definition: |
|
|
Date/time ranges with explicit start and end points.
|
|
examples:
|
|
- "1888-1890"
|
|
- "from March to June 2023"
|
|
- "10 February - 4 June 2023"
|
|
- "between 1650 and 1670"
|
|
ontology_class: "time:ProperInterval"
|
|
alternative_classes:
|
|
- "crm:E52_Time-Span"
|
|
edtf_note: |
|
|
Extended Date/Time Format (EDTF, ISO 8601-2) provides:
|
|
- Intervals: 1888/1890
|
|
- Open ranges: 1888/.. (from 1888 onwards)
|
|
- Uncertain: 1888?/1890
|
|
|
|
# ----- NAMED PERIODS -----
|
|
CENTURY:
|
|
code: "TMP.CEN"
|
|
definition: "Century references, a common periodization"
|
|
examples:
|
|
- "17th century"
|
|
- "the 1800s"
|
|
- "nineteenth century"
|
|
- "early 20th century"
|
|
ontology_class: "crm:E52_Time-Span"
|
|
timeml_type: "DATE"
|
|
note: |
|
|
Normalize centuries to date ranges:
|
|
- "17th century" → 1601-01-01/1700-12-31
|
|
- "the 1800s" → 1800-01-01/1899-12-31
|
|
|
|
Modifiers (early, mid, late) narrow the range.
|
|
|
|
ERA:
|
|
code: "TMP.ERA"
|
|
definition: |
|
|
Named historical periods, movements, and eras. These are cultural
|
|
periodizations, not calendar units.
|
|
examples:
|
|
- "the Golden Age"
|
|
- "the Renaissance"
|
|
- "Medieval period"
|
|
- "Edo period"
|
|
- "the Enlightenment"
|
|
- "Art Deco era"
|
|
ontology_class: "crm:E4_Period"
|
|
linkml_mapping:
|
|
class_uri: "crm:E4_Period"
|
|
close_mappings:
|
|
- "dct:PeriodOfTime"
|
|
note: |
|
|
Named periods have fuzzy boundaries and geographic variation:
|
|
- "Renaissance" varies by region (Italy vs. Northern Europe)
|
|
- "Golden Age" is culture-specific (Dutch vs. Spanish)
|
|
|
|
Use crm:E4_Period which explicitly allows fuzzy temporal boundaries.
|
|
Link to authority files (Getty AAT, Wikidata) for disambiguation.
|
|
|
|
EXHIBPER:
|
|
code: "TMP.EXP"
|
|
definition: "Exhibition periods and event dates"
|
|
examples:
|
|
- "10 February - 4 June 2023"
|
|
- "on view through December"
|
|
- "opening reception: May 5, 7-9 PM"
|
|
ontology_class: "crm:E52_Time-Span"
|
|
schema_mapping: "schema:Event with schema:startDate and schema:endDate"
|
|
note: "Use for temporally bounded institutional events."
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# INCLUSION RULES
|
|
# ---------------------------------------------------------------------------
|
|
inclusion_rules:
|
|
- id: "TMP_INC001"
|
|
rule: "Tag complete date/time expressions as single entities"
|
|
examples:
|
|
- "15 July 1606 (single entity)"
|
|
- "between 1888 and 1890 (range)"
|
|
- "every Monday at 10:00"
|
|
|
|
- id: "TMP_INC002"
|
|
rule: "Tag named periods and eras"
|
|
examples:
|
|
- "the Dutch Golden Age"
|
|
- "the Baroque period"
|
|
- "during the Renaissance"
|
|
|
|
- id: "TMP_INC003"
|
|
rule: "Tag opening hours as complete SET expressions"
|
|
examples:
|
|
- "Tuesday to Sunday, 10:00-17:00"
|
|
- "open daily except Mondays"
|
|
|
|
- id: "TMP_INC004"
|
|
rule: "Tag relative expressions with their anchor context"
|
|
examples:
|
|
- "last year (relative to document date)"
|
|
- "since the merger (relative to event)"
|
|
|
|
- id: "TMP_INC005"
|
|
rule: "Tag durations even without specific anchoring"
|
|
examples:
|
|
- "for three years"
|
|
- "a decade of research"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# EXCLUSION RULES
|
|
# ---------------------------------------------------------------------------
|
|
exclusion_rules:
|
|
- id: "TMP_EXC001"
|
|
rule: "Do NOT tag deictics without recoverable reference"
|
|
examples:
|
|
- "now (unanchored)"
|
|
- "today (unless document date known)"
|
|
note: "These require pragmatic resolution beyond text"
|
|
|
|
- id: "TMP_EXC002"
|
|
rule: "Do NOT tag ordinal centuries as QUANTITY"
|
|
examples:
|
|
- "17th century → TMP.CEN, not QTY.ORD"
|
|
|
|
- id: "TMP_EXC003"
|
|
rule: "Do NOT tag temporal prepositions alone"
|
|
examples:
|
|
- "before (preposition, not temporal reference)"
|
|
- "during (connector)"
|