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

Issues 586, 590: Catch develop-2.0.0 up to develop #608

Merged
merged 6 commits into from
Jun 12, 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
11 changes: 11 additions & 0 deletions ontology/uco/core/core.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,17 @@ core:UcoInherentCharacterizationThing
sh:targetClass core:UcoInherentCharacterizationThing ;
.

core:UcoInherentCharacterizationThing-disjointWith-UcoObject-shape
a sh:NodeShape ;
sh:message "observable:UcoInherentCharacterizationThing and observable:UcoObject are disjoint classes. Assigning both types to a single node will be an error in UCO 2.0.0."@en ;
sh:not [
a sh:NodeShape ;
sh:class core:UcoObject ;
] ;
sh:severity sh:Warning ;
sh:targetClass core:UcoInherentCharacterizationThing ;
.

core:UcoObject
a
owl:Class ,
Expand Down
8 changes: 8 additions & 0 deletions ontology/uco/observable/observable.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,14 @@ observable:AlternateDataStream
rdfs:subClassOf observable:ObservableObject ;
rdfs:label "AlternateDataStream"@en ;
rdfs:comment "An alternate data stream is data content stored within an NTFS file that is independent of the standard content stream of the file and is hidden from access by default NTFS file viewing mechanisms."@en ;
rdfs:seeAlso [
a sh:NodeShape ;
rdfs:comment "This anonymous shape is attached with rdfs:seeAlso in order to associate a warning-severity class constraint, that will only be necessary as an independent shape until UCO 2.0.0."@en ;
sh:class observable:FileSystemObject ;
sh:message "In UCO 2.0.0, uco-observable:AlternateDataStream will be a subclass of uco-observable:FileSystemObject. In preparation for UCO 2.0.0, the additional type uco-observable:FileSystemObject should be assigned to this node."@en ;
sh:severity sh:Warning ;
sh:targetClass observable:AlternateDataStream ;
] ;
sh:targetClass observable:AlternateDataStream ;
.

Expand Down
22 changes: 22 additions & 0 deletions ontology/uco/types/types.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,17 @@ types:Thread
] ;
.

types:Thread-disjointWith-co-List-shape
a sh:NodeShape ;
sh:message "types:Thread and co:List are disjoint classes. Assigning both types to a single node will be an error in UCO 2.0.0."@en ;
sh:not [
a sh:NodeShape ;
sh:class co:List ;
] ;
sh:severity sh:Warning ;
sh:targetClass types:Thread ;
.

types:ThreadItem
a
owl:Class ,
Expand All @@ -213,6 +224,17 @@ types:ThreadItem
] ;
.

types:ThreadItem-disjointWith-co-ListItem-shape
a sh:NodeShape ;
sh:message "types:ThreadItem and co:ListItem are disjoint classes. Assigning both types to a single node will be an error in UCO 2.0.0."@en ;
sh:not [
a sh:NodeShape ;
sh:class co:ListItem ;
] ;
sh:severity sh:Warning ;
sh:targetClass types:ThreadItem ;
.

types:entry
a owl:ObjectProperty ;
rdfs:label "entry"@en ;
Expand Down
4 changes: 4 additions & 0 deletions tests/examples/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@ all: \
action_inheritance_PASS_validation.ttl \
action_inheritance_XFAIL_validation.ttl \
action_result_PASS_validation.ttl \
alternate_data_stream_PASS_validation.ttl \
co_PASS_validation.ttl \
co_XFAIL_validation.ttl \
configuration_setting_PASS_validation.ttl \
configuration_setting_XFAIL_validation.ttl \
database_records_PASS_validation.ttl \
database_records_XFAIL_validation.ttl \
disjointedness_PASS_validation.ttl \
event_XFAIL_validation.ttl \
file_url_PASS_validation.ttl \
has_facet_inverse_functional_PASS_validation.ttl \
Expand Down Expand Up @@ -92,12 +94,14 @@ check: \
action_inheritance_PASS_validation.ttl \
action_inheritance_XFAIL_validation.ttl \
action_result_PASS_validation.ttl \
alternate_data_stream_PASS_validation.ttl \
co_PASS_validation.ttl \
co_XFAIL_validation.ttl \
configuration_setting_PASS_validation.ttl \
configuration_setting_XFAIL_validation.ttl \
database_records_PASS_validation.ttl \
database_records_XFAIL_validation.ttl \
disjointedness_PASS_validation.ttl \
event_XFAIL_validation.ttl \
file_url_PASS_validation.ttl \
has_facet_inverse_functional_PASS_validation.ttl \
Expand Down
21 changes: 21 additions & 0 deletions tests/examples/alternate_data_stream_PASS.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"@context": {
"kb": "http://example.org/kb/",
"observable": "https://ontology.unifiedcyberontology.org/uco/observable/",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#"
},
"@graph": [
{
"@id": "kb:AlternateDataStream-07b3c41a-080c-4916-8375-c18148763e13",
"@type": "observable:AlternateDataStream",
"rdfs:comment": "This node should trigger a sh:Warning from not being a observable:FileSystemObject"
},
{
"@id": "kb:AlternateDataStream-b2d4968b-4490-4b44-a56b-832058834454",
"@type": [
"observable:AlternateDataStream",
"observable:FileSystemObject"
]
}
]
}
28 changes: 28 additions & 0 deletions tests/examples/alternate_data_stream_PASS_validation.ttl
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
@prefix observable: <https://ontology.unifiedcyberontology.org/uco/observable/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[]
a sh:ValidationReport ;
sh:conforms "true"^^xsd:boolean ;
sh:result [
a sh:ValidationResult ;
sh:focusNode <http://example.org/kb/AlternateDataStream-07b3c41a-080c-4916-8375-c18148763e13> ;
sh:resultMessage "In UCO 2.0.0, uco-observable:AlternateDataStream will be a subclass of uco-observable:FileSystemObject. In preparation for UCO 2.0.0, the additional type uco-observable:FileSystemObject should be assigned to this node."@en ;
sh:resultSeverity sh:Warning ;
sh:sourceConstraintComponent sh:ClassConstraintComponent ;
sh:sourceShape [
a sh:NodeShape ;
rdfs:comment "This anonymous shape is attached with rdfs:seeAlso in order to associate a warning-severity class constraint, that will only be necessary as an independent shape until UCO 2.0.0."@en ;
sh:class observable:FileSystemObject ;
sh:message "In UCO 2.0.0, uco-observable:AlternateDataStream will be a subclass of uco-observable:FileSystemObject. In preparation for UCO 2.0.0, the additional type uco-observable:FileSystemObject should be assigned to this node."@en ;
sh:severity sh:Warning ;
sh:targetClass observable:AlternateDataStream ;
] ;
sh:value <http://example.org/kb/AlternateDataStream-07b3c41a-080c-4916-8375-c18148763e13> ;
] ;
.

