Skip to content

Commit

Permalink
Merge branch 'Feature-Issue-632-2.0.0' into unstable-2.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
ajnelson-nist committed Oct 16, 2024
2 parents f74c492 + ca5ef43 commit f29e271
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 75 deletions.
18 changes: 2 additions & 16 deletions ontology/uco/observable/observable.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -5197,12 +5197,6 @@ observable:OperatingSystemFacet
rdfs:label "OperatingSystemFacet"@en ;
rdfs:comment "An operating system facet is a grouping of characteristics unique to the software that manages computer hardware, software resources, and provides common services for computer programs. [based on https://en.wikipedia.org/wiki/Operating_system]"@en ;
sh:property
[
sh:class identity:Identity ;
sh:maxCount "1"^^xsd:integer ;
sh:nodeKind sh:IRI ;
sh:path observable:manufacturer ;
] ,
[
sh:class types:Dictionary ;
sh:maxCount "1"^^xsd:integer ;
Expand All @@ -5227,28 +5221,20 @@ observable:OperatingSystemFacet
sh:nodeKind sh:Literal ;
sh:path observable:bitness ;
] ,
[
sh:datatype xsd:string ;
sh:maxCount "1"^^xsd:integer ;
sh:nodeKind sh:Literal ;
sh:path observable:version ;
] ,
[
sh:datatype xsd:string ;
sh:nodeKind sh:Literal ;
sh:path observable:advertisingID ;
] ,
[
sh:maxCount "0"^^xsd:integer ;
sh:message "In UCO 2.0.0, uco-observable:manufacturer will not be associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:message "As of UCO 2.0.0, uco-observable:manufacturer is not associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:path observable:manufacturer ;
sh:severity sh:Warning ;
] ,
[
sh:maxCount "0"^^xsd:integer ;
sh:message "In UCO 2.0.0, uco-observable:version will not be associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:message "As of UCO 2.0.0, uco-observable:version is not associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:path observable:version ;
sh:severity sh:Warning ;
]
;
sh:targetClass observable:OperatingSystemFacet ;
Expand Down
2 changes: 2 additions & 0 deletions tests/examples/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ all: \
object_status_XFAIL_validation.ttl \
observable_creation_time_XFAIL_validation.ttl \
operating_system_PASS_validation.ttl \
operating_system_XFAIL_validation.ttl \
owl_axiom_PASS_validation.ttl \
owl_axiom_XFAIL_validation.ttl \
owl_cardinality_restrictions_PASS_validation.ttl \
Expand Down Expand Up @@ -125,6 +126,7 @@ check: \
object_status_XFAIL_validation.ttl \
observable_creation_time_XFAIL_validation.ttl \
operating_system_PASS_validation.ttl \
operating_system_XFAIL_validation.ttl \
owl_axiom_PASS_validation.ttl \
owl_axiom_XFAIL_validation.ttl \
owl_cardinality_restrictions_PASS_validation.ttl \
Expand Down
7 changes: 1 addition & 6 deletions tests/examples/operating_system_PASS.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,11 @@
{
"@id": "kb:OperatingSystemFacet-35047ef2-ffd6-45e8-8b3c-2e8e4bfe7c2b",
"@type": "observable:OperatingSystemFacet",
"rdfs:comment": "This node will trigger a warning for housing the manufacturer and version properties, meant to be moved to SoftwareFacet.",
"observable:bitness": "64",
"observable:installDate": {
"@type": "xsd:dateTime",
"@value": "2024-09-13T09:00:00-04:00"
},
"observable:manufacturer": {
"@id": "kb:Organization-4ea8a5bf-60ea-43ba-9ba6-f852ce8f8b54"
},
"observable:version": "40"
}
}
]
}
Expand Down
47 changes: 0 additions & 47 deletions tests/examples/operating_system_PASS_validation.ttl
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
@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#> .
Expand All @@ -8,51 +7,5 @@
[]
a sh:ValidationReport ;
sh:conforms "true"^^xsd:boolean ;
sh:result
[
a sh:ValidationResult ;
sh:focusNode <http://example.org/kb/OperatingSystem-427dd103-2553-4ccc-ad57-1df4e88b174d> ;
sh:resultMessage "In UCO 2.0.0, uco-observable:OperatingSystem will be a subclass of uco-observable:Software. In preparation for UCO 2.0.0, the additional type uco-observable:Software 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:Software ;
sh:message "In UCO 2.0.0, uco-observable:OperatingSystem will be a subclass of uco-observable:Software. In preparation for UCO 2.0.0, the additional type uco-observable:Software should be assigned to this node."@en ;
sh:severity sh:Warning ;
sh:targetClass observable:OperatingSystem ;
] ;
sh:value <http://example.org/kb/OperatingSystem-427dd103-2553-4ccc-ad57-1df4e88b174d> ;
] ,
[
a sh:ValidationResult ;
sh:focusNode <http://example.org/kb/OperatingSystemFacet-35047ef2-ffd6-45e8-8b3c-2e8e4bfe7c2b> ;
sh:resultMessage "In UCO 2.0.0, uco-observable:manufacturer will not be associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:resultPath observable:manufacturer ;
sh:resultSeverity sh:Warning ;
sh:sourceConstraintComponent sh:MaxCountConstraintComponent ;
sh:sourceShape [
sh:maxCount "0"^^xsd:integer ;
sh:message "In UCO 2.0.0, uco-observable:manufacturer will not be associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:path observable:manufacturer ;
sh:severity sh:Warning ;
] ;
] ,
[
a sh:ValidationResult ;
sh:focusNode <http://example.org/kb/OperatingSystemFacet-35047ef2-ffd6-45e8-8b3c-2e8e4bfe7c2b> ;
sh:resultMessage "In UCO 2.0.0, uco-observable:version will not be associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:resultPath observable:version ;
sh:resultSeverity sh:Warning ;
sh:sourceConstraintComponent sh:MaxCountConstraintComponent ;
sh:sourceShape [
sh:maxCount "0"^^xsd:integer ;
sh:message "In UCO 2.0.0, uco-observable:version will not be associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:path observable:version ;
sh:severity sh:Warning ;
] ;
]
;
.

