OWL-Time is an OWL-2 DL ontology of temporal concepts, for describing the temporal properties of resources in the world or described in Web pages. The ontology provides a vocabulary for expressing facts about topological (ordering) relations among instants and intervals, together with information about durations, and about temporal position including date-time information. Time positions and durations may be expressed using either the conventional (Gregorian) calendar and clock, or using another temporal reference system such as Unix-time, geologic time, or different calendars.

The namespace for OWL-Time terms is http://www.w3.org/2006/time#

The suggested prefix for the OWL-Time namespace is time

The OWL-Time ontology is available here.

An ontology of individuals for the Gregorian calendar (months) is available here.

For OGC - This is a Public Draft of a document prepared by the Spatial Data on the Web Working Group (SDWWG) — a joint W3C-OGC project (see charter). The document is prepared following W3C conventions. Comments regarding this document are welcome - please submit them in the issue tracker. Recipients of this document are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.

New classes and properties are introduced in this revision of OWL-Time. The new elements primarily relate to relaxing the limitation that time position uses only the Gregorian Calendar, and are placed in a logical hierarchy in relation to the original elements. While there is less implementation evidence for these than the elements from the 2006 version, the new elements are essential to satisfying key requirements in the revision.

However, a small number of other new elements merit additional explanation:

  1. :hasXSDDuration allows use of the compact xsd:duration element to describe the extent of a temporal entity. This complements existing predicates used with XSD datatypes, and was an inexplicable omission from the original ontology.
  2. :MonthOfYear and :monthOfYear complement :DayOfWeek and :dayOfWeek to support vernacular names for months as well as days.
  3. :hasTime is a completely generic predicate for associating a temporal entity with anything. A number of generic predicates suitable for use directly in applications were requested, but in general were deemed undesirable in an ontology dealing with the description of time elements rather than their use. This one only was included for users unwilling or unable to define their own semantics.

Motivation and background

Temporal information is important in most real world applications. For example, the date is always part of an online order. When you rent a car it is for specific dates. Events in the world occur at specific times and usually have a finite duration. Transactions occur in a sequence, with the current state of a system depending on the exact history of all the transactions. Knowledge of the temporal relationships between transactions, events, travel and orders is often critical. OWL-Time has been developed in response to this need, for describing the temporal properties of any resource denoted using a web identifier (URI), including web-pages and real-world things if desired. OWL-Time focusses particularly on temporal ordering relationships. While these are implicit in all temporal descriptions, OWL-Time provides specific predicates to support, or to make explicit the results of, reasoning over the order or sequence of temporal entities.

There is a great deal of relevant existing work, some very closely related. ISO 8601 [[iso8601]] provides a basis for encoding time position and extent in a character string, using the most common modern calendar-clock system. Datatypes in XML Schema [[xmlschema11-2]] use a subset of the ISO 8601 format in order to pack multi-element values into a compact literal. Functions and operators on durations, and on dates and times, encoded in these ways are available in XPath and XQuery [[xpath-functions-31]]. XSLT [[xslt20]] also provides formatting functions for times and dates, with explicit support for the specified language, calendar and country. Some of the XML Schema datatypes are built-in to OWL2 [[owl2-quick-reference]], so the XPath and XQuery functions may be used on basic OWL data.

OWL-Time makes use of these encodings, but also provides representations in which the elements of a date and time are put into separately addressable resources, which can help with queries and reasoning applications. OWL-Time also supports other representations of temporal position and duration, including temporal coordinates (scaled position on a continuous temporal axis) and ordinal times (named positions or periods). This includes relaxing the expectation from the original version that dates must use the Gregorian calendar. However, OWL-Time has a particular focus on ordering relations ("temporal topology"), which is not supported explicitly in any of the date-time encodings.

A first-order logic axiomatization of the core of this ontology is available in [[hp-04]]. This document presents the OWL encodings of the ontology, with some additions.

This version of OWL-Time was developed in the Spatial Data on the Web Working Group (a joint activity involving W3C and the Open Geospatial Consortium). The ontology is based on the draft by Hobbs and Pan [[owl-time-20060927]], incorporating modifications proposed by Cox [[co-15]] to support more general temporal positions, along with other minor improvements. The substantial changes are listed in the change-log. The specification document has been completely re-written.

Notation and namespaces

Classes and properties from the Time Ontology are denoted in this specification using Compact URIs [[curie]].

The namespace for OWL-Time is http://www.w3.org/2006/time#. RDF representations of OWL-Time in various serializations are available at the namespace URI. OWL-Time does not re-use elements from any other vocabularies, but does use some built-in datatypes from OWL and some additional types from XML Schema Part 2.

The table below indicates the full list of namespaces and prefixes used in this document.

Prefix Namespace
ex http://example.org/time/
geol http://example.org/geologic/
greg http://www.w3.org/ns/time/gregorian#
owl http://www.w3.org/2002/07/owl#
prov http://www.w3.org/ns/prov#
rdf http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs http://www.w3.org/2000/01/rdf-schema#
time or
no prefix
http://www.w3.org/2006/time#
xsd http://www.w3.org/2001/XMLSchema#

Where class descriptions include local restrictions on properties, these are described using the OWL 2 Manchester Syntax [[owl2-manchester-syntax]].

Examples and other code fragments are serialized using RDF 1.1 Turtle notation [[turtle]].

Principles and vocabulary overview

Topological Temporal Relations

The basic structure of the ontology is based on an algebra of binary relations on intervals (e.g., meets, overlaps, during) developed by Allen [[al-84]], [[af-97]] for representing qualitative temporal information, and to address the problem of reasoning about such information.

The ontology starts with a class :TemporalEntity with properties :hasBeginning and :hasEnd that link to the temporal instants that define its limits, and :hasTemporalDuration to describe its extent. There are two subclasses: :Interval and :Instant, and they are the only two subclasses of :TemporalEntity. Intervals are things with extent. Instants are point-like in that they have no interior points, but it is generally safe to think of an instant as an interval with zero length, where the beginning and end are the same.

This idea - that time intervals are the more general case and time instants are just a limited specialization - is the first key contribution of Allen's analysis.

The class :Interval has one subclass :ProperInterval, which corresponds with the common understanding of intervals, in that the beginning and end are distinct, and whose membership is therefore disjoint from :Instant.

UML-style diagram of temporal entity classes
Core model of temporal entities.

The class :ProperInterval also has one subclass, :DateTimeInterval. The position and extent of a :DateTimeInterval is an element in a :GeneralDateTimeDescription.

Relations between intervals are the critical logic provided by Allen's analysis, and implemented in the ontology. Relations between intervals can be defined in a relatively straightforward fashion in terms of :before and identity on the beginning and end points. The thirteen elementary relations shown below are the second key contribution of Allen's analysis. These support unambiguous expression of all possible relations between temporal entities, which allows the computation of any relative position or sequence. Note that the standard interval calculus assumes all intervals are proper, so their beginning and end are different.

Schematic of Interval Relations
Thirteen elementary possible relations between time periods [[af-97]].

Two additional relations: In (the union of During, Starts and Finishes) and Disjoint (the union of Before and After) are not shown in the figure but are included in the ontology.

The properties :hasTemporalDuration, :hasBeginning and :hasEnd, together with a fourth generic property :hasTime, support the association of temporal information with any temporal entity, such as an activity or event, or other entity. These provide a standard way to attach time information to things, which may be used directly in applications if suitable, or specialized if needed.

Temporal reference systems, clocks, calendars

The duration of a TemporalEntity may be given using the datatype xsd:duration and the position of an Instant may be given using the datatype xsd:dateTimeStamp, which is built in to OWL 2 [[owl2-syntax]]. These both use the conventional notions of temporal periods (years, months, weeks ... seconds), the Gregorian calendar, and the 24-hour clock. The lexical representations use [[iso8601]] style notation, but ignoring leap seconds, which are explicitly mandated by the international standard.

While this satisfies most web applications, many other calendars and temporal reference systems are used in particular cultural and scholarly contexts. For example, the Julian calendar was used throughout Europe until the 16th century, and is still used for computing key dates in some orthodox Christian communities. Lunisolar (e.g. Hebrew) and lunar (e.g. Islamic) calendars are currently in use in some communities, and many similar have been used historically. Ancient Chinese calendars as well as the French revolutionary calendar used 10-day weeks. In scientific and technical applications, Julian date counts the number of days since the beginning of 4713 BCE, and Loran-C, Unix and GPS time are based on seconds counted from a specified origin in 1958, 1970 and 1980, respectively, with GPS time represented using a pair of numbers for week number plus seconds into week. Archaeological and geological applications use chronometric scales based on years counted backwards from ‘the present’ (defined as 1950 for radiocarbon dating [[rc-14]]), or using named periods associated with specified correlation markers ([[cr-05]], [[cr-14]], [[mf-13]]). Dynastic calendars (counting years within eras defined by the reign of a monarch or dynasty) were used in many cultures. In order to support these more general applications, the representation of temporal position and duration must be flexible, and annotated with the temporal reference system in use.

A set of ordered intervals (e.g. named dynasties, geological periods, geomagnetic reversals, tree rings) can make a simple form of temporal reference system that supports logical reasoning, known as an ordinal temporal reference system [[iso19108]].

Measurement of duration needs a clock. In its most general form a clock is just a regularly repeating physical event ('tick') and a counting mechanism for the 'ticks'. These counts may be used to logically relate two events and to calculate a duration between the events.

A calendar is a set of algorithms that enables clock counts to be converted into practical everyday dates and times related to the movement of astronomical bodies (day, month, year).

As astronomically based calendars try to fit inconvenient durations into a usable regular system of counting cycles, 'intercalations' are often used to re-align the calendar's repeating patterns with astronomical events. These intercalations may be of different durations depending on the calendar, such as leap seconds, leap days, or even a group of days. Leap days are explicit and leap seconds implicit in the Gregorian calendar, which underlies the model used in several classes in OWL-Time. A general treatment of intercalations is beyond the scope of this ontology.

For many purposes it is convenient to make temporal calculations in terms of clock durations that exceed everyday units such as days, weeks, months and years, using a representation of temporal position in a temporal coordinate system [[iso19108]], or temporal coordinate reference system [[iso-19111-2019]], [[ogc-topic-2]], i.e. on a number line with a specified origin, such as Julian date, or Unix time. This may be converted to calendar units when necessary for human consumption.

Nevertheless, in practice much temporal information is not well-defined, in that there may be no clear statement about the assumed underlying calendar and clock.

Time position

OWL 2 has two built-in datatypes relating to time: xsd:dateTime and xsd:dateTimeStamp [[owl2-syntax]]. Other XSD types such as xsd:date, xsd:gYear and xsd:gYearMonth [[xmlschema11-2]] are also commonly used in OWL applications. These provide for a compact representation of time positions using the conventional Gregorian calendar and 24-hour clock, with timezone offset from UTC.

Four classes in the ontology support an explicit description of temporal position. :TemporalPosition is the common super-class, with a property :hasTRS to indicate the temporal reference system in use. :TimePosition has properties to alternatively describe the position using a number (i.e. a temporal coordinate), or a nominal value (e.g. geologic time period, dynastic name, archeological era). :GeneralDateTimeDescription has a set of properties to specify a date-time using calendar and clock elements. Its subclass :DateTimeDescription fixes the temporal reference system to the Gregorian calendar.

UML-style diagram of classes for temporal position
Classes for temporal position.

Following Allen's first key idea described above, even a time position has a finite extent, corresponding to the precision or temporal unit used. Thus, a :GeneralDateTimeDescription or :DateTimeDescription has a duration corresponding to the value of its :unitType.

Duration

The duration of an interval (or temporal sequence) can have many different descriptions. An interval can be 1 day 2 hours, or 26 hours, or 1560 minutes, and so on. It is useful to be able to talk about these descriptions in a convenient way as independent objects, and to talk about their equivalences. The extent of an interval can be given using multiple duration descriptions or individual durations (e.g., 2 days, 48 hours) , but these must all describe the same amount of time.

Four classes support the description of the duration of an entity. :TemporalDuration is the common super-class. :Duration has properties to describe the duration using a scaled number (i.e. a temporal quantity). :GeneralDurationDescription has a set of properties to specify a duration using calendar and clock elements, the definitions of which are given in the associated TRS description. Its subclass :DurationDescription fixes the temporal reference system to the Gregorian calendar, so the :hasTRS property may be omitted on individuals from this class.

:TemporalUnit is a standard duration which is used to scale a length of time, and to capture its granularity or precision.

UML representation of Temporal Duration and sub-classes
Classes for temporal duration.

We use two different sets of properties for :GeneralDateTimeDescription or :DateTimeDescription, and :GeneralDurationDescription or :DurationDescription, because their ranges are different. For example, :year (in :DateTimeDescription) has a range of xsd:gYear which is a position in the Gregorian calendar, while :years (in :DurationDescription) has a range of xsd:decimal so that you can say "duration of 2.5 years".

Vocabulary specification

In this vocabulary specification, Manchester syntax [[owl2-manchester-syntax]] is used where the value of a field is not a simple term denoted by a URI or cURI.

RDF representations of OWL-Time are available at the vocabulary namespace URI - see Notation and namespaces.

Classes

:DateTimeDescription | :DateTimeInterval | :DayOfWeek | :Duration | :DurationDescription | :GeneralDateTimeDescription | :GeneralDurationDescription | :Instant | :Interval | :MonthOfYear | :ProperInterval | :TemporalDuration | :TemporalEntity | :TemporalPosition | :TemporalUnit | :TimePosition | :TimeZone | :TRS

Date-time description

Class: time:DateTimeDescription
Definition: Description of date and time structured with separate values for the various elements of a calendar-clock system. The temporal reference system is fixed to Gregorian Calendar, and the range of year, month, day properties restricted to corresponding XML Schema types xsd:gYear, xsd:gMonth and xsd:gDay, respectively.
Subclass of: time:GeneralDateTimeDescription
Subclass of: time:hasTRS value <http://www.opengis.net/def/uom/ISO-8601/0/Gregorian>
Subclass of: time:year only xsd:gYear
Subclass of: time:month only xsd:gMonth
Subclass of: time:day only xsd:gDay

Other datetime concepts can be defined by specialization of :GeneralDateTimeDescription or :DateTimeDescription - see examples below.

Date-time interval

Class: time:DateTimeInterval
Definition: time:DateTimeInterval is a subclass of time:ProperInterval, defined using the multi-element time:DateTimeDescription.
Subclass of: time:ProperInterval

The class :DateTimeInterval is a subclass of :ProperInterval. It enables compact representation of an interval corresponding to a single element in a date-time description (i.e. a specified year, month, week, day, hour, minute, second). The property :hasDateTimeDescription describes the interval.

:DateTimeInterval can only be used for an interval whose limits coincide with a date-time element aligned to the calendar and timezone indicated. For example, while both have a duration of one day, the 24-hour interval beginning at midnight at the beginning of 8 May in Central Europe can be expressed as a :DateTimeInterval, but the 24-hour interval starting at 1:30pm cannot.

Day of week

Class: time:DayOfWeek
Definition: The day of week
Instance of: owl:Class

Seven individual members of :DayOfWeek are included in the ontology, corresponding to the seven days used in the Gregorian calendar, and using the English names :Sunday, :Monday, :Tuesday, :Wednesday, :Thursday, :Friday, :Saturday.

Membership of the class :DayOfWeek is open, to allow for alternative week lengths and different day names.

Duration

Class: time:Duration
Definition: Duration of a temporal extent expressed as a decimal number scaled by a temporal unit
Subclass of: :TemporalDuration
Subclass of: time:numericDuration exactly 1
Subclass of: time:unitType exactly 1

Duration description

Class: time:DurationDescription
Definition: Description of temporal extent structured with separate values for the various elements of a calendar-clock system. The temporal reference system is fixed to Gregorian Calendar, and the range of each of the numeric properties is restricted to xsd:decimal
Subclass of: time:GeneralDurationDescription
Subclass of: time:hasTRS value <http://www.opengis.net/def/uom/ISO-8601/0/Gregorian>
Subclass of: time:years only xsd:decimal
Subclass of: time:months only xsd:decimal
Subclass of: time:weeks only xsd:decimal
Subclass of: time:days only xsd:decimal
Subclass of: time:hours only xsd:decimal
Subclass of: time:minutes only xsd:decimal
Subclass of: time:seconds only xsd:decimal

