Skip to content

Commit 82d96f6

Browse files
Merge pull request #115 from casework/release-1.0.0
Release 1.0.0
2 parents 4099927 + ce75e4e commit 82d96f6

File tree

10 files changed

+129
-60
lines changed

10 files changed

+129
-60
lines changed

ChangeLog

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,27 @@
11
2022-08-31
2+
* ONT-295: Release CASE 1.0.0, with release notes at https://caseontology.org/releases/1.0.0/
3+
* (761b058): Adopt UCO 1.0.0
4+
* (40c4ba1): UCO Issue 430: Require non-blank nodes in graph data
5+
* (33a0c3e): UCO Issue 437: Adopt priorVersion practice prepared for UCO 1.0.0
26
* ONT-410: Release CASE 0.7.1, with release notes at https://caseontology.org/releases/0.7.1/
37
* (5b8c03f): UCO Issue 437: Adopt UCO 0.9.1
48
* (e673017): UCO OC-217, CP-107: Revise ontology IRI to be slash-based and drop IRI base
59
* (0e7337e): UCO Issue 437: Adopt versionIRI practice prepared for UCO 0.9.1
610

11+
2022-08-30
12+
* (d9db048): CASE Issue 106: Removed legacy requirements.txt
13+
14+
2022-08-23
15+
* (25bc31e): CASE Issue 98: Change minCount from 1 to 0 on multiple properties on Investigation object
16+
* (8c4322c): ONT-467: Vocabulary datatypes are OWL-syntactically incomplete (Fix OWL syntax of CASE datatype)
17+
18+
2022-08-22
19+
* (52834ea): UCO Issue 406: UCO should perform OWL 2 DL review with SHACL-SPARQL
20+
* (cd82078): UCO OC-217, CP-107: Revise ontology IRI to be slash-based and drop IRI base
21+
* (4f4731f): UCO Issue 387: Adapt for UCO files being under different directories
22+
* (a495369): UCO CP-100: Apply semi-open vocabulary patterns
23+
* (2a5af00): UCO Issue 424: Replace UCO glom_graph.py reference with rdfpipe
24+
725
2022-06-17
826
* ONT-476: Release CASE 0.7.0, with release notes at https://caseontology.org/releases/0.7.0/
927

dependencies/UCO

Submodule UCO updated 94 files

ontology/investigation/investigation.ttl

Lines changed: 46 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# imports: https://ontology.caseontology.org/case/vocabulary/0.7.1
2-
# imports: https://ontology.unifiedcyberontology.org/uco/action/0.9.1
3-
# imports: https://ontology.unifiedcyberontology.org/uco/role/0.9.1
1+
# imports: https://ontology.caseontology.org/case/vocabulary/1.0.0
2+
# imports: https://ontology.unifiedcyberontology.org/uco/action/1.0.0
3+
# imports: https://ontology.unifiedcyberontology.org/uco/role/1.0.0
44

55
@prefix investigation: <https://ontology.caseontology.org/case/investigation/> .
66
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@@ -18,12 +18,14 @@
1818
rdfs:label "investigation"@en ;
1919
rdfs:comment "This ontology defines key concepts, and their associated properties and relationships, for characterizing cyber-investigations in the broadest range of contexts, including security incidents, criminal investigations, civil and regulatory matters, intelligence operations, international disputes, accident inquiries, policy violations, and others." ;
2020
owl:imports
21-
vocabulary:0.7.1 ,
22-
uco-action:0.9.1 ,
23-
uco-role:0.9.1
21+
vocabulary:1.0.0 ,
22+
uco-action:1.0.0 ,
23+
uco-role:1.0.0
2424
;
25+
owl:incompatibleWith investigation:0.7.1 ;
2526
owl:ontologyIRI <https://ontology.caseontology.org/case/investigation> ;
26-
owl:versionIRI investigation:0.7.1 ;
27+
owl:priorVersion investigation:0.7.1 ;
28+
owl:versionIRI investigation:1.0.0 ;
2729
.
2830

