Skip to content

Commit

Permalink
Merge pull request #115 from casework/release-1.0.0
Browse files Browse the repository at this point in the history
Release 1.0.0
  • Loading branch information
ajnelson-nist committed Sep 1, 2022
2 parents 4099927 + ce75e4e commit 82d96f6
Show file tree
Hide file tree
Showing 10 changed files with 129 additions and 60 deletions.
18 changes: 18 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,9 +1,27 @@
2022-08-31
* ONT-295: Release CASE 1.0.0, with release notes at https://caseontology.org/releases/1.0.0/
* (761b058): Adopt UCO 1.0.0
* (40c4ba1): UCO Issue 430: Require non-blank nodes in graph data
* (33a0c3e): UCO Issue 437: Adopt priorVersion practice prepared for UCO 1.0.0
* ONT-410: Release CASE 0.7.1, with release notes at https://caseontology.org/releases/0.7.1/
* (5b8c03f): UCO Issue 437: Adopt UCO 0.9.1
* (e673017): UCO OC-217, CP-107: Revise ontology IRI to be slash-based and drop IRI base
* (0e7337e): UCO Issue 437: Adopt versionIRI practice prepared for UCO 0.9.1

2022-08-30
* (d9db048): CASE Issue 106: Removed legacy requirements.txt

2022-08-23
* (25bc31e): CASE Issue 98: Change minCount from 1 to 0 on multiple properties on Investigation object
* (8c4322c): ONT-467: Vocabulary datatypes are OWL-syntactically incomplete (Fix OWL syntax of CASE datatype)

2022-08-22
* (52834ea): UCO Issue 406: UCO should perform OWL 2 DL review with SHACL-SPARQL
* (cd82078): UCO OC-217, CP-107: Revise ontology IRI to be slash-based and drop IRI base
* (4f4731f): UCO Issue 387: Adapt for UCO files being under different directories
* (a495369): UCO CP-100: Apply semi-open vocabulary patterns
* (2a5af00): UCO Issue 424: Replace UCO glom_graph.py reference with rdfpipe

2022-06-17
* ONT-476: Release CASE 0.7.0, with release notes at https://caseontology.org/releases/0.7.0/

