From b4e51a4189a6959f2af3ec0e8fa8255880e52577 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Wed, 10 Jul 2024 16:29:46 -0400 Subject: [PATCH 1/2] Draft gUFO section of page for intervals of existence A follow-on patch will regenerate Make-managed files. Signed-off-by: Alex Nelson --- .../existence_intervals/figures/Makefile | 1 + .../figures/abstraction_gufo.dot | 25 ++++++++ .../existence_intervals/src/README.md.in | 60 +++++++++++++++++++ ...stence_intervals-gufo-object-instants.json | 24 ++++++++ ...stence_intervals-gufo-object-literals.json | 16 +++++ 5 files changed, 126 insertions(+) create mode 100644 examples/illustrations/existence_intervals/figures/abstraction_gufo.dot create mode 100644 examples/illustrations/existence_intervals/src/existence_intervals-gufo-object-instants.json create mode 100644 examples/illustrations/existence_intervals/src/existence_intervals-gufo-object-literals.json diff --git a/examples/illustrations/existence_intervals/figures/Makefile b/examples/illustrations/existence_intervals/figures/Makefile index 57fcb3a..e9c8dd9 100644 --- a/examples/illustrations/existence_intervals/figures/Makefile +++ b/examples/illustrations/existence_intervals/figures/Makefile @@ -20,6 +20,7 @@ top_srcdir := $(shell cd ../../../.. ; pwd) all: \ abstraction_all.svg \ + abstraction_gufo.svg \ abstraction_time.svg \ abstraction_uco_1_3_0_action.svg \ abstraction_uco_1_3_0_event.svg \ diff --git a/examples/illustrations/existence_intervals/figures/abstraction_gufo.dot b/examples/illustrations/existence_intervals/figures/abstraction_gufo.dot new file mode 100644 index 0000000..c1879bc --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_gufo.dot @@ -0,0 +1,25 @@ +digraph "abstraction" { + n_t [label="T (object):\nA gufo:ConcreteIndividual." 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.\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\nxsd:dateTimeStamp" shape="box" color=blue fontcolor=blue]; + l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z\nxsd:dateTimeStamp" 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\ngufo:hasBeginPoint" color=blue fontcolor=blue] ; + n_t -> n_t1 [label="T existsUntil T1\ngufo:hasEndPoint" color=blue fontcolor=blue] ; + n_t -> l_ts0 [label="T hasCreationTimestamp ts0\ngufo:hasBeginPointInXSDDateTimeStamp" color=blue fontcolor=blue]; + n_t -> l_ts1 [label="T hasTerminationTimestamp ts1\ngufo:hasEndPointInXSDDateTimeStamp" 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\ntime:inXSDDateTimeStamp" color=blue fontcolor=blue]; + n_t1 -> l_ts1 [label="T1 hasTimestamp ts1\ntime:inXSDDateTimeStamp" color=blue fontcolor=blue]; +} diff --git a/examples/illustrations/existence_intervals/src/README.md.in b/examples/illustrations/existence_intervals/src/README.md.in index e0e0d08..6b19c20 100644 --- a/examples/illustrations/existence_intervals/src/README.md.in +++ b/examples/illustrations/existence_intervals/src/README.md.in @@ -115,3 +115,63 @@ Some of the examples in the OWL-TIME specification include demonstrations of `ti * [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. + + +## gUFO + +(gUFO version: [1.0.0](https://github.com/nemo-ufes/gufo/releases/tag/v1.0.0).) + +gUFO's topmost class that describes an object that exists in a period of time is "Concrete Individual" (`gufo:ConcreteIndividual`), defined as the disjoint union of "Endurants," "Events," and "Situations." + +* `gufo:Endurant` corresponds with UCO Issue 535's "Endurant". +* `gufo:Event` corresponds with UCO Issue 535's "Perdurant". +* `gufo:Situation` is left out of scope of this discussion. + +Two properties, "has begin point" and "has end point," assign the first and last instants that any concrete individual exists. The properties have range `time:Instant`, inheriting the vocabulary and entailing the structures of OWL-Time as described above. + +None of the three subclasses of `gufo:ConcreteIndividual` specialize restrictions on those existence-bounding properties. Hence, without loss of generality, we can review a `gufo:Endurant` and see the same time-related applicability for `gufo:Event`. + +This is an endurant (more specifically, a `gufo:Object`) with literal-valued instants describing the creation and termination timestamps TS0 and TS1: + +```json +@EXISTENCE_INTERVALS_GUFO_OBJECT_LITERALS_JSON@ +``` + +This is the same endurant with reified instants housing the beginning and end: + +```json +@EXISTENCE_INTERVALS_GUFO_OBJECT_INSTANTS_JSON@ +``` + +Intervals of existence do not appear to be defined directly in gUFO. Also, since only the first and last instant of a concrete individual are specified, it is also not explicit in gUFO whether an individual's interval of existence needs to be continuous. For instance, a `gufo:Situation` may be seen to hold for a period of time (such as a person being a student in a `gufo:TemporaryInstantiationSituation`), then not hold (e.g., when the person graduates from a school), then hold again (e.g., when the person later enrolls in another school). + +Timestamps are constrained to `xsd:dateTimeStamp`, not `xsd:dateTime`, which is consistent with OWL-Time's deprecation of `time:inXSDDateTime`. For UCO, this would necessitate transcoding `xsd:dateTime` timestamps with a non-OWL, and likely non-SPARQL, mechanism. + +The following figure shows the time coverage for `gufo:ConcreteIndividual`, re-using covering vocabulary from OWL-Time above: + +![Abstraction - gUFO Concrete Individual](figures/abstraction_gufo.svg) + +The mapping for `gufo:ConcreteIndividual` would be as follows: + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | `gufo:ConcreteIndividual` | +| `ex:ExistenceInterval` | N/A | +| `ex:Instant` | `time:Instant` | +| `kb:T ex:hasExistenceInterval kb:E` | N/A | +| `kb:T ex:existsAtAndSince kb:T0` | `gufo:hasBeginPoint` | +| `kb:T ex:existsUntil kb:T1` | `gufo:hasEndPoint` | +| `kb:T ex:hasCreationTimestamp "2020-..."^^xsd:dateTime` | `kb:t gufo:hasBeginPointInXSDDateTimeStamp "2020-..."^^xsd:dateTimeStamp` | +| `kb:T ex:hasTerminationTimestamp "2021-..."^^xsd:dateTime` | `kb:t gufo:hasEndPointInXSDDateTimeStamp "2021-..."^^xsd:dateTimeStamp` | +| `kb:E ex:hasStart kb:T0` | N/A | +| `kb:E ex:hasEnd kb:T1` | N/A | +| `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:inXSDDateTimeStamp "2020-..."^^xsd:dateTimeStamp` | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | `kb:T1 time:inXSDDateTimeStamp "2021-..."^^xsd:dateTimeStamp` | + +_Aside_: A side-by-side view of the gUFO and OWL-Time coverage show that an ontology importing gUFO and OWL-Time has complete coverage of the existence-intervals concepts suggested on this page. + +| OWL-Time | gUFO | +| --- | --- | +| ![Abstraction - OWL-Time Temporal Entity](figures/abstraction_time.svg) | ![Abstraction - gUFO Concrete Individual](figures/abstraction_gufo.svg) | diff --git a/examples/illustrations/existence_intervals/src/existence_intervals-gufo-object-instants.json b/examples/illustrations/existence_intervals/src/existence_intervals-gufo-object-instants.json new file mode 100644 index 0000000..a6eb05f --- /dev/null +++ b/examples/illustrations/existence_intervals/src/existence_intervals-gufo-object-instants.json @@ -0,0 +1,24 @@ +[ + { + "@id": "kb:Object-bee97e78-8e5e-4ffe-9c2b-28e960f84bbc", + "rdfs:label": "T", + "gufo:hasBeginPoint": { + "@id": "kb:Instant-1a250c7b-19c5-4ec4-bed2-d05c9d438e9d", + "@type": "time:Instant", + "rdfs:label": "T0", + "time:inXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2020-01-02T03:04:05.6789Z" + } + }, + "gufo:hasEndPoint": { + "@id": "kb:Instant-bbd8741a-4af8-4358-802b-a6fb8a4cf7dc", + "@type": "time:Instant", + "rdfs:label": "T1", + "time:inXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2021-02-03T04:05:06.7890Z" + } + } + } +] diff --git a/examples/illustrations/existence_intervals/src/existence_intervals-gufo-object-literals.json b/examples/illustrations/existence_intervals/src/existence_intervals-gufo-object-literals.json new file mode 100644 index 0000000..d589455 --- /dev/null +++ b/examples/illustrations/existence_intervals/src/existence_intervals-gufo-object-literals.json @@ -0,0 +1,16 @@ +[ + { + "@id": "kb:Object-bee97e78-8e5e-4ffe-9c2b-28e960f84bbc", + "@type": "gufo:Object", + "rdfs:label": "T", + "rdfs:comment": "A thing with a time-bounded existence.", + "gufo:hasBeginPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2020-01-02T03:04:05.6789Z" + }, + "gufo:hasEndPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2021-02-03T04:05:06.7890Z" + } + } +] From 43afbba8e2ea7311a04af6c6a06a91bb23150181 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Wed, 10 Jul 2024 16:30:05 -0400 Subject: [PATCH 2/2] Regenerate Make-managed files Signed-off-by: Alex Nelson --- .../existence_intervals/README.md | 98 ++++++++++++ .../existence_intervals.json | 36 +++++ .../figures/abstraction_gufo.svg | 142 ++++++++++++++++++ 3 files changed, 276 insertions(+) create mode 100644 examples/illustrations/existence_intervals/figures/abstraction_gufo.svg diff --git a/examples/illustrations/existence_intervals/README.md b/examples/illustrations/existence_intervals/README.md index e0e0d08..c0dd94e 100644 --- a/examples/illustrations/existence_intervals/README.md +++ b/examples/illustrations/existence_intervals/README.md @@ -115,3 +115,101 @@ Some of the examples in the OWL-TIME specification include demonstrations of `ti * [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. + + +## gUFO + +(gUFO version: [1.0.0](https://github.com/nemo-ufes/gufo/releases/tag/v1.0.0).) + +gUFO's topmost class that describes an object that exists in a period of time is "Concrete Individual" (`gufo:ConcreteIndividual`), defined as the disjoint union of "Endurants," "Events," and "Situations." + +* `gufo:Endurant` corresponds with UCO Issue 535's "Endurant". +* `gufo:Event` corresponds with UCO Issue 535's "Perdurant". +* `gufo:Situation` is left out of scope of this discussion. + +Two properties, "has begin point" and "has end point," assign the first and last instants that any concrete individual exists. The properties have range `time:Instant`, inheriting the vocabulary and entailing the structures of OWL-Time as described above. + +None of the three subclasses of `gufo:ConcreteIndividual` specialize restrictions on those existence-bounding properties. Hence, without loss of generality, we can review a `gufo:Endurant` and see the same time-related applicability for `gufo:Event`. + +This is an endurant (more specifically, a `gufo:Object`) with literal-valued instants describing the creation and termination timestamps TS0 and TS1: + +```json +[ + { + "@id": "kb:Object-bee97e78-8e5e-4ffe-9c2b-28e960f84bbc", + "@type": "gufo:Object", + "rdfs:label": "T", + "rdfs:comment": "A thing with a time-bounded existence.", + "gufo:hasBeginPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2020-01-02T03:04:05.6789Z" + }, + "gufo:hasEndPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2021-02-03T04:05:06.7890Z" + } + } +] +``` + +This is the same endurant with reified instants housing the beginning and end: + +```json +[ + { + "@id": "kb:Object-bee97e78-8e5e-4ffe-9c2b-28e960f84bbc", + "rdfs:label": "T", + "gufo:hasBeginPoint": { + "@id": "kb:Instant-1a250c7b-19c5-4ec4-bed2-d05c9d438e9d", + "@type": "time:Instant", + "rdfs:label": "T0", + "time:inXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2020-01-02T03:04:05.6789Z" + } + }, + "gufo:hasEndPoint": { + "@id": "kb:Instant-bbd8741a-4af8-4358-802b-a6fb8a4cf7dc", + "@type": "time:Instant", + "rdfs:label": "T1", + "time:inXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2021-02-03T04:05:06.7890Z" + } + } + } +] +``` + +Intervals of existence do not appear to be defined directly in gUFO. Also, since only the first and last instant of a concrete individual are specified, it is also not explicit in gUFO whether an individual's interval of existence needs to be continuous. For instance, a `gufo:Situation` may be seen to hold for a period of time (such as a person being a student in a `gufo:TemporaryInstantiationSituation`), then not hold (e.g., when the person graduates from a school), then hold again (e.g., when the person later enrolls in another school). + +Timestamps are constrained to `xsd:dateTimeStamp`, not `xsd:dateTime`, which is consistent with OWL-Time's deprecation of `time:inXSDDateTime`. For UCO, this would necessitate transcoding `xsd:dateTime` timestamps with a non-OWL, and likely non-SPARQL, mechanism. + +The following figure shows the time coverage for `gufo:ConcreteIndividual`, re-using covering vocabulary from OWL-Time above: + +![Abstraction - gUFO Concrete Individual](figures/abstraction_gufo.svg) + +The mapping for `gufo:ConcreteIndividual` would be as follows: + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | `gufo:ConcreteIndividual` | +| `ex:ExistenceInterval` | N/A | +| `ex:Instant` | `time:Instant` | +| `kb:T ex:hasExistenceInterval kb:E` | N/A | +| `kb:T ex:existsAtAndSince kb:T0` | `gufo:hasBeginPoint` | +| `kb:T ex:existsUntil kb:T1` | `gufo:hasEndPoint` | +| `kb:T ex:hasCreationTimestamp "2020-..."^^xsd:dateTime` | `kb:t gufo:hasBeginPointInXSDDateTimeStamp "2020-..."^^xsd:dateTimeStamp` | +| `kb:T ex:hasTerminationTimestamp "2021-..."^^xsd:dateTime` | `kb:t gufo:hasEndPointInXSDDateTimeStamp "2021-..."^^xsd:dateTimeStamp` | +| `kb:E ex:hasStart kb:T0` | N/A | +| `kb:E ex:hasEnd kb:T1` | N/A | +| `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:inXSDDateTimeStamp "2020-..."^^xsd:dateTimeStamp` | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | `kb:T1 time:inXSDDateTimeStamp "2021-..."^^xsd:dateTimeStamp` | + +_Aside_: A side-by-side view of the gUFO and OWL-Time coverage show that an ontology importing gUFO and OWL-Time has complete coverage of the existence-intervals concepts suggested on this page. + +| OWL-Time | gUFO | +| --- | --- | +| ![Abstraction - OWL-Time Temporal Entity](figures/abstraction_time.svg) | ![Abstraction - gUFO Concrete Individual](figures/abstraction_gufo.svg) | diff --git a/examples/illustrations/existence_intervals/existence_intervals.json b/examples/illustrations/existence_intervals/existence_intervals.json index b4f538d..c9d548a 100644 --- a/examples/illustrations/existence_intervals/existence_intervals.json +++ b/examples/illustrations/existence_intervals/existence_intervals.json @@ -108,6 +108,42 @@ "@value": "2020-01-02T03:04:05.6789Z" } }, + { + "@id": "kb:Object-bee97e78-8e5e-4ffe-9c2b-28e960f84bbc", + "gufo:hasBeginPoint": { + "@id": "kb:Instant-1a250c7b-19c5-4ec4-bed2-d05c9d438e9d", + "@type": "time:Instant", + "rdfs:label": "T0", + "time:inXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2020-01-02T03:04:05.6789Z" + } + }, + "gufo:hasEndPoint": { + "@id": "kb:Instant-bbd8741a-4af8-4358-802b-a6fb8a4cf7dc", + "@type": "time:Instant", + "rdfs:label": "T1", + "time:inXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2021-02-03T04:05:06.7890Z" + } + }, + "rdfs:label": "T" + }, + { + "@id": "kb:Object-bee97e78-8e5e-4ffe-9c2b-28e960f84bbc", + "@type": "gufo:Object", + "gufo:hasBeginPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2020-01-02T03:04:05.6789Z" + }, + "gufo:hasEndPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2021-02-03T04:05:06.7890Z" + }, + "rdfs:comment": "A thing with a time-bounded existence.", + "rdfs:label": "T" + }, { "@id": "kb:TimeBoundThing-b1fd892f-f190-4e15-a928-6c949867c59d", "@type": "owl:Thing", diff --git a/examples/illustrations/existence_intervals/figures/abstraction_gufo.svg b/examples/illustrations/existence_intervals/figures/abstraction_gufo.svg new file mode 100644 index 0000000..53f1056 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_gufo.svg @@ -0,0 +1,142 @@ + + + + + + +abstraction + + + +n_t + +T (object): +A gufo:ConcreteIndividual. + + + +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. +time:Instant + + + +n_t->n_t0 + + +T existsAtAndSince T0 +gufo:hasBeginPoint + + + +n_t1 + +T1 (object): +The instant that is the end of E. +time:Instant + + + +n_t->n_t1 + + +T existsUntil T1 +gufo:hasEndPoint + + + +l_ts0 + +ts0 (literal): +2020-01-02T03:04:05.6789Z +xsd:dateTimeStamp + + + +n_t->l_ts0 + + +T hasCreationTimestamp ts0 +gufo:hasBeginPointInXSDDateTimeStamp + + + +l_ts1 + +ts1 (literal): +2021-02-03T04:05:06.7890Z +xsd:dateTimeStamp + + + +n_t->l_ts1 + + +T hasTerminationTimestamp ts1 +gufo:hasEndPointInXSDDateTimeStamp + + + +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 +time:inXSDDateTimeStamp + + + +n_t1->l_ts1 + + +T1 hasTimestamp ts1 +time:inXSDDateTimeStamp + + +