Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add gUFO section of page for intervals of existence #148

Merged
merged 9 commits into from
Jul 11, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions examples/illustrations/existence_intervals/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
plbt5 marked this conversation as resolved.
Show resolved Hide resolved

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"
}
}
]
```

plbt5 marked this conversation as resolved.
Show resolved Hide resolved
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",
ajnelson-nist marked this conversation as resolved.
Show resolved Hide resolved
"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).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is correct in terms of its classification. There are two individuals involved, though, regarding the gufo:TemporaryInstantiationSituation. Leaving this out of the text might create confusion with the readers to understand there is only one single situation that is spread over two distinct enrollments.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll make a footnote of this. I think explaining the other individual gets a little too big for a parenthetical remark.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Footnote added. Please let me know if you think it needs further adjusting, or if it's better to just omit Situation discussion entirely.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit-picking here would be that it is, imo, not necessary to elaborate on how it is done, just the essentials that each distinct enrollment is represented as distinct gufo:TemporaryInstantiationSituations. As in: don't make it more complicated than it needs to be. But again, this is nit-picking because the purpose has been achieved already.

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) |
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,42 @@
"@value": "2020-01-02T03:04:05.6789Z"
}
},
{
"@id": "kb:Object-bee97e78-8e5e-4ffe-9c2b-28e960f84bbc",
"gufo:hasBeginPoint": {
ajnelson-nist marked this conversation as resolved.
Show resolved Hide resolved
"@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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
Original file line number Diff line number Diff line change
@@ -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];
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading