diff --git a/examples/illustrations/existence_intervals/README.md b/examples/illustrations/existence_intervals/README.md index e0e0d08f..a998f002 100644 --- a/examples/illustrations/existence_intervals/README.md +++ b/examples/illustrations/existence_intervals/README.md @@ -115,3 +115,105 @@ 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 mostly out of scope of this discussion, though the interested can review a footnote about temporary `@type` applicability[^1]. + +Concrete individuals have first and last instants in which they exist. These instants are represented as `time:Instant` objects or as datatype literals (typed `xsd:date` or `xsd:dateTimeStamp`---and, pertinent to UCO, not `xsd:dateTime`). Two properties, "has begin point" and "has end point," assign the first and last instants that any concrete individual exists as objects. 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" + } + } +] +``` + +The literal-valued timestamps can also use `gufo:hasBeginPointInXSDDate` when only `xsd:date` is to be used. + +This is the same endurant with reified instants housing the beginning and end: + +```json +[ + { + "@id": "kb:Object-bee97e78-8e5e-4ffe-9c2b-28e960f84bbc", + "@type": "gufo:Object", + "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 temporarily being a student in a `gufo:TemporaryInstantiationSituation`[^1], 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) | + +[^1]: gUFO represents instantations that are not always true with `gufo:TemporaryInstantiationSituation`. In the case where a person is temporarily a student, "student" is taken to be some subclass of "person" - e.g., `ex:Student rdfs:subClassOf ex:Person`. For some time, it holds that `kb:person-3393... a ex:Student`, but this is not always true. To hold this situationally-true statement in a knowledge graph, a `gufo:TemporaryInstantiationSituation` is included to note the conditions when `kb:person-3393...` is a `ex:Student`, instead of encoding the unqualified triple `kb:person-3393... a ex:Student`. See `kb:TemporaryInstantiationSituation-da1aa582-1358-49bb-b058-4c33990fb9e8` in [`existence_intervals.json`](existence_intervals.json) for a demonstration of this representation. diff --git a/examples/illustrations/existence_intervals/existence_intervals.json b/examples/illustrations/existence_intervals/existence_intervals.json index b4f538d7..05f0f832 100644 --- a/examples/illustrations/existence_intervals/existence_intervals.json +++ b/examples/illustrations/existence_intervals/existence_intervals.json @@ -76,6 +76,26 @@ "rdfs:comment": "The instant that is the end of E.", "rdfs:label": "T1" }, + { + "@id": "ex:Person", + "@type": [ + "owl:Class", + "gufo:Kind" + ], + "rdfs:subClassOf": { + "@id": "gufo:Object" + } + }, + { + "@id": "ex:Student", + "@type": [ + "owl:Class", + "gufo:Role" + ], + "rdfs:subClassOf": { + "@id": "ex:Person" + } + }, { "@id": "kb:ExistenceInterval-27802c47-1c75-43fa-ab4b-fc01aa6c2c92", "@type": "time:Interval", @@ -108,6 +128,44 @@ "@value": "2020-01-02T03:04:05.6789Z" } }, + { + "@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:Person-3393dfc0-c765-4710-86db-8182c34de806", + "@type": "ex:Person", + "gufo:standsInQualifiedInstantiation": { + "@id": "kb:TemporaryInstantiationSituation-da1aa582-1358-49bb-b058-4c33990fb9e8" + }, + "rdfs:label": "J. Doe" + }, + { + "@id": "kb:TemporaryInstantiationSituation-da1aa582-1358-49bb-b058-4c33990fb9e8", + "@type": "gufo:TemporaryInstantiationSituation", + "gufo:concernsNonRigidType": { + "@id": "ex:Student" + }, + "gufo:hasBeginPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2018-09-01T00:00Z" + }, + "gufo:hasEndPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2022-06-16T00:00:00Z" + }, + "rdfs:comment": "This is the situation where J. Doe is a student, which started to hold Sep 1 2018, and no longer held on Jun 16, 2022." + }, { "@id": "kb:TimeBoundThing-b1fd892f-f190-4e15-a928-6c949867c59d", "@type": "owl:Thing", diff --git a/examples/illustrations/existence_intervals/figures/Makefile b/examples/illustrations/existence_intervals/figures/Makefile index 57fcb3ad..e9c8dd90 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 00000000..c1879bc0 --- /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/figures/abstraction_gufo.svg b/examples/illustrations/existence_intervals/figures/abstraction_gufo.svg new file mode 100644 index 00000000..53f10567 --- /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 + + + diff --git a/examples/illustrations/existence_intervals/src/README.md.in b/examples/illustrations/existence_intervals/src/README.md.in index e0e0d08f..09787988 100644 --- a/examples/illustrations/existence_intervals/src/README.md.in +++ b/examples/illustrations/existence_intervals/src/README.md.in @@ -115,3 +115,66 @@ 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 mostly out of scope of this discussion, though the interested can review a footnote about temporary `@type` applicability[^1]. + +Concrete individuals have first and last instants in which they exist. These instants are represented as `time:Instant` objects or as datatype literals (typed `xsd:date` or `xsd:dateTimeStamp`---and, pertinent to UCO, not `xsd:dateTime`). Two properties, "has begin point" and "has end point," assign the first and last instants that any concrete individual exists as objects. 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@ +``` + +The literal-valued timestamps can also use `gufo:hasBeginPointInXSDDate` when only `xsd:date` is to be used. + +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 temporarily being a student in a `gufo:TemporaryInstantiationSituation`[^1], 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) | + +[^1]: gUFO represents instantations that are not always true with `gufo:TemporaryInstantiationSituation`. In the case where a person is temporarily a student, "student" is taken to be some subclass of "person" - e.g., `ex:Student rdfs:subClassOf ex:Person`. For some time, it holds that `kb:person-3393... a ex:Student`, but this is not always true. To hold this situationally-true statement in a knowledge graph, a `gufo:TemporaryInstantiationSituation` is included to note the conditions when `kb:person-3393...` is a `ex:Student`, instead of encoding the unqualified triple `kb:person-3393... a ex:Student`. See `kb:TemporaryInstantiationSituation-da1aa582-1358-49bb-b058-4c33990fb9e8` in [`existence_intervals.json`](existence_intervals.json) for a demonstration of this representation. 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 00000000..bfd094e1 --- /dev/null +++ b/examples/illustrations/existence_intervals/src/existence_intervals-gufo-object-instants.json @@ -0,0 +1,25 @@ +[ + { + "@id": "kb:Object-bee97e78-8e5e-4ffe-9c2b-28e960f84bbc", + "@type": "gufo:Object", + "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 00000000..d589455b --- /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" + } + } +] diff --git a/examples/illustrations/existence_intervals/src/existence_intervals-gufo-situation.json b/examples/illustrations/existence_intervals/src/existence_intervals-gufo-situation.json new file mode 100644 index 00000000..a50a1fd0 --- /dev/null +++ b/examples/illustrations/existence_intervals/src/existence_intervals-gufo-situation.json @@ -0,0 +1,46 @@ +[ + { + "@id": "ex:Person", + "@type": [ + "owl:Class", + "gufo:Kind" + ], + "rdfs:subClassOf": { + "@id": "gufo:Object" + } + }, + { + "@id": "ex:Student", + "@type": [ + "owl:Class", + "gufo:Role" + ], + "rdfs:subClassOf": { + "@id": "ex:Person" + } + }, + { + "@id": "kb:Person-3393dfc0-c765-4710-86db-8182c34de806", + "@type": "ex:Person", + "rdfs:label": "J. Doe", + "gufo:standsInQualifiedInstantiation": { + "@id": "kb:TemporaryInstantiationSituation-da1aa582-1358-49bb-b058-4c33990fb9e8" + } + }, + { + "@id": "kb:TemporaryInstantiationSituation-da1aa582-1358-49bb-b058-4c33990fb9e8", + "@type": "gufo:TemporaryInstantiationSituation", + "rdfs:comment": "This is the situation where J. Doe is a student, which started to hold Sep 1 2018, and no longer held on Jun 16, 2022.", + "gufo:concernsNonRigidType": { + "@id": "ex:Student" + }, + "gufo:hasBeginPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2018-09-01T00:00Z" + }, + "gufo:hasEndPointInXSDDateTimeStamp": { + "@type": "xsd:dateTimeStamp", + "@value": "2022-06-16T00:00:00Z" + } + } +]