diff --git a/examples/illustrations/existence_intervals/README.md b/examples/illustrations/existence_intervals/README.md index a998f00..0b6926f 100644 --- a/examples/illustrations/existence_intervals/README.md +++ b/examples/illustrations/existence_intervals/README.md @@ -216,4 +216,56 @@ _Aside_: A side-by-side view of the gUFO and OWL-Time coverage show that an onto | --- | --- | | ![Abstraction - OWL-Time Temporal Entity](figures/abstraction_time.svg) | ![Abstraction - gUFO Concrete Individual](figures/abstraction_gufo.svg) | + +## BFO + +(BFO version: [2020](https://github.com/BFO-ontology/BFO-2020).) + +BFO's topmost class that describes an object that exists in a period of time is "Entity" (`obo:BFO_0000001`). The direct subclasses "Continuant" and "Occurrent", which correspond with "Endurant" and "Perdurant" respectively, do not specialize the restrictions on the existence property "exists at". + +For reference, these are the class and property labels used in the illustration: + +| Structural type | IRI | Label | Notes | +| --- | --- | --- | --- | +| `owl:Class` | `obo:BFO_0000001` | (BFO 1) entity | | +| `owl:Class` | `obo:BFO_0000002` | (BFO 2) continuant | | +| `owl:Class` | `obo:BFO_0000003` | (BFO 3) occurrent | | +| `owl:Class` | `obo:BFO_0000008` | (BFO 8) temporal region | | +| `owl:Class` | `obo:BFO_0000038` | (BFO 38) one-dimensional temporal region | Not necessarily continuous (can have gaps). | +| `owl:Class` | `obo:BFO_0000148` | (BFO 148) zero-dimensional temporal region | "...a temporal region that is a whole consisting of one or more separated temporal instants as parts." | +| `owl:Class` | `obo:BFO_0000202` | (BFO 202) temporal interval | Subclass of BFO 38; continous (no gaps or breaks). | +| `owl:Class` | `obo:BFO_0000203` | (BFO 203) temporal instant | Subclass of BFO 148; has no proper temporal parts. | +| `owl:ObjectProperty` | `obo:BFO_0000108` | exists at | Range is BFO 8. | +| `owl:ObjectProperty` | `obo:BFO_0000222` | has first instant | Range is constrained to BFO 203, not 148 (instant, not 0-d region). | +| `owl:ObjectProperty` | `obo:BFO_0000224` | has last instant | (As with BFO 222.) | + +_Restrictions_: + +* Usage of the BFO properties 222 and 224 (first and last instant) restrict the alignment of `ex:Instant` to `obo:BFO_0000203` (temporal instant), which is more restrictive than `obo:BFO_0000148` (zero-dimensional temporal region). +* If existence intervals are required by a BFO-adopting ontology ontology to be continuous, the adopting ontology must use `obo:BFO_0000202` (temporal interval) rather than `obo:BFO_0000038` (one-dimensional temporal region). + +The referenced version of BFO does not define any `owl:DatatypeProperty`s. + +![Abstraction - BFO Entity](figures/abstraction_bfo.svg) + +The mapping for BFO's `entity` (BFO-1) would be as follows: + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | `obo:BFO_0000001` | +| `ex:ExistenceInterval` | `obo:BFO_0000038` | +| `ex:Instant` | `obo:BFO_0000203` | +| `kb:T ex:hasExistenceInterval kb:E` | `kb:T obo:BFO_0000108 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 obo:BFO_0000222 kb:T0` | +| `kb:E ex:hasEnd kb:T1` | `kb:E obo:BFO_0000224 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` | N/A | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | N/A | + + [^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 05f0f83..8aec020 100644 --- a/examples/illustrations/existence_intervals/existence_intervals.json +++ b/examples/illustrations/existence_intervals/existence_intervals.json @@ -96,6 +96,14 @@ "@id": "ex:Person" } }, + { + "@id": "kb:Entity-52d479e6-4b3e-4a21-a60a-29b08397a315", + "@type": "obo:BFO_0000001", + "obo:BFO_0000108": { + "@id": "kb:OneDimensionalTemporalRegion-95fc3589-849b-406b-85c4-3b2119121f1e" + }, + "rdfs:label": "T" + }, { "@id": "kb:ExistenceInterval-27802c47-1c75-43fa-ab4b-fc01aa6c2c92", "@type": "time:Interval", @@ -142,6 +150,17 @@ "rdfs:comment": "A thing with a time-bounded existence.", "rdfs:label": "T" }, + { + "@id": "kb:OneDimensionalTemporalRegion-95fc3589-849b-406b-85c4-3b2119121f1e", + "@type": "obo:BFO_0000038", + "obo:BFO_0000222": { + "@id": "kb:TemporalInstant-19f182b4-6bc8-4ad8-a456-56fa15aec976" + }, + "obo:BFO_0000224": { + "@id": "kb:TemporalInstant-3299e3a8-8d3e-43c7-a142-14bb41638669" + }, + "rdfs:label": "E" + }, { "@id": "kb:Person-3393dfc0-c765-4710-86db-8182c34de806", "@type": "ex:Person", @@ -150,6 +169,16 @@ }, "rdfs:label": "J. Doe" }, + { + "@id": "kb:TemporalInstant-19f182b4-6bc8-4ad8-a456-56fa15aec976", + "@type": "obo:BFO_0000203", + "rdfs:label": "T0" + }, + { + "@id": "kb:TemporalInstant-3299e3a8-8d3e-43c7-a142-14bb41638669", + "@type": "obo:BFO_0000203", + "rdfs:label": "T1" + }, { "@id": "kb:TemporaryInstantiationSituation-da1aa582-1358-49bb-b058-4c33990fb9e8", "@type": "gufo:TemporaryInstantiationSituation", diff --git a/examples/illustrations/existence_intervals/figures/Makefile b/examples/illustrations/existence_intervals/figures/Makefile index e9c8dd9..77b6d76 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_bfo.svg \ abstraction_gufo.svg \ abstraction_time.svg \ abstraction_uco_1_3_0_action.svg \ diff --git a/examples/illustrations/existence_intervals/figures/abstraction_bfo.dot b/examples/illustrations/existence_intervals/figures/abstraction_bfo.dot new file mode 100644 index 0000000..672a0c8 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_bfo.dot @@ -0,0 +1,25 @@ +digraph "abstraction" { + n_t [label="T (object):\nA obo:BFO_0000001 (Entity)." color=blue fontcolor=blue] ; + + n_e [label="E (object):\nThe existence interval of T.\nobo:BFO_0000038 (one-dimensional\ntemporal region)" color=blue fontcolor=blue] ; + + n_t0 [label="T0 (object):\nThe instant that is the beginning of E.\nobo:BFO_0000203 (temporal instant)" color=blue fontcolor=blue]; + n_t1 [label="T1 (object):\nThe instant that is the end of E.\nobo:BFO_0000203 (temporal instant)" color=blue fontcolor=blue]; + + l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box" color=silver fontcolor=silver]; + l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" shape="box" color=silver fontcolor=silver]; + + n_t -> n_e [label="T hasExistenceInterval E\nobo:BFO_0000108 (exists at)" 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\nobo:BFO_0000222\n(has first instant)" color=blue fontcolor=blue]; + n_e -> n_t1 [label="E hasEnd T1\nobo:BFO_0000224\n(has last instant)" 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" 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_bfo.svg b/examples/illustrations/existence_intervals/figures/abstraction_bfo.svg new file mode 100644 index 0000000..a6b5529 --- /dev/null +++ b/examples/illustrations/existence_intervals/figures/abstraction_bfo.svg @@ -0,0 +1,141 @@ + + + + + + +abstraction + + + +n_t + +T (object): +A obo:BFO_0000001 (Entity). + + + +n_e + +E (object): +The existence interval of T. +obo:BFO_0000038 (one-dimensional +temporal region) + + + +n_t->n_e + + +T hasExistenceInterval E +obo:BFO_0000108 (exists at) + + + +n_t0 + +T0 (object): +The instant that is the beginning of E. +obo:BFO_0000203 (temporal instant) + + + +n_t->n_t0 + + +T existsAtAndSince T0 + + + +n_t1 + +T1 (object): +The instant that is the end of E. +obo:BFO_0000203 (temporal 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 +obo:BFO_0000222 +(has first instant) + + + +n_e->n_t1 + + +E hasEnd T1 +obo:BFO_0000224 +(has last instant) + + + +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/README.md.in b/examples/illustrations/existence_intervals/src/README.md.in index 0978798..5d8bd0c 100644 --- a/examples/illustrations/existence_intervals/src/README.md.in +++ b/examples/illustrations/existence_intervals/src/README.md.in @@ -177,4 +177,56 @@ _Aside_: A side-by-side view of the gUFO and OWL-Time coverage show that an onto | --- | --- | | ![Abstraction - OWL-Time Temporal Entity](figures/abstraction_time.svg) | ![Abstraction - gUFO Concrete Individual](figures/abstraction_gufo.svg) | + +## BFO + +(BFO version: [2020](https://github.com/BFO-ontology/BFO-2020).) + +BFO's topmost class that describes an object that exists in a period of time is "Entity" (`obo:BFO_0000001`). The direct subclasses "Continuant" and "Occurrent", which correspond with "Endurant" and "Perdurant" respectively, do not specialize the restrictions on the existence property "exists at". + +For reference, these are the class and property labels used in the illustration: + +| Structural type | IRI | Label | Notes | +| --- | --- | --- | --- | +| `owl:Class` | `obo:BFO_0000001` | (BFO 1) entity | | +| `owl:Class` | `obo:BFO_0000002` | (BFO 2) continuant | | +| `owl:Class` | `obo:BFO_0000003` | (BFO 3) occurrent | | +| `owl:Class` | `obo:BFO_0000008` | (BFO 8) temporal region | | +| `owl:Class` | `obo:BFO_0000038` | (BFO 38) one-dimensional temporal region | Not necessarily continuous (can have gaps). | +| `owl:Class` | `obo:BFO_0000148` | (BFO 148) zero-dimensional temporal region | "...a temporal region that is a whole consisting of one or more separated temporal instants as parts." | +| `owl:Class` | `obo:BFO_0000202` | (BFO 202) temporal interval | Subclass of BFO 38; continous (no gaps or breaks). | +| `owl:Class` | `obo:BFO_0000203` | (BFO 203) temporal instant | Subclass of BFO 148; has no proper temporal parts. | +| `owl:ObjectProperty` | `obo:BFO_0000108` | exists at | Range is BFO 8. | +| `owl:ObjectProperty` | `obo:BFO_0000222` | has first instant | Range is constrained to BFO 203, not 148 (instant, not 0-d region). | +| `owl:ObjectProperty` | `obo:BFO_0000224` | has last instant | (As with BFO 222.) | + +_Restrictions_: + +* Usage of the BFO properties 222 and 224 (first and last instant) restrict the alignment of `ex:Instant` to `obo:BFO_0000203` (temporal instant), which is more restrictive than `obo:BFO_0000148` (zero-dimensional temporal region). +* If existence intervals are required by a BFO-adopting ontology ontology to be continuous, the adopting ontology must use `obo:BFO_0000202` (temporal interval) rather than `obo:BFO_0000038` (one-dimensional temporal region). + +The referenced version of BFO does not define any `owl:DatatypeProperty`s. + +![Abstraction - BFO Entity](figures/abstraction_bfo.svg) + +The mapping for BFO's `entity` (BFO-1) would be as follows: + +| Example class or triple | Corresponding class or triple | +| --- | --- | +| `ex:TimeBoundedThing` | `obo:BFO_0000001` | +| `ex:ExistenceInterval` | `obo:BFO_0000038` | +| `ex:Instant` | `obo:BFO_0000203` | +| `kb:T ex:hasExistenceInterval kb:E` | `kb:T obo:BFO_0000108 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 obo:BFO_0000222 kb:T0` | +| `kb:E ex:hasEnd kb:T1` | `kb:E obo:BFO_0000224 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` | N/A | +| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | N/A | + + [^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-bfo-entity.json b/examples/illustrations/existence_intervals/src/existence_intervals-bfo-entity.json new file mode 100644 index 0000000..d4dc6f1 --- /dev/null +++ b/examples/illustrations/existence_intervals/src/existence_intervals-bfo-entity.json @@ -0,0 +1,31 @@ +[ + { + "@id": "kb:Entity-52d479e6-4b3e-4a21-a60a-29b08397a315", + "@type": "obo:BFO_0000001", + "rdfs:label": "T", + "obo:BFO_0000108": { + "@id": "kb:OneDimensionalTemporalRegion-95fc3589-849b-406b-85c4-3b2119121f1e" + } + }, + { + "@id": "kb:OneDimensionalTemporalRegion-95fc3589-849b-406b-85c4-3b2119121f1e", + "@type": "obo:BFO_0000038", + "rdfs:label": "E", + "obo:BFO_0000222": { + "@id": "kb:TemporalInstant-19f182b4-6bc8-4ad8-a456-56fa15aec976" + }, + "obo:BFO_0000224": { + "@id": "kb:TemporalInstant-3299e3a8-8d3e-43c7-a142-14bb41638669" + } + }, + { + "@id": "kb:TemporalInstant-19f182b4-6bc8-4ad8-a456-56fa15aec976", + "@type": "obo:BFO_0000203", + "rdfs:label": "T0" + }, + { + "@id": "kb:TemporalInstant-3299e3a8-8d3e-43c7-a142-14bb41638669", + "@type": "obo:BFO_0000203", + "rdfs:label": "T1" + } +]