diff --git a/examples/illustrations/existence_intervals/README.md b/examples/illustrations/existence_intervals/README.md new file mode 100644 index 00000000..07ee8a82 --- /dev/null +++ b/examples/illustrations/existence_intervals/README.md @@ -0,0 +1,81 @@ + + +# 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). 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/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_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.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.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 + + +