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:
: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. :MonthOfYear
and :monthOfYear
complement :DayOfWeek and :dayOfWeek to support vernacular names for months as well as days. :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. 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.
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]].
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
.
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.
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.
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.
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.
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
.
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.
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".
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.
:DateTimeDescription
|
:DateTimeInterval
|
:DayOfWeek
|
:Duration
|
:DurationDescription
|
:GeneralDateTimeDescription
|
:GeneralDurationDescription
|
:Instant
|
:Interval
|
:MonthOfYear
|
:ProperInterval
|
:TemporalDuration
|
:TemporalEntity
|
:TemporalPosition
|
:TemporalUnit
|
:TimePosition
|
:TimeZone
|
:TRS
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.
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.
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.
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 |
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.
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.
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.
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
.
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
.
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.
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]].
Class: | time:TemporalDuration |
---|---|
Definition: | Time extent; duration of a time interval separate from its particular start position |
Instance of: | owl:Class |
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 :TemporalEntity
s.
The properties :hasBeginning
, :hasEnd
and :hasTemporalDuration
(or its sub-properties), support the description of the bounds and extent of a :TemporalEntity
.
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.
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).
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
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]].
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 :ProperInterval
s, 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.
: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
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 |
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 |
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 |
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 |
Property: | time:dayOfYear |
---|---|
Definition: | The number of the day within the year |
Instance of: | owl:DatatypeProperty |
Domain: | time:GeneralDateTimeDescription |
Range: | xsd:nonNegativeInteger |
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 |
Property: | time:hasBeginning |
---|---|
Definition: | Beginning of a temporal entity. |
Instance of: | owl:ObjectProperty |
Domain: | time:TemporalEntity |
Range: | time:Instant |
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 |
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 |
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 |
Property: | time:hasEnd |
---|---|
Definition: | End of a temporal entity. |
Instance of: | owl:ObjectProperty |
Domain: | time:TemporalEntity |
Range: | time:Instant |
Property: | time:hasTemporalDuration |
---|---|
Definition: | Duration of a temporal entity |
Instance of: | owl:ObjectProperty |
Domain: | time:TemporalEntity |
Range: | time:TemporalDuration |
Property: | time:hasTime |
---|---|
Definition: | Supports the association of a temporal entity (instant or interval) to any thing. |
Instance of: | owl:ObjectProperty |
Range: | time:TemporalEntity |
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 |
Property: | time:hasXSDDuration |
---|---|
Definition: | Extent of a temporal entity, expressed using xsd:duration |
Instance of: | owl:DatatypeProperty |
Domain: | time:TemporalEntity |
Range: | xsd:duration |
Property: | time:hour |
---|---|
Definition: | Hour position in a calendar-clock system |
Instance of: | owl:DatatypeProperty |
Domain: | time:GeneralDateTimeDescription |
Range: | xsd:nonNegativeInteger |
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 |
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 |
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 |
Property: | time:inTemporalPosition |
---|---|
Definition: | Position of a time instant |
Instance of: | owl:ObjectProperty |
Domain: | time:Instant |
Range: | time:TemporalPosition |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
Property: | time:inXSDDate |
---|---|
Definition: | Position of an instant, expressed using xsd:date |
Instance of: | owl:DatatypeProperty |
Domain: | time:Instant |
Range: | xsd:date |
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.
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 |
Property: | time:inXSDgYear |
---|---|
Definition: | Position of an instant, expressed using xsd:gYear |
Instance of: | owl:DatatypeProperty |
Domain: | time:Instant |
Range: | xsd:gYear |
Property: | time:inXSDgYearMonth |
---|---|
Definition: | Position of an instant, expressed using xsd:gYearMonth |
Instance of: | owl:DatatypeProperty |
Domain: | time:Instant |
Range: | xsd:gYearMonth |
Property: | time:minute |
---|---|
Definition: | Minute position in a calendar-clock system |
Instance of: | owl:DatatypeProperty |
Domain: | time:GeneralDateTimeDescription |
Range: | xsd:nonNegativeInteger |
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 |
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 |
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 |
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 |
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 |
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 |
Property: | time:numericPosition |
---|---|
Definition: | The (numeric) value indicating position within a temporal coordinate system |
Instance of: | owl:DatatypeProperty |
Domain: | time:TimePosition |
Range: | xsd:decimal |
Property: | time:second |
---|---|
Definition: | Second position in a calendar-clock system. |
Instance of: | owl:DatatypeProperty |
Domain: | time:GeneralDateTimeDescription |
Range: | xsd:decimal |
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 |
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.
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 |
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.
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 |
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.
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 |
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 |
:generalDay
|
:generalMonth
|
:generalYear
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 ; ] ) |
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 ; ] ) |
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 ; ] ) |
: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 |
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.
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.
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 [[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.
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 :ProperInterval
s 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.
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.
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.
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 ) ; .
The link relation types below have been registered by IANA per Section 6.2.1 of [[RFC8288]]:
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.
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.
OWL-Time has been put into use in a large number of applications. Some of these are summarized here.
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.
:after
and :before
:unitCentury
, :unitDecade
, :unitMillenium
:GeneralDateTimeDescription
and :GeneralDurationDescription
are generalizations of the corresponding classes from the 2006 draft, for cases which the temporal reference system is not fixed to the Gregorian Calendar in advance:hasTRS
enables time values to be associated with a temporal reference system, represented by a new ('stub') class :TRS
:TimePosition
and :Duration
are new classes to enable position or duration to be described using a number or nominal value :TemporalPosition
and :TemporalDuration
are introduced as roots of the position and duration class hierarchies:TemporalUnit
is a subclass of :TemporalDuration
:inXSDDateTimeStamp
added, and :inXSDDateTime
deprecated:intervalIn
and :intervalDisjoint
relations added:hasTime
to enable a :TemporalEntity
to be associated with anything :xsdDateTime
deprecated as used on :DateTimeInterval
- difficult/ambiguous encoding:Year
deprecated:January
deprecated:MonthOfYear
class and :monthOfYear
property added. greg:January-greg:December instances added in a separate graph and namespace.:TimeZone
in the main namespace is used instead. The new class is a 'stub' with no properties, to serve as a superclass for any implementationtime:hasXSDDuration
with domain :TemporalEntity
and range xsd:duration
Results of wide review of OWL-Time is summarized here.
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.
time:TemporalEntity
, time:TemporalPosition
, time:TemporalDuration
time:inXSDDateTimeStamp
and Datatypestime:TRS
, time:hasTRS
trs-clock-calendar
, time:TRS
, time:hasTRS
time:TimePosition
, time:nominalPosition
time:hasTime
can be usedtime:Duration
and time:TimePosition
support descriptions of time duration as a scaled number, and time position as a time coordinate. time:TemporalEntity
hierarchy may be used in the description of activities involved in provenance traces. prov:Activity
could itself be modelled as an rdfs:subClassOf
of time:TemporalEntity
. Allen's interval algebra described in topology can support the description of temporal relationships between activities in a provenance trace. However, these applications have not been explicitly modelled in this document.time:DayOfWeek
and time:MonthOfYear
have labels in several languages in the RDF artefacts. 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.