Expand Down
2 changes: 1 addition & 1 deletion dependencies/UCO
Submodule UCO updated 94 files
+6 −0 .gitmodules
+11 −1 Makefile
+3 −3 README.md
+1 −1 dependencies/CASE-Utility-SHACL-Inheritance-Reviewer
+1 −0 dependencies/collections-ontology
+1 −0 dependencies/error
+52 −23 ontology/Makefile
+59 −0 ontology/co/Makefile
+159 −0 ontology/co/co.ttl
+0 −49 ontology/master/uco.ttl
+59 −0 ontology/owl/Makefile
+355 −0 ontology/owl/owl.ttl
+0 −221 ontology/types/types.ttl
+55 −0 ontology/uco/Makefile
+39 −27 ontology/uco/action/action.ttl
+228 −0 ontology/uco/configuration/configuration.ttl
+111 −36 ontology/uco/core/core.ttl
+8 −7 ontology/uco/identity/identity.ttl
+5 −3 ontology/uco/location/location.ttl
+9 −5 ontology/uco/marking/marking.ttl
+51 −0 ontology/uco/master/uco.ttl
+1,382 −443 ontology/uco/observable/observable.ttl
+6 −3 ontology/uco/pattern/pattern.ttl
+5 −3 ontology/uco/role/role.ttl
+5 −3 ontology/uco/time/time.ttl
+33 −179 ontology/uco/tool/tool.ttl
+431 −0 ontology/uco/types/types.ttl
+5 −3 ontology/uco/victim/victim.ttl
+1,314 −0 ontology/uco/vocabulary/vocabulary.ttl
+0 −1,240 ontology/vocabulary/vocabulary.ttl
+1 −1 src/review.mk
+42 −13 tests/Makefile
+1 −0 tests/dependencies/.gitignore
+60 −0 tests/dependencies/Makefile
+36 −2 tests/examples/Makefile
+8 −7 tests/examples/action_inheritance_PASS.json
+1 −1 tests/examples/action_inheritance_PASS_validation.ttl
+8 −7 tests/examples/action_inheritance_XFAIL.json
+34 −93 tests/examples/action_inheritance_XFAIL_validation.ttl
+17 −17 tests/examples/action_result_PASS.json
+190 −0 tests/examples/co_PASS.json
+11 −0 tests/examples/co_PASS_validation.ttl
+206 −0 tests/examples/co_XFAIL.json
+135 −0 tests/examples/co_XFAIL_validation.ttl
+66 −0 tests/examples/configuration_setting_PASS.json
+11 −0 tests/examples/configuration_setting_PASS_validation.ttl
+49 −0 tests/examples/configuration_setting_XFAIL.json
+39 −0 tests/examples/configuration_setting_XFAIL_validation.ttl
+30 −0 tests/examples/has_facet_inverse_functional_PASS.json
+11 −0 tests/examples/has_facet_inverse_functional_PASS_validation.ttl
+26 −0 tests/examples/has_facet_inverse_functional_XFAIL.json
+68 −0 tests/examples/has_facet_inverse_functional_XFAIL_validation.ttl
+1 −1 tests/examples/hash_PASS.json
+4 −4 tests/examples/hash_XFAIL.json
+26 −8 tests/examples/hash_XFAIL_validation.ttl
+8 −2 tests/examples/location_PASS.json
+6 −2 tests/examples/location_XFAIL.json
+7 −22 tests/examples/location_XFAIL_validation.ttl
+196 −0 tests/examples/message_thread_PASS.json
+11 −0 tests/examples/message_thread_PASS_validation.ttl
+198 −0 tests/examples/message_thread_XFAIL.json
+144 −0 tests/examples/message_thread_XFAIL_validation.ttl
+27 −0 tests/examples/owl_axiom_PASS.json
+11 −0 tests/examples/owl_axiom_PASS_validation.ttl
+28 −0 tests/examples/owl_axiom_XFAIL.json
+35 −0 tests/examples/owl_axiom_XFAIL_validation.ttl
+22 −0 tests/examples/owl_properties_PASS.json
+11 −0 tests/examples/owl_properties_PASS_validation.ttl
+31 −0 tests/examples/owl_properties_XFAIL.json
+77 −0 tests/examples/owl_properties_XFAIL_validation.ttl
+55 −0 tests/examples/rdf_list_PASS.json
+11 −0 tests/examples/rdf_list_PASS_validation.ttl
+59 −0 tests/examples/rdf_list_XFAIL.json
+56 −0 tests/examples/rdf_list_XFAIL_validation.ttl
+22 −22 tests/examples/relationship_PASS.json
+40 −40 tests/examples/relationship_XFAIL.json
+12 −12 tests/examples/relationship_XFAIL_validation.ttl
+278 −52 tests/examples/test_validation.py
+52 −0 tests/examples/thread_PASS.json
+11 −0 tests/examples/thread_PASS_validation.ttl
+113 −0 tests/examples/thread_XFAIL.json
+87 −0 tests/examples/thread_XFAIL_validation.ttl
+26 −0 tests/examples/uco_thing_XFAIL.json
+131 −0 tests/examples/uco_thing_XFAIL_validation.ttl
+0 −3 tests/shapes/Makefile
+2 −2 tests/shapes/examples_uco_owl/Makefile
+112 −0 tests/shapes/examples_uco_owl/owl_incompatibleWith_shape_PASS.ttl
+141 −0 tests/shapes/examples_uco_owl/owl_incompatibleWith_shape_PASS_validation.ttl
+0 −10 tests/shapes/examples_uco_qc/owl_Ontology_shape_property_owl_versionIRI_XFAIL_validation.ttl
+26 −0 tests/shapes/test_qc_shapes.py
+0 −103 tests/shapes/uco-owl.ttl
+22 −0 tests/shapes/uco-qc.ttl
+0 −39 tests/src/glom_graph.py
+160 −9 tests/test_uco_monolithic.py
57 changes: 46 additions & 11 deletions ontology/investigation/investigation.ttl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# imports: https://ontology.caseontology.org/case/vocabulary/0.7.1
# imports: https://ontology.unifiedcyberontology.org/uco/action/0.9.1
# imports: https://ontology.unifiedcyberontology.org/uco/role/0.9.1
# imports: https://ontology.caseontology.org/case/vocabulary/1.0.0
# imports: https://ontology.unifiedcyberontology.org/uco/action/1.0.0
# imports: https://ontology.unifiedcyberontology.org/uco/role/1.0.0

