diff --git a/README.md b/README.md index 1cf9c9aa..cde217d1 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ Mapping notes & respective JSON-LD output: - [Device](examples/illustrations/device/device.json) - [EXIF Data](examples/illustrations/exif_data/exif_data.json) - [Event](examples/illustrations/event/event.json) +- [Existence intervals](examples/illustrations/existence_intervals/existence_intervals.json) ([*info*](examples/illustrations/existence_intervals/)) - [Files](examples/illustrations/file/file.json) (*[info](examples/illustrations/file/)*) - [Forensic Lifecycle](examples/illustrations/forensic_lifecycle/forensic_lifecycle.json) ([*info*](examples/illustrations/forensic_lifecycle/)) - [Location](examples/illustrations/location/location.json) diff --git a/examples/illustrations/existence_intervals/Makefile b/examples/illustrations/existence_intervals/Makefile new file mode 100644 index 00000000..3487cf68 --- /dev/null +++ b/examples/illustrations/existence_intervals/Makefile @@ -0,0 +1,17 @@ +#!/usr/bin/make -f + +# Portions of this file contributed by NIST are governed by the +# following statement: +# +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to Title 17 Section 105 of the +# United States Code, this software is not subject to copyright +# protection within the United States. NIST assumes no responsibility +# whatsoever for its use by other parties, and makes no guarantees, +# expressed or implied, about its quality, reliability, or any other +# characteristic. +# +# We would appreciate acknowledgement if the software is used. + +include ../src/illustration-basedir.mk diff --git a/examples/illustrations/existence_intervals/README.md b/examples/illustrations/existence_intervals/README.md new file mode 100644 index 00000000..e0e0d08f --- /dev/null +++ b/examples/illustrations/existence_intervals/README.md @@ -0,0 +1,117 @@ + + +# Existence Intervals + +This example demonstrates various ontologies' representations of the period of time in which a thing exists. Some effort is put into describing differences in representing the existence of endurants vs. perdurants. + +Take as an example a thing---and the thing might be endurant, perdurant, physical, cyber, thought, event, etc.---that exists starting at a time `t0` and ceases to exist at a time `t1`. In the illustrations below, the start will be labeled `t0`, the end `t1`, the interval bounded by start and end `i`, the thing `t`. + +The starting time of this thing is `2020-01-02T03:04:05.6789Z`. The ending time of this thing is `2021-02-03T04:05:06.7890Z`. Each illustration goes as far as it can with concepts in the referenced ontology to eventually tie the thing `t` to these timestamp-literals. Where available, reified "instant" objects will be favored over literal-valued properties. + +![Abstraction - all](figures/abstraction_all.svg) + +This suggests a mapping table: + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | ... | +| `ex:ExistenceInterval` | ... | +| `ex:Instant` | ... | +| `kb:T ex:hasExistenceInterval kb:E` | ... | +| `kb:T ex:existsAtAndSince kb:T0` | ... | +| `kb:T ex:existsUntil kb:T1` | ... | +| `kb:T ex:hasCreationTimestamp "2020-..."^^xsd:dateTime` | ... | +| `kb:T ex:hasTerminationTimestamp "2021-..."^^xsd:dateTime` | ... | +| `kb:E ex:hasStart kb:T0` | ... | +| `kb:E ex:hasEnd kb:T1` | ... | +| `kb:E ex:hasBeginningTimestamp "2020-..."^^xsd:dateTime` | ... | +| `kb:E ex:hasEndingTimestamp "2021-..."^^xsd:dateTime` | ... | +| `kb:T0 ex:hasTimestamp "2020-..."^^xsd:dateTime` | ... | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | ... | + +The mapping table is filled in for the various ontologies below with: + +* Corresponding statements (class IRIs or full triples); +* "N/A", for not-**available** when a concept is known to not be mappable now, typically because no corresponding class or property is currently defined; and +* "TBD", when a design decision can be taken, typically because of a potential class- or property-equality declaration. + +Note that "N/A" does not mean that a mapping is not possible. It only means that classes and properties are not defined at the present moment. + + + + +## UCO 1.3.0 + +UCO declares two property-pairs setting time boundaries: + +* `core:startTime` and `core:endTime`, used to bound `core:Event`s and `core:Relationship`s. +* `action:startTime` and `action:endTime`, used to bound `action:Action`s. + +The following table shows the time coverage for the three UCO classes that currently encode constraints on time properties: + +| UCO Class | Figure | +| --- | --- | +| `uco-action:Action` | ![Abstraction - UCO Action](figures/abstraction_uco_1_3_0_action.svg) | +| `uco-core:Event` | ![Abstraction - UCO Event](figures/abstraction_uco_1_3_0_event.svg) | +| `uco-core:Relationship` | ![Abstraction - UCO Relationship](figures/abstraction_uco_1_3_0_relationship.svg) | + +The mapping for `uco-action:Action` would be as follows. + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | `uco-action:Action` | +| `ex:ExistenceInterval` | TBD | +| `ex:Instant` | N/A | +| `kb:T ex:hasExistenceInterval kb:E` | TBD | +| `kb:T ex:existsAtAndSince kb:T0` | N/A | +| `kb:T ex:existsUntil kb:T1` | N/A | +| `kb:T ex:hasCreationTimestamp "2020-..."^^xsd:dateTime` | `kb:T uco-action:startTime "2020-..."^^xsd:dateTime` | +| `kb:T ex:hasTerminationTimestamp "2021-..."^^xsd:dateTime` | `kb:T uco-action:endTime "2021-..."^^xsd:dateTime` | +| `kb:E ex:hasStart kb:T0` | N/A | +| `kb:E ex:hasEnd kb:T1` | N/A | +| `kb:E ex:hasBeginningTimestamp "2020-..."^^xsd:dateTime` | TBD | +| `kb:E ex:hasEndingTimestamp "2021-..."^^xsd:dateTime` | TBD | +| `kb:T0 ex:hasTimestamp "2020-..."^^xsd:dateTime` | N/A | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | N/A | + +`uco-core:Event` and `uco-core:Relationship` will look similar. + +The "TBD"s above pertain to a decision UCO can make on how endurants and perdurants relate to time, under discussion [UCO Issue 544](https://github.com/ucoProject/UCO/issues/544). + + +## OWL-Time + +OWL-Time provides the class `time:TemporalEntity`. Guidance offers options on how to relate time-things (`time:TemporalEntity`) to things that exist in time (like an activity or an object), drawn from [Section 3.1](https://www.w3.org/TR/owl-time/#topology). + +> 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 following figure shows the time coverage for the general usage of `time:TemporalEntity`: + +![Abstraction - OWL-Time Temporal Entity](figures/abstraction_time.svg) + +The mapping for `time:TemporalEntity` would be as follows. + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | `owl:Thing` | +| `ex:ExistenceInterval` | `time:TemporalEntity` | +| `ex:Instant` | `time:Instant` | +| `kb:T ex:hasExistenceInterval kb:E` | `kb:T time:hasTime kb:E` | +| `kb:T ex:existsAtAndSince kb:T0` | N/A | +| `kb:T ex:existsUntil kb:T1` | N/A | +| `kb:T ex:hasCreationTimestamp "2020-..."^^xsd:dateTime` | N/A | +| `kb:T ex:hasTerminationTimestamp "2021-..."^^xsd:dateTime` | N/A | +| `kb:E ex:hasStart kb:T0` | `kb:E time:hasBeginning kb:T0` | +| `kb:E ex:hasEnd kb:T1` | `kb:E time:hasEnd kb:T1` | +| `kb:E ex:hasBeginningTimestamp "2020-..."^^xsd:dateTime` | N/A | +| `kb:E ex:hasEndingTimestamp "2021-..."^^xsd:dateTime` | N/A | +| `kb:T0 ex:hasTimestamp "2020-..."^^xsd:dateTime` | `kb:T0 time:inXSDDateTime "2020-..."^^xsd:dateTime` | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | `kb:T1 time:inXSDDateTime "2021-..."^^xsd:dateTime` | + +Some of the examples in the OWL-TIME specification include demonstrations of `time:TemporalEntity` that allow for endurants and perdurants as direct subclasses. Note that the examples section is non-normative. + +* [5.4, "iCalendar"](https://www.w3.org/TR/owl-time/#iCal) instantiates the endurant "Abraham Lincoln" (node `_:TE-2`). +* [5.6, "A Use Case for Scheduling"](https://www.w3.org/TR/owl-time/#scheduling) instantiates perdurants some teleconference and some meeting (nodes `ex:telecon` and `ex:meeting`, respectively). +* [5.7, "Alignment of PROV-O with OWL-Time"](https://www.w3.org/TR/owl-time/#time-prov) states that `prov:Activity` and `prov:InstantaneousEvent` can be subclasses of `time:TemporalEntity` and `time:Instant`, respectively. diff --git a/examples/illustrations/existence_intervals/drafting.ttl b/examples/illustrations/existence_intervals/drafting.ttl new file mode 100644 index 00000000..585a2193 --- /dev/null +++ b/examples/illustrations/existence_intervals/drafting.ttl @@ -0,0 +1,86 @@ +@prefix drafting: . +@prefix ex: . +@prefix gufo: . +@prefix owl: . +@prefix prov: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . + +ex:ExistenceInterval + a owl:Class ; + rdfs:subClassOf owl:Thing ; + . + +ex:Instant + a owl:Class ; + rdfs:subClassOf owl:Thing ; + . + +ex:TimeBoundedThing + a owl:Class ; + rdfs:subClassOf owl:Thing ; + rdfs:comment "A thing with a time-bounded existence."@en ; + . + +ex:existsAtAndSince + a owl:ObjectProperty ; + rdfs:domain ex:TimeBoundedThing ; + rdfs:range ex:Instant ; + . + +ex:existsUntil + a owl:ObjectProperty ; + rdfs:domain ex:TimeBoundedThing ; + rdfs:range ex:Instant ; + . + +ex:hasBeginningTimestamp + a owl:DatatypeProperty ; + rdfs:domain ex:TimeBoundedThing ; + rdfs:range xsd:dateTime ; + . + +ex:hasCreationTimestamp + a owl:DatatypeProperty ; + rdfs:domain ex:TimeBoundedThing ; + rdfs:range xsd:dateTime ; + . + +ex:hasEnd + a owl:ObjectProperty ; + rdfs:domain ex:ExistenceInterval ; + rdfs:range ex:Instant ; + . + +ex:hasEndingTimestamp + a owl:DatatypeProperty ; + rdfs:domain ex:TimeBoundedThing ; + rdfs:range xsd:dateTime ; + . + +ex:hasExistenceInterval + a owl:ObjectProperty ; + rdfs:domain ex:TimeBoundedThing ; + rdfs:range ex:ExistenceInterval ; + . + +ex:hasStart + a owl:ObjectProperty ; + rdfs:domain ex:ExistenceInterval ; + rdfs:range ex:Instant ; + . + +ex:hasTerminationTimestamp + a owl:DatatypeProperty ; + rdfs:domain ex:TimeBoundedThing ; + rdfs:range xsd:dateTime ; + . + +ex:hasTimestamp + a owl:DatatypeProperty ; + rdfs:domain ex:Instant ; + rdfs:range xsd:dateTime ; + . + diff --git a/examples/illustrations/existence_intervals/existence_intervals.json b/examples/illustrations/existence_intervals/existence_intervals.json new file mode 100644 index 00000000..9af2375d --- /dev/null +++ b/examples/illustrations/existence_intervals/existence_intervals.json @@ -0,0 +1,80 @@ +{ + "@context": { + "drafting": "http://example.org/ontology/drafting/", + "ex": "http://example.org/ontology/example/", + "gufo": "http://purl.org/nemo/gufo#", + "kb": "http://example.org/kb/", + "obo": "http://purl.obolibrary.org/obo/", + "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": "http://www.w3.org/2006/time#", + "xsd": "http://www.w3.org/2001/XMLSchema#" + }, + "@graph": [ + { + "@id": "kb:TimeBoundThing-bbd18617-4118-4376-ad0c-19fb729a9b54", + "@type": "ex:TimeBoundedThing", + "ex:existsAtAndSince": { + "@id": "kb:Instant-ef0da4b8-d014-4142-b9f5-b0a0091965b8" + }, + "ex:existsUntil": { + "@id": "kb:Instant-a9dd29d9-c854-4cdd-917a-7de5226b389b" + }, + "ex:hasCreationTimestamp": { + "@type": "xsd:dateTime", + "@value": "2020-01-02T03:04:05.6789Z" + }, + "ex:hasExistenceInterval": { + "@id": "kb:ExistenceInterval-03c8fef4-dac9-4f17-bc98-2ef468390daa" + }, + "ex:hasTerminationTimestamp": { + "@type": "xsd:dateTime", + "@value": "2021-02-03T04:05:06.7890Z" + }, + "rdfs:comment": "A thing with a time-bounded existence.", + "rdfs:label": "T" + }, + { + "@id": "kb:ExistenceInterval-03c8fef4-dac9-4f17-bc98-2ef468390daa", + "@type": "ex:ExistenceInterval", + "ex:hasBeginningTimestamp": { + "@type": "xsd:dateTime", + "@value": "2020-01-02T03:04:05.6789Z" + }, + "ex:hasEnd": { + "@id": "kb:Instant-a9dd29d9-c854-4cdd-917a-7de5226b389b" + }, + "ex:hasEndingTimestamp": { + "@type": "xsd:dateTime", + "@value": "2021-02-03T04:05:06.7890Z" + }, + "ex:hasStart": { + "@id": "kb:Instant-ef0da4b8-d014-4142-b9f5-b0a0091965b8" + }, + "rdfs:comment": "The existence interval of T.", + "rdfs:label": "E" + }, + { + "@id": "kb:Instant-ef0da4b8-d014-4142-b9f5-b0a0091965b8", + "@type": "ex:Instant", + "ex:hasTimestamp": { + "@type": "xsd:dateTime", + "@value": "2020-01-02T03:04:05.6789Z" + }, + "rdfs:comment": "The instant that is the beginning of E.", + "rdfs:label": "T0" + }, + { + "@id": "kb:Instant-a9dd29d9-c854-4cdd-917a-7de5226b389b", + "@type": "ex:Instant", + "ex:hasTimestamp": { + "@type": "xsd:dateTime", + "@value": "2021-02-03T04:05:06.7890Z" + }, + "rdfs:comment": "The instant that is the end of E.", + "rdfs:label": "T1" + } + ] +} diff --git a/examples/illustrations/existence_intervals/existence_intervals_validation-develop-2.0.0.ttl b/examples/illustrations/existence_intervals/existence_intervals_validation-develop-2.0.0.ttl new file mode 100644 index 00000000..33496ff0 --- /dev/null +++ b/examples/illustrations/existence_intervals/existence_intervals_validation-develop-2.0.0.ttl @@ -0,0 +1,11 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . + +[] + a sh:ValidationReport ; + sh:conforms "true"^^xsd:boolean ; + . + diff --git a/examples/illustrations/existence_intervals/existence_intervals_validation-develop.ttl b/examples/illustrations/existence_intervals/existence_intervals_validation-develop.ttl new file mode 100644 index 00000000..33496ff0 --- /dev/null +++ b/examples/illustrations/existence_intervals/existence_intervals_validation-develop.ttl @@ -0,0 +1,11 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . + +[] + a sh:ValidationReport ; + sh:conforms "true"^^xsd:boolean ; + . + diff --git a/examples/illustrations/existence_intervals/existence_intervals_validation-unstable-2.0.0.ttl b/examples/illustrations/existence_intervals/existence_intervals_validation-unstable-2.0.0.ttl new file mode 100644 index 00000000..33496ff0 --- /dev/null +++ b/examples/illustrations/existence_intervals/existence_intervals_validation-unstable-2.0.0.ttl @@ -0,0 +1,11 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . + +[] + a sh:ValidationReport ; + sh:conforms "true"^^xsd:boolean ; + . + diff --git a/examples/illustrations/existence_intervals/existence_intervals_validation-unstable.ttl b/examples/illustrations/existence_intervals/existence_intervals_validation-unstable.ttl new file mode 100644 index 00000000..33496ff0 --- /dev/null +++ b/examples/illustrations/existence_intervals/existence_intervals_validation-unstable.ttl @@ -0,0 +1,11 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . + +[] + a sh:ValidationReport ; + sh:conforms "true"^^xsd:boolean ; + . + diff --git a/examples/illustrations/existence_intervals/existence_intervals_validation.ttl b/examples/illustrations/existence_intervals/existence_intervals_validation.ttl new file mode 100644 index 00000000..33496ff0 --- /dev/null +++ b/examples/illustrations/existence_intervals/existence_intervals_validation.ttl @@ -0,0 +1,11 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix sh: . +@prefix xsd: . + +[] + a sh:ValidationReport ; + sh:conforms "true"^^xsd:boolean ; + . + diff --git a/examples/illustrations/existence_intervals/figures/Makefile b/examples/illustrations/existence_intervals/figures/Makefile new file mode 100644 index 00000000..57fcb3ad --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/Makefile @@ -0,0 +1,42 @@ +#!/usr/bin/make -f + +# Portions of this file contributed by NIST are governed by the +# following statement: +# +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to Title 17 Section 105 of the +# United States Code, this software is not subject to copyright +# protection within the United States. NIST assumes no responsibility +# whatsoever for its use by other parties, and makes no guarantees, +# expressed or implied, about its quality, reliability, or any other +# characteristic. +# +# We would appreciate acknowledgement if the software is used. + +SHELL := /bin/bash + +top_srcdir := $(shell cd ../../../.. ; pwd) + +all: \ + abstraction_all.svg \ + abstraction_time.svg \ + abstraction_uco_1_3_0_action.svg \ + abstraction_uco_1_3_0_event.svg \ + abstraction_uco_1_3_0_relationship.svg + +%.svg: \ + %.dot + dot \ + -T svg \ + -o _$@ \ + $< + mv _$@ $@ + +check: \ + all + +clean: + @rm -f \ + *.dot \ + *.svg diff --git a/examples/illustrations/existence_intervals/figures/abstraction_all.dot b/examples/illustrations/existence_intervals/figures/abstraction_all.dot new file mode 100644 index 00000000..e42a3447 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_all.dot @@ -0,0 +1,25 @@ +digraph "abstraction" { + n_t [label="T (object):\nAn owl:Thing."] ; + + n_e [label="E (object):\nThe existence interval of T."] ; + + n_t0 [label="T0 (object):\nThe instant that is the beginning of E."]; + n_t1 [label="T1 (object):\nThe instant that is the end of E."]; + + l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box"]; + l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" shape="box"]; + + n_t -> n_e [label="T hasExistenceInterval E"] ; + n_t -> n_t0 [label="T existsAtAndSince T0"] ; + n_t -> n_t1 [label="T existsUntil T1"] ; + n_t -> l_ts0 [label="T hasCreationTimestamp ts0"]; + n_t -> l_ts1 [label="T hasTerminationTimestamp ts1"]; + + n_e -> n_t0 [label="E hasStart T0"]; + n_e -> n_t1 [label="E hasEnd T1"]; + n_e -> l_ts0 [label="E hasBeginningTimestamp ts0"] ; + n_e -> l_ts1 [label="E hasEndingTimestamp ts1"] ; + + n_t0 -> l_ts0 [label="T0 hasTimestamp ts0"]; + n_t1 -> l_ts1 [label="T1 hasTimestamp ts1"]; +} diff --git a/examples/illustrations/existence_intervals/figures/abstraction_all.svg b/examples/illustrations/existence_intervals/figures/abstraction_all.svg new file mode 100644 index 00000000..c8bfba8c --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_all.svg @@ -0,0 +1,132 @@ + + + + + + +abstraction + + + +n_t + +T (object): +An owl:Thing. + + + +n_e + +E (object): +The existence interval of T. + + + +n_t->n_e + + +T hasExistenceInterval E + + + +n_t0 + +T0 (object): +The instant that is the beginning of E. + + + +n_t->n_t0 + + +T existsAtAndSince T0 + + + +n_t1 + +T1 (object): +The instant that is the end of E. + + + +n_t->n_t1 + + +T existsUntil T1 + + + +l_ts0 + +ts0 (literal): +2020-01-02T03:04:05.6789Z + + + +n_t->l_ts0 + + +T hasCreationTimestamp ts0 + + + +l_ts1 + +ts1 (literal): +2021-02-03T04:05:06.7890Z + + + +n_t->l_ts1 + + +T hasTerminationTimestamp ts1 + + + +n_e->n_t0 + + +E hasStart T0 + + + +n_e->n_t1 + + +E hasEnd T1 + + + +n_e->l_ts0 + + +E hasBeginningTimestamp ts0 + + + +n_e->l_ts1 + + +E hasEndingTimestamp ts1 + + + +n_t0->l_ts0 + + +T0 hasTimestamp ts0 + + + +n_t1->l_ts1 + + +T1 hasTimestamp ts1 + + + diff --git a/examples/illustrations/existence_intervals/figures/abstraction_time.dot b/examples/illustrations/existence_intervals/figures/abstraction_time.dot new file mode 100644 index 00000000..be35bde1 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_time.dot @@ -0,0 +1,25 @@ +digraph "abstraction" { + n_t [label="T (object):\nAn owl:Thing." color=blue fontcolor=blue] ; + + n_e [label="E (object):\nThe existence interval of T.\ntime:Interval" color=blue fontcolor=blue] ; + + n_t0 [label="T0 (object):\nThe instant that is the beginning of E.\ntime:Instant" color=blue fontcolor=blue]; + n_t1 [label="T1 (object):\nThe instant that is the end of E.\ntime:Instant" color=blue fontcolor=blue]; + + l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box" color=blue fontcolor=blue]; + l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" shape="box" color=blue fontcolor=blue]; + + n_t -> n_e [label="T hasExistenceInterval E\ntime:hasTime" color=blue fontcolor=blue] ; + n_t -> n_t0 [label="T existsAtAndSince T0" color=silver fontcolor=silver] ; + n_t -> n_t1 [label="T existsUntil T1" color=silver fontcolor=silver] ; + n_t -> l_ts0 [label="T hasCreationTimestamp ts0" color=silver fontcolor=silver]; + n_t -> l_ts1 [label="T hasTerminationTimestamp ts1" color=silver fontcolor=silver]; + + n_e -> n_t0 [label="E hasStart T0\ntime:hasBeginning" color=blue fontcolor=blue]; + n_e -> n_t1 [label="E hasEnd T1\ntime:hasEnd" color=blue fontcolor=blue]; + n_e -> l_ts0 [label="E hasBeginningTimestamp ts0" color=silver fontcolor=silver] ; + n_e -> l_ts1 [label="E hasEndingTimestamp ts1" color=silver fontcolor=silver] ; + + n_t0 -> l_ts0 [label="T0 hasTimestamp ts0\ntime:inXSDDateTime (deprecated)\ntime:inXSDDateTimeStamp" color=blue fontcolor=blue]; + n_t1 -> l_ts1 [label="T1 hasTimestamp ts1\ntime:inXSDDateTime (deprecated)\ntime:inXSDDateTimeStamp" color=blue fontcolor=blue]; +} diff --git a/examples/illustrations/existence_intervals/figures/abstraction_time.svg b/examples/illustrations/existence_intervals/figures/abstraction_time.svg new file mode 100644 index 00000000..fc9b7d6c --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_time.svg @@ -0,0 +1,142 @@ + + + + + + +abstraction + + + +n_t + +T (object): +An owl:Thing. + + + +n_e + +E (object): +The existence interval of T. +time:Interval + + + +n_t->n_e + + +T hasExistenceInterval E +time:hasTime + + + +n_t0 + +T0 (object): +The instant that is the beginning of E. +time:Instant + + + +n_t->n_t0 + + +T existsAtAndSince T0 + + + +n_t1 + +T1 (object): +The instant that is the end of E. +time:Instant + + + +n_t->n_t1 + + +T existsUntil T1 + + + +l_ts0 + +ts0 (literal): +2020-01-02T03:04:05.6789Z + + + +n_t->l_ts0 + + +T hasCreationTimestamp ts0 + + + +l_ts1 + +ts1 (literal): +2021-02-03T04:05:06.7890Z + + + +n_t->l_ts1 + + +T hasTerminationTimestamp ts1 + + + +n_e->n_t0 + + +E hasStart T0 +time:hasBeginning + + + +n_e->n_t1 + + +E hasEnd T1 +time:hasEnd + + + +n_e->l_ts0 + + +E hasBeginningTimestamp ts0 + + + +n_e->l_ts1 + + +E hasEndingTimestamp ts1 + + + +n_t0->l_ts0 + + +T0 hasTimestamp ts0 +time:inXSDDateTime (deprecated) +time:inXSDDateTimeStamp + + + +n_t1->l_ts1 + + +T1 hasTimestamp ts1 +time:inXSDDateTime (deprecated) +time:inXSDDateTimeStamp + + + diff --git a/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_action.dot b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_action.dot new file mode 100644 index 00000000..01ac6fb7 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_action.dot @@ -0,0 +1,25 @@ +digraph "abstraction" { + n_t [label="T (object):\nA uco-action:Action" color=blue fontcolor=blue] ; + + n_e [label="E (object):\nThe existence interval of T." color=silver fontcolor=silver] ; + + n_t0 [label="T0 (object):\nThe instant that is the beginning of E." color=silver fontcolor=silver]; + n_t1 [label="T1 (object):\nThe instant that is the end of E." color=silver fontcolor=silver]; + + l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box" color=blue fontcolor=blue]; + l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" shape="box" color=blue fontcolor=blue]; + + n_t -> n_e [label="T hasExistenceInterval E" color=silver fontcolor=silver] ; + n_t -> n_t0 [label="T existsAtAndSince T0" color=silver fontcolor=silver] ; + n_t -> n_t1 [label="T existsUntil T1" color=silver fontcolor=silver] ; + n_t -> l_ts0 [label="T hasCreationTimestamp ts0\nuco-action:startTime" color=blue fontcolor=blue]; + n_t -> l_ts1 [label="T hasTerminationTimestamp ts1\nuco-action:endTime" color=blue fontcolor=blue]; + + n_e -> n_t0 [label="E hasStart T0" color=silver fontcolor=silver]; + n_e -> n_t1 [label="E hasEnd T1" color=silver fontcolor=silver]; + n_e -> l_ts0 [label="E hasBeginningTimestamp ts0" color=silver fontcolor=silver] ; + n_e -> l_ts1 [label="E hasEndingTimestamp ts1" color=silver fontcolor=silver] ; + + n_t0 -> l_ts0 [label="T0 hasTimestamp ts0" color=silver fontcolor=silver]; + n_t1 -> l_ts1 [label="T1 hasTimestamp ts1" color=silver fontcolor=silver]; +} diff --git a/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_action.svg b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_action.svg new file mode 100644 index 00000000..090f8f5c --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_action.svg @@ -0,0 +1,134 @@ + + + + + + +abstraction + + + +n_t + +T (object): +A uco-action:Action + + + +n_e + +E (object): +The existence interval of T. + + + +n_t->n_e + + +T hasExistenceInterval E + + + +n_t0 + +T0 (object): +The instant that is the beginning of E. + + + +n_t->n_t0 + + +T existsAtAndSince T0 + + + +n_t1 + +T1 (object): +The instant that is the end of E. + + + +n_t->n_t1 + + +T existsUntil T1 + + + +l_ts0 + +ts0 (literal): +2020-01-02T03:04:05.6789Z + + + +n_t->l_ts0 + + +T hasCreationTimestamp ts0 +uco-action:startTime + + + +l_ts1 + +ts1 (literal): +2021-02-03T04:05:06.7890Z + + + +n_t->l_ts1 + + +T hasTerminationTimestamp ts1 +uco-action:endTime + + + +n_e->n_t0 + + +E hasStart T0 + + + +n_e->n_t1 + + +E hasEnd T1 + + + +n_e->l_ts0 + + +E hasBeginningTimestamp ts0 + + + +n_e->l_ts1 + + +E hasEndingTimestamp ts1 + + + +n_t0->l_ts0 + + +T0 hasTimestamp ts0 + + + +n_t1->l_ts1 + + +T1 hasTimestamp ts1 + + + diff --git a/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_event.dot b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_event.dot new file mode 100644 index 00000000..aebd0179 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_event.dot @@ -0,0 +1,25 @@ +digraph "abstraction" { + n_t [label="T (object):\nA uco-core:Event" color=blue fontcolor=blue] ; + + n_e [label="E (object):\nThe existence interval of T." color=silver fontcolor=silver] ; + + n_t0 [label="T0 (object):\nThe instant that is the beginning of E." color=silver fontcolor=silver]; + n_t1 [label="T1 (object):\nThe instant that is the end of E." color=silver fontcolor=silver]; + + l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box" color=blue fontcolor=blue]; + l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" shape="box" color=blue fontcolor=blue]; + + n_t -> n_e [label="T hasExistenceInterval E" color=silver fontcolor=silver] ; + n_t -> n_t0 [label="T existsAtAndSince T0" color=silver fontcolor=silver] ; + n_t -> n_t1 [label="T existsUntil T1" color=silver fontcolor=silver] ; + n_t -> l_ts0 [label="T hasCreationTimestamp ts0\nuco-core:startTime" color=blue fontcolor=blue]; + n_t -> l_ts1 [label="T hasTerminationTimestamp ts1\nuco-core:endTime" color=blue fontcolor=blue]; + + n_e -> n_t0 [label="E hasStart T0" color=silver fontcolor=silver]; + n_e -> n_t1 [label="E hasEnd T1" color=silver fontcolor=silver]; + n_e -> l_ts0 [label="E hasBeginningTimestamp ts0" color=silver fontcolor=silver] ; + n_e -> l_ts1 [label="E hasEndingTimestamp ts1" color=silver fontcolor=silver] ; + + n_t0 -> l_ts0 [label="T0 hasTimestamp ts0" color=silver fontcolor=silver]; + n_t1 -> l_ts1 [label="T1 hasTimestamp ts1" color=silver fontcolor=silver]; +} diff --git a/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_event.svg b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_event.svg new file mode 100644 index 00000000..b99f01f7 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_event.svg @@ -0,0 +1,134 @@ + + + + + + +abstraction + + + +n_t + +T (object): +A uco-core:Event + + + +n_e + +E (object): +The existence interval of T. + + + +n_t->n_e + + +T hasExistenceInterval E + + + +n_t0 + +T0 (object): +The instant that is the beginning of E. + + + +n_t->n_t0 + + +T existsAtAndSince T0 + + + +n_t1 + +T1 (object): +The instant that is the end of E. + + + +n_t->n_t1 + + +T existsUntil T1 + + + +l_ts0 + +ts0 (literal): +2020-01-02T03:04:05.6789Z + + + +n_t->l_ts0 + + +T hasCreationTimestamp ts0 +uco-core:startTime + + + +l_ts1 + +ts1 (literal): +2021-02-03T04:05:06.7890Z + + + +n_t->l_ts1 + + +T hasTerminationTimestamp ts1 +uco-core:endTime + + + +n_e->n_t0 + + +E hasStart T0 + + + +n_e->n_t1 + + +E hasEnd T1 + + + +n_e->l_ts0 + + +E hasBeginningTimestamp ts0 + + + +n_e->l_ts1 + + +E hasEndingTimestamp ts1 + + + +n_t0->l_ts0 + + +T0 hasTimestamp ts0 + + + +n_t1->l_ts1 + + +T1 hasTimestamp ts1 + + + diff --git a/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_relationship.dot b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_relationship.dot new file mode 100644 index 00000000..8b067a05 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_relationship.dot @@ -0,0 +1,25 @@ +digraph "abstraction" { + n_t [label="T (object):\nA uco-core:Relationship" color=blue fontcolor=blue] ; + + n_e [label="E (object):\nThe existence interval of T." color=silver fontcolor=silver] ; + + n_t0 [label="T0 (object):\nThe instant that is the beginning of E." color=silver fontcolor=silver]; + n_t1 [label="T1 (object):\nThe instant that is the end of E." color=silver fontcolor=silver]; + + l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box" color=blue fontcolor=blue]; + l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" shape="box" color=blue fontcolor=blue]; + + n_t -> n_e [label="T hasExistenceInterval E" color=silver fontcolor=silver] ; + n_t -> n_t0 [label="T existsAtAndSince T0" color=silver fontcolor=silver] ; + n_t -> n_t1 [label="T existsUntil T1" color=silver fontcolor=silver] ; + n_t -> l_ts0 [label="T hasCreationTimestamp ts0\nuco-core:startTime" color=blue fontcolor=blue]; + n_t -> l_ts1 [label="T hasTerminationTimestamp ts1\nuco-core:endTime" color=blue fontcolor=blue]; + + n_e -> n_t0 [label="E hasStart T0" color=silver fontcolor=silver]; + n_e -> n_t1 [label="E hasEnd T1" color=silver fontcolor=silver]; + n_e -> l_ts0 [label="E hasBeginningTimestamp ts0" color=silver fontcolor=silver] ; + n_e -> l_ts1 [label="E hasEndingTimestamp ts1" color=silver fontcolor=silver] ; + + n_t0 -> l_ts0 [label="T0 hasTimestamp ts0" color=silver fontcolor=silver]; + n_t1 -> l_ts1 [label="T1 hasTimestamp ts1" color=silver fontcolor=silver]; +} diff --git a/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_relationship.svg b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_relationship.svg new file mode 100644 index 00000000..dd90db95 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_relationship.svg @@ -0,0 +1,134 @@ + + + + + + +abstraction + + + +n_t + +T (object): +A uco-core:Relationship + + + +n_e + +E (object): +The existence interval of T. + + + +n_t->n_e + + +T hasExistenceInterval E + + + +n_t0 + +T0 (object): +The instant that is the beginning of E. + + + +n_t->n_t0 + + +T existsAtAndSince T0 + + + +n_t1 + +T1 (object): +The instant that is the end of E. + + + +n_t->n_t1 + + +T existsUntil T1 + + + +l_ts0 + +ts0 (literal): +2020-01-02T03:04:05.6789Z + + + +n_t->l_ts0 + + +T hasCreationTimestamp ts0 +uco-core:startTime + + + +l_ts1 + +ts1 (literal): +2021-02-03T04:05:06.7890Z + + + +n_t->l_ts1 + + +T hasTerminationTimestamp ts1 +uco-core:endTime + + + +n_e->n_t0 + + +E hasStart T0 + + + +n_e->n_t1 + + +E hasEnd T1 + + + +n_e->l_ts0 + + +E hasBeginningTimestamp ts0 + + + +n_e->l_ts1 + + +E hasEndingTimestamp ts1 + + + +n_t0->l_ts0 + + +T0 hasTimestamp ts0 + + + +n_t1->l_ts1 + + +T1 hasTimestamp ts1 + + + diff --git a/examples/illustrations/existence_intervals/src/Makefile b/examples/illustrations/existence_intervals/src/Makefile new file mode 100644 index 00000000..ddd213d7 --- /dev/null +++ b/examples/illustrations/existence_intervals/src/Makefile @@ -0,0 +1,14 @@ +#!/usr/bin/make -f + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +include ../../src/illustration-src.mk diff --git a/examples/illustrations/existence_intervals/src/README.md.in b/examples/illustrations/existence_intervals/src/README.md.in new file mode 100644 index 00000000..e0e0d08f --- /dev/null +++ b/examples/illustrations/existence_intervals/src/README.md.in @@ -0,0 +1,117 @@ + + +# Existence Intervals + +This example demonstrates various ontologies' representations of the period of time in which a thing exists. Some effort is put into describing differences in representing the existence of endurants vs. perdurants. + +Take as an example a thing---and the thing might be endurant, perdurant, physical, cyber, thought, event, etc.---that exists starting at a time `t0` and ceases to exist at a time `t1`. In the illustrations below, the start will be labeled `t0`, the end `t1`, the interval bounded by start and end `i`, the thing `t`. + +The starting time of this thing is `2020-01-02T03:04:05.6789Z`. The ending time of this thing is `2021-02-03T04:05:06.7890Z`. Each illustration goes as far as it can with concepts in the referenced ontology to eventually tie the thing `t` to these timestamp-literals. Where available, reified "instant" objects will be favored over literal-valued properties. + +![Abstraction - all](figures/abstraction_all.svg) + +This suggests a mapping table: + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | ... | +| `ex:ExistenceInterval` | ... | +| `ex:Instant` | ... | +| `kb:T ex:hasExistenceInterval kb:E` | ... | +| `kb:T ex:existsAtAndSince kb:T0` | ... | +| `kb:T ex:existsUntil kb:T1` | ... | +| `kb:T ex:hasCreationTimestamp "2020-..."^^xsd:dateTime` | ... | +| `kb:T ex:hasTerminationTimestamp "2021-..."^^xsd:dateTime` | ... | +| `kb:E ex:hasStart kb:T0` | ... | +| `kb:E ex:hasEnd kb:T1` | ... | +| `kb:E ex:hasBeginningTimestamp "2020-..."^^xsd:dateTime` | ... | +| `kb:E ex:hasEndingTimestamp "2021-..."^^xsd:dateTime` | ... | +| `kb:T0 ex:hasTimestamp "2020-..."^^xsd:dateTime` | ... | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | ... | + +The mapping table is filled in for the various ontologies below with: + +* Corresponding statements (class IRIs or full triples); +* "N/A", for not-**available** when a concept is known to not be mappable now, typically because no corresponding class or property is currently defined; and +* "TBD", when a design decision can be taken, typically because of a potential class- or property-equality declaration. + +Note that "N/A" does not mean that a mapping is not possible. It only means that classes and properties are not defined at the present moment. + + + + +## UCO 1.3.0 + +UCO declares two property-pairs setting time boundaries: + +* `core:startTime` and `core:endTime`, used to bound `core:Event`s and `core:Relationship`s. +* `action:startTime` and `action:endTime`, used to bound `action:Action`s. + +The following table shows the time coverage for the three UCO classes that currently encode constraints on time properties: + +| UCO Class | Figure | +| --- | --- | +| `uco-action:Action` | ![Abstraction - UCO Action](figures/abstraction_uco_1_3_0_action.svg) | +| `uco-core:Event` | ![Abstraction - UCO Event](figures/abstraction_uco_1_3_0_event.svg) | +| `uco-core:Relationship` | ![Abstraction - UCO Relationship](figures/abstraction_uco_1_3_0_relationship.svg) | + +The mapping for `uco-action:Action` would be as follows. + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | `uco-action:Action` | +| `ex:ExistenceInterval` | TBD | +| `ex:Instant` | N/A | +| `kb:T ex:hasExistenceInterval kb:E` | TBD | +| `kb:T ex:existsAtAndSince kb:T0` | N/A | +| `kb:T ex:existsUntil kb:T1` | N/A | +| `kb:T ex:hasCreationTimestamp "2020-..."^^xsd:dateTime` | `kb:T uco-action:startTime "2020-..."^^xsd:dateTime` | +| `kb:T ex:hasTerminationTimestamp "2021-..."^^xsd:dateTime` | `kb:T uco-action:endTime "2021-..."^^xsd:dateTime` | +| `kb:E ex:hasStart kb:T0` | N/A | +| `kb:E ex:hasEnd kb:T1` | N/A | +| `kb:E ex:hasBeginningTimestamp "2020-..."^^xsd:dateTime` | TBD | +| `kb:E ex:hasEndingTimestamp "2021-..."^^xsd:dateTime` | TBD | +| `kb:T0 ex:hasTimestamp "2020-..."^^xsd:dateTime` | N/A | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | N/A | + +`uco-core:Event` and `uco-core:Relationship` will look similar. + +The "TBD"s above pertain to a decision UCO can make on how endurants and perdurants relate to time, under discussion [UCO Issue 544](https://github.com/ucoProject/UCO/issues/544). + + +## OWL-Time + +OWL-Time provides the class `time:TemporalEntity`. Guidance offers options on how to relate time-things (`time:TemporalEntity`) to things that exist in time (like an activity or an object), drawn from [Section 3.1](https://www.w3.org/TR/owl-time/#topology). + +> 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 following figure shows the time coverage for the general usage of `time:TemporalEntity`: + +![Abstraction - OWL-Time Temporal Entity](figures/abstraction_time.svg) + +The mapping for `time:TemporalEntity` would be as follows. + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | `owl:Thing` | +| `ex:ExistenceInterval` | `time:TemporalEntity` | +| `ex:Instant` | `time:Instant` | +| `kb:T ex:hasExistenceInterval kb:E` | `kb:T time:hasTime kb:E` | +| `kb:T ex:existsAtAndSince kb:T0` | N/A | +| `kb:T ex:existsUntil kb:T1` | N/A | +| `kb:T ex:hasCreationTimestamp "2020-..."^^xsd:dateTime` | N/A | +| `kb:T ex:hasTerminationTimestamp "2021-..."^^xsd:dateTime` | N/A | +| `kb:E ex:hasStart kb:T0` | `kb:E time:hasBeginning kb:T0` | +| `kb:E ex:hasEnd kb:T1` | `kb:E time:hasEnd kb:T1` | +| `kb:E ex:hasBeginningTimestamp "2020-..."^^xsd:dateTime` | N/A | +| `kb:E ex:hasEndingTimestamp "2021-..."^^xsd:dateTime` | N/A | +| `kb:T0 ex:hasTimestamp "2020-..."^^xsd:dateTime` | `kb:T0 time:inXSDDateTime "2020-..."^^xsd:dateTime` | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | `kb:T1 time:inXSDDateTime "2021-..."^^xsd:dateTime` | + +Some of the examples in the OWL-TIME specification include demonstrations of `time:TemporalEntity` that allow for endurants and perdurants as direct subclasses. Note that the examples section is non-normative. + +* [5.4, "iCalendar"](https://www.w3.org/TR/owl-time/#iCal) instantiates the endurant "Abraham Lincoln" (node `_:TE-2`). +* [5.6, "A Use Case for Scheduling"](https://www.w3.org/TR/owl-time/#scheduling) instantiates perdurants some teleconference and some meeting (nodes `ex:telecon` and `ex:meeting`, respectively). +* [5.7, "Alignment of PROV-O with OWL-Time"](https://www.w3.org/TR/owl-time/#time-prov) states that `prov:Activity` and `prov:InstantaneousEvent` can be subclasses of `time:TemporalEntity` and `time:Instant`, respectively. diff --git a/examples/illustrations/existence_intervals/src/existence_intervals_base.json b/examples/illustrations/existence_intervals/src/existence_intervals_base.json new file mode 100644 index 00000000..e8651d63 --- /dev/null +++ b/examples/illustrations/existence_intervals/src/existence_intervals_base.json @@ -0,0 +1,80 @@ +{ + "@context": { + "drafting": "http://example.org/ontology/drafting/", + "ex": "http://example.org/ontology/example/", + "kb": "http://example.org/kb/", + "gufo": "http://purl.org/nemo/gufo#", + "obo": "http://purl.obolibrary.org/obo/", + "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": "http://www.w3.org/2006/time#", + "xsd": "http://www.w3.org/2001/XMLSchema#" + }, + "@graph": [ + { + "@id": "kb:TimeBoundThing-bbd18617-4118-4376-ad0c-19fb729a9b54", + "@type": "ex:TimeBoundedThing", + "rdfs:label": "T", + "rdfs:comment": "A thing with a time-bounded existence.", + "ex:hasExistenceInterval": { + "@id": "kb:ExistenceInterval-03c8fef4-dac9-4f17-bc98-2ef468390daa" + }, + "ex:existsAtAndSince": { + "@id": "kb:Instant-ef0da4b8-d014-4142-b9f5-b0a0091965b8" + }, + "ex:existsUntil": { + "@id": "kb:Instant-a9dd29d9-c854-4cdd-917a-7de5226b389b" + }, + "ex:hasCreationTimestamp": { + "@type": "xsd:dateTime", + "@value": "2020-01-02T03:04:05.6789Z" + }, + "ex:hasTerminationTimestamp": { + "@type": "xsd:dateTime", + "@value": "2021-02-03T04:05:06.7890Z" + } + }, + { + "@id": "kb:ExistenceInterval-03c8fef4-dac9-4f17-bc98-2ef468390daa", + "@type": "ex:ExistenceInterval", + "rdfs:label": "E", + "rdfs:comment": "The existence interval of T.", + "ex:hasStart": { + "@id": "kb:Instant-ef0da4b8-d014-4142-b9f5-b0a0091965b8" + }, + "ex:hasEnd": { + "@id": "kb:Instant-a9dd29d9-c854-4cdd-917a-7de5226b389b" + }, + "ex:hasBeginningTimestamp": { + "@type": "xsd:dateTime", + "@value": "2020-01-02T03:04:05.6789Z" + }, + "ex:hasEndingTimestamp": { + "@type": "xsd:dateTime", + "@value": "2021-02-03T04:05:06.7890Z" + } + }, + { + "@id": "kb:Instant-ef0da4b8-d014-4142-b9f5-b0a0091965b8", + "@type": "ex:Instant", + "rdfs:label": "T0", + "rdfs:comment": "The instant that is the beginning of E.", + "ex:hasTimestamp": { + "@type": "xsd:dateTime", + "@value": "2020-01-02T03:04:05.6789Z" + } + }, + { + "@id": "kb:Instant-a9dd29d9-c854-4cdd-917a-7de5226b389b", + "@type": "ex:Instant", + "rdfs:label": "T1", + "rdfs:comment": "The instant that is the end of E.", + "ex:hasTimestamp": { + "@type": "xsd:dateTime", + "@value": "2021-02-03T04:05:06.7890Z" + } + } + ] +}