2931
investigation:Attorney
@@ -61,13 +63,11 @@ investigation:Authorization
6163
[
6264
sh:datatype xsd:string ;
6365
sh:maxCount "1"^^xsd:integer ;
64-
sh:minCount "1"^^xsd:integer ;
6566
sh:nodeKind sh:Literal ;
6667
sh:path investigation:authorizationType ;
6768
] ,
6869
[
6970
sh:datatype xsd:string ;
70-
sh:minCount "1"^^xsd:integer ;
7171
sh:nodeKind sh:Literal ;
7272
sh:path investigation:authorizationIdentifier ;
7373
]
@@ -136,9 +136,38 @@ investigation:Investigation
136136
] ,
137137
[
138138
sh:datatype vocabulary:InvestigationFormVocab ;
139+
sh:message "Value is outside the default vocabulary InvestigationFormVocab." ;
140+
sh:path investigation:investigationForm ;
141+
sh:severity sh:Info ;
142+
] ,
143+
[
139144
sh:maxCount "1"^^xsd:integer ;
140-
sh:minCount "1"^^xsd:integer ;
141145
sh:nodeKind sh:Literal ;
146+
sh:or (
147+
[
148+
sh:datatype vocabulary:InvestigationFormVocab ;
149+
]
150+
[
151+
sh:datatype xsd:string ;
152+
]
153+
) ;
154+
sh:path investigation:investigationForm ;
155+
] ,
156+
[
157+
sh:message "Value is not member of the vocabulary InvestigationFormVocab." ;
158+
sh:or (
159+
[
160+
sh:datatype vocabulary:InvestigationFormVocab ;
161+
sh:in (
162+
"case"^^vocabulary:InvestigationFormVocab
163+
"incident"^^vocabulary:InvestigationFormVocab
164+
"suspicious-activity"^^vocabulary:InvestigationFormVocab
165+
) ;
166+
]
167+
[
168+
sh:datatype xsd:string ;
169+
]
170+
) ;
142171
sh:path investigation:investigationForm ;
143172
]
144173
;
@@ -262,7 +291,13 @@ investigation:investigationForm
262291
a owl:DatatypeProperty ;
263292
rdfs:label "investigationForm"@en ;
264293
rdfs:comment "A label categorizing a type of investigation (case, incident, suspicious-activity, etc.)"@en ;
265-
rdfs:range vocabulary:InvestigationFormVocab ;
294+
rdfs:range [
295+
a rdfs:Datatype ;
296+
owl:unionOf (
297+
vocabulary:InvestigationFormVocab
298+
xsd:string
299+
) ;
300+
] ;
266301
.
267302

268303
investigation:investigationStatus

ontology/master/case.ttl

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# imports: https://ontology.caseontology.org/case/investigation/0.7.1
2-
# imports: https://ontology.caseontology.org/case/vocabulary/0.7.1
3-
# imports: https://ontology.unifiedcyberontology.org/uco/uco/0.9.1
1+
# imports: https://ontology.caseontology.org/case/investigation/1.0.0
2+
# imports: https://ontology.caseontology.org/case/vocabulary/1.0.0
3+
# imports: https://ontology.unifiedcyberontology.org/uco/uco/1.0.0
44

55
@prefix dct: <http://purl.org/dc/terms/> .
66
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@@ -17,12 +17,14 @@
1717
rdfs:comment "The Cyber-investigation Analysis Standard Expression (CASE) ontology is a community-developed standard that defines concepts used in a broad range of cyber-investigation domains, including digital forensic science, incident response, counter-terrorism, criminal justice, forensic intelligence, and situational awareness. CASE includes all aspects of the digital forensic process, from evidence-gathering and chain of custody, to generating a final report. The goal is to increase sharing and interoperability of cyber-investigation information among organizations and between forensic analytic tools. CASE aligns with and extends the Unified Cyber Ontology (UCO). The preferred namespace abbreviation for this ontology is: case-master."@en ;
1818
dct:title "Cyber-investigation Analysis Standard Expression (CASE)"@en ;
1919
owl:imports
20-
<https://ontology.caseontology.org/case/investigation/0.7.1> ,
21-
<https://ontology.caseontology.org/case/vocabulary/0.7.1> ,
22-
<https://ontology.unifiedcyberontology.org/uco/uco/0.9.1>
20+
<https://ontology.caseontology.org/case/investigation/1.0.0> ,
21+
<https://ontology.caseontology.org/case/vocabulary/1.0.0> ,
22+
<https://ontology.unifiedcyberontology.org/uco/uco/1.0.0>
2323
;
24+
owl:incompatibleWith <https://ontology.caseontology.org/case/case/0.7.1> ;
2425
owl:ontologyIRI <https://ontology.caseontology.org/case/case> ;
25-
owl:versionIRI <https://ontology.caseontology.org/case/case/0.7.1> ;
26-
owl:versionInfo "0.7.1" ;
26+
owl:priorVersion <https://ontology.caseontology.org/case/case/0.7.1> ;
27+
owl:versionIRI <https://ontology.caseontology.org/case/case/1.0.0> ;
28+
owl:versionInfo "1.0.0" ;
2729
.
2830

ontology/vocabulary/vocabulary.ttl

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,24 @@
77
<https://ontology.caseontology.org/case/vocabulary>
88
a owl:Ontology ;
99
rdfs:label "vocabularies"@en ;
10+
owl:incompatibleWith vocab:0.7.1 ;
1011
owl:ontologyIRI <https://ontology.caseontology.org/case/vocabulary> ;
11-
owl:versionIRI vocab:0.7.1 ;
12+
owl:priorVersion vocab:0.7.1 ;
13+
owl:versionIRI vocab:1.0.0 ;
1214
.
1315