In the Gregorian calendar the length of the month is not fixed. Therefore, a value like "2.5 months" cannot be exactly compared with a similar duration expressed in terms of weeks or days.

Generalized date-time description

Class: time:GeneralDateTimeDescription
Definition: Description of date and time structured with separate values for the various elements of a calendar-clock system
Subclass of: :TemporalPosition
Subclass of: time:timeZone max 1
Subclass of: time:unitType exactly 1
Subclass of: time:year max 1
Subclass of: time:month max 1
Subclass of: time:day max 1
Subclass of: time:hour max 1
Subclass of: time:minute max 1
Subclass of: time:second max 1
Subclass of: time:week max 1
Subclass of: time:dayOfYear max 1
Subclass of: time:dayOfWeek max 1
Subclass of: time:monthOfYear max 1

Two properties :timeZone, and :unitType, along with :hasTRS provide for reference information concerning the reference system and precision of temporal position values.

Six datatype properties :year, :month, :day, :hour, :minute, :second, together with :timeZone support the description of components of a temporal position in a calendar-clock system. These correspond with the 'seven property model' described in ISO 8601 [[iso8601]] and XML Schema Definition Language Part 2: Datatypes [[xmlschema11-2]], except that the calendar is not specified in advance, but is provided through the value of the :hasTRS property (defined above).

Some combinations of properties are redundant. For example, within a specified :year if :dayOfYear is provided then :day and :month can be computed, and vice versa. Individual values SHOULD be consistent with each other and the calendar, indicated through the value of the :hasTRS property.

Two additional properties :week and :dayOfYear allow for the numeric value of the week or day relative to the year. The property :dayOfWeek provides the name of the day, and the property :monthOfYear provides the name of the month.

Generalized duration description

Class: time:GeneralDurationDescription
Definition: Description of temporal extent structured with separate values for the various elements of a calendar-clock system.
Subclass of: :TemporalDuration
Subclass of: time:hasTRS exactly 1
Subclass of: time:years max 1
Subclass of: time:months max 1
Subclass of: time:weeks max 1
Subclass of: time:days max 1
Subclass of: time:hours max 1
Subclass of: time:minutes max 1
Subclass of: time:seconds max 1

Seven datatype properties :years, :months, :weeks, :days, :hours, :minutes, and :seconds support the description of components of a temporal extent in a calendar-clock system.

The property time:hasTRS indicates the temporal reference system applicable for the duration components.

The extent of a time duration expressed as a GeneralDurationDescription depends on the Temporal Reference System. In some calendars the length of the week or month is not constant within the year. Therefore, a value like "2.5 months" may not necessarily be exactly compared with a similar duration expressed in terms of weeks or days. When non-earth-based calendars are considered even more care must be taken in comparing durations.

Time instant

Class: time:Instant
Definition: A temporal entity with zero extent or duration
Subclass of: time:TemporalEntity

Seven properties, :inXSDDate, :inXSDDateTime (deprecated), :inXSDDateTimeStamp, :inXSDgYear, :inXSDgYearMonth, :inTimePosition, and :inDateTime provide alternative ways to describe the temporal position of an :Instant.

Time interval

Class: time:Interval
Definition: A temporal entity with an extent or duration
Subclass of: time:TemporalEntity

One property :inside links to an :Instant that falls inside the :Interval.

Month of year

Class: time:MonthOfYear
Definition: The month of the year
Subclass of: time:DateTimeDescription
Subclass of: time:year exactly 0
Subclass of: time:month exactly 1
Subclass of: time:week exactly 0
Subclass of: time:day exactly 0
Subclass of: time:hour exactly 0
Subclass of: time:minute exactly 0
Subclass of: time:second exactly 0
Subclass of: time:unitType value time:unitMonth

Twelve individual members of :MonthOfYear are provided in a separate namespace, corresponding to the twelve months used in the Gregorian calendar greg:January, greg:February, greg:March, greg:April, greg:May, greg:June, greg:July, greg:August, greg:September, greg:October, greg:November, greg:December. Each month is defined by setting the value of time:month to the corresponding value.

Membership of the class :MonthOfYear is open, to allow for alternative annual calendars and different month names.

Proper interval

Class: time:ProperInterval
Definition: A temporal entity with non-zero extent or duration, i.e. for which the value of the beginning and end are different
Subclass of: time:Interval
Disjoint with: time:Instant

Fifteen properties :intervalBefore, :intervalAfter, :intervalMeets, :intervalMetBy, :intervalOverlaps, :intervalOverlappedBy, :intervalStarts, :intervalStartedBy, :intervalDuring, :intervalContains, :intervalFinishes, :intervalFinishedBy, :intervalEquals :intervalDisjoint :intervalIn support the set of interval relations defined by Allen [[?al-84]] and Allen and Ferguson [[?af-97]].

Temporal duration

Class: time:TemporalDuration
Definition: Time extent; duration of a time interval separate from its particular start position
Instance of: owl:Class

Temporal entity

Class: time:TemporalEntity
Definition: A temporal interval or instant.
Instance of: owl:Class
Union of: time:Instant , time:Interval

Two properties, :before, :after, support ordering relationships between two :TemporalEntitys.

The properties :hasBeginning, :hasEnd and :hasTemporalDuration (or its sub-properties), support the description of the bounds and extent of a :TemporalEntity.

Temporal position

Class: time:TemporalPosition
Definition: A position on a time-line
Instance of: owl:Class
Subclass of: time:hasTRS exactly 1

The property time:hasTRS indicates the temporal reference system.

Temporal unit

Class: time:TemporalUnit
Definition: A standard duration, which provides the scale factor for a time extent, or the granularity or precision for a time position.
Subclass of: time:TemporalDuration

Ten individual members of :TemporalUnit are included in the ontology, corresponding to the elements of the standard calendar-clock: :unitYear, :unitMonth, :unitWeek, :unitDay, :unitHour, :unitMinute and :unitSecond, as well as :unitDecade, :unitCentury and :unitMillenium to support historical and archeological applications.

