Skip to main content

TimeML / ISO-TimeML

Overview

TimeML is the ISO standard markup language for temporal and event expressions in natural language text. It provides four main tag types (TIMEX3, EVENT, SIGNAL, LINK) for annotating temporal expressions, events with temporal attributes, temporal signals/connectives, and temporal/aspectual/subordination relations. TimeBank is the primary annotated corpus.

Layers fully subsumes TimeML through three mechanisms:

  1. Structured temporal annotationstemporalExpression, temporalEntity, and temporalModifier in pub.layers.defs capture all TIMEX3 attributes
  2. Annotation subkindstemporal-expression, temporal-signal, situation-mention discriminate TimeML tag types
  3. Graph edges — Allen's 13 interval relations plus aspectual relations as graphEdge.edgeType values capture all TLINK and ALINK relations

Type-by-Type Mapping

Temporal Expressions (TIMEX3)

TimeML AttributeLayers EquivalentNotes
TIMEX3 tagannotation with subkind="temporal-expression" + temporal fieldThe temporal field holds a pub.layers.defs#temporalExpression
tidannotation.uuidUnique identifier
type (DATE, TIME, DURATION, SET)temporalExpression.typeDATE to date, TIME to time, DURATION to duration, SET to set. Layers adds interval and relative
valuetemporalEntity fieldsISO 8601 values decomposed: dates/times to instant, intervals to intervalStart/intervalEnd, durations to duration
mod (APPROX, START, MID, END, BEFORE, AFTER, ON_OR_BEFORE, ON_OR_AFTER, LESS_THAN, MORE_THAN)temporalModifier.modDirect kebab-case mapping: APPROX to approximate, ON_OR_BEFORE to on-or-before, etc.
anchorTimeIDtemporalExpression.anchorRefobjectRef pointing to another temporal annotation's UUID
temporalFunctionPresence of temporalExpression.anchorRefIf anchorRef is populated, the value is computed relative to the anchor
functionInDocument (CREATION_TIME, PUBLICATION_TIME, EXPIRATION_TIME, MODIFICATION_TIME, RELEASE_TIME, RECEPTION_TIME, NONE)temporalExpression.functionDirect kebab-case mapping
beginPoint / endPointtemporalEntity.intervalStart / intervalEndInterval bounds
quant / freq (for SET)temporalEntity.recurrence + temporalEntity.featuresRecurrence pattern as ISO 8601 repeating interval; quantifiers in features

Events (EVENT)

TimeML AttributeLayers EquivalentNotes
EVENT tagannotation with subkind="situation-mention"Events are situation mentions in Layers
eidannotation.uuidUnique identifier
class (OCCURRENCE, STATE, REPORTING, PERCEPTION, ASPECTUAL, I_ACTION, I_STATE)annotation.labelThe primary label for the situation mention
tenseannotation.features key tenseValues: PAST, PRESENT, FUTURE, INFINITIVE, PRESPART, PASTPART, NONE
aspectannotation.features key aspectValues: PROGRESSIVE, PERFECTIVE, PERFECTIVE_PROGRESSIVE, NONE
polarityannotation.features key polarityValues: POS, NEG
modalityannotation.features key modalityFree text modal expression
posannotation.features key posPart of speech

Signals (SIGNAL)

TimeML AttributeLayers EquivalentNotes
SIGNAL tagannotation with subkind="temporal-signal"Temporal connectives and prepositions ("before", "during", "since")
sidannotation.uuidUnique identifier
Text contentannotation.textThe signal text
TimeML AttributeLayers EquivalentNotes
TLINKpub.layers.graph#graphEdgeA directed temporal relation between two annotations
lidgraphEdge record rkeyUnique identifier
relTypegraphEdge.edgeTypeSee relation mapping below
timeID / eventInstanceID (source)graphEdge.sourceobjectRef to source annotation
relatedToTime / relatedToEventInstance (target)graphEdge.targetobjectRef to target annotation
signalIDgraphEdge.label or graphEdge.propertiesReference to the signal annotation

Relation mapping:

TimeML relTypeLayers edgeType
BEFOREbefore
AFTERafter
IBEFORE (immediately before)meets
IAFTER (immediately after)met-by
INCLUDEScontains
IS_INCLUDEDduring
BEGINSstarts
BEGUN_BYstarted-by
ENDSfinishes
ENDED_BYfinished-by
SIMULTANEOUSsimultaneous
IDENTITYequals
DURINGduring
DURING_INVcontains
OVERLAPoverlaps
OVERLAPPED_BYoverlapped-by
TimeML AttributeLayers EquivalentNotes
ALINKpub.layers.graph#graphEdgeAspectual relation between events
relTypegraphEdge.edgeTypeINITIATES to initiates, CULMINATES to culminates, TERMINATES to terminates, CONTINUES to continues, REINITIATES to reinitiates
eventInstanceIDgraphEdge.sourceSource event
relatedToEventInstancegraphEdge.targetTarget event
signalIDgraphEdge.label or graphEdge.propertiesSignal reference
TimeML AttributeLayers EquivalentNotes
SLINKpub.layers.graph#graphEdge with edgeType="discourse"Subordination is a discourse relation
relType (MODAL, EVIDENTIAL, NEG_EVIDENTIAL, FACTIVE, COUNTER_FACTIVE, CONDITIONAL)graphEdge.labelThe specific subordination type as the edge label
eventInstanceIDgraphEdge.sourceSubordinating event
subordinatedEventInstancegraphEdge.targetSubordinated event

Conversion Notes

A TimeML-annotated document can be converted to Layers records as follows:

  1. Create a pub.layers.expression record with kind="document" from the source text
  2. For each TIMEX3, create an annotation in an annotationLayer with kind="span", subkind="temporal-expression", formalism="timeml". Populate the temporal field with a temporalExpression containing the normalized value, modifier, anchor, and function
  3. For each EVENT, create an annotation in an annotationLayer with kind="span", subkind="situation-mention", formalism="timeml". Store class in label; tense, aspect, polarity, modality in features
  4. For each SIGNAL, create an annotation in an annotationLayer with kind="span", subkind="temporal-signal", formalism="timeml"
  5. For each TLINK, create a graphEdge with the mapped Allen relation as edgeType
  6. For each ALINK, create a graphEdge with the mapped aspectual relation as edgeType
  7. For each SLINK, create a graphEdge with edgeType="discourse" and the subordination type as label

All TimeML IDs (tid, eid, sid, lid) map to Layers UUIDs. Cross-references use objectRef with localId (same record) or recordRef + objectId (cross-record).