44 changes: 44 additions & 0 deletions tests/examples/operating_system_XFAIL.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"@context": {
"core": "https://ontology.unifiedcyberontology.org/uco/core/",
"identity": "https://ontology.unifiedcyberontology.org/uco/identity/",
"kb": "http://example.org/kb/",
"observable": "https://ontology.unifiedcyberontology.org/uco/observable/",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"xsd": "http://www.w3.org/2001/XMLSchema#"
},
"@graph": [
{
"@id": "kb:Organization-cc6ee776-d770-409d-a84b-06aa6009b670",
"@type": "identity:Organization",
"core:name": "Example OS Company"
},
{
"@id": "kb:OperatingSystem-0a6c3dcd-9a53-4d1b-a635-afbcedab9760",
"@type": "observable:OperatingSystem",
"core:description": "The Example Operating System instance deployed on workstation C-304-33",
"core:hasFacet": [
{
"@id": "kb:SoftwareFacet-6b474a08-99f7-4dbd-8cd1-ef81ddff6bc3",
"@type": "observable:SoftwareFacet",
"observable:cpeid": "cpe:2.3:o:exampleosco:exampleos:40:*:*:*:*:*:*:*",
"observable:language": "en-us"
},
{
"@id": "kb:OperatingSystemFacet-483cc1a7-f1f1-472f-87e0-3e076fad46ec",
"@type": "observable:OperatingSystemFacet",
"rdfs:comment": "This node will trigger an error for housing the manufacturer and version properties, now required to be on SoftwareFacet.",
"observable:bitness": "64",
"observable:installDate": {
"@type": "xsd:dateTime",
"@value": "2024-09-13T09:00:00-04:00"
},
"observable:manufacturer": {
"@id": "kb:Organization-cc6ee776-d770-409d-a84b-06aa6009b670"
},
"observable:version": "40"
}
]
}
]
}
40 changes: 40 additions & 0 deletions tests/examples/operating_system_XFAIL_validation.ttl
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
@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 "false"^^xsd:boolean ;
sh:result
[
a sh:ValidationResult ;
sh:focusNode <http://example.org/kb/OperatingSystemFacet-483cc1a7-f1f1-472f-87e0-3e076fad46ec> ;
sh:resultMessage "As of UCO 2.0.0, uco-observable:manufacturer is not associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:resultPath observable:manufacturer ;
sh:resultSeverity sh:Violation ;
sh:sourceConstraintComponent sh:MaxCountConstraintComponent ;
sh:sourceShape [
sh:maxCount "0"^^xsd:integer ;
sh:message "As of UCO 2.0.0, uco-observable:manufacturer is not associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:path observable:manufacturer ;
] ;
] ,
[
a sh:ValidationResult ;
sh:focusNode <http://example.org/kb/OperatingSystemFacet-483cc1a7-f1f1-472f-87e0-3e076fad46ec> ;
sh:resultMessage "As of UCO 2.0.0, uco-observable:version is not associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:resultPath observable:version ;
sh:resultSeverity sh:Violation ;
sh:sourceConstraintComponent sh:MaxCountConstraintComponent ;
sh:sourceShape [
sh:maxCount "0"^^xsd:integer ;
sh:message "As of UCO 2.0.0, uco-observable:version is not associated with uco-observable:OperatingSystemFacet. Please place this on a uco-observable:SoftwareFacet instead."@en ;
sh:path observable:version ;
] ;
]
;
.

15 changes: 9 additions & 6 deletions tests/examples/test_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -459,14 +459,17 @@ def test_operating_system_PASS() -> None:
confirm_validation_results(
"operating_system_PASS_validation.ttl",
True,
expected_focus_node_severities=set()
)

def test_operating_system_XFAIL() -> None:
confirm_validation_results(
"operating_system_XFAIL_validation.ttl",
False,
expected_focus_node_severities={
(
"http://example.org/kb/OperatingSystem-427dd103-2553-4ccc-ad57-1df4e88b174d",
str(NS_SH.Warning)
),
(
"http://example.org/kb/OperatingSystemFacet-35047ef2-ffd6-45e8-8b3c-2e8e4bfe7c2b",
str(NS_SH.Warning)
"http://example.org/kb/OperatingSystemFacet-483cc1a7-f1f1-472f-87e0-3e076fad46ec",
str(NS_SH.Violation)
),
}
)
Expand Down

0 comments on commit f29e271

Please sign in to comment.