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

Oresteia: Add and associate other personae and locations mentioned in investigation descriptions #149

Merged
merged 5 commits into from
Jul 19, 2024
Merged
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions examples/illustrations/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
*/src/query-*.md
.drafting.ttl.validates*.log
all-drafting.ttl
generated-*.md
Expand Down
2 changes: 1 addition & 1 deletion examples/illustrations/Oresteia/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ RENDER_PROV := yes

RENDER_RELATIONSHIPS := yes

include ../src/illustration-nosrc.mk
include ../src/illustration-basedir.mk
618 changes: 357 additions & 261 deletions examples/illustrations/Oresteia/Oresteia.json

Large diffs are not rendered by default.

183 changes: 183 additions & 0 deletions examples/illustrations/Oresteia/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,189 @@ collectively called The Oresteia. For illustrative purposes, the characters
of these ancient stories are given access to modern technology.


## Investigations

These are the multiple investigations illustrated in this example (with SPARQL source `src/query-investgations.sparql`):

| | ?nInvestigation | ?lName | ?lDescription |
|----|--------------------------------------------------------------------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 0 | http://example.org/kb/investigation-4586742a-710a-454f-bcb8-b60e230ec1b2 | Crime A | In Mycenae, Atreus killed two sons of Thyestes, cooked them (except for their hands and heads), fed them to Thyestes, and then taunted Thyestes with his murdered sons' hands and heads. |
| 1 | http://example.org/kb/investigation-b05226da-eaef-4bc5-a139-ca12c94dbdfd | Crime B | In Mycenae, Thyestes raped his daughter Pelopia to have a son (Aegisthus) |
| 2 | http://example.org/kb/investigation-ac9fd560-261e-4cd6-af64-8b83d100b9a8 | Crime C | In Mycenae, Aegisthus killed Atreus (Agamemnon's father) |
| 3 | http://example.org/kb/investigation-2545442b-321c-454d-bcb8-c40d321ce2c2 | Crime D | In Aulis, Agamemnon killed his daughter Iphigenia as a sacrifice to the gods |
| 4 | http://example.org/kb/investigation-952d677d-6b62-4e53-9bac-1b113d268ac5 | Crime E | In the Palace of Argos, Agamemnon and Cassandra were killed by Clytemnestra (accomplice Aegisthus) |
| 5 | http://example.org/kb/investigation-5aa33dc6-7a39-4731-a754-62a9c41e5220 | Crime F | In the Palace of Argos, Clytemnestra and Aegisthus were killed by Orestes (accomplice Electra) |

<details>

<summary>SPARQL source - `query-investigations.sparql`</summary>

```sparql
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX case-investigation: <https://ontology.caseontology.org/case/investigation/>
PREFIX uco-core: <https://ontology.unifiedcyberontology.org/uco/core/>
SELECT ?nInvestigation ?lName ?lDescription
WHERE {
?nInvestigation
a/rdfs:subClassOf* case-investigation:Investigation ;
.
OPTIONAL {
?nInvestigation
uco-core:name ?lName ;
.
}
OPTIONAL {
?nInvestigation
uco-core:description ?lDescription ;
.
}
}
ORDER BY ?lName
```

</details>


## People

These are the people mentioned throughout the graph:

| | ?nPerson | ?lName | ?lGivenName | ?lFamilyName |
|----|-------------------------------------------------------------------------|--------------|---------------|----------------|
| 0 | http://example.org/kb/aegisthus-c7da5045-ad5f-4f3d-8a74-a7fd46e9628d | Aegisthus | | |
| 1 | http://example.org/kb/aeschylus-1ab8a80e-39fb-4209-9781-b10bdbc5d0c2 | | Aeschylus | Bard |
| 2 | http://example.org/kb/agamemnon-bf5ea2fe-a14b-4f13-9bd3-83063ff6397c | Agamemnon | | |
| 3 | http://example.org/kb/atreus-5c9fc0ba-251a-47c4-a1ec-b49ae7e3bce1 | Atreus | | |
| 4 | http://example.org/kb/cassandra-1b38d28a-f88f-471f-8f83-16877dedacc0 | | Cassandra | Troy |
| 5 | http://example.org/kb/clytemnestra-9e13b5c3-1f27-4035-981a-0ec9a1548006 | Clytemnestra | | |
| 6 | http://example.org/kb/electra-a960648e-c88e-4728-9853-7b7f06de8caa | | Electra | Argos |
| 7 | http://example.org/kb/eoghan-4ebb2f2c-ab97-4ea1-bc49-dc4496877848 | | | |
| 8 | http://example.org/kb/euripides-3696c710-161f-47af-9ae8-61b178611773 | | Euripides | Forte |
| 9 | http://example.org/kb/iphigenia-323bc6bc-d64b-42d1-a9f5-d4452efdbae6 | Iphigenia | | |
| 10 | http://example.org/kb/orestes-5e400330-677d-42c1-8b32-2836cda219bf | Orestes | | |
| 11 | http://example.org/kb/pelopia-d4b29a40-998b-4660-b67e-2ebb9683893d | Pelopia | | |
| 12 | http://example.org/kb/person-82684209-0ee5-45d9-b873-125d2ca63919 | Joachim Metz | | |
| 13 | http://example.org/kb/thyestes-b9111c63-19a8-4bf4-8287-b14485f01b45 | | Thyestes | Mycenae |
| 14 | http://example.org/kb/thyestes-son-2a869a9a-ab97-4fc9-95cf-63804fcf061f | | | |
| 15 | http://example.org/kb/thyestes-son-e992bb12-2322-46e8-b8f4-5095a4767b14 | | | |

