diff --git a/README.md b/README.md
index 1cf9c9aa..cde217d1 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,7 @@ Mapping notes & respective JSON-LD output:
- [Device](examples/illustrations/device/device.json)
- [EXIF Data](examples/illustrations/exif_data/exif_data.json)
- [Event](examples/illustrations/event/event.json)
+- [Existence intervals](examples/illustrations/existence_intervals/existence_intervals.json) ([*info*](examples/illustrations/existence_intervals/))
- [Files](examples/illustrations/file/file.json) (*[info](examples/illustrations/file/)*)
- [Forensic Lifecycle](examples/illustrations/forensic_lifecycle/forensic_lifecycle.json) ([*info*](examples/illustrations/forensic_lifecycle/))
- [Location](examples/illustrations/location/location.json)
diff --git a/examples/illustrations/existence_intervals/Makefile b/examples/illustrations/existence_intervals/Makefile
new file mode 100644
index 00000000..3487cf68
--- /dev/null
+++ b/examples/illustrations/existence_intervals/Makefile
@@ -0,0 +1,17 @@
+#!/usr/bin/make -f
+
+# Portions of this file contributed by NIST are governed by the
+# following statement:
+#
+# This software was developed at the National Institute of Standards
+# and Technology by employees of the Federal Government in the course
+# of their official duties. Pursuant to Title 17 Section 105 of the
+# United States Code, this software is not subject to copyright
+# protection within the United States. NIST assumes no responsibility
+# whatsoever for its use by other parties, and makes no guarantees,
+# expressed or implied, about its quality, reliability, or any other
+# characteristic.
+#
+# We would appreciate acknowledgement if the software is used.
+
+include ../src/illustration-basedir.mk
diff --git a/examples/illustrations/existence_intervals/README.md b/examples/illustrations/existence_intervals/README.md
new file mode 100644
index 00000000..e0e0d08f
--- /dev/null
+++ b/examples/illustrations/existence_intervals/README.md
@@ -0,0 +1,117 @@
+
+
+# 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).
+
+
+## OWL-Time
+
+OWL-Time provides the class `time:TemporalEntity`. Guidance offers options on how to relate time-things (`time:TemporalEntity`) to things that exist in time (like an activity or an object), drawn from [Section 3.1](https://www.w3.org/TR/owl-time/#topology).
+
+> The properties `:hasTemporalDuration`, `:hasBeginning` and `:hasEnd`, together with a fourth generic property `:hasTime`, support the association of temporal information with any temporal entity, such as an activity or event, or other entity. These provide a standard way to attach time information to things, which may be used directly in applications if suitable, or specialized if needed.
+
+The following figure shows the time coverage for the general usage of `time:TemporalEntity`:
+
+![Abstraction - OWL-Time Temporal Entity](figures/abstraction_time.svg)
+
+The mapping for `time:TemporalEntity` would be as follows.
+
+| Example class or triple | Corresponding class or triple |
+| --- | --- |
+| `ex:TimeBoundedThing` | `owl:Thing` |
+| `ex:ExistenceInterval` | `time:TemporalEntity` |
+| `ex:Instant` | `time:Instant` |
+| `kb:T ex:hasExistenceInterval kb:E` | `kb:T time:hasTime 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 time:hasBeginning kb:T0` |
+| `kb:E ex:hasEnd kb:T1` | `kb:E time:hasEnd 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` | `kb:T0 time:inXSDDateTime "2020-..."^^xsd:dateTime` |
+| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | `kb:T1 time:inXSDDateTime "2021-..."^^xsd:dateTime` |
+
+Some of the examples in the OWL-TIME specification include demonstrations of `time:TemporalEntity` that allow for endurants and perdurants as direct subclasses. Note that the examples section is non-normative.
+
+* [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.
diff --git a/examples/illustrations/existence_intervals/drafting.ttl b/examples/illustrations/existence_intervals/drafting.ttl
new file mode 100644
index 00000000..585a2193
--- /dev/null
+++ b/examples/illustrations/existence_intervals/drafting.ttl
@@ -0,0 +1,86 @@
+@prefix drafting: .
+@prefix ex: .
+@prefix gufo: .
+@prefix owl: .
+@prefix prov: .
+@prefix rdf: .
+@prefix rdfs: .
+@prefix sh: .
+@prefix xsd: .
+
+ex:ExistenceInterval
+ a owl:Class ;
+ rdfs:subClassOf owl:Thing ;
+ .
+
+ex:Instant
+ a owl:Class ;
+ rdfs:subClassOf owl:Thing ;
+ .
+
+ex:TimeBoundedThing
+ a owl:Class ;
+ rdfs:subClassOf owl:Thing ;
+ rdfs:comment "A thing with a time-bounded existence."@en ;
+ .
+
+ex:existsAtAndSince
+ a owl:ObjectProperty ;
+ rdfs:domain ex:TimeBoundedThing ;
+ rdfs:range ex:Instant ;
+ .
+
+ex:existsUntil
+ a owl:ObjectProperty ;
+ rdfs:domain ex:TimeBoundedThing ;
+ rdfs:range ex:Instant ;
+ .
+
+ex:hasBeginningTimestamp
+ a owl:DatatypeProperty ;
+ rdfs:domain ex:TimeBoundedThing ;
+ rdfs:range xsd:dateTime ;
+ .
+
+ex:hasCreationTimestamp
+ a owl:DatatypeProperty ;
+ rdfs:domain ex:TimeBoundedThing ;
+ rdfs:range xsd:dateTime ;
+ .
+
+ex:hasEnd
+ a owl:ObjectProperty ;
+ rdfs:domain ex:ExistenceInterval ;
+ rdfs:range ex:Instant ;
+ .
+
+ex:hasEndingTimestamp
+ a owl:DatatypeProperty ;
+ rdfs:domain ex:TimeBoundedThing ;
+ rdfs:range xsd:dateTime ;
+ .
+
+ex:hasExistenceInterval
+ a owl:ObjectProperty ;
+ rdfs:domain ex:TimeBoundedThing ;
+ rdfs:range ex:ExistenceInterval ;
+ .
+
+ex:hasStart
+ a owl:ObjectProperty ;
+ rdfs:domain ex:ExistenceInterval ;
+ rdfs:range ex:Instant ;
+ .
+
+ex:hasTerminationTimestamp
+ a owl:DatatypeProperty ;
+ rdfs:domain ex:TimeBoundedThing ;
+ rdfs:range xsd:dateTime ;
+ .
+
+ex:hasTimestamp
+ a owl:DatatypeProperty ;
+ rdfs:domain ex:Instant ;
+ rdfs:range xsd:dateTime ;
+ .
+
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/Makefile b/examples/illustrations/existence_intervals/figures/Makefile
new file mode 100644
index 00000000..57fcb3ad
--- /dev/null
+++ b/examples/illustrations/existence_intervals/figures/Makefile
@@ -0,0 +1,42 @@
+#!/usr/bin/make -f
+
+# Portions of this file contributed by NIST are governed by the
+# following statement:
+#
+# This software was developed at the National Institute of Standards
+# and Technology by employees of the Federal Government in the course
+# of their official duties. Pursuant to Title 17 Section 105 of the
+# United States Code, this software is not subject to copyright
+# protection within the United States. NIST assumes no responsibility
+# whatsoever for its use by other parties, and makes no guarantees,
+# expressed or implied, about its quality, reliability, or any other
+# characteristic.
+#
+# We would appreciate acknowledgement if the software is used.
+
+SHELL := /bin/bash
+
+top_srcdir := $(shell cd ../../../.. ; pwd)
+
+all: \
+ abstraction_all.svg \
+ abstraction_time.svg \
+ abstraction_uco_1_3_0_action.svg \
+ abstraction_uco_1_3_0_event.svg \
+ abstraction_uco_1_3_0_relationship.svg
+
+%.svg: \
+ %.dot
+ dot \
+ -T svg \
+ -o _$@ \
+ $<
+ mv _$@ $@
+
+check: \
+ all
+
+clean:
+ @rm -f \
+ *.dot \
+ *.svg
diff --git a/examples/illustrations/existence_intervals/figures/abstraction_all.dot b/examples/illustrations/existence_intervals/figures/abstraction_all.dot
new file mode 100644
index 00000000..e42a3447
--- /dev/null
+++ b/examples/illustrations/existence_intervals/figures/abstraction_all.dot
@@ -0,0 +1,25 @@
+digraph "abstraction" {
+ n_t [label="T (object):\nAn owl:Thing."] ;
+
+ n_e [label="E (object):\nThe existence interval of T."] ;
+
+ n_t0 [label="T0 (object):\nThe instant that is the beginning of E."];
+ n_t1 [label="T1 (object):\nThe instant that is the end of E."];
+
+ l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box"];
+ l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" shape="box"];
+
+ n_t -> n_e [label="T hasExistenceInterval E"] ;
+ n_t -> n_t0 [label="T existsAtAndSince T0"] ;
+ n_t -> n_t1 [label="T existsUntil T1"] ;
+ n_t -> l_ts0 [label="T hasCreationTimestamp ts0"];
+ n_t -> l_ts1 [label="T hasTerminationTimestamp ts1"];
+
+ n_e -> n_t0 [label="E hasStart T0"];
+ n_e -> n_t1 [label="E hasEnd T1"];
+ n_e -> l_ts0 [label="E hasBeginningTimestamp ts0"] ;
+ n_e -> l_ts1 [label="E hasEndingTimestamp ts1"] ;
+
+ n_t0 -> l_ts0 [label="T0 hasTimestamp ts0"];
+ n_t1 -> l_ts1 [label="T1 hasTimestamp ts1"];
+}
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 @@
+
+
+
+
+
diff --git a/examples/illustrations/existence_intervals/figures/abstraction_time.dot b/examples/illustrations/existence_intervals/figures/abstraction_time.dot
new file mode 100644
index 00000000..be35bde1
--- /dev/null
+++ b/examples/illustrations/existence_intervals/figures/abstraction_time.dot
@@ -0,0 +1,25 @@
+digraph "abstraction" {
+ n_t [label="T (object):\nAn owl:Thing." color=blue fontcolor=blue] ;
+
+ n_e [label="E (object):\nThe existence interval of T.\ntime:Interval" color=blue fontcolor=blue] ;
+
+ 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" shape="box" color=blue fontcolor=blue];
+ l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" shape="box" color=blue fontcolor=blue];
+
+ n_t -> n_e [label="T hasExistenceInterval E\ntime:hasTime" 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\ntime:hasBeginning" color=blue fontcolor=blue];
+ n_e -> n_t1 [label="E hasEnd T1\ntime:hasEnd" 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\ntime:inXSDDateTime (deprecated)\ntime:inXSDDateTimeStamp" color=blue fontcolor=blue];
+ n_t1 -> l_ts1 [label="T1 hasTimestamp ts1\ntime:inXSDDateTime (deprecated)\ntime:inXSDDateTimeStamp" color=blue fontcolor=blue];
+}
diff --git a/examples/illustrations/existence_intervals/figures/abstraction_time.svg b/examples/illustrations/existence_intervals/figures/abstraction_time.svg
new file mode 100644
index 00000000..fc9b7d6c
--- /dev/null
+++ b/examples/illustrations/existence_intervals/figures/abstraction_time.svg
@@ -0,0 +1,142 @@
+
+
+
+
+
diff --git a/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_action.dot b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_action.dot
new file mode 100644
index 00000000..01ac6fb7
--- /dev/null
+++ b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_action.dot
@@ -0,0 +1,25 @@
+digraph "abstraction" {
+ n_t [label="T (object):\nA uco-action:Action" 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." color=silver fontcolor=silver];
+ n_t1 [label="T1 (object):\nThe instant that is the end of E." color=silver fontcolor=silver];
+
+ l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box" color=blue fontcolor=blue];
+ l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" 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" color=silver fontcolor=silver] ;
+ n_t -> n_t1 [label="T existsUntil T1" color=silver fontcolor=silver] ;
+ n_t -> l_ts0 [label="T hasCreationTimestamp ts0\nuco-action:startTime" color=blue fontcolor=blue];
+ n_t -> l_ts1 [label="T hasTerminationTimestamp ts1\nuco-action:endTime" 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" 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_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 @@
+
+
+
+
+
diff --git a/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_event.dot b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_event.dot
new file mode 100644
index 00000000..aebd0179
--- /dev/null
+++ b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_event.dot
@@ -0,0 +1,25 @@
+digraph "abstraction" {
+ n_t [label="T (object):\nA uco-core:Event" 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." color=silver fontcolor=silver];
+ n_t1 [label="T1 (object):\nThe instant that is the end of E." color=silver fontcolor=silver];
+
+ l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box" color=blue fontcolor=blue];
+ l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" 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" color=silver fontcolor=silver] ;
+ n_t -> n_t1 [label="T existsUntil T1" color=silver fontcolor=silver] ;
+ n_t -> l_ts0 [label="T hasCreationTimestamp ts0\nuco-core:startTime" color=blue fontcolor=blue];
+ n_t -> l_ts1 [label="T hasTerminationTimestamp ts1\nuco-core:endTime" 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" 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_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 @@
+
+
+
+
+
diff --git a/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_relationship.dot b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_relationship.dot
new file mode 100644
index 00000000..8b067a05
--- /dev/null
+++ b/examples/illustrations/existence_intervals/figures/abstraction_uco_1_3_0_relationship.dot
@@ -0,0 +1,25 @@
+digraph "abstraction" {
+ n_t [label="T (object):\nA uco-core:Relationship" 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." color=silver fontcolor=silver];
+ n_t1 [label="T1 (object):\nThe instant that is the end of E." color=silver fontcolor=silver];
+
+ l_ts0 [label="ts0 (literal):\n2020-01-02T03:04:05.6789Z" shape="box" color=blue fontcolor=blue];
+ l_ts1 [label="ts1 (literal):\n2021-02-03T04:05:06.7890Z" 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" color=silver fontcolor=silver] ;
+ n_t -> n_t1 [label="T existsUntil T1" color=silver fontcolor=silver] ;
+ n_t -> l_ts0 [label="T hasCreationTimestamp ts0\nuco-core:startTime" color=blue fontcolor=blue];
+ n_t -> l_ts1 [label="T hasTerminationTimestamp ts1\nuco-core:endTime" 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" 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_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 @@
+
+
+
+
+
diff --git a/examples/illustrations/existence_intervals/src/Makefile b/examples/illustrations/existence_intervals/src/Makefile
new file mode 100644
index 00000000..ddd213d7
--- /dev/null
+++ b/examples/illustrations/existence_intervals/src/Makefile
@@ -0,0 +1,14 @@
+#!/usr/bin/make -f
+
+# This software was developed at the National Institute of Standards
+# and Technology by employees of the Federal Government in the course
+# of their official duties. Pursuant to title 17 Section 105 of the
+# United States Code this software is not subject to copyright
+# protection and is in the public domain. NIST assumes no
+# responsibility whatsoever for its use by other parties, and makes
+# no guarantees, expressed or implied, about its quality,
+# reliability, or any other characteristic.
+#
+# We would appreciate acknowledgement if the software is used.
+
+include ../../src/illustration-src.mk
diff --git a/examples/illustrations/existence_intervals/src/README.md.in b/examples/illustrations/existence_intervals/src/README.md.in
new file mode 100644
index 00000000..e0e0d08f
--- /dev/null
+++ b/examples/illustrations/existence_intervals/src/README.md.in
@@ -0,0 +1,117 @@
+
+
+# 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).
+
+
+## OWL-Time
+
+OWL-Time provides the class `time:TemporalEntity`. Guidance offers options on how to relate time-things (`time:TemporalEntity`) to things that exist in time (like an activity or an object), drawn from [Section 3.1](https://www.w3.org/TR/owl-time/#topology).
+
+> The properties `:hasTemporalDuration`, `:hasBeginning` and `:hasEnd`, together with a fourth generic property `:hasTime`, support the association of temporal information with any temporal entity, such as an activity or event, or other entity. These provide a standard way to attach time information to things, which may be used directly in applications if suitable, or specialized if needed.
+
+The following figure shows the time coverage for the general usage of `time:TemporalEntity`:
+
+![Abstraction - OWL-Time Temporal Entity](figures/abstraction_time.svg)
+
+The mapping for `time:TemporalEntity` would be as follows.
+
+| Example class or triple | Corresponding class or triple |
+| --- | --- |
+| `ex:TimeBoundedThing` | `owl:Thing` |
+| `ex:ExistenceInterval` | `time:TemporalEntity` |
+| `ex:Instant` | `time:Instant` |
+| `kb:T ex:hasExistenceInterval kb:E` | `kb:T time:hasTime 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 time:hasBeginning kb:T0` |
+| `kb:E ex:hasEnd kb:T1` | `kb:E time:hasEnd 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` | `kb:T0 time:inXSDDateTime "2020-..."^^xsd:dateTime` |
+| `kb:T1 ex:hasTimestamp "2021-..."^^xsd:dateTime` | `kb:T1 time:inXSDDateTime "2021-..."^^xsd:dateTime` |
+
+Some of the examples in the OWL-TIME specification include demonstrations of `time:TemporalEntity` that allow for endurants and perdurants as direct subclasses. Note that the examples section is non-normative.
+
+* [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.
diff --git a/examples/illustrations/existence_intervals/src/existence_intervals_base.json b/examples/illustrations/existence_intervals/src/existence_intervals_base.json
new file mode 100644
index 00000000..e8651d63
--- /dev/null
+++ b/examples/illustrations/existence_intervals/src/existence_intervals_base.json
@@ -0,0 +1,80 @@
+{
+ "@context": {
+ "drafting": "http://example.org/ontology/drafting/",
+ "ex": "http://example.org/ontology/example/",
+ "kb": "http://example.org/kb/",
+ "gufo": "http://purl.org/nemo/gufo#",
+ "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",
+ "rdfs:label": "T",
+ "rdfs:comment": "A thing with a time-bounded existence.",
+ "ex:hasExistenceInterval": {
+ "@id": "kb:ExistenceInterval-03c8fef4-dac9-4f17-bc98-2ef468390daa"
+ },
+ "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:hasTerminationTimestamp": {
+ "@type": "xsd:dateTime",
+ "@value": "2021-02-03T04:05:06.7890Z"
+ }
+ },
+ {
+ "@id": "kb:ExistenceInterval-03c8fef4-dac9-4f17-bc98-2ef468390daa",
+ "@type": "ex:ExistenceInterval",
+ "rdfs:label": "E",
+ "rdfs:comment": "The existence interval of T.",
+ "ex:hasStart": {
+ "@id": "kb:Instant-ef0da4b8-d014-4142-b9f5-b0a0091965b8"
+ },
+ "ex:hasEnd": {
+ "@id": "kb:Instant-a9dd29d9-c854-4cdd-917a-7de5226b389b"
+ },
+ "ex:hasBeginningTimestamp": {
+ "@type": "xsd:dateTime",
+ "@value": "2020-01-02T03:04:05.6789Z"
+ },
+ "ex:hasEndingTimestamp": {
+ "@type": "xsd:dateTime",
+ "@value": "2021-02-03T04:05:06.7890Z"
+ }
+ },
+ {
+ "@id": "kb:Instant-ef0da4b8-d014-4142-b9f5-b0a0091965b8",
+ "@type": "ex:Instant",
+ "rdfs:label": "T0",
+ "rdfs:comment": "The instant that is the beginning of E.",
+ "ex:hasTimestamp": {
+ "@type": "xsd:dateTime",
+ "@value": "2020-01-02T03:04:05.6789Z"
+ }
+ },
+ {
+ "@id": "kb:Instant-a9dd29d9-c854-4cdd-917a-7de5226b389b",
+ "@type": "ex:Instant",
+ "rdfs:label": "T1",
+ "rdfs:comment": "The instant that is the end of E.",
+ "ex:hasTimestamp": {
+ "@type": "xsd:dateTime",
+ "@value": "2021-02-03T04:05:06.7890Z"
+ }
+ }
+ ]
+}