@prefix investigation: <https://ontology.caseontology.org/case/investigation/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
Expand All @@ -18,12 +18,14 @@
rdfs:label "investigation"@en ;
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." ;
owl:imports
vocabulary:0.7.1 ,
uco-action:0.9.1 ,
uco-role:0.9.1
vocabulary:1.0.0 ,
uco-action:1.0.0 ,
uco-role:1.0.0
;
owl:incompatibleWith investigation:0.7.1 ;
owl:ontologyIRI <https://ontology.caseontology.org/case/investigation> ;
owl:versionIRI investigation:0.7.1 ;
owl:priorVersion investigation:0.7.1 ;
owl:versionIRI investigation:1.0.0 ;
.

investigation:Attorney
Expand Down Expand Up @@ -61,13 +63,11 @@ investigation:Authorization
[
sh:datatype xsd:string ;
sh:maxCount "1"^^xsd:integer ;
sh:minCount "1"^^xsd:integer ;
sh:nodeKind sh:Literal ;
sh:path investigation:authorizationType ;
] ,
[
sh:datatype xsd:string ;
sh:minCount "1"^^xsd:integer ;
sh:nodeKind sh:Literal ;
sh:path investigation:authorizationIdentifier ;
]
Expand Down Expand Up @@ -136,9 +136,38 @@ investigation:Investigation
] ,
[
sh:datatype vocabulary:InvestigationFormVocab ;
sh:message "Value is outside the default vocabulary InvestigationFormVocab." ;
sh:path investigation:investigationForm ;
sh:severity sh:Info ;
] ,
[
sh:maxCount "1"^^xsd:integer ;
sh:minCount "1"^^xsd:integer ;
sh:nodeKind sh:Literal ;
sh:or (
[
sh:datatype vocabulary:InvestigationFormVocab ;
]
[
sh:datatype xsd:string ;
]
) ;
sh:path investigation:investigationForm ;
] ,
[
sh:message "Value is not member of the vocabulary InvestigationFormVocab." ;
sh:or (
[
sh:datatype vocabulary:InvestigationFormVocab ;
sh:in (
"case"^^vocabulary:InvestigationFormVocab
"incident"^^vocabulary:InvestigationFormVocab
"suspicious-activity"^^vocabulary:InvestigationFormVocab
) ;
]
[
sh:datatype xsd:string ;
]
) ;
sh:path investigation:investigationForm ;
]
;
Expand Down Expand Up @@ -262,7 +291,13 @@ investigation:investigationForm
a owl:DatatypeProperty ;
rdfs:label "investigationForm"@en ;
rdfs:comment "A label categorizing a type of investigation (case, incident, suspicious-activity, etc.)"@en ;
rdfs:range vocabulary:InvestigationFormVocab ;
rdfs:range [
a rdfs:Datatype ;
owl:unionOf (
vocabulary:InvestigationFormVocab
xsd:string
) ;
] ;
.

investigation:investigationStatus
Expand Down
18 changes: 10 additions & 8 deletions ontology/master/case.ttl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# imports: https://ontology.caseontology.org/case/investigation/0.7.1
# imports: https://ontology.caseontology.org/case/vocabulary/0.7.1
# imports: https://ontology.unifiedcyberontology.org/uco/uco/0.9.1
# imports: https://ontology.caseontology.org/case/investigation/1.0.0
# imports: https://ontology.caseontology.org/case/vocabulary/1.0.0
# imports: https://ontology.unifiedcyberontology.org/uco/uco/1.0.0

@prefix dct: <http://purl.org/dc/terms/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
Expand All @@ -17,12 +17,14 @@
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 ;
dct:title "Cyber-investigation Analysis Standard Expression (CASE)"@en ;
owl:imports
<https://ontology.caseontology.org/case/investigation/0.7.1> ,
<https://ontology.caseontology.org/case/vocabulary/0.7.1> ,
<https://ontology.unifiedcyberontology.org/uco/uco/0.9.1>
<https://ontology.caseontology.org/case/investigation/1.0.0> ,
<https://ontology.caseontology.org/case/vocabulary/1.0.0> ,
<https://ontology.unifiedcyberontology.org/uco/uco/1.0.0>
;
owl:incompatibleWith <https://ontology.caseontology.org/case/case/0.7.1> ;
owl:ontologyIRI <https://ontology.caseontology.org/case/case> ;
owl:versionIRI <https://ontology.caseontology.org/case/case/0.7.1> ;
owl:versionInfo "0.7.1" ;
owl:priorVersion <https://ontology.caseontology.org/case/case/0.7.1> ;
owl:versionIRI <https://ontology.caseontology.org/case/case/1.0.0> ;
owl:versionInfo "1.0.0" ;
.