Membership of the class TemporalUnit is open, to allow for other temporal units used in some technical applications (e.g. millions of years, Baha'i month).

Time position

Class: time:TimePosition
Definition: A temporal position described using either a (nominal) value from an ordinal reference system, or a (numeric) value in a temporal coordinate system.
Subclass of: :TemporalPosition
Subclass of: ( time:numericPosition exactly 1 ) or ( time:nominalPosition exactly 1 )

Two properties :nominalPosition and :numericPosition support the alternative descriptions of position or extent. One of these is expected to be present.

The temporal ordinal reference system should be provided as the value of the :hasTRS property

The temporal coordinate system should be provided as the value of the :hasTRS property

Time-zone

Class: time:TimeZone
Definition: A Time Zone specifies the amount by which the local time is offset from UTC. A time zone is usually denoted geographically (e.g. Australian Eastern Daylight Time), with a constant value in a given region. The region where it applies and the offset from UTC are specified by a locally recognised governing authority.
Instance of: owl:Class

No specific properties are provided for the class :TimeZone, the definition of which is beyond the scope of this ontology. The class specified here is a stub, effectively the superclass of all time zone classes.

An ontology for time zone descriptions was described in [[owl-time-20060927]] and provided as RDF in a separate namespace tzont:. However, that ontology was incomplete in scope, and the example datasets were selective. Furthermore, since the use of a class from an external ontology as the range of an ObjectProperty in OWL-Time creates a dependency, reference to the time zone class has been replaced with the 'stub' class in the normative part of this version of OWL-Time.

A designated timezone is associated with a geographic region. However, for a particular region the offset from UTC often varies seasonally, and the dates of the changes may vary from year to year. The timezone designation usually changes for the different seasons (e.g. Australian Eastern Standard Time vs. Australian Eastern Daylight Time). Furthermore, the offset for a timezone may change over longer timescales, though its designation might not.

Detailed guidance about working with time zones is given in [[timezone]].

Temporal reference system

Class: time:TRS
Definition: A temporal reference system, such as a temporal coordinate reference system (with an origin, direction, and scale), a calendar-clock combination, or a (possibly hierarchical) ordinal system.
Instance of: owl:Class

No specific properties are provided for the class :TRS, the definition of which is beyond the scope of this ontology. The class specified here is a stub, effectively the superclass of all temporal reference system types.

Note that an ordinal temporal reference system, such as the geologic timescale, may be represented directly, using this ontology, as a set of :ProperIntervals, along with enough inter-relationships to support the necessary ordering relationships. See example below of Geologic Timescale.

A taxonomy of temporal reference systems is provided in ISO 19108:2002 [[iso19108]], including (a) calendar + clock systems; (b) temporal coordinate systems (i.e. numeric offset from an epoch); (c) temporal ordinal reference systems (i.e. ordered sequence of named intervals, not necessarily of equal duration).

ISO 19111:2019 [[iso-19111-2019]] (also published as OGC Abstract Specification Topic 2 [[ogc-topic-2]]) provides a data model structure for temporal coordinate reference systems, conceptually equivalent to the temporal coordinate system of ISO 19108, in which the offset may be expressed as a dateTime, an integer or a real number. Annex D in that document provides examples of definitive and ambiguous calendar arithmetic.

Properties

:after | :before | :day | :dayOfWeek | :dayOfYear | :days | :hasBeginning | :hasDateTimeDescription | :hasDuration | :hasDurationDescription | :hasEnd | :hasTemporalDuration | :hasTime | :hasTRS | :hasXSDDuration | :hour | :hours | :inDateTime | :inside | :inTemporalPosition | :intervalAfter | :intervalBefore | :intervalContains | :intervalDisjoint | :intervalDuring | :intervalEquals | :intervalFinishedBy | :intervalFinishes | :intervalIn | :intervalMeets | :intervalMetBy | :intervalOverlappedBy | :intervalOverlaps | :intervalStartedBy | :intervalStarts | :inTimePosition | :inXSDDate | :inXSDDateTime | :inXSDDateTimeStamp | :inXSDgYear | :inXSDgYearMonth | :minute | :minutes | :month | :monthOfYear | :months | :nominalPosition | :numericDuration | :numericPosition | :second | :seconds | :timeZone | :unitType | :week | :weeks | :xsdDateTime | :year | :years

is after

Property: time:after
Definition: The subject is a temporal entity that occurs after the object. If a temporal entity T1 is after another temporal entity T2, then the beginning of T1 is after the end of T2.
Instance of: owl:ObjectProperty
Domain: time:TemporalEntity
Range: time:TemporalEntity
Inverse Property: time:before

is before

Property: time:before
Definition: The subject is a temporal entity that occurs before the object. If a temporal entity T1 is before another temporal entity T2, then the end of T1 is before the beginning of T2. Thus, before can be considered to be basic to instants and derived for intervals.
Instance of: owl:ObjectProperty
Domain: time:TemporalEntity
Range: time:TemporalEntity
Inverse Property: time:after

day

Property: time:day
Definition: Day position in a calendar-clock system. The range of this property is not specified, so can be replaced by any specific representation of a calendar day from any calendar.
Instance of: owl:DatatypeProperty
Domain: time:GeneralDateTimeDescription

day of week

Property: time:dayOfWeek
Definition: The day of week, whose value is a member of the class time:DayOfWeek
Instance of: owl:ObjectProperty
Domain: time:GeneralDateTimeDescription
Range: time:DayOfWeek

day of year

Property: time:dayOfYear
Definition: The number of the day within the year
Instance of: owl:DatatypeProperty
Domain: time:GeneralDateTimeDescription
Range: xsd:nonNegativeInteger

days duration

Property: time:days
Definition: length of, or element of the length of, a temporal extent expressed in days
Instance of: owl:DatatypeProperty
Domain: time:GeneralDurationDescription
Range: xsd:decimal

has beginning

Property: time:hasBeginning
Definition: Beginning of a temporal entity.
Instance of: owl:ObjectProperty
Domain: time:TemporalEntity
Range: time:Instant

has date-time description

Property: time:hasDateTimeDescription
Definition: Position and extent of time:DateTimeInterval expressed as a structured value. The beginning and end of the interval coincide with the limits of the shortest element in the description.
Instance of: owl:ObjectProperty
Domain: time:DateTimeInterval
Range: time:GeneralDateTimeDescription

has duration

Property: time:hasDuration
Definition: Duration of a temporal entity, expressed as a scaled value or nominal value
Instance of: owl:ObjectProperty
Subproperty of: time:hasTemporalDuration
Range: time:Duration

has duration description

Property: time:hasDurationDescription
Definition: Duration of a temporal entity, expressed using a structured description
Instance of: owl:ObjectProperty
Subproperty of: time:hasTemporalDuration
Range: time:DurationDescription

has end

Property: time:hasEnd
Definition: End of a temporal entity.
Instance of: owl:ObjectProperty
Domain: time:TemporalEntity
Range: time:Instant

has temporal duration

Property: time:hasTemporalDuration
Definition: Duration of a temporal entity
Instance of: owl:ObjectProperty
Domain: time:TemporalEntity
Range: time:TemporalDuration

has time

Property: time:hasTime
Definition: Supports the association of a temporal entity (instant or interval) to any thing.
Instance of: owl:ObjectProperty
Range: time:TemporalEntity

temporal reference system used

Property: time:hasTRS
Definition: The temporal reference system used by a temporal position or extent description.
Instance of: owl:ObjectProperty
Instance of: owl:FunctionalProperty
Domain: time:TemporalPosition or time:GeneralDurationDescription
Range: time:TRS

has XSD duration

Property: time:hasXSDDuration
Definition: Extent of a temporal entity, expressed using xsd:duration
Instance of: owl:DatatypeProperty
Domain: time:TemporalEntity
Range: xsd:duration

hour

Property: time:hour
Definition: Hour position in a calendar-clock system
Instance of: owl:DatatypeProperty
Domain: time:GeneralDateTimeDescription
Range: xsd:nonNegativeInteger

hours duration

Property: time:hours
Definition: length of, or element of the length of, a temporal extent expressed in hours
Instance of: owl:DatatypeProperty
Domain: time:GeneralDurationDescription
Range: xsd:decimal

in date-time description

Property: time:inDateTime
Definition: Position of an instant, expressed using a structured description
Instance of: owl:ObjectProperty
Subproperty of: time:inTemporalPosition
Domain: time:Instant
Range: time:GeneralDateTimeDescription

has time instant inside

Property: time:inside
Definition: An instant that falls inside the interval. It is not intended to include beginnings and ends of intervals.
Instance of: owl:ObjectProperty
Domain: time:Interval
Range: time:Instant

temporal position

Property: time:inTemporalPosition
Definition: Position of a time instant
Instance of: owl:ObjectProperty
Domain: time:Instant
Range: time:TemporalPosition

interval after

Property: time:intervalAfter
Definition: If a proper interval T1 is intervalAfter another proper interval T2, then the beginning of T1 is after the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
SubProperty of: time:after
SubProperty of: time:intervalDisjoint
Inverse of: time:intervalBefore

interval before

Property: time:intervalBefore
Definition: If a proper interval T1 is intervalBefore another proper interval T2, then the end of T1 is before the beginning of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
SubProperty of: time:before
SubProperty of: time:intervalDisjoint
Inverse of: time:intervalAfter

interval contains

Property: time:intervalContains
Definition: If a proper interval T1 is intervalContains another proper interval T2, then the beginning of T1 is before the beginning of T2, and the end of T1 is after the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Inverse of: time:intervalDuring

interval disjoint

Property: time:intervalDisjoint
Definition: If a proper interval T1 is intervalDisjoint another proper interval T2, then the beginning of T1 is after the end of T2, or the end of T1 is before the beginning of T2, i.e. the intervals do not overlap in any way, but their ordering relationship is not known.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval

interval during

Property: time:intervalDuring
Definition: If a proper interval T1 is intervalDuring another proper interval T2, then the beginning of T1 is after the beginning of T2, and the end of T1 is before the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Inverse of: time:intervalContains

interval equals

Property: time:intervalEquals
Definition: If a proper interval T1 is intervalEquals another proper interval T2, then the beginning of T1 is coincident with the beginning of T2, and the end of T1 is coincident with the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Disjoint with: time:intervalIn

interval finished by

Property: time:intervalFinishedBy
Definition: If a proper interval T1 is intervalFinishedBy another proper interval T2, then the beginning of T1 is before the beginning of T2, and the end of T1 is coincident with the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Inverse of: time:intervalFinishes

interval finishes

Property: time:intervalFinishes
Definition: If a proper interval T1 is intervalFinishes another proper interval T2, then the beginning of T1 is after the beginning of T2, and the end of T1 is coincident with the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
SubProperty of: time:intervalIn
Inverse of: time:intervalFinishedBy

interval in

Property: time:intervalIn
Definition: If a proper interval T1 is intervalIn another proper interval T2, then the beginning of T1 is after the beginning of T2 or is coincident with the beginning of T2, and the end of T1 is before the end of T2 or is coincident with the end of T2, except that end of T1 may not be coincident with the end of T2 if the beginning of T1 is coincident with the beginning of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Disjoint with: time:intervalEquals

interval meets

Property: time:intervalMeets
Definition: If a proper interval T1 is intervalMeets another proper interval T2, then the end of T1 is coincident with the beginning of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Inverse of: time:intervalMetBy

interval met by

Property: time:intervalMetBy
Definition: If a proper interval T1 is intervalMetBy another proper interval T2, then the beginning of T1 is coincident with the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Inverse of: time:intervalMeets

interval overlapped by

Property: time:intervalOverlappedBy
Definition: If a proper interval T1 is intervalOverlappedBy another proper interval T2, then the beginning of T1 is after the beginning of T2, the beginning of T1 is before the end of T2, and the end of T1 is after the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Inverse of: time:intervalOverlaps

interval overlaps

Property: time:intervalOverlaps
Definition: If a proper interval T1 is intervalOverlaps another proper interval T2, then the beginning of T1 is before the beginning of T2, the end of T1 is after the beginning of T2, and the end of T1 is before the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Inverse of: time:intervalOverlappedBy

interval started by

Property: time:intervalStartedBy
Definition: If a proper interval T1 is intervalStartedBy another proper interval T2, then the beginning of T1 is coincident with the beginning of T2, and the end of T1 is after the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
Inverse of: time:intervalStarts

interval starts

Property: time:intervalStarts
Definition: If a proper interval T1 is intervalStarts another proper interval T2, then the beginning of T1 is coincident with the beginning of T2, and the end of T1 is before the end of T2.
Instance of: owl:ObjectProperty
Domain: time:ProperInterval
Range: time:ProperInterval
SubProperty of: time:intervalIn
Inverse of: time:intervalStartedBy

time position

Property: time:inTimePosition
Definition: Position of an instant, expressed as a temporal coordinate or nominal value
Instance of: owl:ObjectProperty
Domain: time:Instant
Range: time:TimePosition
Subproperty of: time:inTemporalPosition

in XSD date

Property: time:inXSDDate
Definition: Position of an instant, expressed using xsd:date
Instance of: owl:DatatypeProperty
Domain: time:Instant
Range: xsd:date

in XSD date-time

Property: time:inXSDDateTime
Definition: Position of an instant, expressed using xsd:dateTime
Instance of: owl:DatatypeProperty
Instance of: owl:DeprecatedProperty
Domain: time:Instant
Range: xsd:dateTime
Deprecated: true

The property :inXSDDateTime is replaced by :inXSDDateTimeStamp which makes the time-zone field mandatory.

in XSD date-time-stamp

Property: time:inXSDDateTimeStamp
Definition: Position of an instant, expressed using xsd:dateTimeStamp, in which the time-zone field is mandatory
Instance of: owl:DatatypeProperty
Domain: time:Instant
Range: xsd:dateTimeStamp

in XSD gYear

Property: time:inXSDgYear
Definition: Position of an instant, expressed using xsd:gYear
Instance of: owl:DatatypeProperty
Domain: time:Instant
Range: xsd:gYear

in XSD gYearMonth

Property: time:inXSDgYearMonth
Definition: Position of an instant, expressed using xsd:gYearMonth
Instance of: owl:DatatypeProperty
Domain: time:Instant
Range: xsd:gYearMonth

minute

Property: time:minute
Definition: Minute position in a calendar-clock system
Instance of: owl:DatatypeProperty
Domain: time:GeneralDateTimeDescription
Range: xsd:nonNegativeInteger

minutes duration

Property: time:minutes
Definition: length of, or element of the length of, a temporal extent expressed in minutes
Instance of: owl:DatatypeProperty
Domain: time:GeneralDurationDescription
Range: xsd:decimal

month

Property: time:month
Definition: Month position in a calendar-clock system. The range of this property is not specified, so can be replaced by any specific representation of a calendar month from any calendar.
Instance of: owl:DatatypeProperty
Domain: time:GeneralDateTimeDescription

month of year

Property: time:monthOfYear
Definition: The month of the year, whose value is a member of the class time:MonthOfYear
Instance of: owl:ObjectProperty
Domain: time:GeneralDateTimeDescription
Range: time:MonthOfYear

months duration

Property: time:months
Definition: length of, or element of the length of, a temporal extent expressed in months
Instance of: owl:DatatypeProperty
Domain: time:GeneralDurationDescription
Range: xsd:decimal

name of temporal position

Property: time:nominalPosition
Definition: The (nominal) value indicating temporal position in an ordinal reference system
Instance of: owl:DatatypeProperty
Domain: time:TimePosition
Range: xsd:string

numeric value of temporal duration

Property: time:numericDuration
Definition: Value of a temporal extent expressed as a number scaled by a temporal unit
Instance of: owl:DatatypeProperty
Domain: time:Duration
Range: xsd:decimal

numeric value of temporal position

Property: time:numericPosition
Definition: The (numeric) value indicating position within a temporal coordinate system
Instance of: owl:DatatypeProperty
Domain: time:TimePosition
Range: xsd:decimal

second

Property: time:second
Definition: Second position in a calendar-clock system.
Instance of: owl:DatatypeProperty
Domain: time:GeneralDateTimeDescription
Range: xsd:decimal

seconds duration

Property: time:seconds
Definition: length of, or element of the length of, a temporal extent expressed in seconds
Instance of: owl:DatatypeProperty
Domain: time:GeneralDurationDescription
Range: xsd:decimal

in time zone

Property: time:timeZone
Definition: The time zone for clock elements in the temporal position
Instance of: owl:ObjectProperty
Domain: time:GeneralDateTimeDescription
Range: time:TimeZone

IANA maintains a database of timezones. These are well maintained and generally considered authoritative, but individual items are not available at individual URIs, so cannot be used directly within data expressed using OWL-Time.

DBPedia provides a set of resources corresponding to the IANA timezones, with a URI for each (e.g. http://dbpedia.org/resource/Australia/Eucla). The World Clock service also provides a list of time zones with the description of each available as an individual webpage with a convenient individual URI (e.g. https://www.timeanddate.com/time/zones/acwst). These or other, similar, resources might be used as a value of the time:timeZone property.

temporal unit type

Property: time:unitType
Definition: The temporal unit which provides the precision of a date-time value or scale of a temporal extent
Instance of: owl:ObjectProperty
Domain: time:GeneralDateTimeDescription or time:Duration
Range: time:TemporalUnit

week

Property: time:week
Definition: Week number within the year.
Instance of: owl:DatatypeProperty
Domain: time:GeneralDateTimeDescription
Range: xsd:nonNegativeInteger

Weeks are numbered differently depending on the calendar in use and the local language or cultural conventions (locale). ISO-8601 specifies that the first week of the year includes at least four days, and that Monday is the first day of the week. In that system, week 1 is the week that contains the first Thursday in the year.

weeks duration

Property: :weeks
Definition: length of, or element of the length of, a temporal extent expressed in weeks
Instance of: owl:DatatypeProperty
Domain: time:GeneralDurationDescription
Range: xsd:decimal

has XSD date-time

Property: time:xsdDateTime
Definition: Value of time:DateTimeInterval expressed as a compact value. The beginning and end of the interval coincide with the limits of the smallest non-zero element of the value.
Instance of: owl:DatatypeProperty
Instance of: owl:DeprecatedProperty
Domain: time:DateTimeInterval
Range: xsd:dateTime
Deprecated: true

Using xsd:dateTime in this place means that the duration of the interval is implicit: it corresponds to the length of the smallest non-zero element of the date-time literal. However, this rule cannot be used for intervals whose duration is more than one rank smaller than the starting time - e.g. the first minute or second of a day, the first hour of a month, or the first day of a year. In these cases the desired interval cannot be distinguished from the interval corresponding to the next rank up. Because of this essential ambiguity, use of this property is not recommended and it is deprecated.

year

Property: time:year
Definition: Year position in a calendar-clock system. The range of this property is not specified, so can be replaced by any specific representation of a calendar year from any calendar.
Instance of: owl:DatatypeProperty
Domain: time:GeneralDateTimeDescription

years duration

Property: time:years
Definition: length of, or element of the length of, a temporal extent expressed in years
Instance of: owl:DatatypeProperty
Domain: time:GeneralDurationDescription
Range: xsd:decimal

Datatypes

:generalDay | :generalMonth | :generalYear

generalDay

Class: time:generalDay
Definition: Day of month - formulated as a text string with a pattern constraint to reproduce the same lexical form as xsd:gDay, except that values up to 99 are permitted, in order to support calendars with more than 31 days in a month. Note that the value-space is not defined, so a generic OWL2 processor cannot compute ordering relationships of values of this type.
Instance of: rdfs:Datatype
Subclass of:
owl:onDatatype xsd:string ;
  owl:withRestrictions (
    [
      xsd:pattern "---(0[1-9]|[1-9][0-9])(Z|(\\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"^^xsd:string ;
    ]
  )

generalMonth

Class: time:generalMonth
Definition: Month of year - formulated as a text string with a pattern constraint to reproduce the same lexical form as xsd:gMonth, except that values up to 20 are permitted, in order to support calendars with more than 12 months in the year. Note that the value-space is not defined, so a generic OWL2 processor cannot compute ordering relationships of values of this type.
Instance of: rdfs:Datatype
Subclass of:
owl:onDatatype xsd:string ;
  owl:withRestrictions (
    [
      xsd:pattern "--(0[1-9]|1[0-9]|20)(Z|(\\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"^^xsd:string ;
    ]
  )

generalYear

Class: time:generalYear
Definition: Year number - formulated as a text string with a pattern constraint to reproduce the same lexical form as xsd:gYear, but not restricted to values from the Gregorian calendar. Note that the value-space is not defined, so a generic OWL2 processor cannot compute ordering relationships of values of this type.
Instance of: rdfs:Datatype
Subclass of:
owl:onDatatype xsd:string ;
  owl:withRestrictions (
    [
      xsd:pattern "-?([1-9][0-9]{3,}|0[0-9]{3})(Z|(\\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"^^xsd:string ;
    ]
  )

Individuals

:Friday | :Monday | :Saturday | :Sunday | :Thursday | :Tuesday | :Wednesday | :unitCentury | :unitDay | :unitDecade | :unitHour | :unitMillenium | :unitMinute | :unitMonth | :unitSecond | :unitWeek | :unitYear | greg:April | greg:August | greg:December | greg:February | greg:January | greg:July | greg:June | greg:March | greg:May | greg:November | greg:October | greg:September

Class Individual
time:DayOfWeek time:Friday
time:Monday
time:Saturday
time:Sunday
time:Thursday
time:Tuesday
time:Wednesday
time:MonthOfYear greg:April
greg:August
greg:December
greg:February
greg:January
greg:July
greg:June
greg:March
greg:May
greg:November
greg:October
greg:September
time:TemporalUnit time:unitCentury
time:unitDay
time:unitDecade
time:unitHour
time:unitMillenium
time:unitMinute
time:unitMonth
time:unitSecond
time:unitWeek
time:unitYear

Examples

DateTimeDescription vs dateTime

The following example illustrates the difference between using :DateTimeDescription and using the XML datatype xsd:dateTimeStamp. An instant that represents the start of a meeting, called ex:meetingStart, happens at 10:30am AEST on 12 Apr 2017 can be expressed using both :inXSDDateTimeStamp and :inDateTime in OWL as:

ex:meetingStart
  a                    :Instant ;
  :inDateTime          ex:meetingStartDescription ;
  :inXSDDateTimeStamp  2017-04-12T10:30:00+10:00 .

ex:meetingStartDescription
  a             :DateTimeDescription ;
  :unitType     :unitMinute ;
  :minute       30 ;
  :hour         10 ;
  :day          "---12"^^xsd:gDay ;
  :dayOfWeek    :Wednesday ;
  :dayOfYear    102 ;
  :week         15 ;
  :month        "--04"^^xsd:gMonth ;
  :monthOfYear  greg:April ;
  :timeZone     <https://www.timeanddate.com/time/zones/aest> ;
  :year         "2017"^^xsd:gYear .

It is much more concise to use the XML Schema datatype xsd:dateTimeStamp. However, using :DateTimeDescription more information can be included directly in a message, such as the "week", "day of week" and "day of year". In the example we can also see that 12/04/2017 is a Wednesday, the month is April, it is the 102nd day of the year, and in the 15th week of the year. Since each field of :DateTimeDescription is separate no computation is required to get the values of these fields for use in reasoning. However, since some calendars, such as religious observationally-based ones, cannot be algorithmically calculated explicit assertion of values for elements of the calendar is required.

The :timeZone property points to a definition of Australian Eastern Standard Time.

Use of temporal reference systems

The use of different temporal reference systems for the same absolute time is illustrated in the following examples. Abby's birthday is an :Instant whose position may be expressed using the conventional XSD xsd:dateTimeStamp type as 2001-05-23T08:20:00+08:00:

ex:AbbyBirthday
  a               :Instant ;
  :inDateTime     ex:AbbyBirthdayHebrew ;
  :inTimePosition ex:AbbyBirthdayUnix ;
  rdfs:label      "Abby's birthdate"^^xsd:string ;
  :inDateTime     ex:AbbyBirthdayGregorian ;
  :inXSDDateTimeStamp  "2001-05-23T08:20:00+08:00"^^xsd:dateTimeStamp ;
.

Using the :DateTimeDescription class, the elements of the date and time using the Gregorian Calendar are split out into separate properties:

ex:AbbyBirthdayGregorian
  a           	:DateTimeDescription ;
  :day        	"---23"^^xsd:gDay ;
  :dayOfWeek  	:Wednesday ;
  :dayOfYear 	"143"^^xsd:nonNegativeInteger ;
  :hour       	"8"^^xsd:nonNegativeInteger ;
  :minute     	"20"^^xsd:nonNegativeInteger ;
  :month      	"--05"^^xsd:gMonth ;
  :monthOfYear 	greg:May ;
  :timeZone   	<https://www.timeanddate.com/time/zones/awst> ;
  :unitType   	:unitMinute ;
  :year       	"2001"^^xsd:gYear ;
.

The :GeneralDateTimeDescription class may be used to express the same date using the Hebrew calendar:

ex:AbbyBirthdayHebrew
  a         	:GeneralDateTimeDescription ;
  :day      	"---01"^^:generalDay ;
  :hasTRS   	<http://dbpedia.org/resource/Hebrew_calendar> ;
  :month    	"--03"^^:generalMonth ;
  :monthOfYear 	ex:Sivan ;
  :year     	"5761"^^:generalYear ;
  :unitType 	:unitDay ;
.

The :TimePosition class may be used to express the same position in Unix time (also known as Posix time or Epoch time) (i.e. the number of seconds since the beginning of 1st January 1970):

ex:AbbyBirthdayUnix
  a                 :TimePosition ;
  :hasTRS           <http://dbpedia.org/resource/Unix_time> ;
  :numericPosition  990577200 ;
  rdfs:label        "Abby's birthdate in Unix time"^^xsd:string ;
.

Each of these examples refers to either a temporal reference system or time zone described externally, using its URI. RDF representations are available from DBPedia (e.g. http://dbpedia.org/resource/Unix_time) though these do not have specific time semantics.

Similar to the way that :DateTimeDescription is a derived from :GeneralDateTimeDescription by fixing the :TRS to the Gregorian system, a specialized class UnixTime may be derived from :TimePosition by fixing the value of its reference system to the Unix time system:

ex:UnixTime
  rdfs:subClassOf time:TimePosition ;
  rdfs:subClassOf [
      rdf:type owl:Restriction ;
      owl:hasValue <http://dbpedia.org/resource/Unix_time> ;
      owl:onProperty time:hasTRS ;
    ] ;
.

The RDF representation of this example is available here.

Temporal precision

For the purposes of radiocarbon dating (which is the technique used in geological age determination for materials up to around 60,000 years old) 'the Present' is conventionally fixed at 1950 [[rc-14]]. This can be described as an individual :Instant, with its position expressed using any of the three alternatives:

geol:Present
  a :Instant ;
  :inDateTime [
    a :DateTimeDescription ;
    :unitType :unitYear ;
    :year "1950"^^xsd:gYear ;
  ] ;
  :inTimePosition [
    a :TimePosition ;
    :hasTRS <http://www.opengis.net/def/crs/OGC/0/ChronometricGeologicTime> ;
    :numericPosition 0.0 ;
  ] ;
  :inXSDDateTimeStamp "1950-01-01T00:00:00Z"^^xsd:dateTimeStamp ;
  rdfs:label "The present"^^xsd:string ;
.

Expressed using :DateTimeDescription the :unitType - which determines the precision - is set to :unitYear, and only the :year element is provided in the value. The TRS value is not provided explicitly, as it is fixed in the ontology description to http://www.opengis.net/def/uom/ISO-8601/0/Gregorian. In the :TimePosition variant, the TRS is given as http://www.opengis.net/def/crs/OGC/0/ChronometricGeologicTime which has units of millions of years, starting from the present, positive backwards. For the value expressed using xsd:dateTimeStamp the position within the year is set arbitrarily to midnight at the beginning of 1st January. This level of precision in this case is spurious, but is required to satisfy the lexical pattern of the datatype.

Since the :numericPosition, :second properties have the datatype of xsd:decimal, the position of a :Instant or the duration of a :TemporalEntity may be represented with a precision of fractions of seconds if required. For example, a database timestamp with a precision of milliseconds can be expressed as follows:

ex:DatabaseTimeStamp
  a :Instant ;
  :inXSDDateTimeStamp "2015-11-01T17:58:16.102Z"^^xsd:dateTimeStamp ;
  :inDateTime [
      a :DateTimeDescription ;
      :day "---01"^^xsd:gDay ;
      :hour "17"^^xsd:nonNegativeInteger ;
      :minute "58"^^xsd:nonNegativeInteger ;
      :month "--11"^^xsd:gMonth ;
      :second 16.102 ;
      :timeZone <http://dbpedia.org/page/Coordinated_Universal_Time> ;
      :year "2015"^^xsd:gYear ;
    ] ;
  :inDateTime [
      a ex:GPSTime ;
      :second 64696.102 ;
      :week "1834"^^xsd:nonNegativeInteger ;
    ] ;
.

where ex:GPSTime specializes :GeneralDateTimeDescription by setting the :unitType to :unitSecond, the :hasTRS to the GPS timekeeping system, and suppressing all other properties except for :week and :second:

ex:GPSTime
  rdf:type owl:Class ;
  rdfs:comment "GPS Time is the number of seconds since an epoch in 1980, encoded as the number of weeks + seconds into the week" ;
  rdfs:subClassOf time:GeneralDateTimeDescription ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "0"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :day ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "0"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :dayOfWeek ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "0"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :dayOfYear ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "0"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :hour ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "0"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :minute ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "0"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :month ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "0"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :monthOfYear ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "0"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :timeZone ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "0"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :year ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "1"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :second ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:cardinality "1"^^xsd:nonNegativeInteger ; 
 	owl:onProperty :week ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:hasValue :unitSecond ; 
 	owl:onProperty :unitType ; ] ;
  rdfs:subClassOf [ a owl:Restriction ; 
 	owl:hasValue <https://en.wikipedia.org/wiki/Global_Positioning_System#Timekeeping> ; 
 	owl:onProperty :hasTRS ; ] ;
.

iCalendar

iCalendar [[rfc5545]] is a widely supported standard for personal data interchange. It provides the definition of a common format for openly exchanging calendaring and scheduling information across the Internet. The representation of temporal concepts in this time ontology can be straightforwardly mapped to iCalendar. For example, duration of 15 days, 5 hours and 20 seconds is represented in iCalendar as P15DT5H0M20S, which can be represented in the time ontology as:

:hasDurationDescription
  a         :DurationDescription ;
  :seconds  20 ;
  :hours    5 ;
  :days     15 .

The iCalendar homepage features the example of Abraham Lincoln's birthday as celebrated in 2008. This may be represented in multiple ways using OWL-Time, including the following.

As a :DateTimeInterval using the :DateTimeDescription form:

_:DTI-1
  rdf:type :DateTimeInterval ;
  dc:coverage """LOCATION:Hodgenville, Kentucky
    GEO:37.5739497;-85.7399606""" ;
  dc:date "2015-04-21T14:14:03.00"^^xsd:dateTimeStamp ;
  dc:description """Born February 12\\, 1809\\nSixteenth President (1861-1865)
    http://AmericanHistoryCalendar.com""" ;
  dc:subject "Civil War People" ;
  dc:subject "U.S. Presidents" ;
  rdfs:label "Abraham Lincoln" ;
  skos:closeMatch <2008-04-28-04-15-56-62-@americanhistorycalendar.com> ;
  :hasDateTimeDescription [
    rdf:type :DateTimeDescription ;
    :day "---12"^^xsd:gDay ;
    :hasTRS <http://www.opengis.net/def/uom/ISO-8601/0/Gregorian> ;
    :month "--02"^^xsd:gMonth ;
    :unitType :unitDay ;
    :year "2008"^^xsd:gYear ;
  ] ;
.

The boundaries of the interval are implicitly the beginning and end of the day specified in the :DateTimeDescription.

As a :TemporalEntity using the :TimePosition to define the beginning and end:

_:TE-2
  rdf:type :TemporalEntity ;
  rdfs:label "Abraham Lincoln" ;
  :hasBeginning [
    rdf:type :Instant ;
    :inTimePosition [
      rdf:type :TimePosition ;
      :hasTRS <http://dbpedia.org/resource/Unix_time> ;
      :numericPosition "1202752800"^^xsd:decimal ;
    ] ;
  ] ;
  :hasDuration [
    rdf:type :Duration ;
    :numericDuration "1"^^xsd:decimal ;
    :unitType :unitDay ;
  ] ;
  :hasEnd [
    rdf:type :Instant ;
    :inTimePosition [
      rdf:type :TimePosition ;
      :hasTRS <http://dbpedia.org/resource/Unix_time> ;
      :numericPosition "1202839200"^^xsd:decimal ;
    ] ;
  ] ;
.

In this formulation, the length of the entity is explicit, as the value of the :hasDuration property.

Several other formulations are possible, some of which are shown in the RDF representation is available here.

Geologic timescale

The geologic timescale is defined as a set of named intervals arranged in a hierarchy, such that there is only one subdivision of the intervals of each rank (e.g. 'Era') by a set of intervals of the next rank (in this case 'Period') [[cr-05]]. Since the relative ordering is well-defined this graph can therefore serve as an ordinal temporal reference system. Fig. 5 shows how the geologic timescale can be expressed as a set of :ProperIntervals related to each other using only :intervalMetBy, :intervalStartedBy, :intervalFinishedBy. Many other interval relationships follow logically from the ones shown (for example 'Neogene Period' :intervalDuring 'Cenozoic Era') but the ones shown are sufficient to describe the full topology.

(Part of) the international chronostratigraphic chart, formalized as a set of proper intervals
Part of the geologic timescale formalized as ProperIntervals, with ordering relationships described using the predicates defined in this ontology.

For example, the 'Archean Eon' is a :ProperInterval described as follows:

geol:Archean
  rdf:type            :ProperInterval ;
  :hasBeginning       geol:BaseArchean ;
  :hasEnd             geol:BaseProterozoic ;
  :intervalMeets      geol:Proterozoic ;
  :intervalMetBy      geol:Hadean ;
  rdfs:label          "Archean Eon"^^xsd:string ;
.

The beginning of the Archean Eon is an :Instant, described as follows:

geol:BaseArchean
  rdf:type :Instant ;
  :inTimePosition [
    rdf:type          :TimePosition ;
    :hasTRS           <http://www.opengis.net/def/crs/OGC/0/ChronometricGeologicTime> ;
    :numericPosition  "4000"^^xsd:decimal ;
  ] ;
  rdfs:label "Base of Archean Eon"^^xsd:string ;
. 

Note that the position of this :Instant is specified using a :TimePosition, which is a numeric value relative to the temporal coordinate system indicated as the value of the :hasTRS property.

The RDF representation of this example is available here. The complete (2016) International Chronostratigraphic Chart encoded using OWL-Time is available.

A Use Case for Scheduling

Suppose someone has a telecon scheduled for 6:00pm EST on November 5, 2006. You would like to make an appointment with him for 2:00pm PST on the same day, and expect the meeting to last 45 minutes. Will there be an overlap?

In this use case we can specify the facts about the telecon and the meeting using our ontology in OWL that will allow a temporal reasoner to determine whether there is a conflict:

ex:telecon
  a             :Interval ;
  :hasBeginning ex:teleconStart .

ex:meeting
  a                       :Interval ;
  :hasBeginning           ex:meetingStart ;
  :hasDurationDescription ex:meetingDuration .

ex:teleconStart
  a               :Instant ;
  :inXSDDateTimeStamp  "2006-11-05T18:00:00-5:00"^^xsd:dateTimeStamp .

ex:meetingStart
  a               :Instant ;
  :inXSDDateTimeStamp  "2006-11-05T14:00:00-8:00"^^xsd:dateTimeStamp .

ex:meetingDuration
  a         :DurationDescription ;
  :minutes  45 .

The telecon and the meeting are defined as intervals. :hasBeginning is used for specifying the start times of the meetings. The datetimes are specified using :inXSDDateTimeStamp. The duration of the meeting is specified using the :DurationDescription class.

Alignment of PROV-O with OWL-Time

PROV is a process-flow model. The base class Activity denotes things that occur over a period of time, and act upon or with entities. Activities are ordered within a provenance trace. Thus, an alignment with OWL-Time is natural.

The PROV-O classes prov:Activity and prov:InstantaneousEvent may be conceived as sub-classes of :TemporalEntity and :Instant respectively.

prov:Activity           rdfs:subClassOf    time:TemporalEntity .
prov:InstantaneousEvent rdfs:subClassOf    time:Instant .

The prov:atTime property of an prov:InstantaneousEvent is directly related to :inXSDDateTime.

prov:atTime             rdfs:subPropertyOf time:inXSDDateTime .

However, the Activity start and end properties require a property chain axiom, because the beginning and end of a :TemporalEntity are :Instants rather than compact xsd:dateTimes.

prov:endedAtTime   owl:propertyChainAxiom (
      time:hasEnd
      time:inXSDDateTime
    ) ;
.
prov:startedAtTime owl:propertyChainAxiom (
      time:hasBeginning
      time:inXSDDateTime
    ) ;
.

Security and Privacy

OWL-Time supports the representation of temporal entities and relations within applications that require these concepts. Implementations that produce, maintain, publish or consume temporal information using OWL-Time must take steps to ensure security and privacy considerations are addressed at the application level.


Summary of Classes and Properties in the Time Ontology

Items in italics were added in the 2017 revision of OWL-Time and are not yet widely used. These may be considered features at risk.

Classes (subclass relations)

Properties (sorted by domain value)

Property Name Domain Range
:hasTime :TemporalEntity
:hasBeginning :TemporalEntity :Instant
:hasEnd :TemporalEntity :Instant
:hasTemporalDuration :TemporalEntity :TemporalDuration
:hasDuration :TemporalEntity :Duration
:hasDurationDescription :TemporalEntity :GeneralDurationDescription
:hasXSDDuration :TemporalEntity xsd:duration
:before :TemporalEntity :TemporalEntity
:after :TemporalEntity :TemporalEntity
:inside :Interval :Instant
:intervalEquals :ProperInterval :ProperInterval
:intervalDisjoint :ProperInterval :ProperInterval
:intervalAfter :ProperInterval :ProperInterval
:intervalBefore :ProperInterval :ProperInterval
:intervalMeets :ProperInterval :ProperInterval
:intervalMetBy :ProperInterval :ProperInterval
:intervalOverlaps :ProperInterval :ProperInterval
:intervalOverlappedBy :ProperInterval :ProperInterval
:intervalStarts :ProperInterval :ProperInterval
:intervalStartedBy :ProperInterval :ProperInterval
:intervalFinishes :ProperInterval :ProperInterval
:intervalFinishedBy :ProperInterval :ProperInterval
:intervalContains :ProperInterval :ProperInterval
:intervalDuring :ProperInterval :ProperInterval
:intervalIn :ProperInterval :ProperInterval
:hasDateTimeDescription :DateTimeInterval :GeneralDateTimeDescription
:xsdDateTime (deprecated) :DateTimeInterval xsd:dateTime
:inTemporalPosition :Instant :TemporalPosition
:inTimePosition :Instant :TimePosition
:inDateTime :Instant :GeneralDateTimeDescription
:inXSDDate :Instant xsd:date
:inXSDDateTime (deprecated) :Instant xsd:dateTime
:inXSDDateTimeStamp :Instant xsd:dateTimeStamp
:inXSDgYearMonth :Instant xsd:gYearMonth
:inXSDgYear :Instant xsd:gYear
:numericDuration :Duration xsd:decimal
:unitType :Duration or :GeneralDateTimeDescription :TemporalUnit
:years :GeneralDurationDescription xsd:decimal
:months :GeneralDurationDescription xsd:decimal
:weeks :GeneralDurationDescription xsd:decimal
:days :GeneralDurationDescription xsd:decimal
:hours :GeneralDurationDescription xsd:decimal
:minutes :GeneralDurationDescription xsd:decimal
:seconds :GeneralDurationDescription xsd:decimal
:numericPosition :TimePosition xsd:decimal
:nominalPosition :TimePosition xsd:string
:timeZone :GeneralDateTimeDescription :TimeZone
:year :GeneralDateTimeDescription
:month :GeneralDateTimeDescription
:day :GeneralDateTimeDescription
:hour :GeneralDateTimeDescription xsd:nonNegativeInteger
:minute :GeneralDateTimeDescription xsd:nonNegativeInteger
:second :GeneralDateTimeDescription xsd:decimal
:week :GeneralDateTimeDescription xsd:nonNegativeInteger
:dayOfYear :GeneralDateTimeDescription xsd:nonNegativeInteger
:dayOfWeek :GeneralDateTimeDescription :DayOfWeek
:monthOfYear :GeneralDateTimeDescription :MonthOfYear
:hasTRS :TemporalPosition or :GeneralDurationDescription :TRS

Datatypes

Implementation report

OWL-Time has been put into use in a large number of applications. Some of these are summarized here.

Changes from previous versions

This version of OWL-Time was developed in the Spatial Data on the Web Working Group (a joint activity involving W3C and the Open Geospatial Consortium). The Ontology is derived from the one described in the 2006 Draft [[owl-time-20060927]] though the document has been completely re-written.

2021 update

2017 version

The principal technical changes are as follows:

Wide review

Results of wide review of OWL-Time is summarized here.

Response to Requirements identified in working group analysis

A number of requirements relating to Time were identified in the Spatial Data on the Web Use Cases & Requirements [[sdw-ucr]]. This section provides brief descriptions of how these requirements have been resolved.

Acknowledgements

The editors would like to thank the members of the W3C/OGC Spatial Data on the Web Working Group for their contributions during the development of this document.