1416
vocab:InvestigationFormVocab
1517
a rdfs:Datatype ;
16-
rdfs:subClassOf rdfs:Resource ;
1718
rdfs:label "Investigation Form Vocabulary"@en-US ;
1819
rdfs:comment "Defines an open-vocabulary of investigation forms."@en-US ;
19-
owl:oneOf (
20-
"case"^^vocab:InvestigationFormVocab
21-
"incident"^^vocab:InvestigationFormVocab
22-
"suspicious-activity"^^vocab:InvestigationFormVocab
23-
) ;
20+
owl:equivalentClass [
21+
a rdfs:Datatype ;
22+
owl:onDatatype xsd:string ;
23+
owl:oneOf (
24+
"case"^^vocab:InvestigationFormVocab
25+
"incident"^^vocab:InvestigationFormVocab
26+
"suspicious-activity"^^vocab:InvestigationFormVocab
27+
) ;
28+
] ;
2429
.
2530

requirements.txt

Lines changed: 0 additions & 8 deletions
This file was deleted.

tests/Makefile

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ top_srcdir := $(shell cd .. ; pwd)
1818
PYTHON3 ?= $(shell which python3.9 2>/dev/null || which python3.8 2>/dev/null || which python3.7 2>/dev/null || which python3.6 2>/dev/null || which python3)
1919