19 changes: 12 additions & 7 deletions ontology/vocabulary/vocabulary.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,24 @@
<https://ontology.caseontology.org/case/vocabulary>
a owl:Ontology ;
rdfs:label "vocabularies"@en ;
owl:incompatibleWith vocab:0.7.1 ;
owl:ontologyIRI <https://ontology.caseontology.org/case/vocabulary> ;
owl:versionIRI vocab:0.7.1 ;
owl:priorVersion vocab:0.7.1 ;
owl:versionIRI vocab:1.0.0 ;
.

vocab:InvestigationFormVocab
a rdfs:Datatype ;
rdfs:subClassOf rdfs:Resource ;
rdfs:label "Investigation Form Vocabulary"@en-US ;
rdfs:comment "Defines an open-vocabulary of investigation forms."@en-US ;
owl:oneOf (
"case"^^vocab:InvestigationFormVocab
"incident"^^vocab:InvestigationFormVocab
"suspicious-activity"^^vocab:InvestigationFormVocab
) ;
owl:equivalentClass [
a rdfs:Datatype ;
owl:onDatatype xsd:string ;
owl:oneOf (
"case"^^vocab:InvestigationFormVocab
"incident"^^vocab:InvestigationFormVocab
"suspicious-activity"^^vocab:InvestigationFormVocab
) ;
] ;
.

8 changes: 0 additions & 8 deletions requirements.txt

This file was deleted.

35 changes: 24 additions & 11 deletions tests/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ top_srcdir := $(shell cd .. ; pwd)
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)