18 changes: 18 additions & 0 deletions tests/examples/disjointedness_PASS.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"@context": {
"kb": "http://example.org/kb/",
"core": "https://ontology.unifiedcyberontology.org/uco/core/",
"observable": "https://ontology.unifiedcyberontology.org/uco/observable/",
"xsd": "http://www.w3.org/2001/XMLSchema#"
},
"@graph": [
{
"@id": "kb:File-33a25932-3a1a-4828-a90f-d31818b495ce",
"@type": [
"observable:File",
"observable:FileFacet"
],
"rdfs:comment": "This node will trigger a violation in UCO 2.0.0 for designating itself a File and FileFacet, which are disjoint due to File being a (eventual) subclass of UcoObject, and FileFacet being a (eventual) subclass of UcoInherentCharacterizationThing."
}
]
}
21 changes: 21 additions & 0 deletions tests/examples/disjointedness_PASS_validation.ttl
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
@prefix core: <https://ontology.unifiedcyberontology.org/uco/core/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

[]
a sh:ValidationReport ;
sh:conforms "true"^^xsd:boolean ;
sh:result [
a sh:ValidationResult ;
sh:focusNode <http://example.org/kb/File-33a25932-3a1a-4828-a90f-d31818b495ce> ;
sh:resultMessage "observable:UcoInherentCharacterizationThing and observable:UcoObject are disjoint classes. Assigning both types to a single node will be an error in UCO 2.0.0."@en ;
sh:resultSeverity sh:Warning ;
sh:sourceConstraintComponent sh:NotConstraintComponent ;
sh:sourceShape core:UcoInherentCharacterizationThing-disjointWith-UcoObject-shape ;
sh:value <http://example.org/kb/File-33a25932-3a1a-4828-a90f-d31818b495ce> ;
] ;
.

18 changes: 18 additions & 0 deletions tests/examples/test_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,15 @@ def test_action_result_PASS_validation() -> None:
g = load_validation_graph("action_result_PASS_validation.ttl", True)
assert isinstance(g, rdflib.Graph)

def test_alternate_data_stream_PASS_validation() -> None:
confirm_validation_results(
"alternate_data_stream_PASS_validation.ttl",
True,
expected_focus_node_severities={
("http://example.org/kb/AlternateDataStream-07b3c41a-080c-4916-8375-c18148763e13", str(NS_SH.Warning)),
}
)

def test_configuration_setting_PASS_validation() -> None:
g = load_validation_graph("configuration_setting_PASS_validation.ttl", True)
assert isinstance(g, rdflib.Graph)
Expand Down Expand Up @@ -207,6 +216,15 @@ def test_database_records_XFAIL() -> None:
}
)

def test_disjointedness_PASS() -> None:
confirm_validation_results(
"disjointedness_PASS_validation.ttl",
True,
expected_focus_node_severities={
("http://example.org/kb/File-33a25932-3a1a-4828-a90f-d31818b495ce", str(NS_SH.Warning)),
}
)

def test_event_XFAIL() -> None:
confirm_validation_results(
"event_XFAIL_validation.ttl",
Expand Down
Loading