2020
case_turtle_files := $(shell /bin/ls $(top_srcdir)/ontology/*/*.ttl)
21-
uco_turtle_files := $(shell /bin/ls $(top_srcdir)/dependencies/UCO/ontology/*/*.ttl)
21+
uco_turtle_files := $(shell /bin/ls $(top_srcdir)/dependencies/UCO/ontology/*/*.ttl $(top_srcdir)/dependencies/UCO/ontology/*/*/*.ttl)
22+
23+
uco_imported_ontology_files := \
24+
$(top_srcdir)/dependencies/UCO/dependencies/collections-ontology/collections.owl \
25+
$(top_srcdir)/dependencies/UCO/dependencies/error/docs/current/error.owl
2226

2327
all:
2428

@@ -56,46 +60,55 @@ all:
5660

5761
case_monolithic.ttl: \
5862
$(top_srcdir)/.lib.done.log \
59-
$(top_srcdir)/dependencies/UCO/tests/src/glom_graph.py \
6063
$(case_turtle_files) \
6164
$(uco_turtle_files) \
6265
.shapes.done.log
6366
source venv/bin/activate \
64-
&& python3 $(top_srcdir)/dependencies/UCO/tests/src/glom_graph.py \
65-
__$@ \
67+
&& rdfpipe \
68+
--output-format turtle \
6669
$(case_turtle_files) \
67-
$(uco_turtle_files)
68-
# Review CASE for OWL 2 DL versioning conformance.
70+
$(uco_turtle_files) \
71+
> __$@
72+
# Review CASE closure for versioning consistency.
73+
source venv/bin/activate \
74+
&& rdfpipe \
75+
__$@ \
76+
$(imported_ontology_files) \
77+
> ___$@
6978
source venv/bin/activate \
7079
&& pyshacl \
7180
--data-file-format turtle \
7281
--format turtle \
7382
--inference none \
74-
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-owl.ttl \
83+
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-closure-qc.ttl \
7584
--shacl-file-format turtle \
76-
__$@
85+
___$@
86+
# Test has passed; remove closure file.
87+
rm ___$@
88+
# Review CASE for practice conformance.
7789
source venv/bin/activate \
7890
&& pyshacl \
7991
--data-file-format turtle \
8092
--format turtle \
8193
--inference none \
82-
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-closure-qc.ttl \
94+
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-qc.ttl \
8395
--shacl-file-format turtle \
8496
__$@
8597
source venv/bin/activate \
8698
&& pyshacl \
8799
--data-file-format turtle \
88100
--format turtle \
89101
--inference none \
90-
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-qc.ttl \
102+
--shacl shapes/case-qc.ttl \
91103
--shacl-file-format turtle \
92104
__$@
105+
# Review CASE for OWL 2 DL conformance.
93106
source venv/bin/activate \
94107
&& pyshacl \
95108
--data-file-format turtle \
96109
--format turtle \
97110
--inference none \
98-
--shacl shapes/case-qc.ttl \
111+
--shacl $(top_srcdir)/dependencies/UCO/ontology/owl/owl.ttl \
99112
--shacl-file-format turtle \
100113
__$@
101114
java -jar $(top_srcdir)/dependencies/UCO/lib/rdf-toolkit.jar \

tests/examples/investigative_action_PASS.json

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,45 +9,47 @@
99
},
1010
"@graph": [
1111
{
12-
"@id": "kb:file-1",
12+
"@id": "kb:file-1ef24857-e713-40ec-b325-b2561a4fcb3a",
1313
"@type": [
1414
"uco-observable:File",
1515
"uco-observable:RasterPicture"
1616
],
1717
"uco-core:description": "Screenshot of webpage",
1818
"uco-core:hasFacet": [
1919
{
20+
"@id": "kb:file-facet-0e21a61a-3a68-490c-9e93-d456c227d14b",
2021
"@type": "uco-observable:FileFacet",
2122
"uco-observable:fileName": "screenshot-1.png",
2223
"uco-observable:sizeInBytes": 1234567
2324
},
2425
{
26+
"@id": "kb:raster-picture-facet-166f8489-cff6-4405-b977-be46dc4a1a88",
2527
"@type": "uco-observable:RasterPictureFacet",
2628
"uco-observable:pictureHeight": 1024,
2729
"uco-observable:pictureWidth": 768
2830
}
2931
]
3032
},
3133
{
32-
"@id": "kb:investigative-action-1",
34+
"@id": "kb:investigative-action-45a85ed1-acd5-45be-aa78-891170bbd9b6",
3335
"@type": "case-investigation:InvestigativeAction",
3436
"uco-action:result": [
3537
{
36-
"@id": "kb:file-1"
38+
"@id": "kb:file-1ef24857-e713-40ec-b325-b2561a4fcb3a"
3739
},
3840
{
39-
"@id": "kb:provenance-record-1"
41+
"@id": "kb:provenance-record-9e807c8c-ad7e-41aa-bd60-1dc98cae25c7"
4042
}
4143
],
4244
"uco-core:name": "Submit reference graphic"
4345
},
4446
{
45-
"@id": "kb:provenance-record-1",
47+
"@id": "kb:provenance-record-9e807c8c-ad7e-41aa-bd60-1dc98cae25c7",
4648
"@type": "case-investigation:ProvenanceRecord",
4749
"case-investigation:exhibitNumber": "1",
4850
"case-investigation:rootExhibitNumber": "1",
4951
"uco-core:object": {
50-
"@id": "kb:file-1"
52+
"@id": "kb:file-1ef24857-e713-40ec-b325-b2561a4fcb3a"
5153
}
5254
}
5355
]

tests/examples/investigative_action_XFAIL.json

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,20 @@
99
},
1010
"@graph": [
1111
{
12-
"@id": "kb:file-1",
12+
"@id": "kb:file-9c9e20f9-e545-490f-bd3d-1fe230c18c0b",
1313
"@type": [
1414
"uco-observable:File",
1515
"uco-observable:RasterPicture"
1616
],
1717
"uco-core:description": "Screenshot of webpage",
1818
"uco-core:hasFacet": [
1919
{
20+
"@id": "kb:file-facet-da204016-29ff-4d5e-a36f-ff75a9d3169b",
2021
"@type": "uco-observable:FileFacet",
2122
"uco-observable:fileName": "screenshot-1.png"
2223
},
2324
{
25+
"@id": "kb:raster-picture-facet-022af595-c417-47bf-b5f3-9a19ed3554bc",
2426
"@type": "uco-observable:RasterPictureFacet",
2527
"rdfs:comment": "The sizeInBytes property does not belong on this Facet.",
2628
"uco-observable:pictureHeight": 1024,
@@ -30,26 +32,26 @@
3032
]
3133
},
3234
{
33-
"@id": "kb:investigative-action-1",
35+
"@id": "kb:investigative-action-a6b22845-2d81-4d24-ac22-dec5139d027a",
3436
"@type": "case-investigation:InvestigativeAction",
3537
"uco-action:result": [
3638
{
37-
"@id": "kb:file-1"
39+
"@id": "kb:file-9c9e20f9-e545-490f-bd3d-1fe230c18c0b"
3840
},
3941
{
40-
"@id": "kb:provenance-record-1"
42+
"@id": "kb:provenance-record-f54f88ad-2659-4fba-8c3e-d96efa560fdf"
4143
}
4244
],
4345
"uco-core:name": "Submit reference graphic"
4446
},
4547
{
46-
"@id": "kb:provenance-record-1",
48+
"@id": "kb:provenance-record-f54f88ad-2659-4fba-8c3e-d96efa560fdf",
4749
"@type": "case-investigation:ProvenanceRecord",
4850
"rdfs:comment": "The exhibitNumber and rootExhibitNumber properties are errantly integers here, instead of strings.",
4951
"case-investigation:exhibitNumber": 1,
5052
"case-investigation:rootExhibitNumber": 1,
5153
"uco-core:object": {
52-
"@id": "kb:file-1"
54+
"@id": "kb:file-9c9e20f9-e545-490f-bd3d-1fe230c18c0b"
5355
}
5456
}
5557
]

0 commit comments

Comments
 (0)