case_turtle_files := $(shell /bin/ls $(top_srcdir)/ontology/*/*.ttl)
uco_turtle_files := $(shell /bin/ls $(top_srcdir)/dependencies/UCO/ontology/*/*.ttl)
uco_turtle_files := $(shell /bin/ls $(top_srcdir)/dependencies/UCO/ontology/*/*.ttl $(top_srcdir)/dependencies/UCO/ontology/*/*/*.ttl)

uco_imported_ontology_files := \
$(top_srcdir)/dependencies/UCO/dependencies/collections-ontology/collections.owl \
$(top_srcdir)/dependencies/UCO/dependencies/error/docs/current/error.owl

all:

Expand Down Expand Up @@ -56,46 +60,55 @@ all:

case_monolithic.ttl: \
$(top_srcdir)/.lib.done.log \
$(top_srcdir)/dependencies/UCO/tests/src/glom_graph.py \
$(case_turtle_files) \
$(uco_turtle_files) \
.shapes.done.log
source venv/bin/activate \
&& python3 $(top_srcdir)/dependencies/UCO/tests/src/glom_graph.py \
__$@ \
&& rdfpipe \
--output-format turtle \
$(case_turtle_files) \
$(uco_turtle_files)
# Review CASE for OWL 2 DL versioning conformance.
$(uco_turtle_files) \
> __$@
# Review CASE closure for versioning consistency.
source venv/bin/activate \
&& rdfpipe \
__$@ \
$(imported_ontology_files) \
> ___$@
source venv/bin/activate \
&& pyshacl \
--data-file-format turtle \
--format turtle \
--inference none \
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-owl.ttl \
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-closure-qc.ttl \
--shacl-file-format turtle \
__$@
___$@
# Test has passed; remove closure file.
rm ___$@
# Review CASE for practice conformance.
source venv/bin/activate \
&& pyshacl \
--data-file-format turtle \
--format turtle \
--inference none \
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-closure-qc.ttl \
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-qc.ttl \
--shacl-file-format turtle \
__$@
source venv/bin/activate \
&& pyshacl \
--data-file-format turtle \
--format turtle \
--inference none \
--shacl $(top_srcdir)/dependencies/UCO/tests/shapes/uco-qc.ttl \
--shacl shapes/case-qc.ttl \
--shacl-file-format turtle \
__$@
# Review CASE for OWL 2 DL conformance.
source venv/bin/activate \
&& pyshacl \
--data-file-format turtle \
--format turtle \
--inference none \
--shacl shapes/case-qc.ttl \
--shacl $(top_srcdir)/dependencies/UCO/ontology/owl/owl.ttl \
--shacl-file-format turtle \
__$@
java -jar $(top_srcdir)/dependencies/UCO/lib/rdf-toolkit.jar \
Expand Down
14 changes: 8 additions & 6 deletions tests/examples/investigative_action_PASS.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,45 +9,47 @@
},
"@graph": [
{
"@id": "kb:file-1",
"@id": "kb:file-1ef24857-e713-40ec-b325-b2561a4fcb3a",
"@type": [
"uco-observable:File",
"uco-observable:RasterPicture"
],
"uco-core:description": "Screenshot of webpage",
"uco-core:hasFacet": [
{
"@id": "kb:file-facet-0e21a61a-3a68-490c-9e93-d456c227d14b",
"@type": "uco-observable:FileFacet",
"uco-observable:fileName": "screenshot-1.png",
"uco-observable:sizeInBytes": 1234567
},
{
"@id": "kb:raster-picture-facet-166f8489-cff6-4405-b977-be46dc4a1a88",
"@type": "uco-observable:RasterPictureFacet",
"uco-observable:pictureHeight": 1024,
"uco-observable:pictureWidth": 768
}
]
},
{
"@id": "kb:investigative-action-1",
"@id": "kb:investigative-action-45a85ed1-acd5-45be-aa78-891170bbd9b6",
"@type": "case-investigation:InvestigativeAction",
"uco-action:result": [
{
"@id": "kb:file-1"
"@id": "kb:file-1ef24857-e713-40ec-b325-b2561a4fcb3a"
},
{
"@id": "kb:provenance-record-1"
"@id": "kb:provenance-record-9e807c8c-ad7e-41aa-bd60-1dc98cae25c7"
}
],
"uco-core:name": "Submit reference graphic"
},
{
"@id": "kb:provenance-record-1",
"@id": "kb:provenance-record-9e807c8c-ad7e-41aa-bd60-1dc98cae25c7",
"@type": "case-investigation:ProvenanceRecord",
"case-investigation:exhibitNumber": "1",
"case-investigation:rootExhibitNumber": "1",
"uco-core:object": {
"@id": "kb:file-1"
"@id": "kb:file-1ef24857-e713-40ec-b325-b2561a4fcb3a"
}
}
]
Expand Down
14 changes: 8 additions & 6 deletions tests/examples/investigative_action_XFAIL.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,20 @@
},
"@graph": [
{
"@id": "kb:file-1",
"@id": "kb:file-9c9e20f9-e545-490f-bd3d-1fe230c18c0b",
"@type": [
"uco-observable:File",
"uco-observable:RasterPicture"
],
"uco-core:description": "Screenshot of webpage",
"uco-core:hasFacet": [
{
"@id": "kb:file-facet-da204016-29ff-4d5e-a36f-ff75a9d3169b",
"@type": "uco-observable:FileFacet",
"uco-observable:fileName": "screenshot-1.png"
},
{
"@id": "kb:raster-picture-facet-022af595-c417-47bf-b5f3-9a19ed3554bc",
"@type": "uco-observable:RasterPictureFacet",
"rdfs:comment": "The sizeInBytes property does not belong on this Facet.",
"uco-observable:pictureHeight": 1024,
Expand All @@ -30,26 +32,26 @@
]
},
{
"@id": "kb:investigative-action-1",
"@id": "kb:investigative-action-a6b22845-2d81-4d24-ac22-dec5139d027a",
"@type": "case-investigation:InvestigativeAction",
"uco-action:result": [
{
"@id": "kb:file-1"
"@id": "kb:file-9c9e20f9-e545-490f-bd3d-1fe230c18c0b"
},
{
"@id": "kb:provenance-record-1"
"@id": "kb:provenance-record-f54f88ad-2659-4fba-8c3e-d96efa560fdf"
}
],
"uco-core:name": "Submit reference graphic"
},
{
"@id": "kb:provenance-record-1",
"@id": "kb:provenance-record-f54f88ad-2659-4fba-8c3e-d96efa560fdf",
"@type": "case-investigation:ProvenanceRecord",
"rdfs:comment": "The exhibitNumber and rootExhibitNumber properties are errantly integers here, instead of strings.",
"case-investigation:exhibitNumber": 1,
"case-investigation:rootExhibitNumber": 1,
"uco-core:object": {
"@id": "kb:file-1"
"@id": "kb:file-9c9e20f9-e545-490f-bd3d-1fe230c18c0b"
}
}
]
Expand Down
Loading

0 comments on commit 82d96f6

Please sign in to comment.