<details>

<summary>SPARQL source - `query-people.sparql`</summary>

```sparql
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX uco-core: <https://ontology.unifiedcyberontology.org/uco/core/>
PREFIX uco-identity: <https://ontology.unifiedcyberontology.org/uco/identity/>
SELECT ?nPerson ?lName ?lGivenName ?lFamilyName
WHERE {
?nPerson
a/rdfs:subClassOf* uco-identity:Person ;
.
OPTIONAL {
?nPerson
uco-core:name ?lName ;
.
}
OPTIONAL {
?nPerson
uco-core:hasFacet / uco-identity:familyName ?lFamilyName ;
.
}
OPTIONAL {
?nPerson
uco-core:hasFacet / uco-identity:givenName ?lGivenName ;
.
}
}
ORDER BY ?nPerson
```

</details>

These are the investigations in which the people are generically linked:

| | ?lPersonName | ?lInA | ?lInB | ?lInC | ?lInD | ?lInE | ?lInF |
|----|----------------|---------|---------|---------|---------|---------|---------|
| 0 | | ✓ | | | | | |
| 1 | | ✓ | | | | | |
| 2 | Aegisthus | | ✓ | ✓ | | ✓ | ✓ |
| 3 | Aeschylus | | | | | ✓ | |
| 4 | Agamemnon | | | | ✓ | ✓ | |
| 5 | Atreus | ✓ | | ✓ | | | |
| 6 | Cassandra | | | | | ✓ | |
| 7 | Clytemnestra | | | | | ✓ | ✓ |
| 8 | Electra | | | | | ✓ | ✓ |
| 9 | Euripides | | | | | ✓ | |
| 10 | Iphigenia | | | | ✓ | | |
| 11 | Joachim Metz | | | | | | |
| 12 | Orestes | | | | | | ✓ |
| 13 | Pelopia | | ✓ | | | | |
| 14 | Thyestes | ✓ | ✓ | | | ✓ | |

<details>

<summary>SPARQL source - `query-people-investigations`</summary>

```sparql
PREFIX kb: <http://example.org/kb/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX case-investigation: <https://ontology.caseontology.org/case/investigation/>
PREFIX uco-core: <https://ontology.unifiedcyberontology.org/uco/core/>
PREFIX uco-identity: <https://ontology.unifiedcyberontology.org/uco/identity/>
SELECT ?lPersonName ?lInA ?lInB ?lInC ?lInD ?lInE ?lInF
WHERE {
?nPerson
a/rdfs:subClassOf* uco-identity:Person ;
.
OPTIONAL {
?nPerson
uco-core:name ?lName ;
.
}
OPTIONAL {
?nPerson
uco-core:hasFacet / uco-identity:givenName ?lGivenName ;
.
}
BIND(COALESCE(?lGivenName, ?lName) AS ?lPersonName)

OPTIONAL {
kb:investigation-4586742a-710a-454f-bcb8-b60e230ec1b2 uco-core:object ?nPerson .
BIND("✓" AS ?lInA)
}

OPTIONAL {
kb:investigation-b05226da-eaef-4bc5-a139-ca12c94dbdfd uco-core:object ?nPerson .
BIND("✓" AS ?lInB)
}

OPTIONAL {
kb:investigation-ac9fd560-261e-4cd6-af64-8b83d100b9a8 uco-core:object ?nPerson .
BIND("✓" AS ?lInC)
}

OPTIONAL {
kb:investigation-2545442b-321c-454d-bcb8-c40d321ce2c2 uco-core:object ?nPerson .
BIND("✓" AS ?lInD)
}

OPTIONAL {
kb:investigation-952d677d-6b62-4e53-9bac-1b113d268ac5 uco-core:object ?nPerson .
BIND("✓" AS ?lInE)
}

OPTIONAL {
kb:investigation-5aa33dc6-7a39-4731-a754-62a9c41e5220 uco-core:object ?nPerson .
BIND("✓" AS ?lInF)
}
}
ORDER BY ?lPersonName
```

</details>


## Relationship illustrations

Using a proof-of-concept illustration system, a render of this scenario's `uco-core:Relationship` objects is available:
Expand Down
14 changes: 14 additions & 0 deletions examples/illustrations/Oresteia/src/Makefile
Original file line number Diff line number Diff line change
@@ -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
Loading
Loading