From aea0c04c264e680d28fd2cda896c4079eb629d20 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 12 Aug 2024 23:01:43 -0400 Subject: [PATCH 01/13] Demonstrate revised vocabulary pattern on types:hashMethod A follow-on patch will regenerate Make-managed files. References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- ontology/uco/types/types.ttl | 62 +++++++++++--------------- ontology/uco/vocabulary/vocabulary.ttl | 24 +++++----- tests/examples/hash_PASS.json | 32 +++++++++++++ tests/examples/hash_XFAIL.json | 42 ++--------------- tests/examples/test_validation.py | 20 ++++++--- 5 files changed, 85 insertions(+), 95 deletions(-) diff --git a/ontology/uco/types/types.ttl b/ontology/uco/types/types.ttl index 2f646d9f..2b366e0e 100644 --- a/ontology/uco/types/types.ttl +++ b/ontology/uco/types/types.ttl @@ -135,6 +135,7 @@ types:Hash rdfs:subClassOf core:UcoInherentCharacterizationThing ; rdfs:label "Hash"@en ; rdfs:comment "A hash is a grouping of characteristics unique to the result of applying a mathematical algorithm that maps data of arbitrary size to a bit string (the 'hash') and is a one-way function, that is, a function which is practically infeasible to invert. This is commonly used for integrity checking of data. [based on https://en.wikipedia.org/wiki/Cryptographic_hash_function]"@en ; + rdfs:seeAlso types:hashMethod-objects-in-shape ; sh:property [ sh:datatype xsd:hexBinary ; @@ -144,49 +145,15 @@ types:Hash sh:path types:hashValue ; ] , [ - sh:datatype vocabulary:HashNameVocab ; - sh:message "Value is outside the default vocabulary HashNameVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for types:hashMethod should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path types:hashMethod ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:HashNameVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path types:hashMethod ; - ] , - [ - sh:message "Value is not member of the vocabulary HashNameVocab." ; - sh:or ( - [ - sh:datatype vocabulary:HashNameVocab ; - sh:in ( - "MD5"^^vocabulary:HashNameVocab - "MD6"^^vocabulary:HashNameVocab - "SHA1"^^vocabulary:HashNameVocab - "SHA224"^^vocabulary:HashNameVocab - "SHA256"^^vocabulary:HashNameVocab - "SHA3-224"^^vocabulary:HashNameVocab - "SHA3-256"^^vocabulary:HashNameVocab - "SHA3-384"^^vocabulary:HashNameVocab - "SHA3-512"^^vocabulary:HashNameVocab - "SHA384"^^vocabulary:HashNameVocab - "SHA512"^^vocabulary:HashNameVocab - "SSDEEP"^^vocabulary:HashNameVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; sh:path types:hashMethod ; ] ; @@ -339,6 +306,27 @@ types:hashMethod ] ; . +types:hashMethod-objects-in-shape + a sh:NodeShape ; + sh:in ( + "MD5" + "MD6" + "SHA1" + "SHA224" + "SHA256" + "SHA3-224" + "SHA3-256" + "SHA3-384" + "SHA3-512" + "SHA384" + "SHA512" + "SSDEEP" + ) ; + sh:message "Value is not member of the vocabulary HashNameVocab." ; + sh:severity sh:Info ; + sh:targetObjectsOf types:hashMethod ; + . + types:hashValue a owl:DatatypeProperty ; rdfs:label "hashValue"@en ; diff --git a/ontology/uco/vocabulary/vocabulary.ttl b/ontology/uco/vocabulary/vocabulary.ttl index d13c89e7..8b128275 100644 --- a/ontology/uco/vocabulary/vocabulary.ttl +++ b/ontology/uco/vocabulary/vocabulary.ttl @@ -609,18 +609,18 @@ vocabulary:HashNameVocab a rdfs:Datatype ; owl:onDatatype xsd:string ; owl:oneOf ( - "MD5"^^vocabulary:HashNameVocab - "MD6"^^vocabulary:HashNameVocab - "SHA1"^^vocabulary:HashNameVocab - "SHA224"^^vocabulary:HashNameVocab - "SHA256"^^vocabulary:HashNameVocab - "SHA3-224"^^vocabulary:HashNameVocab - "SHA3-256"^^vocabulary:HashNameVocab - "SHA3-384"^^vocabulary:HashNameVocab - "SHA3-512"^^vocabulary:HashNameVocab - "SHA384"^^vocabulary:HashNameVocab - "SHA512"^^vocabulary:HashNameVocab - "SSDEEP"^^vocabulary:HashNameVocab + "MD5" + "MD6" + "SHA1" + "SHA224" + "SHA256" + "SHA3-224" + "SHA3-256" + "SHA3-384" + "SHA3-512" + "SHA384" + "SHA512" + "SSDEEP" ) ; ] ; . diff --git a/tests/examples/hash_PASS.json b/tests/examples/hash_PASS.json index c663ea5a..753470f1 100644 --- a/tests/examples/hash_PASS.json +++ b/tests/examples/hash_PASS.json @@ -1,14 +1,36 @@ { "@context": { "kb": "http://example.org/kb/", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "types": "https://ontology.unifiedcyberontology.org/uco/types/", "vocabulary": "https://ontology.unifiedcyberontology.org/uco/vocabulary/", "xsd": "http://www.w3.org/2001/XMLSchema#" }, "@graph": [ + { + "@id": "kb:hash-04dcd1dc-6920-4977-a898-e242870249a4", + "@type": "types:Hash", + "rdfs:comment": "Should trigger sh:Info from the hashMethod literal not having its value be in the HashNameVocab vocabulary.", + "types:hashMethod": "CUSTOM_hash", + "types:hashValue": { + "@type": "xsd:hexBinary", + "@value": "a39a3ee5e6b4b0d3255bfef95601890afd80709d" + } + }, + { + "@id": "kb:hash-af4b0c85-b042-4e2d-a213-210b3d7f115c", + "@type": "types:Hash", + "rdfs:comment": "Should trigger sh:Info from the hashMethod literal not being a member of the vocabulary. ('SHA1' is in the vocabulary; 'SHA-1' isn't.)", + "types:hashMethod": "SHA-1", + "types:hashValue": { + "@type": "xsd:hexBinary", + "@value": "da39a3ee5e6b4b0d3255bfef95601890afd80709" + } + }, { "@id": "kb:hash-b7eca8de-142d-4aa9-b546-0796a268afa4", "@type": "types:Hash", + "rdfs:comment": "Should trigger an sh:Info from the hashMethod value not having its (literal-)value in the HashNameVocab vocabulary, and also not being an xsd:string.", "types:hashMethod": { "@type": "vocabulary:HashNameVocab", "@value": "SHA1" @@ -17,6 +39,16 @@ "@type": "xsd:hexBinary", "@value": "da39a3ee5e6b4b0d3255bfef95601890afd80709" } + }, + { + "@id": "kb:hash-f46c714f-559a-4325-bf8a-4ef60c92c771", + "@type": "types:Hash", + "rdfs:comment": "This should trigger an sh:Warning from the hashMethod value not being a string, and not being in the HashNameVocab vocabulary.", + "types:hashMethod": 1, + "types:hashValue": { + "@type": "xsd:hexBinary", + "@value": "da39a3ee5e6b4b0d3255bfef95601890afd80709" + } } ] } diff --git a/tests/examples/hash_XFAIL.json b/tests/examples/hash_XFAIL.json index 9b056adc..d0097408 100644 --- a/tests/examples/hash_XFAIL.json +++ b/tests/examples/hash_XFAIL.json @@ -7,47 +7,11 @@ }, "@graph": [ { - "@id": "kb:hash-04dcd1dc-6920-4977-a898-e242870249a4", + "@id": "kb:hash-66954988-aa9a-4f0d-8ad1-380700c830fc", "@type": "types:Hash", - "rdfs:comment": "Should trigger sh:Info from the literal not having its datatype be the HashNameVocab vocabulary.", - "types:hashMethod": "CUSTOM_hash", - "types:hashValue": { - "@type": "xsd:hexBinary", - "@value": "a39a3ee5e6b4b0d3255bfef95601890afd80709d" - } - }, - { - "@id": "kb:hash-af4b0c85-b042-4e2d-a213-210b3d7f115c", - "@type": "types:Hash", - "rdfs:comment": "Should trigger sh:Violation from the literal declaring itself a member of the vocabulary, but not being a member. ('SHA1' is in the vocabulary; 'SHA-1' isn't.)", - "types:hashMethod": { - "@type": "vocabulary:HashNameVocab", - "@value": "SHA-1" - }, - "types:hashValue": { - "@type": "xsd:hexBinary", - "@value": "da39a3ee5e6b4b0d3255bfef95601890afd80709" - } - }, - { - "@id": "kb:hash-e97431ea-6fb8-46d9-9c23-94be4b7cc977", - "@type": "types:Hash", - "rdfs:comment": "This should trigger sh:Info from the term not having its datatype be the vocabulary. Currently, no inspection is done on the lexical value.", + "rdfs:comment": "This should trigger sh:Violation from the hash value not being hexBinary.", "types:hashMethod": "SHA1", - "types:hashValue": { - "@type": "xsd:hexBinary", - "@value": "da39a3ee5e6b4b0d3255bfef95601890afd80709" - } - }, - { - "@id": "kb:hash-f46c714f-559a-4325-bf8a-4ef60c92c771", - "@type": "types:Hash", - "rdfs:comment": "This should trigger sh:Violation from the term not being a string.", - "types:hashMethod": 1, - "types:hashValue": { - "@type": "xsd:hexBinary", - "@value": "da39a3ee5e6b4b0d3255bfef95601890afd80709" - } + "types:hashValue": "da39a3ee5e6b4b0d3255bfef95601890afd80709" } ] } diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py index 6c4fc658..49f57ee7 100644 --- a/tests/examples/test_validation.py +++ b/tests/examples/test_validation.py @@ -283,19 +283,25 @@ def test_has_facet_inverse_functional_XFAIL() -> None: ) def test_hash_PASS() -> None: - g = load_validation_graph("hash_PASS_validation.ttl", True) - assert isinstance(g, rdflib.Graph) + confirm_validation_results( + "hash_PASS_validation.ttl", + True, + expected_focus_node_severities={ + ("1", str(NS_SH.Info)), + ("CUSTOM_hash", str(NS_SH.Info)), + ("SHA-1", str(NS_SH.Info)), + ("SHA1", str(NS_SH.Info)), + ("http://example.org/kb/hash-b7eca8de-142d-4aa9-b546-0796a268afa4", str(NS_SH.Warning)), + ("http://example.org/kb/hash-f46c714f-559a-4325-bf8a-4ef60c92c771", str(NS_SH.Warning)), + } + ) def test_hash_XFAIL() -> None: confirm_validation_results( "hash_XFAIL_validation.ttl", False, expected_focus_node_severities={ - ("http://example.org/kb/hash-04dcd1dc-6920-4977-a898-e242870249a4", str(NS_SH.Info)), - ("http://example.org/kb/hash-af4b0c85-b042-4e2d-a213-210b3d7f115c", str(NS_SH.Violation)), - ("http://example.org/kb/hash-e97431ea-6fb8-46d9-9c23-94be4b7cc977", str(NS_SH.Info)), - ("http://example.org/kb/hash-f46c714f-559a-4325-bf8a-4ef60c92c771", str(NS_SH.Info)), - ("http://example.org/kb/hash-f46c714f-559a-4325-bf8a-4ef60c92c771", str(NS_SH.Violation)) + ("http://example.org/kb/hash-66954988-aa9a-4f0d-8ad1-380700c830fc", str(NS_SH.Violation)) } ) From 6d385ba7834cf71360e6bea206ce1fb0b6a2c006 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 12 Aug 2024 23:01:58 -0400 Subject: [PATCH 02/13] Regenerate Make-managed files References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- tests/examples/hash_PASS_validation.ttl | 70 ++++++++++ tests/examples/hash_XFAIL_validation.ttl | 157 +++-------------------- 2 files changed, 86 insertions(+), 141 deletions(-) diff --git a/tests/examples/hash_PASS_validation.ttl b/tests/examples/hash_PASS_validation.ttl index 33496ff0..56044fea 100644 --- a/tests/examples/hash_PASS_validation.ttl +++ b/tests/examples/hash_PASS_validation.ttl @@ -2,10 +2,80 @@ @prefix rdf: . @prefix rdfs: . @prefix sh: . +@prefix types: . +@prefix vocabulary: . @prefix xsd: . [] a sh:ValidationReport ; sh:conforms "true"^^xsd:boolean ; + sh:result + [ + a sh:ValidationResult ; + sh:focusNode "1"^^xsd:integer ; + sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; + sh:resultSeverity sh:Info ; + sh:sourceConstraintComponent sh:InConstraintComponent ; + sh:sourceShape types:hashMethod-objects-in-shape ; + sh:value "1"^^xsd:integer ; + ] , + [ + a sh:ValidationResult ; + sh:focusNode "CUSTOM_hash" ; + sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; + sh:resultSeverity sh:Info ; + sh:sourceConstraintComponent sh:InConstraintComponent ; + sh:sourceShape types:hashMethod-objects-in-shape ; + sh:value "CUSTOM_hash" ; + ] , + [ + a sh:ValidationResult ; + sh:focusNode "SHA-1" ; + sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; + sh:resultSeverity sh:Info ; + sh:sourceConstraintComponent sh:InConstraintComponent ; + sh:sourceShape types:hashMethod-objects-in-shape ; + sh:value "SHA-1" ; + ] , + [ + a sh:ValidationResult ; + sh:focusNode "SHA1"^^vocabulary:HashNameVocab ; + sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; + sh:resultSeverity sh:Info ; + sh:sourceConstraintComponent sh:InConstraintComponent ; + sh:sourceShape types:hashMethod-objects-in-shape ; + sh:value "SHA1"^^vocabulary:HashNameVocab ; + ] , + [ + a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "As of UCO 1.4.0, the datatype to use for types:hashMethod should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:resultPath types:hashMethod ; + sh:resultSeverity sh:Warning ; + sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceShape [ + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for types:hashMethod should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:path types:hashMethod ; + sh:severity sh:Warning ; + ] ; + sh:value "SHA1"^^vocabulary:HashNameVocab ; + ] , + [ + a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "As of UCO 1.4.0, the datatype to use for types:hashMethod should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:resultPath types:hashMethod ; + sh:resultSeverity sh:Warning ; + sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceShape [ + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for types:hashMethod should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:path types:hashMethod ; + sh:severity sh:Warning ; + ] ; + sh:value "1"^^xsd:integer ; + ] + ; . diff --git a/tests/examples/hash_XFAIL_validation.ttl b/tests/examples/hash_XFAIL_validation.ttl index e05552df..48cc07e1 100644 --- a/tests/examples/hash_XFAIL_validation.ttl +++ b/tests/examples/hash_XFAIL_validation.ttl @@ -3,151 +3,26 @@ @prefix rdfs: . @prefix sh: . @prefix types: . -@prefix vocabulary: . @prefix xsd: . [] a sh:ValidationReport ; sh:conforms "false"^^xsd:boolean ; - sh:result - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is outside the default vocabulary HashNameVocab." ; - sh:resultPath types:hashMethod ; - sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; - sh:sourceShape [ - sh:datatype vocabulary:HashNameVocab ; - sh:message "Value is outside the default vocabulary HashNameVocab." ; - sh:path types:hashMethod ; - sh:severity sh:Info ; - ] ; - sh:value "CUSTOM_hash" ; - ] , - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; - sh:resultPath types:hashMethod ; - sh:resultSeverity sh:Violation ; - sh:sourceConstraintComponent sh:OrConstraintComponent ; - sh:sourceShape [ - sh:message "Value is not member of the vocabulary HashNameVocab." ; - sh:or ( - [ - sh:datatype vocabulary:HashNameVocab ; - sh:in ( - "MD5"^^vocabulary:HashNameVocab - "MD6"^^vocabulary:HashNameVocab - "SHA1"^^vocabulary:HashNameVocab - "SHA224"^^vocabulary:HashNameVocab - "SHA256"^^vocabulary:HashNameVocab - "SHA3-224"^^vocabulary:HashNameVocab - "SHA3-256"^^vocabulary:HashNameVocab - "SHA3-384"^^vocabulary:HashNameVocab - "SHA3-512"^^vocabulary:HashNameVocab - "SHA384"^^vocabulary:HashNameVocab - "SHA512"^^vocabulary:HashNameVocab - "SSDEEP"^^vocabulary:HashNameVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path types:hashMethod ; - ] ; - sh:value "SHA-1"^^vocabulary:HashNameVocab ; - ] , - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is outside the default vocabulary HashNameVocab." ; - sh:resultPath types:hashMethod ; - sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; - sh:sourceShape [ - sh:datatype vocabulary:HashNameVocab ; - sh:message "Value is outside the default vocabulary HashNameVocab." ; - sh:path types:hashMethod ; - sh:severity sh:Info ; - ] ; - sh:value "SHA1" ; - ] , - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage 'Node Literal("1", datatype=xsd:integer) does not conform to one or more shapes in [ sh:datatype vocabulary:HashNameVocab ] , [ sh:datatype xsd:string ]' ; - sh:resultPath types:hashMethod ; - sh:resultSeverity sh:Violation ; - sh:sourceConstraintComponent sh:OrConstraintComponent ; - sh:sourceShape [ - sh:maxCount "1"^^xsd:integer ; - sh:minCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:HashNameVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path types:hashMethod ; - ] ; - sh:value "1"^^xsd:integer ; - ] , - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; - sh:resultPath types:hashMethod ; - sh:resultSeverity sh:Violation ; - sh:sourceConstraintComponent sh:OrConstraintComponent ; - sh:sourceShape [ - sh:message "Value is not member of the vocabulary HashNameVocab." ; - sh:or ( - [ - sh:datatype vocabulary:HashNameVocab ; - sh:in ( - "MD5"^^vocabulary:HashNameVocab - "MD6"^^vocabulary:HashNameVocab - "SHA1"^^vocabulary:HashNameVocab - "SHA224"^^vocabulary:HashNameVocab - "SHA256"^^vocabulary:HashNameVocab - "SHA3-224"^^vocabulary:HashNameVocab - "SHA3-256"^^vocabulary:HashNameVocab - "SHA3-384"^^vocabulary:HashNameVocab - "SHA3-512"^^vocabulary:HashNameVocab - "SHA384"^^vocabulary:HashNameVocab - "SHA512"^^vocabulary:HashNameVocab - "SSDEEP"^^vocabulary:HashNameVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path types:hashMethod ; - ] ; - sh:value "1"^^xsd:integer ; - ] , - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is outside the default vocabulary HashNameVocab." ; - sh:resultPath types:hashMethod ; - sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; - sh:sourceShape [ - sh:datatype vocabulary:HashNameVocab ; - sh:message "Value is outside the default vocabulary HashNameVocab." ; - sh:path types:hashMethod ; - sh:severity sh:Info ; - ] ; - sh:value "1"^^xsd:integer ; - ] - ; + sh:result [ + a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value is not Literal with datatype xsd:hexBinary" ; + sh:resultPath types:hashValue ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceShape [ + sh:datatype xsd:hexBinary ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path types:hashValue ; + ] ; + sh:value "da39a3ee5e6b4b0d3255bfef95601890afd80709" ; + ] ; . From 54ea2226c7e540fd29f8cea0a12b3809fa0d900c Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 17 Oct 2024 16:41:33 -0400 Subject: [PATCH 03/13] Revise vocabulary pattern for core:ObjectStatusVocab A follow-on patch will regenerate Make-managed files. References: * https://github.com/ucoProject/UCO/issues/549 * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- ontology/uco/core/core.ttl | 28 +++++++++++++------------- tests/examples/object_status_PASS.json | 5 +---- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/ontology/uco/core/core.ttl b/ontology/uco/core/core.ttl index a9010464..9ac562ef 100644 --- a/ontology/uco/core/core.ttl +++ b/ontology/uco/core/core.ttl @@ -323,9 +323,9 @@ core:ObjectStatusVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Draft"^^core:ObjectStatusVocab - "Final"^^core:ObjectStatusVocab - "Deprecated"^^core:ObjectStatusVocab + "Draft" + "Final" + "Deprecated" ) ; ] ; . @@ -443,6 +443,17 @@ core:UcoObject sh:nodeKind sh:Literal ; sh:path core:modifiedTime ; ] , + [ + sh:datatype xsd:string ; + sh:in ( + "Draft" + "Final" + "Deprecated" + ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:objectStatus ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; @@ -464,17 +475,6 @@ core:UcoObject sh:datatype xsd:string ; sh:nodeKind sh:Literal ; sh:path core:tag ; - ] , - [ - sh:datatype core:ObjectStatusVocab ; - sh:in ( - "Draft"^^core:ObjectStatusVocab - "Final"^^core:ObjectStatusVocab - "Deprecated"^^core:ObjectStatusVocab - ) ; - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:path core:objectStatus ; ] ; sh:targetClass core:UcoObject ; diff --git a/tests/examples/object_status_PASS.json b/tests/examples/object_status_PASS.json index 2d10dc40..3f4d1165 100644 --- a/tests/examples/object_status_PASS.json +++ b/tests/examples/object_status_PASS.json @@ -7,10 +7,7 @@ { "@id": "kb:UcoObject-f86c567d-374a-4873-b9bc-a746ca2bf360", "@type": "core:UcoObject", - "core:objectStatus": { - "@type": "core:ObjectStatusVocab", - "@value": "Draft" - } + "core:objectStatus": "Draft" } ] } From 12855bf2b49d3cfd12ea4c04a2f075763dcfe406 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 17 Oct 2024 16:41:49 -0400 Subject: [PATCH 04/13] Regenerate Make-managed files References: * https://github.com/ucoProject/UCO/issues/549 * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- .../object_status_XFAIL_validation.ttl | 30 ++++--------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/tests/examples/object_status_XFAIL_validation.ttl b/tests/examples/object_status_XFAIL_validation.ttl index b84dd57b..57a35e5f 100644 --- a/tests/examples/object_status_XFAIL_validation.ttl +++ b/tests/examples/object_status_XFAIL_validation.ttl @@ -21,36 +21,16 @@ [ a sh:ValidationResult ; sh:focusNode ; - sh:resultMessage "Value Literal(\"Initial draft\") not in list ['Literal(\"Draft\" = None, datatype=core:ObjectStatusVocab)', 'Literal(\"Final\" = None, datatype=core:ObjectStatusVocab)', 'Literal(\"Deprecated\" = None, datatype=core:ObjectStatusVocab)']" ; + sh:resultMessage "Value Literal(\"Initial draft\") not in list ['Literal(\"Draft\")', 'Literal(\"Final\")', 'Literal(\"Deprecated\")']" ; sh:resultPath core:objectStatus ; sh:resultSeverity sh:Violation ; sh:sourceConstraintComponent sh:InConstraintComponent ; sh:sourceShape [ - sh:datatype core:ObjectStatusVocab ; + sh:datatype xsd:string ; sh:in ( - "Draft"^^core:ObjectStatusVocab - "Final"^^core:ObjectStatusVocab - "Deprecated"^^core:ObjectStatusVocab - ) ; - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:path core:objectStatus ; - ] ; - sh:value "Initial draft" ; - ] , - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is not Literal with datatype core:ObjectStatusVocab" ; - sh:resultPath core:objectStatus ; - sh:resultSeverity sh:Violation ; - sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; - sh:sourceShape [ - sh:datatype core:ObjectStatusVocab ; - sh:in ( - "Draft"^^core:ObjectStatusVocab - "Final"^^core:ObjectStatusVocab - "Deprecated"^^core:ObjectStatusVocab + "Draft" + "Final" + "Deprecated" ) ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; From dc6b8627db2601425939208f0542de014b888adb Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 18 Feb 2025 16:19:01 -0500 Subject: [PATCH 05/13] Revert addition of types:hashMethod-objects-in-shape This partially undoes commit `aea0c04`, because of the introduction of `sh:targetObjectsOf` usage that would have a broad impact. This will return for review later. A follow-on patch will regenerate Make-managed files. References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- ontology/uco/types/types.ttl | 41 ++++++++++++++----------------- tests/examples/test_validation.py | 8 +++--- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/ontology/uco/types/types.ttl b/ontology/uco/types/types.ttl index 2b366e0e..3eb7f9ce 100644 --- a/ontology/uco/types/types.ttl +++ b/ontology/uco/types/types.ttl @@ -135,7 +135,6 @@ types:Hash rdfs:subClassOf core:UcoInherentCharacterizationThing ; rdfs:label "Hash"@en ; rdfs:comment "A hash is a grouping of characteristics unique to the result of applying a mathematical algorithm that maps data of arbitrary size to a bit string (the 'hash') and is a one-way function, that is, a function which is practically infeasible to invert. This is commonly used for integrity checking of data. [based on https://en.wikipedia.org/wiki/Cryptographic_hash_function]"@en ; - rdfs:seeAlso types:hashMethod-objects-in-shape ; sh:property [ sh:datatype xsd:hexBinary ; @@ -150,6 +149,25 @@ types:Hash sh:path types:hashMethod ; sh:severity sh:Warning ; ] , + [ + sh:in ( + "MD5" + "MD6" + "SHA1" + "SHA224" + "SHA256" + "SHA3-224" + "SHA3-256" + "SHA3-384" + "SHA3-512" + "SHA384" + "SHA512" + "SSDEEP" + ) ; + sh:message "Value is not member of the vocabulary HashNameVocab." ; + sh:path types:hashMethod ; + sh:severity sh:Info ; + ] , [ sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; @@ -306,27 +324,6 @@ types:hashMethod ] ; . -types:hashMethod-objects-in-shape - a sh:NodeShape ; - sh:in ( - "MD5" - "MD6" - "SHA1" - "SHA224" - "SHA256" - "SHA3-224" - "SHA3-256" - "SHA3-384" - "SHA3-512" - "SHA384" - "SHA512" - "SSDEEP" - ) ; - sh:message "Value is not member of the vocabulary HashNameVocab." ; - sh:severity sh:Info ; - sh:targetObjectsOf types:hashMethod ; - . - types:hashValue a owl:DatatypeProperty ; rdfs:label "hashValue"@en ; diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py index ba7a3693..6d93ed8a 100644 --- a/tests/examples/test_validation.py +++ b/tests/examples/test_validation.py @@ -290,11 +290,11 @@ def test_hash_PASS() -> None: "hash_PASS_validation.ttl", True, expected_focus_node_severities={ - ("1", str(NS_SH.Info)), - ("CUSTOM_hash", str(NS_SH.Info)), - ("SHA-1", str(NS_SH.Info)), - ("SHA1", str(NS_SH.Info)), + ('http://example.org/kb/hash-04dcd1dc-6920-4977-a898-e242870249a4', str(NS_SH.Info)), + ('http://example.org/kb/hash-af4b0c85-b042-4e2d-a213-210b3d7f115c', str(NS_SH.Info)), + ('http://example.org/kb/hash-b7eca8de-142d-4aa9-b546-0796a268afa4', str(NS_SH.Info)), ("http://example.org/kb/hash-b7eca8de-142d-4aa9-b546-0796a268afa4", str(NS_SH.Warning)), + ('http://example.org/kb/hash-f46c714f-559a-4325-bf8a-4ef60c92c771', str(NS_SH.Info)), ("http://example.org/kb/hash-f46c714f-559a-4325-bf8a-4ef60c92c771", str(NS_SH.Warning)), } ) From 70371235ed057178fc8a86c997da7416fd28112c Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 18 Feb 2025 16:30:53 -0500 Subject: [PATCH 06/13] Regenerate Make-managed files References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- tests/examples/hash_PASS_validation.ttl | 120 +++++++++++++++++++----- 1 file changed, 98 insertions(+), 22 deletions(-) diff --git a/tests/examples/hash_PASS_validation.ttl b/tests/examples/hash_PASS_validation.ttl index 56044fea..193a7ada 100644 --- a/tests/examples/hash_PASS_validation.ttl +++ b/tests/examples/hash_PASS_validation.ttl @@ -12,40 +12,60 @@ sh:result [ a sh:ValidationResult ; - sh:focusNode "1"^^xsd:integer ; - sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; - sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:InConstraintComponent ; - sh:sourceShape types:hashMethod-objects-in-shape ; - sh:value "1"^^xsd:integer ; - ] , - [ - a sh:ValidationResult ; - sh:focusNode "CUSTOM_hash" ; + sh:focusNode ; sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; + sh:resultPath types:hashMethod ; sh:resultSeverity sh:Info ; sh:sourceConstraintComponent sh:InConstraintComponent ; - sh:sourceShape types:hashMethod-objects-in-shape ; + sh:sourceShape [ + sh:in ( + "MD5" + "MD6" + "SHA1" + "SHA224" + "SHA256" + "SHA3-224" + "SHA3-256" + "SHA3-384" + "SHA3-512" + "SHA384" + "SHA512" + "SSDEEP" + ) ; + sh:message "Value is not member of the vocabulary HashNameVocab." ; + sh:path types:hashMethod ; + sh:severity sh:Info ; + ] ; sh:value "CUSTOM_hash" ; ] , [ a sh:ValidationResult ; - sh:focusNode "SHA-1" ; + sh:focusNode ; sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; + sh:resultPath types:hashMethod ; sh:resultSeverity sh:Info ; sh:sourceConstraintComponent sh:InConstraintComponent ; - sh:sourceShape types:hashMethod-objects-in-shape ; + sh:sourceShape [ + sh:in ( + "MD5" + "MD6" + "SHA1" + "SHA224" + "SHA256" + "SHA3-224" + "SHA3-256" + "SHA3-384" + "SHA3-512" + "SHA384" + "SHA512" + "SSDEEP" + ) ; + sh:message "Value is not member of the vocabulary HashNameVocab." ; + sh:path types:hashMethod ; + sh:severity sh:Info ; + ] ; sh:value "SHA-1" ; ] , - [ - a sh:ValidationResult ; - sh:focusNode "SHA1"^^vocabulary:HashNameVocab ; - sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; - sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:InConstraintComponent ; - sh:sourceShape types:hashMethod-objects-in-shape ; - sh:value "SHA1"^^vocabulary:HashNameVocab ; - ] , [ a sh:ValidationResult ; sh:focusNode ; @@ -61,6 +81,34 @@ ] ; sh:value "SHA1"^^vocabulary:HashNameVocab ; ] , + [ + a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; + sh:resultPath types:hashMethod ; + sh:resultSeverity sh:Info ; + sh:sourceConstraintComponent sh:InConstraintComponent ; + sh:sourceShape [ + sh:in ( + "MD5" + "MD6" + "SHA1" + "SHA224" + "SHA256" + "SHA3-224" + "SHA3-256" + "SHA3-384" + "SHA3-512" + "SHA384" + "SHA512" + "SSDEEP" + ) ; + sh:message "Value is not member of the vocabulary HashNameVocab." ; + sh:path types:hashMethod ; + sh:severity sh:Info ; + ] ; + sh:value "SHA1"^^vocabulary:HashNameVocab ; + ] , [ a sh:ValidationResult ; sh:focusNode ; @@ -75,6 +123,34 @@ sh:severity sh:Warning ; ] ; sh:value "1"^^xsd:integer ; + ] , + [ + a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value is not member of the vocabulary HashNameVocab." ; + sh:resultPath types:hashMethod ; + sh:resultSeverity sh:Info ; + sh:sourceConstraintComponent sh:InConstraintComponent ; + sh:sourceShape [ + sh:in ( + "MD5" + "MD6" + "SHA1" + "SHA224" + "SHA256" + "SHA3-224" + "SHA3-256" + "SHA3-384" + "SHA3-512" + "SHA384" + "SHA512" + "SSDEEP" + ) ; + sh:message "Value is not member of the vocabulary HashNameVocab." ; + sh:path types:hashMethod ; + sh:severity sh:Info ; + ] ; + sh:value "1"^^xsd:integer ; ] ; . From d7ea496abb0859d2d715622479e153de481f79d6 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 18 Feb 2025 16:35:03 -0500 Subject: [PATCH 07/13] Revise test to use new vocabulary pattern References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- tests/test_uco_monolithic.py | 97 ++++++++++++++++++++++++------------ 1 file changed, 65 insertions(+), 32 deletions(-) diff --git a/tests/test_uco_monolithic.py b/tests/test_uco_monolithic.py index 3c465fa8..583b42e8 100644 --- a/tests/test_uco_monolithic.py +++ b/tests/test_uco_monolithic.py @@ -171,69 +171,102 @@ def rdf_list_to_member_list(graph: Graph, n_list: IdentifiedNode) -> List[Node]: def test_semi_open_vocabulary_owl_shacl_alignment(graph: Graph) -> None: """ - This test enforces that when a DatatypeProperty following the "Semi-open vocabulary" design of UCO 0.8.0 is used, that its SHACL shape's enumerant list matches the rdfs:Datatype's enumerant list. + This test enforces that when a DatatypeProperty following the "Semi-open vocabulary" design of UCO 1.4.0 is used, that its SHACL shape's enumerant list matches the rdfs:Datatype's (OWL Sequence's) enumerant list. """ - # A member of these sets is a class's IRI, its semi-open vocabulary's IRI, the list in the SHACL shape, and the list in the Datatype. - # (The type of the lists is a Tuple because a Set in Python cannot contain a List.) + # A member of these sets is: + # * a class's IRI, + # * a property's IRI, and + # * the semi-open vocabulary's IRI. # The expected set intentionally has length 0. - expected: Set[Tuple[URIRef, URIRef, Tuple[Node, ...], Tuple[Node, ...]]] = set() - computed: Set[Tuple[URIRef, URIRef, Tuple[Node, ...], Tuple[Node, ...]]] = set() + expected: Set[Tuple[URIRef, URIRef, URIRef]] = set() + computed: Set[Tuple[URIRef, URIRef, URIRef]] = set() + + # First, assemble all pairs of properties and vocabulary-value + # tuples. This is needed because some properties are overloaded + # (e.g., observable:status) to use multiple vocabularies. + # (The type of the list is a Tuple because a Set in Python cannot + # contain a List.) + property_value_tuples: Set[Tuple[URIRef, tuple[str, ...]]] = set() + query = """\ +SELECT ?nProperty ?nOwlSequence +WHERE { + ?nProperty + rdfs:range / owl:unionOf / rdf:rest* / rdf:first ?nDatatype ; + . + ?nDatatype + a rdfs:Datatype ; + owl:equivalentClass ?nLexicalSpace ; + . + ?nLexicalSpace + owl:oneOf ?nOwlSequence ; + . +} +""" + result_tally = 0 + for result in graph.query(query): + result_tally += 1 + assert isinstance(result[0], URIRef) + assert isinstance(result[1], BNode) + n_property = result[0] + n_owl_sequence = result[1] + value_list = rdf_list_to_member_list(graph, n_owl_sequence) + property_value_tuples.add((n_property, tuple(value_list))) + assert result_tally > 0, "Pattern for semi-open vocabularies is no longer aligned with test." query = """ -SELECT ?nClass ?nDatatype ?nShaclList ?nRdfsList +SELECT ?nClass ?nProperty ?nDatatype ?nShaclList WHERE { ?nClass - sh:property / sh:or / rdf:rest* / rdf:first ?nMemberCheckShape ; + sh:property ?nMemberCheckShape ; . ?nMemberCheckShape - sh:datatype ?nDatatype ; sh:in ?nShaclList ; + sh:path ?nProperty ; + . + ?nProperty + rdfs:range / owl:unionOf / rdf:rest* / rdf:first ?nDatatype ; . ?nDatatype a rdfs:Datatype ; owl:equivalentClass ?nLexicalSpace ; . - - ?nLexicalSpace - owl:oneOf ?nRdfsList ; - . } """ result_tally = 0 - test_cases: Set[Tuple[URIRef, URIRef, IdentifiedNode, IdentifiedNode]] = set() + test_cases: Set[Tuple[URIRef, URIRef, URIRef, IdentifiedNode]] = set() for (result_no, result) in enumerate(graph.query(query)): result_tally = result_no + 1 assert isinstance(result[0], URIRef) assert isinstance(result[1], URIRef) - if isinstance(result[2], URIRef) and isinstance(result[3], URIRef): - assert result[2] == result[3] - else: - assert isinstance(result[2], (BNode, URIRef)) - assert isinstance(result[3], (BNode, URIRef)) + assert isinstance(result[2], URIRef) + assert isinstance(result[3], (BNode, URIRef)) test_cases.add(result) assert result_tally > 0, "Pattern for semi-open vocabularies is no longer aligned with test." for test_case in test_cases: - n_shacl_list = test_case[2] - n_rdfs_list = test_case[3] - - if n_shacl_list is n_rdfs_list: - # No point in doing any comparison work. - continue - + n_property = test_case[1] + n_shacl_list = test_case[3] shacl_list = rdf_list_to_member_list(graph, n_shacl_list) - rdfs_list = rdf_list_to_member_list(graph, n_rdfs_list) - if rdfs_list != shacl_list: - shacl_tuple = tuple(shacl_list) - rdfs_tuple = tuple(rdfs_list) - computed.add((test_case[0], test_case[1], shacl_tuple, rdfs_tuple)) + shacl_tuple = tuple(shacl_list) + + # property_value_tuples is not mutated on finding a match, due + # to some vocabularies being used by multiple properties. + if (n_property, shacl_tuple) not in property_value_tuples: + computed.add((test_case[0], test_case[1], test_case[2])) try: assert expected == computed except AssertionError: logging.error("Semi-open vocabulary lists are out of sync. See:") - for computed_result in computed: - logging.error("* %s", str(computed_result[0])) + for (n_class, n_property, n_vocabulary) in computed: + logging.error( + "* %s and %s, used in %s", + ( + str(n_property), + str(n_vocabulary), + str(n_class), + ) + ) raise From ed274b16745e65ba0058c0d313dac8253f51a98f Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 18 Feb 2025 16:36:20 -0500 Subject: [PATCH 08/13] Apply revised vocabulary pattern A follow-on patch will regenerate Make-managed files. References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- ontology/uco/action/action.ttl | 82 +- ontology/uco/observable/observable.ttl | 1062 +++++-------- ontology/uco/vocabulary/vocabulary.ttl | 1532 +++++++++---------- tests/examples/action_inheritance_PASS.json | 10 +- tests/examples/hash_PASS.json | 4 +- tests/examples/test_validation.py | 8 +- 6 files changed, 1166 insertions(+), 1532 deletions(-) diff --git a/ontology/uco/action/action.ttl b/ontology/uco/action/action.ttl index 17698eec..7f868aae 100644 --- a/ontology/uco/action/action.ttl +++ b/ontology/uco/action/action.ttl @@ -108,43 +108,28 @@ action:Action sh:path action:actionCount ; ] , [ - sh:datatype vocabulary:ActionStatusTypeVocab ; - sh:message "Value is outside the default vocabulary ActionStatusTypeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for action:actionStatus should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path action:actionStatus ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:ActionStatusTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "Complete/Finish" + "Error" + "Fail" + "Ongoing" + "Pending" + "Success" + "Unknown" ) ; + sh:message "Value is not member of the vocabulary ActionStatusTypeVocab." ; sh:path action:actionStatus ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary ActionStatusTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:ActionStatusTypeVocab ; - sh:in ( - "Complete/Finish"^^vocabulary:ActionStatusTypeVocab - "Error"^^vocabulary:ActionStatusTypeVocab - "Fail"^^vocabulary:ActionStatusTypeVocab - "Ongoing"^^vocabulary:ActionStatusTypeVocab - "Pending"^^vocabulary:ActionStatusTypeVocab - "Success"^^vocabulary:ActionStatusTypeVocab - "Unknown"^^vocabulary:ActionStatusTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:actionStatus ; ] ; @@ -256,8 +241,17 @@ action:ActionFrequencyFacet sh:path action:units ; ] , [ - sh:datatype vocabulary:TrendVocab ; - sh:message "Value is outside the default vocabulary TrendVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for action:trend should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:path action:trend ; + sh:severity sh:Warning ; + ] , + [ + sh:in ( + "Decreasing" + "Increasing" + ) ; + sh:message "Value is not member of the vocabulary TrendVocab." ; sh:path action:trend ; sh:severity sh:Info ; ] , @@ -265,30 +259,6 @@ action:ActionFrequencyFacet sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:TrendVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path action:trend ; - ] , - [ - sh:message "Value is not member of the vocabulary TrendVocab." ; - sh:or ( - [ - sh:datatype vocabulary:TrendVocab ; - sh:in ( - "Decreasing"^^vocabulary:TrendVocab - "Increasing"^^vocabulary:TrendVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; sh:path action:trend ; ] ; diff --git a/ontology/uco/observable/observable.ttl b/ontology/uco/observable/observable.ttl index 8081908a..0aa8be12 100644 --- a/ontology/uco/observable/observable.ttl +++ b/ontology/uco/observable/observable.ttl @@ -165,44 +165,29 @@ observable:AccountFacet sh:path observable:accountIdentifier ; ] , [ - sh:datatype vocabulary:AccountTypeVocab ; - sh:message "Value is outside the default vocabulary AccountTypeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:accountType should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:accountType ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:AccountTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "ldap" + "nis" + "openid" + "radius" + "tacacs" + "unix" + "windows_domain" + "windows_local" ) ; + sh:message "Value is not member of the vocabulary AccountTypeVocab." ; sh:path observable:accountType ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary AccountTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:AccountTypeVocab ; - sh:in ( - "ldap"^^vocabulary:AccountTypeVocab - "nis"^^vocabulary:AccountTypeVocab - "openid"^^vocabulary:AccountTypeVocab - "radius"^^vocabulary:AccountTypeVocab - "tacacs"^^vocabulary:AccountTypeVocab - "unix"^^vocabulary:AccountTypeVocab - "windows_domain"^^vocabulary:AccountTypeVocab - "windows_local"^^vocabulary:AccountTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:accountType ; ] ; @@ -656,17 +641,15 @@ observable:AutonomousSystemFacet sh:nodeKind sh:Literal ; sh:path observable:asHandle ; ] , + [ + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:regionalInternetRegistry should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:path observable:regionalInternetRegistry ; + sh:severity sh:Warning ; + ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:RegionalRegistryTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; sh:path observable:regionalInternetRegistry ; ] ; @@ -1438,39 +1421,24 @@ observable:ContactAddress sh:path observable:geolocationAddress ; ] , [ - sh:datatype vocabulary:ContactAddressScopeVocab ; - sh:message "Value is outside the default vocabulary ContactAddressScopeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:contactAddressScope should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:contactAddressScope ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:ContactAddressScopeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "home" + "work" + "school" ) ; + sh:message "Value is not member of the vocabulary ContactAddressScopeVocab." ; sh:path observable:contactAddressScope ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary ContactAddressScopeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:ContactAddressScopeVocab ; - sh:in ( - "home"^^vocabulary:ContactAddressScopeVocab - "work"^^vocabulary:ContactAddressScopeVocab - "school"^^vocabulary:ContactAddressScopeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactAddressScope ; ] ; @@ -1560,40 +1528,25 @@ observable:ContactEmail sh:path observable:emailAddress ; ] , [ - sh:datatype vocabulary:ContactEmailScopeVocab ; - sh:message "Value is outside the default vocabulary ContactEmailScopeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:contactEmailScope should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:contactEmailScope ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:ContactEmailScopeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "home" + "work" + "school" + "cloud" ) ; + sh:message "Value is not member of the vocabulary ContactEmailScopeVocab." ; sh:path observable:contactEmailScope ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary ContactEmailScopeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:ContactEmailScopeVocab ; - sh:in ( - "home"^^vocabulary:ContactEmailScopeVocab - "work"^^vocabulary:ContactEmailScopeVocab - "school"^^vocabulary:ContactEmailScopeVocab - "cloud"^^vocabulary:ContactEmailScopeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactEmailScope ; ] ; @@ -1827,44 +1780,29 @@ observable:ContactPhone sh:path observable:contactPhoneNumber ; ] , [ - sh:datatype vocabulary:ContactPhoneScopeVocab ; - sh:message "Value is outside the default vocabulary ContactPhoneScopeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:contactPhoneScope in UCO 2.0.0." ; sh:path observable:contactPhoneScope ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:ContactPhoneScopeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "home" + "work" + "school" + "mobile" + "main" + "home fax" + "work fax" + "pager" ) ; + sh:message "Value is not member of the vocabulary ContactPhoneScopeVocab." ; sh:path observable:contactPhoneScope ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary ContactPhoneScopeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:ContactPhoneScopeVocab ; - sh:in ( - "home"^^vocabulary:ContactPhoneScopeVocab - "work"^^vocabulary:ContactPhoneScopeVocab - "school"^^vocabulary:ContactPhoneScopeVocab - "mobile"^^vocabulary:ContactPhoneScopeVocab - "main"^^vocabulary:ContactPhoneScopeVocab - "home fax"^^vocabulary:ContactPhoneScopeVocab - "work fax"^^vocabulary:ContactPhoneScopeVocab - "pager"^^vocabulary:ContactPhoneScopeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactPhoneScope ; ] ; @@ -1912,39 +1850,24 @@ observable:ContactSIP sh:path observable:sipAddress ; ] , [ - sh:datatype vocabulary:ContactSIPScopeVocab ; - sh:message "Value is outside the default vocabulary ContactSIPScopeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:contactSIPScope should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:contactSIPScope ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:ContactSIPScopeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "home" + "work" + "school" ) ; + sh:message "Value is not member of the vocabulary ContactSIPScopeVocab." ; sh:path observable:contactSIPScope ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary ContactSIPScopeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:ContactSIPScopeVocab ; - sh:in ( - "home"^^vocabulary:ContactSIPScopeVocab - "work"^^vocabulary:ContactSIPScopeVocab - "school"^^vocabulary:ContactSIPScopeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactSIPScope ; ] ; @@ -1967,40 +1890,25 @@ observable:ContactURL sh:path observable:url ; ] , [ - sh:datatype vocabulary:ContactURLScopeVocab ; - sh:message "Value is outside the default vocabulary ContactURLScopeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:contactURLScope should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:contactURLScope ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:ContactURLScopeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "home" + "work" + "school" + "homepage" ) ; + sh:message "Value is not member of the vocabulary ContactURLScopeVocab." ; sh:path observable:contactURLScope ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary ContactURLScopeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:ContactURLScopeVocab ; - sh:in ( - "home"^^vocabulary:ContactURLScopeVocab - "work"^^vocabulary:ContactURLScopeVocab - "school"^^vocabulary:ContactURLScopeVocab - "homepage"^^vocabulary:ContactURLScopeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactURLScope ; ] ; @@ -2074,45 +1982,30 @@ observable:ContentDataFacet sh:nodeKind sh:Literal ; sh:path observable:mimeClass ; ] , + [ + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:byteOrder should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:path observable:byteOrder ; + sh:severity sh:Warning ; + ] , [ sh:datatype xsd:string ; sh:nodeKind sh:Literal ; sh:path observable:mimeType ; ] , [ - sh:datatype vocabulary:EndiannessTypeVocab ; - sh:message "Value is outside the default vocabulary EndiannessTypeVocab." ; + sh:in ( + "Big-endian" + "Little-endian" + "Middle-endian" + ) ; + sh:message "Value is not member of the vocabulary EndiannessTypeVocab." ; sh:path observable:byteOrder ; sh:severity sh:Info ; ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:EndiannessTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path observable:byteOrder ; - ] , - [ - sh:message "Value is not member of the vocabulary EndiannessTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:EndiannessTypeVocab ; - sh:in ( - "Big-endian"^^vocabulary:EndiannessTypeVocab - "Little-endian"^^vocabulary:EndiannessTypeVocab - "Middle-endian"^^vocabulary:EndiannessTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; sh:path observable:byteOrder ; ] ; @@ -4109,41 +4002,26 @@ observable:MemoryFacet sh:path observable:regionSize ; ] , [ - sh:datatype vocabulary:MemoryBlockTypeVocab ; - sh:message "Value is outside the default vocabulary MemoryBlockTypeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:blockType should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:blockType ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:MemoryBlockTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "Bit-mapped" + "Byte-mapped" + "Initialized" + "Overlay" + "Uninitialized" ) ; + sh:message "Value is not member of the vocabulary MemoryBlockTypeVocab." ; sh:path observable:blockType ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary MemoryBlockTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:MemoryBlockTypeVocab ; - sh:in ( - "Bit-mapped"^^vocabulary:MemoryBlockTypeVocab - "Byte-mapped"^^vocabulary:MemoryBlockTypeVocab - "Initialized"^^vocabulary:MemoryBlockTypeVocab - "Overlay"^^vocabulary:MemoryBlockTypeVocab - "Uninitialized"^^vocabulary:MemoryBlockTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:blockType ; ] ; @@ -5743,115 +5621,70 @@ observable:RecoveredObjectFacet rdfs:comment "Recoverability status of name, metadata, and content."@en ; sh:property [ - sh:datatype vocabulary:RecoveredObjectStatusVocab ; - sh:message "Value is outside the default vocabulary RecoveredObjectStatusVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:contentRecoveredStatus should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:contentRecoveredStatus ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:datatype vocabulary:RecoveredObjectStatusVocab ; - sh:message "Value is outside the default vocabulary RecoveredObjectStatusVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:metadataRecoveredStatus should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:metadataRecoveredStatus ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:datatype vocabulary:RecoveredObjectStatusVocab ; - sh:message "Value is outside the default vocabulary RecoveredObjectStatusVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:nameRecoveredStatus should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:nameRecoveredStatus ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:RecoveredObjectStatusVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "recovered" + "partially recovered" + "overwritten" + "unknown" ) ; + sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; sh:path observable:nameRecoveredStatus ; + sh:severity sh:Info ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:RecoveredObjectStatusVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "recovered" + "partially recovered" + "overwritten" + "unknown" ) ; + sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; sh:path observable:metadataRecoveredStatus ; + sh:severity sh:Info ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:RecoveredObjectStatusVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "recovered" + "partially recovered" + "overwritten" + "unknown" ) ; + sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; sh:path observable:contentRecoveredStatus ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; - sh:or ( - [ - sh:datatype vocabulary:RecoveredObjectStatusVocab ; - sh:in ( - "recovered"^^vocabulary:RecoveredObjectStatusVocab - "partially recovered"^^vocabulary:RecoveredObjectStatusVocab - "overwritten"^^vocabulary:RecoveredObjectStatusVocab - "unknown"^^vocabulary:RecoveredObjectStatusVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path observable:nameRecoveredStatus ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:contentRecoveredStatus ; ] , [ - sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; - sh:or ( - [ - sh:datatype vocabulary:RecoveredObjectStatusVocab ; - sh:in ( - "recovered"^^vocabulary:RecoveredObjectStatusVocab - "partially recovered"^^vocabulary:RecoveredObjectStatusVocab - "overwritten"^^vocabulary:RecoveredObjectStatusVocab - "unknown"^^vocabulary:RecoveredObjectStatusVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:metadataRecoveredStatus ; ] , [ - sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; - sh:or ( - [ - sh:datatype vocabulary:RecoveredObjectStatusVocab ; - sh:in ( - "recovered"^^vocabulary:RecoveredObjectStatusVocab - "partially recovered"^^vocabulary:RecoveredObjectStatusVocab - "overwritten"^^vocabulary:RecoveredObjectStatusVocab - "unknown"^^vocabulary:RecoveredObjectStatusVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path observable:contentRecoveredStatus ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:nameRecoveredStatus ; ] ; sh:targetClass observable:RecoveredObjectFacet ; @@ -6526,40 +6359,25 @@ observable:TaskActionType sh:path observable:actionID ; ] , [ - sh:datatype vocabulary:TaskActionTypeVocab ; - sh:message "Value is outside the default vocabulary TaskActionTypeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:actionType should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:actionType ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:TaskActionTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "TASK_ACTION_COM_HANDLER" + "TASK_ACTION_EXEC" + "TASK_ACTION_SEND_EMAIL" + "TASK_ACTION_SHOW_MESSAGE" ) ; + sh:message "Value is not member of the vocabulary TaskActionTypeVocab." ; sh:path observable:actionType ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary TaskActionTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:TaskActionTypeVocab ; - sh:in ( - "TASK_ACTION_COM_HANDLER"^^vocabulary:TaskActionTypeVocab - "TASK_ACTION_EXEC"^^vocabulary:TaskActionTypeVocab - "TASK_ACTION_SEND_EMAIL"^^vocabulary:TaskActionTypeVocab - "TASK_ACTION_SHOW_MESSAGE"^^vocabulary:TaskActionTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:actionType ; ] ; @@ -6612,84 +6430,54 @@ observable:TriggerType sh:path observable:triggerSessionChangeType ; ] , [ - sh:datatype vocabulary:TriggerFrequencyVocab ; - sh:message "Value is outside the default vocabulary TriggerFrequencyVocab." ; - sh:path observable:triggerFrequency ; - sh:severity sh:Info ; - ] , - [ - sh:datatype vocabulary:TriggerTypeVocab ; - sh:message "Value is outside the default vocabulary TriggerTypeVocab." ; - sh:path observable:triggerType ; - sh:severity sh:Info ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:TriggerFrequencyVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:triggerFrequency should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:triggerFrequency ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:TriggerTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:triggerType should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:triggerType ; + sh:severity sh:Warning ; ] , [ - sh:message "Value is not member of the vocabulary TriggerFrequencyVocab." ; - sh:or ( - [ - sh:datatype vocabulary:TriggerFrequencyVocab ; - sh:in ( - "TASK_EVENT_TRIGGER_AT_LOGON"^^vocabulary:TriggerFrequencyVocab - "TASK_EVENT_TRIGGER_AT_SYSTEMSTART"^^vocabulary:TriggerFrequencyVocab - "TASK_EVENT_TRIGGER_ON_IDLE"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_DAILY"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_MONTHLYDATE"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_MONTHLYDOW"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_ONCE"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_WEEKLY"^^vocabulary:TriggerFrequencyVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "TASK_EVENT_TRIGGER_AT_LOGON" + "TASK_EVENT_TRIGGER_AT_SYSTEMSTART" + "TASK_EVENT_TRIGGER_ON_IDLE" + "TASK_TIME_TRIGGER_DAILY" + "TASK_TIME_TRIGGER_MONTHLYDATE" + "TASK_TIME_TRIGGER_MONTHLYDOW" + "TASK_TIME_TRIGGER_ONCE" + "TASK_TIME_TRIGGER_WEEKLY" ) ; + sh:message "Value is not member of the vocabulary TriggerFrequencyVocab." ; sh:path observable:triggerFrequency ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary TriggerTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:TriggerTypeVocab ; - sh:in ( - "TASK_TRIGGER_BOOT"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_EVENT"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_IDLE"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_LOGON"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_REGISTRATION"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_SESSION_STATE_CHANGE"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_TIME"^^vocabulary:TriggerTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "TASK_TRIGGER_BOOT" + "TASK_TRIGGER_EVENT" + "TASK_TRIGGER_IDLE" + "TASK_TRIGGER_LOGON" + "TASK_TRIGGER_REGISTRATION" + "TASK_TRIGGER_SESSION_STATE_CHANGE" + "TASK_TRIGGER_TIME" ) ; + sh:message "Value is not member of the vocabulary TriggerTypeVocab." ; + sh:path observable:triggerType ; + sh:severity sh:Info ; + ] , + [ + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerFrequency ; + ] , + [ + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:triggerType ; ] ; @@ -7176,47 +6964,32 @@ observable:URLVisitFacet sh:path observable:visitDuration ; ] , [ - sh:datatype vocabulary:URLTransitionTypeVocab ; - sh:message "Value is outside the default vocabulary URLTransitionTypeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:urlTransitionType should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:urlTransitionType ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:URLTransitionTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "link" + "typed" + "auto_bookmark" + "auto_subframe" + "manual_subframe" + "generated" + "auto_toplevel" + "form_submit" + "reload" + "keyword" + "keyword_generated" ) ; + sh:message "Value is not member of the vocabulary URLTransitionTypeVocab." ; sh:path observable:urlTransitionType ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary URLTransitionTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:URLTransitionTypeVocab ; - sh:in ( - "link"^^vocabulary:URLTransitionTypeVocab - "typed"^^vocabulary:URLTransitionTypeVocab - "auto_bookmark"^^vocabulary:URLTransitionTypeVocab - "auto_subframe"^^vocabulary:URLTransitionTypeVocab - "manual_subframe"^^vocabulary:URLTransitionTypeVocab - "generated"^^vocabulary:URLTransitionTypeVocab - "auto_toplevel"^^vocabulary:URLTransitionTypeVocab - "form_submit"^^vocabulary:URLTransitionTypeVocab - "reload"^^vocabulary:URLTransitionTypeVocab - "keyword"^^vocabulary:URLTransitionTypeVocab - "keyword_generated"^^vocabulary:URLTransitionTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:urlTransitionType ; ] ; @@ -7499,6 +7272,18 @@ observable:WhoIsFacet sh:nodeKind sh:Literal ; sh:path observable:sponsoringRegistrar ; ] , + [ + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:regionalInternetRegistry should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:path observable:regionalInternetRegistry ; + sh:severity sh:Warning ; + ] , + [ + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:status should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:path observable:status ; + sh:severity sh:Warning ; + ] , [ sh:datatype xsd:string ; sh:nodeKind sh:Literal ; @@ -7511,68 +7296,39 @@ observable:WhoIsFacet sh:path observable:dnssec ; ] , [ - sh:datatype vocabulary:WhoisStatusTypeVocab ; - sh:message "Value is outside the default vocabulary WhoisStatusTypeVocab." ; + sh:in ( + "ADD_PERIOD" + "AUTO_RENEW_PERIOD" + "CLIENT_DELETE_PROHIBITED" + "CLIENT_HOLD" + "CLIENT_RENEW_PROHIBITED" + "CLIENT_TRANSFER_PROHIBITED" + "CLIENT_UPDATE_PROHIBITED" + "DELETE_PROHIBITED" + "HOLD" + "INACTIVE" + "OK" + "PENDING_DELETE_RESTORABLE" + "PENDING_DELETE_SCHEDULED_FOR_RELEASE" + "PENDING_RESTORE" + "RENEW_PERIOD" + "RENEW_PROHIBITED" + "TRANSFER_PERIOD" + "TRANSFER_PROHIBITED" + "UPDATE_PROHIBITED" + ) ; + sh:message "Value is not member of the vocabulary WhoisStatusTypeVocab." ; sh:path observable:status ; sh:severity sh:Info ; ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:RegionalRegistryTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; sh:path observable:regionalInternetRegistry ; ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:WhoisStatusTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path observable:status ; - ] , - [ - sh:message "Value is not member of the vocabulary WhoisStatusTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:WhoisStatusTypeVocab ; - sh:in ( - "ADD_PERIOD"^^vocabulary:WhoisStatusTypeVocab - "AUTO_RENEW_PERIOD"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_DELETE_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_HOLD"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_RENEW_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_TRANSFER_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_UPDATE_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "DELETE_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "HOLD"^^vocabulary:WhoisStatusTypeVocab - "INACTIVE"^^vocabulary:WhoisStatusTypeVocab - "OK"^^vocabulary:WhoisStatusTypeVocab - "PENDING_DELETE_RESTORABLE"^^vocabulary:WhoisStatusTypeVocab - "PENDING_DELETE_SCHEDULED_FOR_RELEASE"^^vocabulary:WhoisStatusTypeVocab - "PENDING_RESTORE"^^vocabulary:WhoisStatusTypeVocab - "RENEW_PERIOD"^^vocabulary:WhoisStatusTypeVocab - "RENEW_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "TRANSFER_PERIOD"^^vocabulary:WhoisStatusTypeVocab - "TRANSFER_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "UPDATE_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; sh:path observable:status ; ] ; @@ -7589,39 +7345,24 @@ observable:WhoisContactFacet rdfs:comment "A Whois contact type is a grouping of characteristics unique to contact-related information present in a response record conformant to the WHOIS protocol standard (RFC 3912). [based on https://en.wikipedia.org/wiki/WHOIS]"@en ; sh:property [ - sh:datatype vocabulary:WhoisContactTypeVocab ; - sh:message "Value is outside the default vocabulary WhoisContactTypeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:whoisContactType should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:whoisContactType ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:WhoisContactTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "ADMIN" + "BILLING" + "TECHNICAL" ) ; + sh:message "Value is not member of the vocabulary WhoisContactTypeVocab." ; sh:path observable:whoisContactType ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary WhoisContactTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:WhoisContactTypeVocab ; - sh:in ( - "ADMIN"^^vocabulary:WhoisContactTypeVocab - "BILLING"^^vocabulary:WhoisContactTypeVocab - "TECHNICAL"^^vocabulary:WhoisContactTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:whoisContactType ; ] ; @@ -8774,150 +8515,112 @@ observable:WindowsTaskFacet sh:path observable:taskCreator ; ] , [ - sh:datatype vocabulary:TaskFlagVocab ; - sh:message "Value is outside the default vocabulary TaskFlagVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:flags should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:flags ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ - sh:datatype vocabulary:TaskPriorityVocab ; - sh:message "Value is outside the default vocabulary TaskPriorityVocab." ; - sh:path observable:priority ; - sh:severity sh:Info ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:status should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; + sh:path observable:status ; + sh:severity sh:Warning ; ] , [ - sh:datatype vocabulary:TaskStatusVocab ; - sh:message "Value is outside the default vocabulary TaskStatusVocab." ; + sh:in ( + "SCHED_E_ACCOUNT_DBASE_CORRUPT" + "SCHED_E_ACCOUNT_INFORMATION_NOT_SET" + "SCHED_E_ACCOUNT_NAME_NOT_FOUND" + "SCHED_E_CANNOT_OPEN_TASK" + "SCHED_E_INVALID_TASK" + "SCHED_E_NO_SECURITY_SERVICES" + "SCHED_E_SERVICE_NOT_INSTALLED" + "SCHED_E_SERVICE_NOT_RUNNING" + "SCHED_E_TASK_NOT_READY" + "SCHED_E_TASK_NOT_RUNNING" + "SCHED_E_TRIGGER_NOT_FOUND" + "SCHED_E_UNKNOWN_OBJECT_VERSION" + "SCHED_E_UNSUPPORTED_ACCOUNT_OPTION" + "SCHED_S_EVENT_TRIGGER" + "SCHED_S_TASK_DISABLED" + "SCHED_S_TASK_HAS_NOT_RUN" + "SCHED_S_TASK_NOT_SCHEDULED" + "SCHED_S_TASK_NO_MORE_RUNS" + "SCHED_S_TASK_NO_VALID_TRIGGERS" + "SCHED_S_TASK_READY" + "SCHED_S_TASK_RUNNING" + "SCHED_S_TASK_TERMINATED" + "TASK_STATE_QUEUED" + "TASK_STATE_UNKNOWN" + ) ; + sh:message "Value is not member of the vocabulary TaskStatusVocab." ; sh:path observable:status ; + ] , + [ + sh:in ( + "TASK_FLAG_DELETE_WHEN_DONE" + "TASK_FLAG_DISABLED" + "TASK_FLAG_DONT_START_IF_ON_BATTERIES" + "TASK_FLAG_HIDDEN" + "TASK_FLAG_INTERACTIVE" + "TASK_FLAG_KILL_IF_GOING_ON_BATTERIES" + "TASK_FLAG_KILL_ON_IDLE_END" + "TASK_FLAG_RESTART_ON_IDLE_RESUME" + "TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET" + "TASK_FLAG_RUN_ONLY_IF_LOGGED_ON" + "TASK_FLAG_START_ONLY_IF_IDLE" + "TASK_FLAG_SYSTEM_REQUIRED" + "TASK_FLAG_ZERO" + ) ; + sh:message "Value is not member of the vocabulary TaskFlagVocab." ; + sh:path observable:flags ; sh:severity sh:Info ; ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:TaskPriorityVocab ; - ] - [ - sh:datatype xsd:integer ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; sh:path observable:priority ; ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:TaskStatusVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; sh:path observable:status ; ] , [ - sh:message "Value is not member of the vocabulary TaskFlagVocab." ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:priority should be xsd:string or xsd:integer. Not using xsd:string or xsd:integer will be an error in UCO 2.0.0." ; sh:or ( [ - sh:datatype vocabulary:TaskFlagVocab ; - sh:in ( - "TASK_FLAG_DELETE_WHEN_DONE"^^vocabulary:TaskFlagVocab - "TASK_FLAG_DISABLED"^^vocabulary:TaskFlagVocab - "TASK_FLAG_DONT_START_IF_ON_BATTERIES"^^vocabulary:TaskFlagVocab - "TASK_FLAG_HIDDEN"^^vocabulary:TaskFlagVocab - "TASK_FLAG_INTERACTIVE"^^vocabulary:TaskFlagVocab - "TASK_FLAG_KILL_IF_GOING_ON_BATTERIES"^^vocabulary:TaskFlagVocab - "TASK_FLAG_KILL_ON_IDLE_END"^^vocabulary:TaskFlagVocab - "TASK_FLAG_RESTART_ON_IDLE_RESUME"^^vocabulary:TaskFlagVocab - "TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET"^^vocabulary:TaskFlagVocab - "TASK_FLAG_RUN_ONLY_IF_LOGGED_ON"^^vocabulary:TaskFlagVocab - "TASK_FLAG_START_ONLY_IF_IDLE"^^vocabulary:TaskFlagVocab - "TASK_FLAG_SYSTEM_REQUIRED"^^vocabulary:TaskFlagVocab - "TASK_FLAG_ZERO"^^vocabulary:TaskFlagVocab - ) ; + sh:datatype xsd:integer ; ] [ sh:datatype xsd:string ; ] ) ; - sh:path observable:flags ; + sh:path observable:priority ; + sh:severity sh:Warning ; ] , [ sh:message "Value is not member of the vocabulary TaskPriorityVocab." ; sh:or ( [ - sh:datatype vocabulary:TaskPriorityVocab ; sh:in ( - "ABOVE_NORMAL_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "BELOW_NORMAL_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "HIGH_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "IDLE_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "NORMAL_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "REALTIME_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab + "ABOVE_NORMAL_PRIORITY_CLASS" + "BELOW_NORMAL_PRIORITY_CLASS" + "HIGH_PRIORITY_CLASS" + "IDLE_PRIORITY_CLASS" + "NORMAL_PRIORITY_CLASS" + "REALTIME_PRIORITY_CLASS" ) ; ] [ sh:datatype xsd:integer ; ] - [ - sh:datatype xsd:string ; - ] ) ; sh:path observable:priority ; - ] , - [ - sh:message "Value is not member of the vocabulary TaskStatusVocab." ; - sh:or ( - [ - sh:datatype vocabulary:TaskStatusVocab ; - sh:in ( - "SCHED_E_ACCOUNT_DBASE_CORRUPT"^^vocabulary:TaskStatusVocab - "SCHED_E_ACCOUNT_INFORMATION_NOT_SET"^^vocabulary:TaskStatusVocab - "SCHED_E_ACCOUNT_NAME_NOT_FOUND"^^vocabulary:TaskStatusVocab - "SCHED_E_CANNOT_OPEN_TASK"^^vocabulary:TaskStatusVocab - "SCHED_E_INVALID_TASK"^^vocabulary:TaskStatusVocab - "SCHED_E_NO_SECURITY_SERVICES"^^vocabulary:TaskStatusVocab - "SCHED_E_SERVICE_NOT_INSTALLED"^^vocabulary:TaskStatusVocab - "SCHED_E_SERVICE_NOT_RUNNING"^^vocabulary:TaskStatusVocab - "SCHED_E_TASK_NOT_READY"^^vocabulary:TaskStatusVocab - "SCHED_E_TASK_NOT_RUNNING"^^vocabulary:TaskStatusVocab - "SCHED_E_TRIGGER_NOT_FOUND"^^vocabulary:TaskStatusVocab - "SCHED_E_UNKNOWN_OBJECT_VERSION"^^vocabulary:TaskStatusVocab - "SCHED_E_UNSUPPORTED_ACCOUNT_OPTION"^^vocabulary:TaskStatusVocab - "SCHED_S_EVENT_TRIGGER"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_DISABLED"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_HAS_NOT_RUN"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_NOT_SCHEDULED"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_NO_MORE_RUNS"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_NO_VALID_TRIGGERS"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_READY"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_RUNNING"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_TERMINATED"^^vocabulary:TaskStatusVocab - "TASK_STATE_QUEUED"^^vocabulary:TaskStatusVocab - "TASK_STATE_UNKNOWN"^^vocabulary:TaskStatusVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; - sh:path observable:status ; + sh:severity sh:Info ; ] , [ sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:TaskFlagVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; sh:path observable:flags ; ] ; @@ -9025,10 +8728,10 @@ observable:WindowsVolumeFacet sh:path observable:driveLetter ; ] , [ - sh:datatype vocabulary:WindowsDriveTypeVocab ; - sh:message "Value is outside the default vocabulary WindowsDriveTypeVocab." ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:driveType should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:driveType ; - sh:severity sh:Info ; + sh:severity sh:Warning ; ] , [ sh:datatype vocabulary:WindowsVolumeAttributeVocab ; @@ -9037,37 +8740,22 @@ observable:WindowsVolumeFacet sh:path observable:windowsVolumeAttributes ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:WindowsDriveTypeVocab ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "DRIVE_CDROM" + "DRIVE_FIXED" + "DRIVE_NO_ROOT_DIR" + "DRIVE_RAMDISK" + "DRIVE_REMOTE" + "DRIVE_REMOVABLE" + "DRIVE_UNKNOWN" ) ; + sh:message "Value is not member of the vocabulary WindowsDriveTypeVocab." ; sh:path observable:driveType ; + sh:severity sh:Info ; ] , [ - sh:message "Value is not member of the vocabulary WindowsDriveTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:WindowsDriveTypeVocab ; - sh:in ( - "DRIVE_CDROM"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_FIXED"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_NO_ROOT_DIR"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_RAMDISK"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_REMOTE"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_REMOVABLE"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_UNKNOWN"^^vocabulary:WindowsDriveTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:driveType ; ] ; @@ -9124,37 +8812,28 @@ observable:WirelessNetworkConnectionFacet sh:path observable:ssid ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:nodeKind sh:Literal ; - sh:or ( - [ - sh:datatype vocabulary:WirelessNetworkSecurityModeVocab ; - ] - [ - sh:datatype xsd:string ; - ] - ) ; + sh:datatype xsd:string ; + sh:message "As of UCO 1.4.0, the datatype to use for observable:wirelessNetworkSecurityMode should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:wirelessNetworkSecurityMode ; + sh:severity sh:Warning ; ] , [ - sh:message "Value is not member of the vocabulary WirelessNetworkSecurityModeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:WirelessNetworkSecurityModeVocab ; - sh:in ( - "None"^^vocabulary:WirelessNetworkSecurityModeVocab - "WEP"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA2-PSK"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA2-Enterprise"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA3-PSK"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA3-Enterprise"^^vocabulary:WirelessNetworkSecurityModeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "None" + "WEP" + "WPA" + "WPA2-PSK" + "WPA2-Enterprise" + "WPA3-PSK" + "WPA3-Enterprise" ) ; + sh:message "Value is not member of the vocabulary WirelessNetworkSecurityModeVocab." ; + sh:path observable:wirelessNetworkSecurityMode ; + sh:severity sh:Info ; + ] , + [ + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:wirelessNetworkSecurityMode ; ] ; @@ -12684,31 +12363,22 @@ observable:regionalInternetRegistry observable:regionalInternetRegistry-shape-value-not-vocabulary-member a sh:PropertyShape ; - sh:message "Value is not member of the vocabulary RegionalRegistryTypeVocab." ; - sh:or ( - [ - sh:datatype vocabulary:RegionalRegistryTypeVocab ; - sh:in ( - "APNIC"^^vocabulary:RegionalRegistryTypeVocab - "ARIN"^^vocabulary:RegionalRegistryTypeVocab - "AfriNIC"^^vocabulary:RegionalRegistryTypeVocab - "LACNIC"^^vocabulary:RegionalRegistryTypeVocab - "RIPE NCC"^^vocabulary:RegionalRegistryTypeVocab - ) ; - ] - [ - sh:datatype xsd:string ; - ] + sh:in ( + "APNIC" + "ARIN" + "AfriNIC" + "LACNIC" + "RIPE NCC" ) ; + sh:message "Value is not member of the vocabulary RegionalRegistryTypeVocab." ; sh:path observable:regionalInternetRegistry ; + sh:severity sh:Info ; . observable:regionalInternetRegistry-shape-value-outside-default-vocabulary a sh:PropertyShape ; - sh:datatype vocabulary:RegionalRegistryTypeVocab ; - sh:message "Value is outside the default vocabulary RegionalRegistryTypeVocab." ; + sh:deactivated "true"^^xsd:boolean ; sh:path observable:regionalInternetRegistry ; - sh:severity sh:Info ; . observable:registeredOrganization diff --git a/ontology/uco/vocabulary/vocabulary.ttl b/ontology/uco/vocabulary/vocabulary.ttl index 8ba2b864..2ad3ac08 100644 --- a/ontology/uco/vocabulary/vocabulary.ttl +++ b/ontology/uco/vocabulary/vocabulary.ttl @@ -18,14 +18,14 @@ vocabulary:AccountTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "ldap"^^vocabulary:AccountTypeVocab - "nis"^^vocabulary:AccountTypeVocab - "openid"^^vocabulary:AccountTypeVocab - "radius"^^vocabulary:AccountTypeVocab - "tacacs"^^vocabulary:AccountTypeVocab - "unix"^^vocabulary:AccountTypeVocab - "windows_domain"^^vocabulary:AccountTypeVocab - "windows_local"^^vocabulary:AccountTypeVocab + "ldap" + "nis" + "openid" + "radius" + "tacacs" + "unix" + "windows_domain" + "windows_local" ) ; ] ; . @@ -37,57 +37,57 @@ vocabulary:ActionArgumentNameVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "APC Address"^^vocabulary:ActionArgumentNameVocab - "APC Mode"^^vocabulary:ActionArgumentNameVocab - "API"^^vocabulary:ActionArgumentNameVocab - "Access Mode"^^vocabulary:ActionArgumentNameVocab - "Application Name"^^vocabulary:ActionArgumentNameVocab - "Base Address"^^vocabulary:ActionArgumentNameVocab - "Callback Address"^^vocabulary:ActionArgumentNameVocab - "Code Address"^^vocabulary:ActionArgumentNameVocab - "Command"^^vocabulary:ActionArgumentNameVocab - "Control Code"^^vocabulary:ActionArgumentNameVocab - "Control Parameter"^^vocabulary:ActionArgumentNameVocab - "Creation Flags"^^vocabulary:ActionArgumentNameVocab - "Database Name"^^vocabulary:ActionArgumentNameVocab - "Delay Time (ms)"^^vocabulary:ActionArgumentNameVocab - "Destination Address"^^vocabulary:ActionArgumentNameVocab - "Error Control"^^vocabulary:ActionArgumentNameVocab - "File Information Class"^^vocabulary:ActionArgumentNameVocab - "Flags"^^vocabulary:ActionArgumentNameVocab - "Function Address"^^vocabulary:ActionArgumentNameVocab - "Function Name"^^vocabulary:ActionArgumentNameVocab - "Function Ordinal"^^vocabulary:ActionArgumentNameVocab - "Hook Type"^^vocabulary:ActionArgumentNameVocab - "Host Name"^^vocabulary:ActionArgumentNameVocab - "Hostname"^^vocabulary:ActionArgumentNameVocab - "Initial Owner"^^vocabulary:ActionArgumentNameVocab - "Mapping Offset"^^vocabulary:ActionArgumentNameVocab - "Number of Bytes Per Send"^^vocabulary:ActionArgumentNameVocab - "Options"^^vocabulary:ActionArgumentNameVocab - "Parameter Address"^^vocabulary:ActionArgumentNameVocab - "Password"^^vocabulary:ActionArgumentNameVocab - "Privilege Name"^^vocabulary:ActionArgumentNameVocab - "Protection"^^vocabulary:ActionArgumentNameVocab - "Proxy Bypass"^^vocabulary:ActionArgumentNameVocab - "Proxy Name"^^vocabulary:ActionArgumentNameVocab - "Reason"^^vocabulary:ActionArgumentNameVocab - "Request Size"^^vocabulary:ActionArgumentNameVocab - "Requested Version"^^vocabulary:ActionArgumentNameVocab - "Server"^^vocabulary:ActionArgumentNameVocab - "Service Name"^^vocabulary:ActionArgumentNameVocab - "Service State"^^vocabulary:ActionArgumentNameVocab - "Service Type"^^vocabulary:ActionArgumentNameVocab - "Share Mode"^^vocabulary:ActionArgumentNameVocab - "Shutdown Flag"^^vocabulary:ActionArgumentNameVocab - "Size (bytes)"^^vocabulary:ActionArgumentNameVocab - "Sleep Time (ms)"^^vocabulary:ActionArgumentNameVocab - "Source Address"^^vocabulary:ActionArgumentNameVocab - "Starting Address"^^vocabulary:ActionArgumentNameVocab - "System Metric Index"^^vocabulary:ActionArgumentNameVocab - "Target PID"^^vocabulary:ActionArgumentNameVocab - "Transfer Flags"^^vocabulary:ActionArgumentNameVocab - "Username"^^vocabulary:ActionArgumentNameVocab + "APC Address" + "APC Mode" + "API" + "Access Mode" + "Application Name" + "Base Address" + "Callback Address" + "Code Address" + "Command" + "Control Code" + "Control Parameter" + "Creation Flags" + "Database Name" + "Delay Time (ms)" + "Destination Address" + "Error Control" + "File Information Class" + "Flags" + "Function Address" + "Function Name" + "Function Ordinal" + "Hook Type" + "Host Name" + "Hostname" + "Initial Owner" + "Mapping Offset" + "Number of Bytes Per Send" + "Options" + "Parameter Address" + "Password" + "Privilege Name" + "Protection" + "Proxy Bypass" + "Proxy Name" + "Reason" + "Request Size" + "Requested Version" + "Server" + "Service Name" + "Service State" + "Service Type" + "Share Mode" + "Shutdown Flag" + "Size (bytes)" + "Sleep Time (ms)" + "Source Address" + "Starting Address" + "System Metric Index" + "Target PID" + "Transfer Flags" + "Username" ) ; ] ; . @@ -99,187 +99,187 @@ vocabulary:ActionNameVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Accept Socket Connection"^^vocabulary:ActionNameVocab - "Add Connection to Network Share"^^vocabulary:ActionNameVocab - "Add Network Share"^^vocabulary:ActionNameVocab - "Add Scheduled Task"^^vocabulary:ActionNameVocab - "Add System Call Hook"^^vocabulary:ActionNameVocab - "Add User"^^vocabulary:ActionNameVocab - "Add Windows Hook"^^vocabulary:ActionNameVocab - "Allocate Virtual Memory in Process"^^vocabulary:ActionNameVocab - "Bind Address to Socket"^^vocabulary:ActionNameVocab - "Change Service Configuration"^^vocabulary:ActionNameVocab - "Check for Remote Debugger"^^vocabulary:ActionNameVocab - "Close Port"^^vocabulary:ActionNameVocab - "Close Registry Key"^^vocabulary:ActionNameVocab - "Close Socket"^^vocabulary:ActionNameVocab - "Configure Service"^^vocabulary:ActionNameVocab - "Connect to IP"^^vocabulary:ActionNameVocab - "Connect to Named Pipe"^^vocabulary:ActionNameVocab - "Connect to Network Share"^^vocabulary:ActionNameVocab - "Connect to Socket"^^vocabulary:ActionNameVocab - "Connect to URL"^^vocabulary:ActionNameVocab - "Control Driver"^^vocabulary:ActionNameVocab - "Control Service"^^vocabulary:ActionNameVocab - "Copy File"^^vocabulary:ActionNameVocab - "Create Dialog Box"^^vocabulary:ActionNameVocab - "Create Directory"^^vocabulary:ActionNameVocab - "Create Event"^^vocabulary:ActionNameVocab - "Create File"^^vocabulary:ActionNameVocab - "Create File Alternate Data Stream"^^vocabulary:ActionNameVocab - "Create File Mapping"^^vocabulary:ActionNameVocab - "Create File Symbolic Link"^^vocabulary:ActionNameVocab - "Create Hidden File"^^vocabulary:ActionNameVocab - "Create Mailslot"^^vocabulary:ActionNameVocab - "Create Module"^^vocabulary:ActionNameVocab - "Create Mutex"^^vocabulary:ActionNameVocab - "Create Named Pipe"^^vocabulary:ActionNameVocab - "Create Process"^^vocabulary:ActionNameVocab - "Create Process as User"^^vocabulary:ActionNameVocab - "Create Registry Key"^^vocabulary:ActionNameVocab - "Create Registry Key Value"^^vocabulary:ActionNameVocab - "Create Remote Thread in Process"^^vocabulary:ActionNameVocab - "Create Service"^^vocabulary:ActionNameVocab - "Create Socket"^^vocabulary:ActionNameVocab - "Create Symbolic Link"^^vocabulary:ActionNameVocab - "Create Thread"^^vocabulary:ActionNameVocab - "Create Window"^^vocabulary:ActionNameVocab - "Delete Directory"^^vocabulary:ActionNameVocab - "Delete File"^^vocabulary:ActionNameVocab - "Delete Named Pipe"^^vocabulary:ActionNameVocab - "Delete Network Share"^^vocabulary:ActionNameVocab - "Delete Registry Key"^^vocabulary:ActionNameVocab - "Delete Registry Key Value"^^vocabulary:ActionNameVocab - "Delete Service"^^vocabulary:ActionNameVocab - "Delete User"^^vocabulary:ActionNameVocab - "Disconnect from Named Pipe"^^vocabulary:ActionNameVocab - "Disconnect from Network Share"^^vocabulary:ActionNameVocab - "Disconnect from Socket"^^vocabulary:ActionNameVocab - "Download File"^^vocabulary:ActionNameVocab - "Enumerate DLLs"^^vocabulary:ActionNameVocab - "Enumerate Network Shares"^^vocabulary:ActionNameVocab - "Enumerate Processes"^^vocabulary:ActionNameVocab - "Enumerate Protocols"^^vocabulary:ActionNameVocab - "Enumerate Registry Key Subkeys"^^vocabulary:ActionNameVocab - "Enumerate Registry Key Values"^^vocabulary:ActionNameVocab - "Enumerate Services"^^vocabulary:ActionNameVocab - "Enumerate System Handles"^^vocabulary:ActionNameVocab - "Enumerate Threads"^^vocabulary:ActionNameVocab - "Enumerate Threads in Process"^^vocabulary:ActionNameVocab - "Enumerate Users"^^vocabulary:ActionNameVocab - "Enumerate Windows"^^vocabulary:ActionNameVocab - "Find File"^^vocabulary:ActionNameVocab - "Find Window"^^vocabulary:ActionNameVocab - "Flush Process Instruction Cache"^^vocabulary:ActionNameVocab - "Free Library"^^vocabulary:ActionNameVocab - "Free Process Virtual Memory"^^vocabulary:ActionNameVocab - "Get Disk Free Space"^^vocabulary:ActionNameVocab - "Get Disk Type"^^vocabulary:ActionNameVocab - "Get Elapsed System Up Time"^^vocabulary:ActionNameVocab - "Get File Attributes"^^vocabulary:ActionNameVocab - "Get Function Address"^^vocabulary:ActionNameVocab - "Get Host By Address"^^vocabulary:ActionNameVocab - "Get Host By Name"^^vocabulary:ActionNameVocab - "Get Host Name"^^vocabulary:ActionNameVocab - "Get Library File Name"^^vocabulary:ActionNameVocab - "Get Library Handle"^^vocabulary:ActionNameVocab - "Get NetBIOS Name"^^vocabulary:ActionNameVocab - "Get Process Current Directory"^^vocabulary:ActionNameVocab - "Get Process Environment Variable"^^vocabulary:ActionNameVocab - "Get Process Startup Information"^^vocabulary:ActionNameVocab - "Get Processes Snapshot"^^vocabulary:ActionNameVocab - "Get Registry Key Attributes"^^vocabulary:ActionNameVocab - "Get Service Status"^^vocabulary:ActionNameVocab - "Get System Global Flags"^^vocabulary:ActionNameVocab - "Get System Host Name"^^vocabulary:ActionNameVocab - "Get System Local Time"^^vocabulary:ActionNameVocab - "Get System NetBIOS Name"^^vocabulary:ActionNameVocab - "Get System Network Parameters"^^vocabulary:ActionNameVocab - "Get System Time"^^vocabulary:ActionNameVocab - "Get Thread Context"^^vocabulary:ActionNameVocab - "Get Thread Username"^^vocabulary:ActionNameVocab - "Get User Attributes"^^vocabulary:ActionNameVocab - "Get Username"^^vocabulary:ActionNameVocab - "Get Windows Directory"^^vocabulary:ActionNameVocab - "Get Windows System Directory"^^vocabulary:ActionNameVocab - "Get Windows Temporary Files Directory"^^vocabulary:ActionNameVocab - "Hide Window"^^vocabulary:ActionNameVocab - "Impersonate Process"^^vocabulary:ActionNameVocab - "Impersonate Thread"^^vocabulary:ActionNameVocab - "Inject Memory Page"^^vocabulary:ActionNameVocab - "Kill Process"^^vocabulary:ActionNameVocab - "Kill Thread"^^vocabulary:ActionNameVocab - "Kill Window"^^vocabulary:ActionNameVocab - "Listen on Port"^^vocabulary:ActionNameVocab - "Listen on Socket"^^vocabulary:ActionNameVocab - "Load Driver"^^vocabulary:ActionNameVocab - "Load Library"^^vocabulary:ActionNameVocab - "Load Module"^^vocabulary:ActionNameVocab - "Load and Call Driver"^^vocabulary:ActionNameVocab - "Lock File"^^vocabulary:ActionNameVocab - "Logon as User"^^vocabulary:ActionNameVocab - "Map File"^^vocabulary:ActionNameVocab - "Map Library"^^vocabulary:ActionNameVocab - "Map View of File"^^vocabulary:ActionNameVocab - "Modify File"^^vocabulary:ActionNameVocab - "Modify Named Pipe"^^vocabulary:ActionNameVocab - "Modify Process"^^vocabulary:ActionNameVocab - "Modify Registry Key"^^vocabulary:ActionNameVocab - "Modify Registry Key Value"^^vocabulary:ActionNameVocab - "Modify Service"^^vocabulary:ActionNameVocab - "Monitor Registry Key"^^vocabulary:ActionNameVocab - "Move File"^^vocabulary:ActionNameVocab - "Open File"^^vocabulary:ActionNameVocab - "Open File Mapping"^^vocabulary:ActionNameVocab - "Open Mutex"^^vocabulary:ActionNameVocab - "Open Port"^^vocabulary:ActionNameVocab - "Open Process"^^vocabulary:ActionNameVocab - "Open Registry Key"^^vocabulary:ActionNameVocab - "Open Service"^^vocabulary:ActionNameVocab - "Open Service Control Manager"^^vocabulary:ActionNameVocab - "Protect Virtual Memory"^^vocabulary:ActionNameVocab - "Query DNS"^^vocabulary:ActionNameVocab - "Query Disk Attributes"^^vocabulary:ActionNameVocab - "Query Process Virtual Memory"^^vocabulary:ActionNameVocab - "Queue APC in Thread"^^vocabulary:ActionNameVocab - "Read File"^^vocabulary:ActionNameVocab - "Read From Named Pipe"^^vocabulary:ActionNameVocab - "Read From Process Memory"^^vocabulary:ActionNameVocab - "Read Registry Key Value"^^vocabulary:ActionNameVocab - "Receive Data on Socket"^^vocabulary:ActionNameVocab - "Receive Email Message"^^vocabulary:ActionNameVocab - "Release Mutex"^^vocabulary:ActionNameVocab - "Rename File"^^vocabulary:ActionNameVocab - "Revert Thread to Self"^^vocabulary:ActionNameVocab - "Send Control Code to File"^^vocabulary:ActionNameVocab - "Send Control Code to Pipe"^^vocabulary:ActionNameVocab - "Send Control Code to Service"^^vocabulary:ActionNameVocab - "Send DNS Query"^^vocabulary:ActionNameVocab - "Send Data on Socket"^^vocabulary:ActionNameVocab - "Send Data to Address on Socket"^^vocabulary:ActionNameVocab - "Send Email Message"^^vocabulary:ActionNameVocab - "Send ICMP Request"^^vocabulary:ActionNameVocab - "Send Reverse DNS Query"^^vocabulary:ActionNameVocab - "Set File Attributes"^^vocabulary:ActionNameVocab - "Set NetBIOS Name"^^vocabulary:ActionNameVocab - "Set Process Current Directory"^^vocabulary:ActionNameVocab - "Set Process Environment Variable"^^vocabulary:ActionNameVocab - "Set System Global Flags"^^vocabulary:ActionNameVocab - "Set System Host Name"^^vocabulary:ActionNameVocab - "Set System Time"^^vocabulary:ActionNameVocab - "Set Thread Context"^^vocabulary:ActionNameVocab - "Show Window"^^vocabulary:ActionNameVocab - "Shutdown System"^^vocabulary:ActionNameVocab - "Sleep Process"^^vocabulary:ActionNameVocab - "Sleep System"^^vocabulary:ActionNameVocab - "Start Service"^^vocabulary:ActionNameVocab - "Unload Driver"^^vocabulary:ActionNameVocab - "Unload Module"^^vocabulary:ActionNameVocab - "Unlock File"^^vocabulary:ActionNameVocab - "Unmap File"^^vocabulary:ActionNameVocab - "Upload File"^^vocabulary:ActionNameVocab - "Write to File"^^vocabulary:ActionNameVocab - "Write to Process Virtual Memory"^^vocabulary:ActionNameVocab + "Accept Socket Connection" + "Add Connection to Network Share" + "Add Network Share" + "Add Scheduled Task" + "Add System Call Hook" + "Add User" + "Add Windows Hook" + "Allocate Virtual Memory in Process" + "Bind Address to Socket" + "Change Service Configuration" + "Check for Remote Debugger" + "Close Port" + "Close Registry Key" + "Close Socket" + "Configure Service" + "Connect to IP" + "Connect to Named Pipe" + "Connect to Network Share" + "Connect to Socket" + "Connect to URL" + "Control Driver" + "Control Service" + "Copy File" + "Create Dialog Box" + "Create Directory" + "Create Event" + "Create File" + "Create File Alternate Data Stream" + "Create File Mapping" + "Create File Symbolic Link" + "Create Hidden File" + "Create Mailslot" + "Create Module" + "Create Mutex" + "Create Named Pipe" + "Create Process" + "Create Process as User" + "Create Registry Key" + "Create Registry Key Value" + "Create Remote Thread in Process" + "Create Service" + "Create Socket" + "Create Symbolic Link" + "Create Thread" + "Create Window" + "Delete Directory" + "Delete File" + "Delete Named Pipe" + "Delete Network Share" + "Delete Registry Key" + "Delete Registry Key Value" + "Delete Service" + "Delete User" + "Disconnect from Named Pipe" + "Disconnect from Network Share" + "Disconnect from Socket" + "Download File" + "Enumerate DLLs" + "Enumerate Network Shares" + "Enumerate Processes" + "Enumerate Protocols" + "Enumerate Registry Key Subkeys" + "Enumerate Registry Key Values" + "Enumerate Services" + "Enumerate System Handles" + "Enumerate Threads" + "Enumerate Threads in Process" + "Enumerate Users" + "Enumerate Windows" + "Find File" + "Find Window" + "Flush Process Instruction Cache" + "Free Library" + "Free Process Virtual Memory" + "Get Disk Free Space" + "Get Disk Type" + "Get Elapsed System Up Time" + "Get File Attributes" + "Get Function Address" + "Get Host By Address" + "Get Host By Name" + "Get Host Name" + "Get Library File Name" + "Get Library Handle" + "Get NetBIOS Name" + "Get Process Current Directory" + "Get Process Environment Variable" + "Get Process Startup Information" + "Get Processes Snapshot" + "Get Registry Key Attributes" + "Get Service Status" + "Get System Global Flags" + "Get System Host Name" + "Get System Local Time" + "Get System NetBIOS Name" + "Get System Network Parameters" + "Get System Time" + "Get Thread Context" + "Get Thread Username" + "Get User Attributes" + "Get Username" + "Get Windows Directory" + "Get Windows System Directory" + "Get Windows Temporary Files Directory" + "Hide Window" + "Impersonate Process" + "Impersonate Thread" + "Inject Memory Page" + "Kill Process" + "Kill Thread" + "Kill Window" + "Listen on Port" + "Listen on Socket" + "Load Driver" + "Load Library" + "Load Module" + "Load and Call Driver" + "Lock File" + "Logon as User" + "Map File" + "Map Library" + "Map View of File" + "Modify File" + "Modify Named Pipe" + "Modify Process" + "Modify Registry Key" + "Modify Registry Key Value" + "Modify Service" + "Monitor Registry Key" + "Move File" + "Open File" + "Open File Mapping" + "Open Mutex" + "Open Port" + "Open Process" + "Open Registry Key" + "Open Service" + "Open Service Control Manager" + "Protect Virtual Memory" + "Query DNS" + "Query Disk Attributes" + "Query Process Virtual Memory" + "Queue APC in Thread" + "Read File" + "Read From Named Pipe" + "Read From Process Memory" + "Read Registry Key Value" + "Receive Data on Socket" + "Receive Email Message" + "Release Mutex" + "Rename File" + "Revert Thread to Self" + "Send Control Code to File" + "Send Control Code to Pipe" + "Send Control Code to Service" + "Send DNS Query" + "Send Data on Socket" + "Send Data to Address on Socket" + "Send Email Message" + "Send ICMP Request" + "Send Reverse DNS Query" + "Set File Attributes" + "Set NetBIOS Name" + "Set Process Current Directory" + "Set Process Environment Variable" + "Set System Global Flags" + "Set System Host Name" + "Set System Time" + "Set Thread Context" + "Show Window" + "Shutdown System" + "Sleep Process" + "Sleep System" + "Start Service" + "Unload Driver" + "Unload Module" + "Unlock File" + "Unmap File" + "Upload File" + "Write to File" + "Write to Process Virtual Memory" ) ; ] ; . @@ -291,13 +291,13 @@ vocabulary:ActionRelationshipTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Dependent_On"^^vocabulary:ActionRelationshipTypeVocab - "Equivalent_To"^^vocabulary:ActionRelationshipTypeVocab - "Followed_By"^^vocabulary:ActionRelationshipTypeVocab - "Initiated"^^vocabulary:ActionRelationshipTypeVocab - "Initiated_By"^^vocabulary:ActionRelationshipTypeVocab - "Preceded_By"^^vocabulary:ActionRelationshipTypeVocab - "Related_To"^^vocabulary:ActionRelationshipTypeVocab + "Dependent_On" + "Equivalent_To" + "Followed_By" + "Initiated" + "Initiated_By" + "Preceded_By" + "Related_To" ) ; ] ; . @@ -309,13 +309,13 @@ vocabulary:ActionStatusTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Complete/Finish"^^vocabulary:ActionStatusTypeVocab - "Error"^^vocabulary:ActionStatusTypeVocab - "Fail"^^vocabulary:ActionStatusTypeVocab - "Ongoing"^^vocabulary:ActionStatusTypeVocab - "Pending"^^vocabulary:ActionStatusTypeVocab - "Success"^^vocabulary:ActionStatusTypeVocab - "Unknown"^^vocabulary:ActionStatusTypeVocab + "Complete/Finish" + "Error" + "Fail" + "Ongoing" + "Pending" + "Success" + "Unknown" ) ; ] ; . @@ -327,117 +327,117 @@ vocabulary:ActionTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Accept"^^vocabulary:ActionTypeVocab - "Access"^^vocabulary:ActionTypeVocab - "Add"^^vocabulary:ActionTypeVocab - "Alert"^^vocabulary:ActionTypeVocab - "Allocate"^^vocabulary:ActionTypeVocab - "Archive"^^vocabulary:ActionTypeVocab - "Assign"^^vocabulary:ActionTypeVocab - "Audit"^^vocabulary:ActionTypeVocab - "Backup"^^vocabulary:ActionTypeVocab - "Bind"^^vocabulary:ActionTypeVocab - "Block"^^vocabulary:ActionTypeVocab - "Call"^^vocabulary:ActionTypeVocab - "Change"^^vocabulary:ActionTypeVocab - "Check"^^vocabulary:ActionTypeVocab - "Clean"^^vocabulary:ActionTypeVocab - "Click"^^vocabulary:ActionTypeVocab - "Close"^^vocabulary:ActionTypeVocab - "Compare"^^vocabulary:ActionTypeVocab - "Compress"^^vocabulary:ActionTypeVocab - "Configure"^^vocabulary:ActionTypeVocab - "Connect"^^vocabulary:ActionTypeVocab - "Control"^^vocabulary:ActionTypeVocab - "Copy/Duplicate"^^vocabulary:ActionTypeVocab - "Create"^^vocabulary:ActionTypeVocab - "Decode"^^vocabulary:ActionTypeVocab - "Decompress"^^vocabulary:ActionTypeVocab - "Decrypt"^^vocabulary:ActionTypeVocab - "Deny"^^vocabulary:ActionTypeVocab - "Depress"^^vocabulary:ActionTypeVocab - "Detect"^^vocabulary:ActionTypeVocab - "Disconnect"^^vocabulary:ActionTypeVocab - "Download"^^vocabulary:ActionTypeVocab - "Draw"^^vocabulary:ActionTypeVocab - "Drop"^^vocabulary:ActionTypeVocab - "Encode"^^vocabulary:ActionTypeVocab - "Encrypt"^^vocabulary:ActionTypeVocab - "Enumerate"^^vocabulary:ActionTypeVocab - "Execute"^^vocabulary:ActionTypeVocab - "Extract"^^vocabulary:ActionTypeVocab - "Filter"^^vocabulary:ActionTypeVocab - "Find"^^vocabulary:ActionTypeVocab - "Flush"^^vocabulary:ActionTypeVocab - "Fork"^^vocabulary:ActionTypeVocab - "Free"^^vocabulary:ActionTypeVocab - "Get"^^vocabulary:ActionTypeVocab - "Hide"^^vocabulary:ActionTypeVocab - "Hook"^^vocabulary:ActionTypeVocab - "Impersonate"^^vocabulary:ActionTypeVocab - "Initialize"^^vocabulary:ActionTypeVocab - "Inject"^^vocabulary:ActionTypeVocab - "Install"^^vocabulary:ActionTypeVocab - "Interleave"^^vocabulary:ActionTypeVocab - "Join"^^vocabulary:ActionTypeVocab - "Kill"^^vocabulary:ActionTypeVocab - "Listen"^^vocabulary:ActionTypeVocab - "Load"^^vocabulary:ActionTypeVocab - "Lock"^^vocabulary:ActionTypeVocab - "Login/Logon"^^vocabulary:ActionTypeVocab - "Logout/Logoff"^^vocabulary:ActionTypeVocab - "Map"^^vocabulary:ActionTypeVocab - "Merge"^^vocabulary:ActionTypeVocab - "Modify"^^vocabulary:ActionTypeVocab - "Monitor"^^vocabulary:ActionTypeVocab - "Move"^^vocabulary:ActionTypeVocab - "Open"^^vocabulary:ActionTypeVocab - "Pack"^^vocabulary:ActionTypeVocab - "Pause"^^vocabulary:ActionTypeVocab - "Press"^^vocabulary:ActionTypeVocab - "Protect"^^vocabulary:ActionTypeVocab - "Quarantine"^^vocabulary:ActionTypeVocab - "Query"^^vocabulary:ActionTypeVocab - "Queue"^^vocabulary:ActionTypeVocab - "Raise"^^vocabulary:ActionTypeVocab - "Read"^^vocabulary:ActionTypeVocab - "Receive"^^vocabulary:ActionTypeVocab - "Release"^^vocabulary:ActionTypeVocab - "Remove/Delete"^^vocabulary:ActionTypeVocab - "Rename"^^vocabulary:ActionTypeVocab - "Replicate"^^vocabulary:ActionTypeVocab - "Restore"^^vocabulary:ActionTypeVocab - "Resume"^^vocabulary:ActionTypeVocab - "Revert"^^vocabulary:ActionTypeVocab - "Run"^^vocabulary:ActionTypeVocab - "Save"^^vocabulary:ActionTypeVocab - "Scan"^^vocabulary:ActionTypeVocab - "Schedule"^^vocabulary:ActionTypeVocab - "Search"^^vocabulary:ActionTypeVocab - "Send"^^vocabulary:ActionTypeVocab - "Set"^^vocabulary:ActionTypeVocab - "Shutdown"^^vocabulary:ActionTypeVocab - "Sleep"^^vocabulary:ActionTypeVocab - "Snapshot"^^vocabulary:ActionTypeVocab - "Start"^^vocabulary:ActionTypeVocab - "Stop"^^vocabulary:ActionTypeVocab - "Suspend"^^vocabulary:ActionTypeVocab - "Synchronize"^^vocabulary:ActionTypeVocab - "Throw"^^vocabulary:ActionTypeVocab - "Transmit"^^vocabulary:ActionTypeVocab - "Unblock"^^vocabulary:ActionTypeVocab - "Unhide"^^vocabulary:ActionTypeVocab - "Unhook"^^vocabulary:ActionTypeVocab - "Uninstall"^^vocabulary:ActionTypeVocab - "Unload"^^vocabulary:ActionTypeVocab - "Unlock"^^vocabulary:ActionTypeVocab - "Unmap"^^vocabulary:ActionTypeVocab - "Unpack"^^vocabulary:ActionTypeVocab - "Update"^^vocabulary:ActionTypeVocab - "Upgrade"^^vocabulary:ActionTypeVocab - "Upload"^^vocabulary:ActionTypeVocab - "Wipe/Destroy/Purge"^^vocabulary:ActionTypeVocab - "Write"^^vocabulary:ActionTypeVocab + "Accept" + "Access" + "Add" + "Alert" + "Allocate" + "Archive" + "Assign" + "Audit" + "Backup" + "Bind" + "Block" + "Call" + "Change" + "Check" + "Clean" + "Click" + "Close" + "Compare" + "Compress" + "Configure" + "Connect" + "Control" + "Copy/Duplicate" + "Create" + "Decode" + "Decompress" + "Decrypt" + "Deny" + "Depress" + "Detect" + "Disconnect" + "Download" + "Draw" + "Drop" + "Encode" + "Encrypt" + "Enumerate" + "Execute" + "Extract" + "Filter" + "Find" + "Flush" + "Fork" + "Free" + "Get" + "Hide" + "Hook" + "Impersonate" + "Initialize" + "Inject" + "Install" + "Interleave" + "Join" + "Kill" + "Listen" + "Load" + "Lock" + "Login/Logon" + "Logout/Logoff" + "Map" + "Merge" + "Modify" + "Monitor" + "Move" + "Open" + "Pack" + "Pause" + "Press" + "Protect" + "Quarantine" + "Query" + "Queue" + "Raise" + "Read" + "Receive" + "Release" + "Remove/Delete" + "Rename" + "Replicate" + "Restore" + "Resume" + "Revert" + "Run" + "Save" + "Scan" + "Schedule" + "Search" + "Send" + "Set" + "Shutdown" + "Sleep" + "Snapshot" + "Start" + "Stop" + "Suspend" + "Synchronize" + "Throw" + "Transmit" + "Unblock" + "Unhide" + "Unhook" + "Uninstall" + "Unload" + "Unlock" + "Unmap" + "Unpack" + "Update" + "Upgrade" + "Upload" + "Wipe/Destroy/Purge" + "Write" ) ; ] ; . @@ -449,8 +449,8 @@ vocabulary:BitnessVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "32"^^vocabulary:BitnessVocab - "64"^^vocabulary:BitnessVocab + "32" + "64" ) ; ] ; . @@ -462,19 +462,19 @@ vocabulary:CharacterEncodingVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "ASCII"^^vocabulary:CharacterEncodingVocab - "UTF-16"^^vocabulary:CharacterEncodingVocab - "UTF-32"^^vocabulary:CharacterEncodingVocab - "UTF-8"^^vocabulary:CharacterEncodingVocab - "Windows-1250"^^vocabulary:CharacterEncodingVocab - "Windows-1251"^^vocabulary:CharacterEncodingVocab - "Windows-1252"^^vocabulary:CharacterEncodingVocab - "Windows-1253"^^vocabulary:CharacterEncodingVocab - "Windows-1254"^^vocabulary:CharacterEncodingVocab - "Windows-1255"^^vocabulary:CharacterEncodingVocab - "Windows-1256"^^vocabulary:CharacterEncodingVocab - "Windows-1257"^^vocabulary:CharacterEncodingVocab - "Windows-1258"^^vocabulary:CharacterEncodingVocab + "ASCII" + "UTF-16" + "UTF-32" + "UTF-8" + "Windows-1250" + "Windows-1251" + "Windows-1252" + "Windows-1253" + "Windows-1254" + "Windows-1255" + "Windows-1256" + "Windows-1257" + "Windows-1258" ) ; ] ; . @@ -486,9 +486,9 @@ vocabulary:ContactAddressScopeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "home"^^vocabulary:ContactAddressScopeVocab - "work"^^vocabulary:ContactAddressScopeVocab - "school"^^vocabulary:ContactAddressScopeVocab + "home" + "work" + "school" ) ; ] ; . @@ -500,10 +500,10 @@ vocabulary:ContactEmailScopeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "home"^^vocabulary:ContactEmailScopeVocab - "work"^^vocabulary:ContactEmailScopeVocab - "school"^^vocabulary:ContactEmailScopeVocab - "cloud"^^vocabulary:ContactEmailScopeVocab + "home" + "work" + "school" + "cloud" ) ; ] ; . @@ -515,14 +515,14 @@ vocabulary:ContactPhoneScopeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "home"^^vocabulary:ContactPhoneScopeVocab - "work"^^vocabulary:ContactPhoneScopeVocab - "school"^^vocabulary:ContactPhoneScopeVocab - "mobile"^^vocabulary:ContactPhoneScopeVocab - "main"^^vocabulary:ContactPhoneScopeVocab - "home fax"^^vocabulary:ContactPhoneScopeVocab - "work fax"^^vocabulary:ContactPhoneScopeVocab - "pager"^^vocabulary:ContactPhoneScopeVocab + "home" + "work" + "school" + "mobile" + "main" + "home fax" + "work fax" + "pager" ) ; ] ; . @@ -534,9 +534,9 @@ vocabulary:ContactSIPScopeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "home"^^vocabulary:ContactSIPScopeVocab - "work"^^vocabulary:ContactSIPScopeVocab - "school"^^vocabulary:ContactSIPScopeVocab + "home" + "work" + "school" ) ; ] ; . @@ -548,10 +548,10 @@ vocabulary:ContactURLScopeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "home"^^vocabulary:ContactURLScopeVocab - "work"^^vocabulary:ContactURLScopeVocab - "school"^^vocabulary:ContactURLScopeVocab - "homepage"^^vocabulary:ContactURLScopeVocab + "home" + "work" + "school" + "homepage" ) ; ] ; . @@ -563,11 +563,11 @@ vocabulary:DiskTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "CDRom"^^vocabulary:DiskTypeVocab - "Fixed"^^vocabulary:DiskTypeVocab - "RAMDisk"^^vocabulary:DiskTypeVocab - "Remote"^^vocabulary:DiskTypeVocab - "Removable"^^vocabulary:DiskTypeVocab + "CDRom" + "Fixed" + "RAMDisk" + "Remote" + "Removable" ) ; ] ; . @@ -579,9 +579,9 @@ vocabulary:EndiannessTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Big-endian"^^vocabulary:EndiannessTypeVocab - "Little-endian"^^vocabulary:EndiannessTypeVocab - "Middle-endian"^^vocabulary:EndiannessTypeVocab + "Big-endian" + "Little-endian" + "Middle-endian" ) ; ] ; . @@ -616,11 +616,11 @@ vocabulary:LibraryTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Dynamic"^^vocabulary:LibraryTypeVocab - "Other"^^vocabulary:LibraryTypeVocab - "Remote"^^vocabulary:LibraryTypeVocab - "Shared"^^vocabulary:LibraryTypeVocab - "Static"^^vocabulary:LibraryTypeVocab + "Dynamic" + "Other" + "Remote" + "Shared" + "Static" ) ; ] ; . @@ -632,11 +632,11 @@ vocabulary:MemoryBlockTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Bit-mapped"^^vocabulary:MemoryBlockTypeVocab - "Byte-mapped"^^vocabulary:MemoryBlockTypeVocab - "Initialized"^^vocabulary:MemoryBlockTypeVocab - "Overlay"^^vocabulary:MemoryBlockTypeVocab - "Uninitialized"^^vocabulary:MemoryBlockTypeVocab + "Bit-mapped" + "Byte-mapped" + "Initialized" + "Overlay" + "Uninitialized" ) ; ] ; . @@ -648,145 +648,145 @@ vocabulary:ObservableObjectRelationshipVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Allocated"^^vocabulary:ObservableObjectRelationshipVocab - "Allocated_By"^^vocabulary:ObservableObjectRelationshipVocab - "Attachment_Of"^^vocabulary:ObservableObjectRelationshipVocab - "Bound"^^vocabulary:ObservableObjectRelationshipVocab - "Bound_By"^^vocabulary:ObservableObjectRelationshipVocab - "Characterized_By"^^vocabulary:ObservableObjectRelationshipVocab - "Characterizes"^^vocabulary:ObservableObjectRelationshipVocab - "Child_Of"^^vocabulary:ObservableObjectRelationshipVocab - "Closed"^^vocabulary:ObservableObjectRelationshipVocab - "Closed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Compressed"^^vocabulary:ObservableObjectRelationshipVocab - "Compressed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Compressed_From"^^vocabulary:ObservableObjectRelationshipVocab - "Compressed_Into"^^vocabulary:ObservableObjectRelationshipVocab - "Connected_From"^^vocabulary:ObservableObjectRelationshipVocab - "Connected_To"^^vocabulary:ObservableObjectRelationshipVocab - "Contained_Within"^^vocabulary:ObservableObjectRelationshipVocab - "Contains"^^vocabulary:ObservableObjectRelationshipVocab - "Copied"^^vocabulary:ObservableObjectRelationshipVocab - "Copied_By"^^vocabulary:ObservableObjectRelationshipVocab - "Copied_From"^^vocabulary:ObservableObjectRelationshipVocab - "Copied_To"^^vocabulary:ObservableObjectRelationshipVocab - "Created"^^vocabulary:ObservableObjectRelationshipVocab - "Created_By"^^vocabulary:ObservableObjectRelationshipVocab - "Decoded"^^vocabulary:ObservableObjectRelationshipVocab - "Decoded_By"^^vocabulary:ObservableObjectRelationshipVocab - "Decompressed"^^vocabulary:ObservableObjectRelationshipVocab - "Decompressed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Decrypted"^^vocabulary:ObservableObjectRelationshipVocab - "Decrypted_By"^^vocabulary:ObservableObjectRelationshipVocab - "Deleted"^^vocabulary:ObservableObjectRelationshipVocab - "Deleted_By"^^vocabulary:ObservableObjectRelationshipVocab - "Deleted_From"^^vocabulary:ObservableObjectRelationshipVocab - "Downloaded"^^vocabulary:ObservableObjectRelationshipVocab - "Downloaded_By"^^vocabulary:ObservableObjectRelationshipVocab - "Downloaded_From"^^vocabulary:ObservableObjectRelationshipVocab - "Downloaded_To"^^vocabulary:ObservableObjectRelationshipVocab - "Dropped"^^vocabulary:ObservableObjectRelationshipVocab - "Dropped_By"^^vocabulary:ObservableObjectRelationshipVocab - "Encoded"^^vocabulary:ObservableObjectRelationshipVocab - "Encoded_By"^^vocabulary:ObservableObjectRelationshipVocab - "Encrypted"^^vocabulary:ObservableObjectRelationshipVocab - "Encrypted_By"^^vocabulary:ObservableObjectRelationshipVocab - "Encrypted_From"^^vocabulary:ObservableObjectRelationshipVocab - "Encrypted_To"^^vocabulary:ObservableObjectRelationshipVocab - "Extracted_From"^^vocabulary:ObservableObjectRelationshipVocab - "FQDN_Of"^^vocabulary:ObservableObjectRelationshipVocab - "Freed"^^vocabulary:ObservableObjectRelationshipVocab - "Freed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Had_Attachment"^^vocabulary:ObservableObjectRelationshipVocab - "Hooked"^^vocabulary:ObservableObjectRelationshipVocab - "Hooked_By"^^vocabulary:ObservableObjectRelationshipVocab - "Initialized_By"^^vocabulary:ObservableObjectRelationshipVocab - "Initialized_To"^^vocabulary:ObservableObjectRelationshipVocab - "Injected"^^vocabulary:ObservableObjectRelationshipVocab - "Injected_As"^^vocabulary:ObservableObjectRelationshipVocab - "Injected_By"^^vocabulary:ObservableObjectRelationshipVocab - "Injected_Into"^^vocabulary:ObservableObjectRelationshipVocab - "Installed"^^vocabulary:ObservableObjectRelationshipVocab - "Installed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Joined"^^vocabulary:ObservableObjectRelationshipVocab - "Joined_By"^^vocabulary:ObservableObjectRelationshipVocab - "Killed"^^vocabulary:ObservableObjectRelationshipVocab - "Killed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Listened_On"^^vocabulary:ObservableObjectRelationshipVocab - "Listened_On_By"^^vocabulary:ObservableObjectRelationshipVocab - "Loaded_From"^^vocabulary:ObservableObjectRelationshipVocab - "Loaded_Into"^^vocabulary:ObservableObjectRelationshipVocab - "Locked"^^vocabulary:ObservableObjectRelationshipVocab - "Locked_By"^^vocabulary:ObservableObjectRelationshipVocab - "Mapped_By"^^vocabulary:ObservableObjectRelationshipVocab - "Mapped_Into"^^vocabulary:ObservableObjectRelationshipVocab - "Merged"^^vocabulary:ObservableObjectRelationshipVocab - "Merged_By"^^vocabulary:ObservableObjectRelationshipVocab - "Modified_Properties_Of"^^vocabulary:ObservableObjectRelationshipVocab - "Monitored"^^vocabulary:ObservableObjectRelationshipVocab - "Monitored_By"^^vocabulary:ObservableObjectRelationshipVocab - "Moved"^^vocabulary:ObservableObjectRelationshipVocab - "Moved_By"^^vocabulary:ObservableObjectRelationshipVocab - "Moved_From"^^vocabulary:ObservableObjectRelationshipVocab - "Moved_To"^^vocabulary:ObservableObjectRelationshipVocab - "Opened"^^vocabulary:ObservableObjectRelationshipVocab - "Opened_By"^^vocabulary:ObservableObjectRelationshipVocab - "Packed"^^vocabulary:ObservableObjectRelationshipVocab - "Packed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Packed_From"^^vocabulary:ObservableObjectRelationshipVocab - "Packed_Into"^^vocabulary:ObservableObjectRelationshipVocab - "Parent_Of"^^vocabulary:ObservableObjectRelationshipVocab - "Paused"^^vocabulary:ObservableObjectRelationshipVocab - "Paused_By"^^vocabulary:ObservableObjectRelationshipVocab - "Previously_Contained"^^vocabulary:ObservableObjectRelationshipVocab - "Properties_Modified_By"^^vocabulary:ObservableObjectRelationshipVocab - "Properties_Queried"^^vocabulary:ObservableObjectRelationshipVocab - "Properties_Queried_By"^^vocabulary:ObservableObjectRelationshipVocab - "Read_From"^^vocabulary:ObservableObjectRelationshipVocab - "Read_From_By"^^vocabulary:ObservableObjectRelationshipVocab - "Received"^^vocabulary:ObservableObjectRelationshipVocab - "Received_By"^^vocabulary:ObservableObjectRelationshipVocab - "Received_From"^^vocabulary:ObservableObjectRelationshipVocab - "Received_Via_Upload"^^vocabulary:ObservableObjectRelationshipVocab - "Redirects_To"^^vocabulary:ObservableObjectRelationshipVocab - "Related_To"^^vocabulary:ObservableObjectRelationshipVocab - "Renamed"^^vocabulary:ObservableObjectRelationshipVocab - "Renamed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Renamed_From"^^vocabulary:ObservableObjectRelationshipVocab - "Renamed_To"^^vocabulary:ObservableObjectRelationshipVocab - "Resolved_To"^^vocabulary:ObservableObjectRelationshipVocab - "Resumed"^^vocabulary:ObservableObjectRelationshipVocab - "Resumed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Root_Domain_Of"^^vocabulary:ObservableObjectRelationshipVocab - "Searched_For"^^vocabulary:ObservableObjectRelationshipVocab - "Searched_For_By"^^vocabulary:ObservableObjectRelationshipVocab - "Sent"^^vocabulary:ObservableObjectRelationshipVocab - "Sent_By"^^vocabulary:ObservableObjectRelationshipVocab - "Sent_To"^^vocabulary:ObservableObjectRelationshipVocab - "Sent_Via_Upload"^^vocabulary:ObservableObjectRelationshipVocab - "Set_From"^^vocabulary:ObservableObjectRelationshipVocab - "Set_To"^^vocabulary:ObservableObjectRelationshipVocab - "Signed_By"^^vocabulary:ObservableObjectRelationshipVocab - "Sub-domain_Of"^^vocabulary:ObservableObjectRelationshipVocab - "Supra-domain_Of"^^vocabulary:ObservableObjectRelationshipVocab - "Suspended"^^vocabulary:ObservableObjectRelationshipVocab - "Suspended_By"^^vocabulary:ObservableObjectRelationshipVocab - "Unhooked"^^vocabulary:ObservableObjectRelationshipVocab - "Unhooked_By"^^vocabulary:ObservableObjectRelationshipVocab - "Unlocked"^^vocabulary:ObservableObjectRelationshipVocab - "Unlocked_By"^^vocabulary:ObservableObjectRelationshipVocab - "Unpacked"^^vocabulary:ObservableObjectRelationshipVocab - "Unpacked_By"^^vocabulary:ObservableObjectRelationshipVocab - "Uploaded"^^vocabulary:ObservableObjectRelationshipVocab - "Uploaded_By"^^vocabulary:ObservableObjectRelationshipVocab - "Uploaded_From"^^vocabulary:ObservableObjectRelationshipVocab - "Uploaded_To"^^vocabulary:ObservableObjectRelationshipVocab - "Used"^^vocabulary:ObservableObjectRelationshipVocab - "Used_By"^^vocabulary:ObservableObjectRelationshipVocab - "Values_Enumerated"^^vocabulary:ObservableObjectRelationshipVocab - "Values_Enumerated_By"^^vocabulary:ObservableObjectRelationshipVocab - "Written_To_By"^^vocabulary:ObservableObjectRelationshipVocab - "Wrote_To"^^vocabulary:ObservableObjectRelationshipVocab + "Allocated" + "Allocated_By" + "Attachment_Of" + "Bound" + "Bound_By" + "Characterized_By" + "Characterizes" + "Child_Of" + "Closed" + "Closed_By" + "Compressed" + "Compressed_By" + "Compressed_From" + "Compressed_Into" + "Connected_From" + "Connected_To" + "Contained_Within" + "Contains" + "Copied" + "Copied_By" + "Copied_From" + "Copied_To" + "Created" + "Created_By" + "Decoded" + "Decoded_By" + "Decompressed" + "Decompressed_By" + "Decrypted" + "Decrypted_By" + "Deleted" + "Deleted_By" + "Deleted_From" + "Downloaded" + "Downloaded_By" + "Downloaded_From" + "Downloaded_To" + "Dropped" + "Dropped_By" + "Encoded" + "Encoded_By" + "Encrypted" + "Encrypted_By" + "Encrypted_From" + "Encrypted_To" + "Extracted_From" + "FQDN_Of" + "Freed" + "Freed_By" + "Had_Attachment" + "Hooked" + "Hooked_By" + "Initialized_By" + "Initialized_To" + "Injected" + "Injected_As" + "Injected_By" + "Injected_Into" + "Installed" + "Installed_By" + "Joined" + "Joined_By" + "Killed" + "Killed_By" + "Listened_On" + "Listened_On_By" + "Loaded_From" + "Loaded_Into" + "Locked" + "Locked_By" + "Mapped_By" + "Mapped_Into" + "Merged" + "Merged_By" + "Modified_Properties_Of" + "Monitored" + "Monitored_By" + "Moved" + "Moved_By" + "Moved_From" + "Moved_To" + "Opened" + "Opened_By" + "Packed" + "Packed_By" + "Packed_From" + "Packed_Into" + "Parent_Of" + "Paused" + "Paused_By" + "Previously_Contained" + "Properties_Modified_By" + "Properties_Queried" + "Properties_Queried_By" + "Read_From" + "Read_From_By" + "Received" + "Received_By" + "Received_From" + "Received_Via_Upload" + "Redirects_To" + "Related_To" + "Renamed" + "Renamed_By" + "Renamed_From" + "Renamed_To" + "Resolved_To" + "Resumed" + "Resumed_By" + "Root_Domain_Of" + "Searched_For" + "Searched_For_By" + "Sent" + "Sent_By" + "Sent_To" + "Sent_Via_Upload" + "Set_From" + "Set_To" + "Signed_By" + "Sub-domain_Of" + "Supra-domain_Of" + "Suspended" + "Suspended_By" + "Unhooked" + "Unhooked_By" + "Unlocked" + "Unlocked_By" + "Unpacked" + "Unpacked_By" + "Uploaded" + "Uploaded_By" + "Uploaded_From" + "Uploaded_To" + "Used" + "Used_By" + "Values_Enumerated" + "Values_Enumerated_By" + "Written_To_By" + "Wrote_To" ) ; ] ; . @@ -798,16 +798,16 @@ vocabulary:ObservableObjectStateVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Active"^^vocabulary:ObservableObjectStateVocab - "Closed"^^vocabulary:ObservableObjectStateVocab - "Does Not Exist"^^vocabulary:ObservableObjectStateVocab - "Exists"^^vocabulary:ObservableObjectStateVocab - "Inactive"^^vocabulary:ObservableObjectStateVocab - "Locked"^^vocabulary:ObservableObjectStateVocab - "Open"^^vocabulary:ObservableObjectStateVocab - "Started"^^vocabulary:ObservableObjectStateVocab - "Stopped"^^vocabulary:ObservableObjectStateVocab - "Unlocked"^^vocabulary:ObservableObjectStateVocab + "Active" + "Closed" + "Does Not Exist" + "Exists" + "Inactive" + "Locked" + "Open" + "Started" + "Stopped" + "Unlocked" ) ; ] ; . @@ -819,25 +819,25 @@ vocabulary:PartitionTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "PARTITION_ENTRY_UNUSED"^^vocabulary:PartitionTypeVocab - "PARTITION_EXTENDED"^^vocabulary:PartitionTypeVocab - "PARTITION_FAT32"^^vocabulary:PartitionTypeVocab - "PARTITION_FAT32_XINT13"^^vocabulary:PartitionTypeVocab - "PARTITION_FAT_12"^^vocabulary:PartitionTypeVocab - "PARTITION_FAT_16"^^vocabulary:PartitionTypeVocab - "PARTITION_HUGE"^^vocabulary:PartitionTypeVocab - "PARTITION_IFS"^^vocabulary:PartitionTypeVocab - "PARTITION_LDM"^^vocabulary:PartitionTypeVocab - "PARTITION_NTFT"^^vocabulary:PartitionTypeVocab - "PARTITION_OS2BOOTMGR"^^vocabulary:PartitionTypeVocab - "PARTITION_PREP"^^vocabulary:PartitionTypeVocab - "PARTITION_UNIX"^^vocabulary:PartitionTypeVocab - "PARTITION_XENIX_1"^^vocabulary:PartitionTypeVocab - "PARTITION_XENIX_2"^^vocabulary:PartitionTypeVocab - "PARTITION_XINT13"^^vocabulary:PartitionTypeVocab - "PARTITION_XINT13_EXTENDED"^^vocabulary:PartitionTypeVocab - "UNKNOWN"^^vocabulary:PartitionTypeVocab - "VALID_NTFT"^^vocabulary:PartitionTypeVocab + "PARTITION_ENTRY_UNUSED" + "PARTITION_EXTENDED" + "PARTITION_FAT32" + "PARTITION_FAT32_XINT13" + "PARTITION_FAT_12" + "PARTITION_FAT_16" + "PARTITION_HUGE" + "PARTITION_IFS" + "PARTITION_LDM" + "PARTITION_NTFT" + "PARTITION_OS2BOOTMGR" + "PARTITION_PREP" + "PARTITION_UNIX" + "PARTITION_XENIX_1" + "PARTITION_XENIX_2" + "PARTITION_XINT13" + "PARTITION_XINT13_EXTENDED" + "UNKNOWN" + "VALID_NTFT" ) ; ] ; . @@ -849,18 +849,18 @@ vocabulary:ProcessorArchVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "ARM"^^vocabulary:ProcessorArchVocab - "Alpha"^^vocabulary:ProcessorArchVocab - "IA-64"^^vocabulary:ProcessorArchVocab - "MIPS"^^vocabulary:ProcessorArchVocab - "Motorola 68k"^^vocabulary:ProcessorArchVocab - "Other"^^vocabulary:ProcessorArchVocab - "PowerPC"^^vocabulary:ProcessorArchVocab - "SPARC"^^vocabulary:ProcessorArchVocab - "eSi-RISC"^^vocabulary:ProcessorArchVocab - "x86-32"^^vocabulary:ProcessorArchVocab - "x86-64"^^vocabulary:ProcessorArchVocab - "z/Architecture"^^vocabulary:ProcessorArchVocab + "ARM" + "Alpha" + "IA-64" + "MIPS" + "Motorola 68k" + "Other" + "PowerPC" + "SPARC" + "eSi-RISC" + "x86-32" + "x86-64" + "z/Architecture" ) ; ] ; . @@ -872,10 +872,10 @@ vocabulary:RecoveredObjectStatusVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "recovered"^^vocabulary:RecoveredObjectStatusVocab - "partially recovered"^^vocabulary:RecoveredObjectStatusVocab - "overwritten"^^vocabulary:RecoveredObjectStatusVocab - "unknown"^^vocabulary:RecoveredObjectStatusVocab + "recovered" + "partially recovered" + "overwritten" + "unknown" ) ; ] ; . @@ -887,11 +887,11 @@ vocabulary:RegionalRegistryTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "APNIC"^^vocabulary:RegionalRegistryTypeVocab - "ARIN"^^vocabulary:RegionalRegistryTypeVocab - "AfriNIC"^^vocabulary:RegionalRegistryTypeVocab - "LACNIC"^^vocabulary:RegionalRegistryTypeVocab - "RIPE NCC"^^vocabulary:RegionalRegistryTypeVocab + "APNIC" + "ARIN" + "AfriNIC" + "LACNIC" + "RIPE NCC" ) ; ] ; . @@ -902,19 +902,19 @@ vocabulary:RegistryDatatypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "reg_binary"^^vocabulary:RegistryDatatypeVocab - "reg_dword"^^vocabulary:RegistryDatatypeVocab - "reg_dword_big_endian"^^vocabulary:RegistryDatatypeVocab - "reg_expand_sz"^^vocabulary:RegistryDatatypeVocab - "reg_full_resource_descriptor"^^vocabulary:RegistryDatatypeVocab - "reg_invalid_type"^^vocabulary:RegistryDatatypeVocab - "reg_link"^^vocabulary:RegistryDatatypeVocab - "reg_multi_sz"^^vocabulary:RegistryDatatypeVocab - "reg_none"^^vocabulary:RegistryDatatypeVocab - "reg_qword"^^vocabulary:RegistryDatatypeVocab - "reg_resource_list"^^vocabulary:RegistryDatatypeVocab - "reg_resource_requirements_list"^^vocabulary:RegistryDatatypeVocab - "reg_sz"^^vocabulary:RegistryDatatypeVocab + "reg_binary" + "reg_dword" + "reg_dword_big_endian" + "reg_expand_sz" + "reg_full_resource_descriptor" + "reg_invalid_type" + "reg_link" + "reg_multi_sz" + "reg_none" + "reg_qword" + "reg_resource_list" + "reg_resource_requirements_list" + "reg_sz" ) ; ] ; . @@ -926,9 +926,9 @@ vocabulary:SIMFormVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Full-size SIM"^^vocabulary:SIMFormVocab - "Micro SIM"^^vocabulary:SIMFormVocab - "Nano SIM"^^vocabulary:SIMFormVocab + "Full-size SIM" + "Micro SIM" + "Nano SIM" ) ; ] ; . @@ -940,9 +940,9 @@ vocabulary:SIMTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "SIM"^^vocabulary:SIMTypeVocab - "UICC"^^vocabulary:SIMTypeVocab - "USIM"^^vocabulary:SIMTypeVocab + "SIM" + "UICC" + "USIM" ) ; ] ; . @@ -954,10 +954,10 @@ vocabulary:TaskActionTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "TASK_ACTION_COM_HANDLER"^^vocabulary:TaskActionTypeVocab - "TASK_ACTION_EXEC"^^vocabulary:TaskActionTypeVocab - "TASK_ACTION_SEND_EMAIL"^^vocabulary:TaskActionTypeVocab - "TASK_ACTION_SHOW_MESSAGE"^^vocabulary:TaskActionTypeVocab + "TASK_ACTION_COM_HANDLER" + "TASK_ACTION_EXEC" + "TASK_ACTION_SEND_EMAIL" + "TASK_ACTION_SHOW_MESSAGE" ) ; ] ; . @@ -969,19 +969,19 @@ vocabulary:TaskFlagVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "TASK_FLAG_DELETE_WHEN_DONE"^^vocabulary:TaskFlagVocab - "TASK_FLAG_DISABLED"^^vocabulary:TaskFlagVocab - "TASK_FLAG_DONT_START_IF_ON_BATTERIES"^^vocabulary:TaskFlagVocab - "TASK_FLAG_HIDDEN"^^vocabulary:TaskFlagVocab - "TASK_FLAG_INTERACTIVE"^^vocabulary:TaskFlagVocab - "TASK_FLAG_KILL_IF_GOING_ON_BATTERIES"^^vocabulary:TaskFlagVocab - "TASK_FLAG_KILL_ON_IDLE_END"^^vocabulary:TaskFlagVocab - "TASK_FLAG_RESTART_ON_IDLE_RESUME"^^vocabulary:TaskFlagVocab - "TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET"^^vocabulary:TaskFlagVocab - "TASK_FLAG_RUN_ONLY_IF_LOGGED_ON"^^vocabulary:TaskFlagVocab - "TASK_FLAG_START_ONLY_IF_IDLE"^^vocabulary:TaskFlagVocab - "TASK_FLAG_SYSTEM_REQUIRED"^^vocabulary:TaskFlagVocab - "TASK_FLAG_ZERO"^^vocabulary:TaskFlagVocab + "TASK_FLAG_DELETE_WHEN_DONE" + "TASK_FLAG_DISABLED" + "TASK_FLAG_DONT_START_IF_ON_BATTERIES" + "TASK_FLAG_HIDDEN" + "TASK_FLAG_INTERACTIVE" + "TASK_FLAG_KILL_IF_GOING_ON_BATTERIES" + "TASK_FLAG_KILL_ON_IDLE_END" + "TASK_FLAG_RESTART_ON_IDLE_RESUME" + "TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET" + "TASK_FLAG_RUN_ONLY_IF_LOGGED_ON" + "TASK_FLAG_START_ONLY_IF_IDLE" + "TASK_FLAG_SYSTEM_REQUIRED" + "TASK_FLAG_ZERO" ) ; ] ; . @@ -993,12 +993,12 @@ vocabulary:TaskPriorityVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "ABOVE_NORMAL_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "BELOW_NORMAL_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "HIGH_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "IDLE_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "NORMAL_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab - "REALTIME_PRIORITY_CLASS"^^vocabulary:TaskPriorityVocab + "ABOVE_NORMAL_PRIORITY_CLASS" + "BELOW_NORMAL_PRIORITY_CLASS" + "HIGH_PRIORITY_CLASS" + "IDLE_PRIORITY_CLASS" + "NORMAL_PRIORITY_CLASS" + "REALTIME_PRIORITY_CLASS" ) ; ] ; . @@ -1010,30 +1010,30 @@ vocabulary:TaskStatusVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "SCHED_E_ACCOUNT_DBASE_CORRUPT"^^vocabulary:TaskStatusVocab - "SCHED_E_ACCOUNT_INFORMATION_NOT_SET"^^vocabulary:TaskStatusVocab - "SCHED_E_ACCOUNT_NAME_NOT_FOUND"^^vocabulary:TaskStatusVocab - "SCHED_E_CANNOT_OPEN_TASK"^^vocabulary:TaskStatusVocab - "SCHED_E_INVALID_TASK"^^vocabulary:TaskStatusVocab - "SCHED_E_NO_SECURITY_SERVICES"^^vocabulary:TaskStatusVocab - "SCHED_E_SERVICE_NOT_INSTALLED"^^vocabulary:TaskStatusVocab - "SCHED_E_SERVICE_NOT_RUNNING"^^vocabulary:TaskStatusVocab - "SCHED_E_TASK_NOT_READY"^^vocabulary:TaskStatusVocab - "SCHED_E_TASK_NOT_RUNNING"^^vocabulary:TaskStatusVocab - "SCHED_E_TRIGGER_NOT_FOUND"^^vocabulary:TaskStatusVocab - "SCHED_E_UNKNOWN_OBJECT_VERSION"^^vocabulary:TaskStatusVocab - "SCHED_E_UNSUPPORTED_ACCOUNT_OPTION"^^vocabulary:TaskStatusVocab - "SCHED_S_EVENT_TRIGGER"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_DISABLED"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_HAS_NOT_RUN"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_NOT_SCHEDULED"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_NO_MORE_RUNS"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_NO_VALID_TRIGGERS"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_READY"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_RUNNING"^^vocabulary:TaskStatusVocab - "SCHED_S_TASK_TERMINATED"^^vocabulary:TaskStatusVocab - "TASK_STATE_QUEUED"^^vocabulary:TaskStatusVocab - "TASK_STATE_UNKNOWN"^^vocabulary:TaskStatusVocab + "SCHED_E_ACCOUNT_DBASE_CORRUPT" + "SCHED_E_ACCOUNT_INFORMATION_NOT_SET" + "SCHED_E_ACCOUNT_NAME_NOT_FOUND" + "SCHED_E_CANNOT_OPEN_TASK" + "SCHED_E_INVALID_TASK" + "SCHED_E_NO_SECURITY_SERVICES" + "SCHED_E_SERVICE_NOT_INSTALLED" + "SCHED_E_SERVICE_NOT_RUNNING" + "SCHED_E_TASK_NOT_READY" + "SCHED_E_TASK_NOT_RUNNING" + "SCHED_E_TRIGGER_NOT_FOUND" + "SCHED_E_UNKNOWN_OBJECT_VERSION" + "SCHED_E_UNSUPPORTED_ACCOUNT_OPTION" + "SCHED_S_EVENT_TRIGGER" + "SCHED_S_TASK_DISABLED" + "SCHED_S_TASK_HAS_NOT_RUN" + "SCHED_S_TASK_NOT_SCHEDULED" + "SCHED_S_TASK_NO_MORE_RUNS" + "SCHED_S_TASK_NO_VALID_TRIGGERS" + "SCHED_S_TASK_READY" + "SCHED_S_TASK_RUNNING" + "SCHED_S_TASK_TERMINATED" + "TASK_STATE_QUEUED" + "TASK_STATE_UNKNOWN" ) ; ] ; . @@ -1045,14 +1045,14 @@ vocabulary:ThreadRunningStatusVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Initialized"^^vocabulary:ThreadRunningStatusVocab - "Ready"^^vocabulary:ThreadRunningStatusVocab - "Running"^^vocabulary:ThreadRunningStatusVocab - "Standby"^^vocabulary:ThreadRunningStatusVocab - "Terminated"^^vocabulary:ThreadRunningStatusVocab - "Transition"^^vocabulary:ThreadRunningStatusVocab - "Unknown"^^vocabulary:ThreadRunningStatusVocab - "Waiting"^^vocabulary:ThreadRunningStatusVocab + "Initialized" + "Ready" + "Running" + "Standby" + "Terminated" + "Transition" + "Unknown" + "Waiting" ) ; ] ; . @@ -1064,12 +1064,12 @@ vocabulary:TimestampPrecisionVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "day"^^vocabulary:TimestampPrecisionVocab - "hour"^^vocabulary:TimestampPrecisionVocab - "minute"^^vocabulary:TimestampPrecisionVocab - "month"^^vocabulary:TimestampPrecisionVocab - "second"^^vocabulary:TimestampPrecisionVocab - "year"^^vocabulary:TimestampPrecisionVocab + "day" + "hour" + "minute" + "month" + "second" + "year" ) ; ] ; . @@ -1081,8 +1081,8 @@ vocabulary:TrendVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Decreasing"^^vocabulary:TrendVocab - "Increasing"^^vocabulary:TrendVocab + "Decreasing" + "Increasing" ) ; ] ; . @@ -1094,14 +1094,14 @@ vocabulary:TriggerFrequencyVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "TASK_EVENT_TRIGGER_AT_LOGON"^^vocabulary:TriggerFrequencyVocab - "TASK_EVENT_TRIGGER_AT_SYSTEMSTART"^^vocabulary:TriggerFrequencyVocab - "TASK_EVENT_TRIGGER_ON_IDLE"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_DAILY"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_MONTHLYDATE"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_MONTHLYDOW"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_ONCE"^^vocabulary:TriggerFrequencyVocab - "TASK_TIME_TRIGGER_WEEKLY"^^vocabulary:TriggerFrequencyVocab + "TASK_EVENT_TRIGGER_AT_LOGON" + "TASK_EVENT_TRIGGER_AT_SYSTEMSTART" + "TASK_EVENT_TRIGGER_ON_IDLE" + "TASK_TIME_TRIGGER_DAILY" + "TASK_TIME_TRIGGER_MONTHLYDATE" + "TASK_TIME_TRIGGER_MONTHLYDOW" + "TASK_TIME_TRIGGER_ONCE" + "TASK_TIME_TRIGGER_WEEKLY" ) ; ] ; . @@ -1113,13 +1113,13 @@ vocabulary:TriggerTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "TASK_TRIGGER_BOOT"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_EVENT"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_IDLE"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_LOGON"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_REGISTRATION"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_SESSION_STATE_CHANGE"^^vocabulary:TriggerTypeVocab - "TASK_TRIGGER_TIME"^^vocabulary:TriggerTypeVocab + "TASK_TRIGGER_BOOT" + "TASK_TRIGGER_EVENT" + "TASK_TRIGGER_IDLE" + "TASK_TRIGGER_LOGON" + "TASK_TRIGGER_REGISTRATION" + "TASK_TRIGGER_SESSION_STATE_CHANGE" + "TASK_TRIGGER_TIME" ) ; ] ; . @@ -1131,17 +1131,17 @@ vocabulary:URLTransitionTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "link"^^vocabulary:URLTransitionTypeVocab - "typed"^^vocabulary:URLTransitionTypeVocab - "auto_bookmark"^^vocabulary:URLTransitionTypeVocab - "auto_subframe"^^vocabulary:URLTransitionTypeVocab - "manual_subframe"^^vocabulary:URLTransitionTypeVocab - "generated"^^vocabulary:URLTransitionTypeVocab - "auto_toplevel"^^vocabulary:URLTransitionTypeVocab - "form_submit"^^vocabulary:URLTransitionTypeVocab - "reload"^^vocabulary:URLTransitionTypeVocab - "keyword"^^vocabulary:URLTransitionTypeVocab - "keyword_generated"^^vocabulary:URLTransitionTypeVocab + "link" + "typed" + "auto_bookmark" + "auto_subframe" + "manual_subframe" + "generated" + "auto_toplevel" + "form_submit" + "reload" + "keyword" + "keyword_generated" ) ; ] ; . @@ -1153,13 +1153,13 @@ vocabulary:UnixProcessStateVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Dead"^^vocabulary:UnixProcessStateVocab - "InterruptibleSleep"^^vocabulary:UnixProcessStateVocab - "Paging"^^vocabulary:UnixProcessStateVocab - "Running"^^vocabulary:UnixProcessStateVocab - "Stopped"^^vocabulary:UnixProcessStateVocab - "UninterruptibleSleep"^^vocabulary:UnixProcessStateVocab - "Zombie"^^vocabulary:UnixProcessStateVocab + "Dead" + "InterruptibleSleep" + "Paging" + "Running" + "Stopped" + "UninterruptibleSleep" + "Zombie" ) ; ] ; . @@ -1171,9 +1171,9 @@ vocabulary:WhoisContactTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "ADMIN"^^vocabulary:WhoisContactTypeVocab - "BILLING"^^vocabulary:WhoisContactTypeVocab - "TECHNICAL"^^vocabulary:WhoisContactTypeVocab + "ADMIN" + "BILLING" + "TECHNICAL" ) ; ] ; . @@ -1185,8 +1185,8 @@ vocabulary:WhoisDNSSECTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Signed"^^vocabulary:WhoisDNSSECTypeVocab - "Unsigned"^^vocabulary:WhoisDNSSECTypeVocab + "Signed" + "Unsigned" ) ; ] ; . @@ -1198,25 +1198,25 @@ vocabulary:WhoisStatusTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "ADD_PERIOD"^^vocabulary:WhoisStatusTypeVocab - "AUTO_RENEW_PERIOD"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_DELETE_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_HOLD"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_RENEW_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_TRANSFER_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "CLIENT_UPDATE_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "DELETE_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "HOLD"^^vocabulary:WhoisStatusTypeVocab - "INACTIVE"^^vocabulary:WhoisStatusTypeVocab - "OK"^^vocabulary:WhoisStatusTypeVocab - "PENDING_DELETE_RESTORABLE"^^vocabulary:WhoisStatusTypeVocab - "PENDING_DELETE_SCHEDULED_FOR_RELEASE"^^vocabulary:WhoisStatusTypeVocab - "PENDING_RESTORE"^^vocabulary:WhoisStatusTypeVocab - "RENEW_PERIOD"^^vocabulary:WhoisStatusTypeVocab - "RENEW_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "TRANSFER_PERIOD"^^vocabulary:WhoisStatusTypeVocab - "TRANSFER_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab - "UPDATE_PROHIBITED"^^vocabulary:WhoisStatusTypeVocab + "ADD_PERIOD" + "AUTO_RENEW_PERIOD" + "CLIENT_DELETE_PROHIBITED" + "CLIENT_HOLD" + "CLIENT_RENEW_PROHIBITED" + "CLIENT_TRANSFER_PROHIBITED" + "CLIENT_UPDATE_PROHIBITED" + "DELETE_PROHIBITED" + "HOLD" + "INACTIVE" + "OK" + "PENDING_DELETE_RESTORABLE" + "PENDING_DELETE_SCHEDULED_FOR_RELEASE" + "PENDING_RESTORE" + "RENEW_PERIOD" + "RENEW_PROHIBITED" + "TRANSFER_PERIOD" + "TRANSFER_PROHIBITED" + "UPDATE_PROHIBITED" ) ; ] ; . @@ -1228,13 +1228,13 @@ vocabulary:WindowsDriveTypeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "DRIVE_CDROM"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_FIXED"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_NO_ROOT_DIR"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_RAMDISK"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_REMOTE"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_REMOVABLE"^^vocabulary:WindowsDriveTypeVocab - "DRIVE_UNKNOWN"^^vocabulary:WindowsDriveTypeVocab + "DRIVE_CDROM" + "DRIVE_FIXED" + "DRIVE_NO_ROOT_DIR" + "DRIVE_RAMDISK" + "DRIVE_REMOTE" + "DRIVE_REMOVABLE" + "DRIVE_UNKNOWN" ) ; ] ; . @@ -1246,10 +1246,10 @@ vocabulary:WindowsVolumeAttributeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "Hidden"^^vocabulary:WindowsVolumeAttributeVocab - "NoDefaultDriveLetter"^^vocabulary:WindowsVolumeAttributeVocab - "ReadOnly"^^vocabulary:WindowsVolumeAttributeVocab - "ShadowCopy"^^vocabulary:WindowsVolumeAttributeVocab + "Hidden" + "NoDefaultDriveLetter" + "ReadOnly" + "ShadowCopy" ) ; ] ; . @@ -1261,13 +1261,13 @@ vocabulary:WirelessNetworkSecurityModeVocab owl:equivalentClass [ a rdfs:Datatype ; owl:oneOf ( - "None"^^vocabulary:WirelessNetworkSecurityModeVocab - "WEP"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA2-PSK"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA2-Enterprise"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA3-PSK"^^vocabulary:WirelessNetworkSecurityModeVocab - "WPA3-Enterprise"^^vocabulary:WirelessNetworkSecurityModeVocab + "None" + "WEP" + "WPA" + "WPA2-PSK" + "WPA2-Enterprise" + "WPA3-PSK" + "WPA3-Enterprise" ) ; ] ; . diff --git a/tests/examples/action_inheritance_PASS.json b/tests/examples/action_inheritance_PASS.json index 2aa82c15..4312558d 100644 --- a/tests/examples/action_inheritance_PASS.json +++ b/tests/examples/action_inheritance_PASS.json @@ -18,19 +18,13 @@ "@id": "kb:action-90d02552-333f-49d0-9ca6-2a7004adffef", "@type": "action:Action", "core:name": "Modify File", - "action:actionStatus": { - "@type": "vocabulary:ActionStatusTypeVocab", - "@value": "Pending" - } + "action:actionStatus": "Pending" }, { "@id": "kb:action-b4bd127d-489a-41b1-8395-95204e12c8c9", "@type": "action:Action", "core:name": "Save File", - "action:actionStatus": { - "@type": "vocabulary:ActionStatusTypeVocab", - "@value": "Pending" - } + "action:actionStatus": "Pending" }, { "@id": "kb:action-lifecycle-63af1a39-22b6-45d6-a591-eede74657b68", diff --git a/tests/examples/hash_PASS.json b/tests/examples/hash_PASS.json index 753470f1..228d3355 100644 --- a/tests/examples/hash_PASS.json +++ b/tests/examples/hash_PASS.json @@ -30,7 +30,7 @@ { "@id": "kb:hash-b7eca8de-142d-4aa9-b546-0796a268afa4", "@type": "types:Hash", - "rdfs:comment": "Should trigger an sh:Info from the hashMethod value not having its (literal-)value in the HashNameVocab vocabulary, and also not being an xsd:string.", + "rdfs:comment": "Should trigger an sh:Info from the hashMethod value not having its (literal-)value in the HashNameVocab vocabulary, and also a sh:Warning from not being an xsd:string.", "types:hashMethod": { "@type": "vocabulary:HashNameVocab", "@value": "SHA1" @@ -43,7 +43,7 @@ { "@id": "kb:hash-f46c714f-559a-4325-bf8a-4ef60c92c771", "@type": "types:Hash", - "rdfs:comment": "This should trigger an sh:Warning from the hashMethod value not being a string, and not being in the HashNameVocab vocabulary.", + "rdfs:comment": "This should trigger an sh:Warning from the hashMethod value not being a string, and an sh:Info from not being in the HashNameVocab vocabulary. (The warning from not being a string is a relaxation from an error, enacted between UCO 1.3.0 and 1.4.0. It will again be an error in UCO 2.0.0.)", "types:hashMethod": 1, "types:hashValue": { "@type": "xsd:hexBinary", diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py index 6d93ed8a..b8f051e0 100644 --- a/tests/examples/test_validation.py +++ b/tests/examples/test_validation.py @@ -290,11 +290,11 @@ def test_hash_PASS() -> None: "hash_PASS_validation.ttl", True, expected_focus_node_severities={ - ('http://example.org/kb/hash-04dcd1dc-6920-4977-a898-e242870249a4', str(NS_SH.Info)), - ('http://example.org/kb/hash-af4b0c85-b042-4e2d-a213-210b3d7f115c', str(NS_SH.Info)), - ('http://example.org/kb/hash-b7eca8de-142d-4aa9-b546-0796a268afa4', str(NS_SH.Info)), + ("http://example.org/kb/hash-04dcd1dc-6920-4977-a898-e242870249a4", str(NS_SH.Info)), + ("http://example.org/kb/hash-af4b0c85-b042-4e2d-a213-210b3d7f115c", str(NS_SH.Info)), + ("http://example.org/kb/hash-b7eca8de-142d-4aa9-b546-0796a268afa4", str(NS_SH.Info)), ("http://example.org/kb/hash-b7eca8de-142d-4aa9-b546-0796a268afa4", str(NS_SH.Warning)), - ('http://example.org/kb/hash-f46c714f-559a-4325-bf8a-4ef60c92c771', str(NS_SH.Info)), + ("http://example.org/kb/hash-f46c714f-559a-4325-bf8a-4ef60c92c771", str(NS_SH.Info)), ("http://example.org/kb/hash-f46c714f-559a-4325-bf8a-4ef60c92c771", str(NS_SH.Warning)), } ) From e6decb6f6db604ea106d52365105663df282f0a7 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 18 Feb 2025 17:09:53 -0500 Subject: [PATCH 09/13] Regenerate Make-managed files References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- .../action_inheritance_PASS_validation.ttl | 17 ++++-- .../action_inheritance_XFAIL_validation.ttl | 61 ------------------- 2 files changed, 12 insertions(+), 66 deletions(-) diff --git a/tests/examples/action_inheritance_PASS_validation.ttl b/tests/examples/action_inheritance_PASS_validation.ttl index 0a2a7b0b..b121487c 100644 --- a/tests/examples/action_inheritance_PASS_validation.ttl +++ b/tests/examples/action_inheritance_PASS_validation.ttl @@ -3,7 +3,6 @@ @prefix rdf: . @prefix rdfs: . @prefix sh: . -@prefix vocabulary: . @prefix xsd: . [] @@ -12,13 +11,21 @@ sh:result [ a sh:ValidationResult ; sh:focusNode ; - sh:resultMessage "Value is outside the default vocabulary ActionStatusTypeVocab." ; + sh:resultMessage "Value is not member of the vocabulary ActionStatusTypeVocab." ; sh:resultPath action:actionStatus ; sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceConstraintComponent sh:InConstraintComponent ; sh:sourceShape [ - sh:datatype vocabulary:ActionStatusTypeVocab ; - sh:message "Value is outside the default vocabulary ActionStatusTypeVocab." ; + sh:in ( + "Complete/Finish" + "Error" + "Fail" + "Ongoing" + "Pending" + "Success" + "Unknown" + ) ; + sh:message "Value is not member of the vocabulary ActionStatusTypeVocab." ; sh:path action:actionStatus ; sh:severity sh:Info ; ] ; diff --git a/tests/examples/action_inheritance_XFAIL_validation.ttl b/tests/examples/action_inheritance_XFAIL_validation.ttl index fb8277fe..8d239b77 100644 --- a/tests/examples/action_inheritance_XFAIL_validation.ttl +++ b/tests/examples/action_inheritance_XFAIL_validation.ttl @@ -3,58 +3,12 @@ @prefix rdf: . @prefix rdfs: . @prefix sh: . -@prefix vocabulary: . @prefix xsd: . [] a sh:ValidationReport ; sh:conforms "false"^^xsd:boolean ; sh:result - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is outside the default vocabulary ActionStatusTypeVocab." ; - sh:resultPath action:actionStatus ; - sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; - sh:sourceShape [ - sh:datatype vocabulary:ActionStatusTypeVocab ; - sh:message "Value is outside the default vocabulary ActionStatusTypeVocab." ; - sh:path action:actionStatus ; - sh:severity sh:Info ; - ] ; - sh:value "Pending" ; - ] , - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is outside the default vocabulary ActionStatusTypeVocab." ; - sh:resultPath action:actionStatus ; - sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; - sh:sourceShape [ - sh:datatype vocabulary:ActionStatusTypeVocab ; - sh:message "Value is outside the default vocabulary ActionStatusTypeVocab." ; - sh:path action:actionStatus ; - sh:severity sh:Info ; - ] ; - sh:value "Pending" ; - ] , - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is outside the default vocabulary ActionStatusTypeVocab." ; - sh:resultPath action:actionStatus ; - sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; - sh:sourceShape [ - sh:datatype vocabulary:ActionStatusTypeVocab ; - sh:message "Value is outside the default vocabulary ActionStatusTypeVocab." ; - sh:path action:actionStatus ; - sh:severity sh:Info ; - ] ; - sh:value "Pending" ; - ] , [ a sh:ValidationResult ; sh:focusNode ; @@ -67,21 +21,6 @@ sh:path action:actionStatus ; ] ; ] , - [ - a sh:ValidationResult ; - sh:focusNode ; - sh:resultMessage "Value is outside the default vocabulary ActionStatusTypeVocab." ; - sh:resultPath action:actionStatus ; - sh:resultSeverity sh:Info ; - sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; - sh:sourceShape [ - sh:datatype vocabulary:ActionStatusTypeVocab ; - sh:message "Value is outside the default vocabulary ActionStatusTypeVocab." ; - sh:path action:actionStatus ; - sh:severity sh:Info ; - ] ; - sh:value "Pending" ; - ] , [ a sh:ValidationResult ; sh:focusNode ; From 5ded2590677145b22f06812f2591963bbc842b40 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Wed, 26 Feb 2025 10:54:48 -0500 Subject: [PATCH 10/13] Move sh:in review to named PropertyShapes This patch introduces a name scheme that does not align with a previous occurrence of this export, `observable:regionalInternetRegistry-shape-value-not-vocabulary-member`. This patch also does not apply the exporting pattern to `core:objectStatus`, because in that case the vocabulary is closed. A follow-on patch will regenerate Make-managed files. References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- ontology/uco/action/action.ttl | 52 +- ontology/uco/observable/observable.ttl | 704 ++++++++++++++----------- ontology/uco/types/types.ttl | 41 +- 3 files changed, 436 insertions(+), 361 deletions(-) diff --git a/ontology/uco/action/action.ttl b/ontology/uco/action/action.ttl index 7f868aae..1d6d4b1e 100644 --- a/ontology/uco/action/action.ttl +++ b/ontology/uco/action/action.ttl @@ -42,6 +42,7 @@ action:Action rdfs:comment "An action is something that may be done or performed."@en ; owl:disjointWith core:Event ; sh:property + action:Action-actionStatus-in-shape , [ sh:class action:Action ; sh:nodeKind sh:IRI ; @@ -113,20 +114,6 @@ action:Action sh:path action:actionStatus ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "Complete/Finish" - "Error" - "Fail" - "Ongoing" - "Pending" - "Success" - "Unknown" - ) ; - sh:message "Value is not member of the vocabulary ActionStatusTypeVocab." ; - sh:path action:actionStatus ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -136,6 +123,22 @@ action:Action sh:targetClass action:Action ; . +action:Action-actionStatus-in-shape + a sh:PropertyShape ; + sh:in ( + "Complete/Finish" + "Error" + "Fail" + "Ongoing" + "Pending" + "Success" + "Unknown" + ) ; + sh:message "Value is not member of the vocabulary ActionStatusTypeVocab." ; + sh:path action:actionStatus ; + sh:severity sh:Info ; + . + action:Action-disjointWith-Event-shape a sh:NodeShape ; sh:message "action:Action and core:Event are disjoint classes."@en ; @@ -219,6 +222,7 @@ action:ActionFrequencyFacet rdfs:label "ActionFrequencyFacet"@en ; rdfs:comment "An action frequency facet is a grouping of characteristics unique to the frequency of occurrence for an action."@en ; sh:property + action:ActionFrequencyFacet-trend-in-shape , [ sh:datatype xsd:decimal ; sh:maxCount "1"^^xsd:integer ; @@ -246,15 +250,6 @@ action:ActionFrequencyFacet sh:path action:trend ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "Decreasing" - "Increasing" - ) ; - sh:message "Value is not member of the vocabulary TrendVocab." ; - sh:path action:trend ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; @@ -265,6 +260,17 @@ action:ActionFrequencyFacet sh:targetClass action:ActionFrequencyFacet ; . +action:ActionFrequencyFacet-trend-in-shape + a sh:PropertyShape ; + sh:in ( + "Decreasing" + "Increasing" + ) ; + sh:message "Value is not member of the vocabulary TrendVocab." ; + sh:path action:trend ; + sh:severity sh:Info ; + . + action:ActionLifecycle a owl:Class , diff --git a/ontology/uco/observable/observable.ttl b/ontology/uco/observable/observable.ttl index 0aa8be12..634b7f6b 100644 --- a/ontology/uco/observable/observable.ttl +++ b/ontology/uco/observable/observable.ttl @@ -122,6 +122,7 @@ observable:AccountFacet rdfs:label "AccountFacet"@en ; rdfs:comment "An account facet is a grouping of characteristics unique to an arrangement with an entity to enable and control the provision of some capability or service."@en ; sh:property + observable:AccountFacet-accountType-in-shape , [ sh:class core:UcoObject ; sh:maxCount "1"^^xsd:integer ; @@ -170,21 +171,6 @@ observable:AccountFacet sh:path observable:accountType ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "ldap" - "nis" - "openid" - "radius" - "tacacs" - "unix" - "windows_domain" - "windows_local" - ) ; - sh:message "Value is not member of the vocabulary AccountTypeVocab." ; - sh:path observable:accountType ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -194,6 +180,23 @@ observable:AccountFacet sh:targetClass observable:AccountFacet ; . +observable:AccountFacet-accountType-in-shape + a sh:PropertyShape ; + sh:in ( + "ldap" + "nis" + "openid" + "radius" + "tacacs" + "unix" + "windows_domain" + "windows_local" + ) ; + sh:message "Value is not member of the vocabulary AccountTypeVocab." ; + sh:path observable:accountType ; + sh:severity sh:Info ; + . + observable:Adaptor a owl:Class , @@ -1414,6 +1417,7 @@ observable:ContactAddress rdfs:label "ContactAddress"@en ; rdfs:comment "A contact address is a grouping of characteristics unique to a geolocation address of a contact entity."@en ; sh:property + observable:ContactAddress-contactAddressScope-in-shape , [ sh:class location:Location ; sh:maxCount "1"^^xsd:integer ; @@ -1426,16 +1430,6 @@ observable:ContactAddress sh:path observable:contactAddressScope ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "home" - "work" - "school" - ) ; - sh:message "Value is not member of the vocabulary ContactAddressScopeVocab." ; - sh:path observable:contactAddressScope ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -1445,6 +1439,18 @@ observable:ContactAddress sh:targetClass observable:ContactAddress ; . +observable:ContactAddress-contactAddressScope-in-shape + a sh:PropertyShape ; + sh:in ( + "home" + "work" + "school" + ) ; + sh:message "Value is not member of the vocabulary ContactAddressScopeVocab." ; + sh:path observable:contactAddressScope ; + sh:severity sh:Info ; + . + observable:ContactAffiliation a owl:Class , @@ -1521,6 +1527,7 @@ observable:ContactEmail rdfs:label "ContactEmail"@en ; rdfs:comment "A contact email is a grouping of characteristics unique to details for contacting a contact entity by email."@en ; sh:property + observable:ContactEmail-contactEmailScope-in-shape , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; @@ -1533,17 +1540,6 @@ observable:ContactEmail sh:path observable:contactEmailScope ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "home" - "work" - "school" - "cloud" - ) ; - sh:message "Value is not member of the vocabulary ContactEmailScopeVocab." ; - sh:path observable:contactEmailScope ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -1553,6 +1549,19 @@ observable:ContactEmail sh:targetClass observable:ContactEmail ; . +observable:ContactEmail-contactEmailScope-in-shape + a sh:PropertyShape ; + sh:in ( + "home" + "work" + "school" + "cloud" + ) ; + sh:message "Value is not member of the vocabulary ContactEmailScopeVocab." ; + sh:path observable:contactEmailScope ; + sh:severity sh:Info ; + . + observable:ContactFacet a owl:Class , @@ -1773,6 +1782,7 @@ observable:ContactPhone rdfs:label "ContactPhone"@en ; rdfs:comment "A contact phone is a grouping of characteristics unique to details for contacting a contact entity by telephone."@en ; sh:property + observable:ContactPhone-contactPhoneScope-in-shape , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; @@ -1785,21 +1795,6 @@ observable:ContactPhone sh:path observable:contactPhoneScope ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "home" - "work" - "school" - "mobile" - "main" - "home fax" - "work fax" - "pager" - ) ; - sh:message "Value is not member of the vocabulary ContactPhoneScopeVocab." ; - sh:path observable:contactPhoneScope ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -1809,6 +1804,23 @@ observable:ContactPhone sh:targetClass observable:ContactPhone ; . +observable:ContactPhone-contactPhoneScope-in-shape + a sh:PropertyShape ; + sh:in ( + "home" + "work" + "school" + "mobile" + "main" + "home fax" + "work fax" + "pager" + ) ; + sh:message "Value is not member of the vocabulary ContactPhoneScopeVocab." ; + sh:path observable:contactPhoneScope ; + sh:severity sh:Info ; + . + observable:ContactProfile a owl:Class , @@ -1843,6 +1855,7 @@ observable:ContactSIP rdfs:label "ContactSIP"@en ; rdfs:comment "A contact SIP is a grouping of characteristics unique to details for contacting a contact entity by Session Initiation Protocol (SIP)."@en ; sh:property + observable:ContactSIP-contactSIPScope-in-shape , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; @@ -1855,16 +1868,6 @@ observable:ContactSIP sh:path observable:contactSIPScope ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "home" - "work" - "school" - ) ; - sh:message "Value is not member of the vocabulary ContactSIPScopeVocab." ; - sh:path observable:contactSIPScope ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -1874,6 +1877,18 @@ observable:ContactSIP sh:targetClass observable:ContactSIP ; . +observable:ContactSIP-contactSIPScope-in-shape + a sh:PropertyShape ; + sh:in ( + "home" + "work" + "school" + ) ; + sh:message "Value is not member of the vocabulary ContactSIPScopeVocab." ; + sh:path observable:contactSIPScope ; + sh:severity sh:Info ; + . + observable:ContactURL a owl:Class , @@ -1883,6 +1898,7 @@ observable:ContactURL rdfs:label "ContactURL"@en ; rdfs:comment "A contact URL is a grouping of characteristics unique to details for contacting a contact entity by Uniform Resource Locator (URL)."@en ; sh:property + observable:ContactURL-contactURLScope-in-shape , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; @@ -1895,17 +1911,6 @@ observable:ContactURL sh:path observable:contactURLScope ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "home" - "work" - "school" - "homepage" - ) ; - sh:message "Value is not member of the vocabulary ContactURLScopeVocab." ; - sh:path observable:contactURLScope ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -1915,6 +1920,19 @@ observable:ContactURL sh:targetClass observable:ContactURL ; . +observable:ContactURL-contactURLScope-in-shape + a sh:PropertyShape ; + sh:in ( + "home" + "work" + "school" + "homepage" + ) ; + sh:message "Value is not member of the vocabulary ContactURLScopeVocab." ; + sh:path observable:contactURLScope ; + sh:severity sh:Info ; + . + observable:ContentData a owl:Class , @@ -1935,6 +1953,7 @@ observable:ContentDataFacet rdfs:label "ContentDataFacet"@en ; rdfs:comment "A content data facet is a grouping of characteristics unique to a block of digital data."@en ; sh:property + observable:ContentDataFacet-byteOrder-in-shape , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; @@ -1993,16 +2012,6 @@ observable:ContentDataFacet sh:nodeKind sh:Literal ; sh:path observable:mimeType ; ] , - [ - sh:in ( - "Big-endian" - "Little-endian" - "Middle-endian" - ) ; - sh:message "Value is not member of the vocabulary EndiannessTypeVocab." ; - sh:path observable:byteOrder ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -2012,6 +2021,18 @@ observable:ContentDataFacet sh:targetClass observable:ContentDataFacet ; . +observable:ContentDataFacet-byteOrder-in-shape + a sh:PropertyShape ; + sh:in ( + "Big-endian" + "Little-endian" + "Middle-endian" + ) ; + sh:message "Value is not member of the vocabulary EndiannessTypeVocab." ; + sh:path observable:byteOrder ; + sh:severity sh:Info ; + . + observable:CookieHistory a owl:Class , @@ -3961,6 +3982,7 @@ observable:MemoryFacet rdfs:label "MemoryFacet"@en ; rdfs:comment "A memory facet is a grouping of characteristics unique to a particular region of temporary information storage (e.g., RAM (random access memory), ROM (read only memory)) on a digital device."@en ; sh:property + observable:MemoryFacet-blockType-in-shape , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; @@ -4007,18 +4029,6 @@ observable:MemoryFacet sh:path observable:blockType ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "Bit-mapped" - "Byte-mapped" - "Initialized" - "Overlay" - "Uninitialized" - ) ; - sh:message "Value is not member of the vocabulary MemoryBlockTypeVocab." ; - sh:path observable:blockType ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -4028,6 +4038,20 @@ observable:MemoryFacet sh:targetClass observable:MemoryFacet ; . +observable:MemoryFacet-blockType-in-shape + a sh:PropertyShape ; + sh:in ( + "Bit-mapped" + "Byte-mapped" + "Initialized" + "Overlay" + "Uninitialized" + ) ; + sh:message "Value is not member of the vocabulary MemoryBlockTypeVocab." ; + sh:path observable:blockType ; + sh:severity sh:Info ; + . + observable:Message a owl:Class , @@ -5620,6 +5644,9 @@ observable:RecoveredObjectFacet rdfs:label "RecoveredObjectFacet"@en ; rdfs:comment "Recoverability status of name, metadata, and content."@en ; sh:property + observable:RecoveredObjectFacet-contentRecoveredStatus-in-shape , + observable:RecoveredObjectFacet-metadataRecoveredStatus-in-shape , + observable:RecoveredObjectFacet-nameRecoveredStatus-in-shape , [ sh:datatype xsd:string ; sh:message "As of UCO 1.4.0, the datatype to use for observable:contentRecoveredStatus should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; @@ -5638,39 +5665,6 @@ observable:RecoveredObjectFacet sh:path observable:nameRecoveredStatus ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "recovered" - "partially recovered" - "overwritten" - "unknown" - ) ; - sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; - sh:path observable:nameRecoveredStatus ; - sh:severity sh:Info ; - ] , - [ - sh:in ( - "recovered" - "partially recovered" - "overwritten" - "unknown" - ) ; - sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; - sh:path observable:metadataRecoveredStatus ; - sh:severity sh:Info ; - ] , - [ - sh:in ( - "recovered" - "partially recovered" - "overwritten" - "unknown" - ) ; - sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; - sh:path observable:contentRecoveredStatus ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -5690,6 +5684,45 @@ observable:RecoveredObjectFacet sh:targetClass observable:RecoveredObjectFacet ; . +observable:RecoveredObjectFacet-contentRecoveredStatus-in-shape + a sh:PropertyShape ; + sh:in ( + "recovered" + "partially recovered" + "overwritten" + "unknown" + ) ; + sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; + sh:path observable:contentRecoveredStatus ; + sh:severity sh:Info ; + . + +observable:RecoveredObjectFacet-metadataRecoveredStatus-in-shape + a sh:PropertyShape ; + sh:in ( + "recovered" + "partially recovered" + "overwritten" + "unknown" + ) ; + sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; + sh:path observable:metadataRecoveredStatus ; + sh:severity sh:Info ; + . + +observable:RecoveredObjectFacet-nameRecoveredStatus-in-shape + a sh:PropertyShape ; + sh:in ( + "recovered" + "partially recovered" + "overwritten" + "unknown" + ) ; + sh:message "Value is not member of the vocabulary RecoveredObjectStatusVocab." ; + sh:path observable:nameRecoveredStatus ; + sh:severity sh:Info ; + . + observable:RegistryDatatype a rdfs:Datatype ; owl:equivalentClass [ @@ -6328,6 +6361,7 @@ observable:TaskActionType rdfs:label "TaskActionType"@en ; rdfs:comment "A task action type is a grouping of characteristics for a scheduled action to be completed."@en ; sh:property + observable:TaskActionType-actionType-in-shape , [ sh:class observable:IComHandlerActionType ; sh:maxCount "1"^^xsd:integer ; @@ -6364,17 +6398,6 @@ observable:TaskActionType sh:path observable:actionType ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "TASK_ACTION_COM_HANDLER" - "TASK_ACTION_EXEC" - "TASK_ACTION_SEND_EMAIL" - "TASK_ACTION_SHOW_MESSAGE" - ) ; - sh:message "Value is not member of the vocabulary TaskActionTypeVocab." ; - sh:path observable:actionType ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -6384,6 +6407,19 @@ observable:TaskActionType sh:targetClass observable:TaskActionType ; . +observable:TaskActionType-actionType-in-shape + a sh:PropertyShape ; + sh:in ( + "TASK_ACTION_COM_HANDLER" + "TASK_ACTION_EXEC" + "TASK_ACTION_SEND_EMAIL" + "TASK_ACTION_SHOW_MESSAGE" + ) ; + sh:message "Value is not member of the vocabulary TaskActionTypeVocab." ; + sh:path observable:actionType ; + sh:severity sh:Info ; + . + observable:TriggerType a owl:Class , @@ -6393,6 +6429,8 @@ observable:TriggerType rdfs:label "TriggerType"@en ; rdfs:comment "A trigger type is a grouping of characterizes unique to a set of criteria that, when met, starts the execution of a task within a Windows operating system. [based on https://docs.microsoft.com/en-us/windows/win32/taskschd/task-triggers]"@en ; sh:property + observable:TriggerType-triggerFrequency-in-shape , + observable:TriggerType-triggerType-in-shape , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; @@ -6441,35 +6479,6 @@ observable:TriggerType sh:path observable:triggerType ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "TASK_EVENT_TRIGGER_AT_LOGON" - "TASK_EVENT_TRIGGER_AT_SYSTEMSTART" - "TASK_EVENT_TRIGGER_ON_IDLE" - "TASK_TIME_TRIGGER_DAILY" - "TASK_TIME_TRIGGER_MONTHLYDATE" - "TASK_TIME_TRIGGER_MONTHLYDOW" - "TASK_TIME_TRIGGER_ONCE" - "TASK_TIME_TRIGGER_WEEKLY" - ) ; - sh:message "Value is not member of the vocabulary TriggerFrequencyVocab." ; - sh:path observable:triggerFrequency ; - sh:severity sh:Info ; - ] , - [ - sh:in ( - "TASK_TRIGGER_BOOT" - "TASK_TRIGGER_EVENT" - "TASK_TRIGGER_IDLE" - "TASK_TRIGGER_LOGON" - "TASK_TRIGGER_REGISTRATION" - "TASK_TRIGGER_SESSION_STATE_CHANGE" - "TASK_TRIGGER_TIME" - ) ; - sh:message "Value is not member of the vocabulary TriggerTypeVocab." ; - sh:path observable:triggerType ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -6484,6 +6493,39 @@ observable:TriggerType sh:targetClass observable:TriggerType ; . +observable:TriggerType-triggerFrequency-in-shape + a sh:PropertyShape ; + sh:in ( + "TASK_EVENT_TRIGGER_AT_LOGON" + "TASK_EVENT_TRIGGER_AT_SYSTEMSTART" + "TASK_EVENT_TRIGGER_ON_IDLE" + "TASK_TIME_TRIGGER_DAILY" + "TASK_TIME_TRIGGER_MONTHLYDATE" + "TASK_TIME_TRIGGER_MONTHLYDOW" + "TASK_TIME_TRIGGER_ONCE" + "TASK_TIME_TRIGGER_WEEKLY" + ) ; + sh:message "Value is not member of the vocabulary TriggerFrequencyVocab." ; + sh:path observable:triggerFrequency ; + sh:severity sh:Info ; + . + +observable:TriggerType-triggerType-in-shape + a sh:PropertyShape ; + sh:in ( + "TASK_TRIGGER_BOOT" + "TASK_TRIGGER_EVENT" + "TASK_TRIGGER_IDLE" + "TASK_TRIGGER_LOGON" + "TASK_TRIGGER_REGISTRATION" + "TASK_TRIGGER_SESSION_STATE_CHANGE" + "TASK_TRIGGER_TIME" + ) ; + sh:message "Value is not member of the vocabulary TriggerTypeVocab." ; + sh:path observable:triggerType ; + sh:severity sh:Info ; + . + observable:Tweet a owl:Class , @@ -6933,6 +6975,7 @@ observable:URLVisitFacet rdfs:label "URLVisitFacet"@en ; rdfs:comment "A URL visit facet is a grouping of characteristics unique to the properties of a visit of a URL within a particular browser."@en ; sh:property + observable:URLVisitFacet-urlTransitionType-in-shape , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; @@ -6969,24 +7012,6 @@ observable:URLVisitFacet sh:path observable:urlTransitionType ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "link" - "typed" - "auto_bookmark" - "auto_subframe" - "manual_subframe" - "generated" - "auto_toplevel" - "form_submit" - "reload" - "keyword" - "keyword_generated" - ) ; - sh:message "Value is not member of the vocabulary URLTransitionTypeVocab." ; - sh:path observable:urlTransitionType ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -6996,6 +7021,26 @@ observable:URLVisitFacet sh:targetClass observable:URLVisitFacet ; . +observable:URLVisitFacet-urlTransitionType-in-shape + a sh:PropertyShape ; + sh:in ( + "link" + "typed" + "auto_bookmark" + "auto_subframe" + "manual_subframe" + "generated" + "auto_toplevel" + "form_submit" + "reload" + "keyword" + "keyword_generated" + ) ; + sh:message "Value is not member of the vocabulary URLTransitionTypeVocab." ; + sh:path observable:urlTransitionType ; + sh:severity sh:Info ; + . + observable:UserAccount a owl:Class , @@ -7193,6 +7238,7 @@ observable:WhoIsFacet rdfs:label "WhoIsFacet"@en ; rdfs:comment "A whois facet is a grouping of characteristics unique to a response record conformant to the WHOIS protocol standard (RFC 3912). [based on https://en.wikipedia.org/wiki/WHOIS]"@en ; sh:property + observable:WhoIsFacet-status-in-shape , observable:regionalInternetRegistry-shape-value-not-vocabulary-member , observable:regionalInternetRegistry-shape-value-outside-default-vocabulary , [ @@ -7295,32 +7341,6 @@ observable:WhoIsFacet sh:nodeKind sh:Literal ; sh:path observable:dnssec ; ] , - [ - sh:in ( - "ADD_PERIOD" - "AUTO_RENEW_PERIOD" - "CLIENT_DELETE_PROHIBITED" - "CLIENT_HOLD" - "CLIENT_RENEW_PROHIBITED" - "CLIENT_TRANSFER_PROHIBITED" - "CLIENT_UPDATE_PROHIBITED" - "DELETE_PROHIBITED" - "HOLD" - "INACTIVE" - "OK" - "PENDING_DELETE_RESTORABLE" - "PENDING_DELETE_SCHEDULED_FOR_RELEASE" - "PENDING_RESTORE" - "RENEW_PERIOD" - "RENEW_PROHIBITED" - "TRANSFER_PERIOD" - "TRANSFER_PROHIBITED" - "UPDATE_PROHIBITED" - ) ; - sh:message "Value is not member of the vocabulary WhoisStatusTypeVocab." ; - sh:path observable:status ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -7335,6 +7355,34 @@ observable:WhoIsFacet sh:targetClass observable:WhoIsFacet ; . +observable:WhoIsFacet-status-in-shape + a sh:PropertyShape ; + sh:in ( + "ADD_PERIOD" + "AUTO_RENEW_PERIOD" + "CLIENT_DELETE_PROHIBITED" + "CLIENT_HOLD" + "CLIENT_RENEW_PROHIBITED" + "CLIENT_TRANSFER_PROHIBITED" + "CLIENT_UPDATE_PROHIBITED" + "DELETE_PROHIBITED" + "HOLD" + "INACTIVE" + "OK" + "PENDING_DELETE_RESTORABLE" + "PENDING_DELETE_SCHEDULED_FOR_RELEASE" + "PENDING_RESTORE" + "RENEW_PERIOD" + "RENEW_PROHIBITED" + "TRANSFER_PERIOD" + "TRANSFER_PROHIBITED" + "UPDATE_PROHIBITED" + ) ; + sh:message "Value is not member of the vocabulary WhoisStatusTypeVocab." ; + sh:path observable:status ; + sh:severity sh:Info ; + . + observable:WhoisContactFacet a owl:Class , @@ -7344,22 +7392,13 @@ observable:WhoisContactFacet rdfs:label "WhoIsContactFacet"@en ; rdfs:comment "A Whois contact type is a grouping of characteristics unique to contact-related information present in a response record conformant to the WHOIS protocol standard (RFC 3912). [based on https://en.wikipedia.org/wiki/WHOIS]"@en ; sh:property + observable:WhoisContactFacet-whoisContactType-in-shape , [ sh:datatype xsd:string ; sh:message "As of UCO 1.4.0, the datatype to use for observable:whoisContactType should be xsd:string. Not using xsd:string will be an error in UCO 2.0.0." ; sh:path observable:whoisContactType ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "ADMIN" - "BILLING" - "TECHNICAL" - ) ; - sh:message "Value is not member of the vocabulary WhoisContactTypeVocab." ; - sh:path observable:whoisContactType ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -7369,6 +7408,18 @@ observable:WhoisContactFacet sh:targetClass observable:WhoisContactFacet ; . +observable:WhoisContactFacet-whoisContactType-in-shape + a sh:PropertyShape ; + sh:in ( + "ADMIN" + "BILLING" + "TECHNICAL" + ) ; + sh:message "Value is not member of the vocabulary WhoisContactTypeVocab." ; + sh:path observable:whoisContactType ; + sh:severity sh:Info ; + . + observable:WhoisRegistrarInfoType a owl:Class , @@ -8414,6 +8465,9 @@ observable:WindowsTaskFacet rdfs:label "WindowsTaskFacet"@en ; rdfs:comment "A Windows Task facet is a grouping of characteristics unique to a Windows Task (a process that is scheduled to execute on a Windows operating system by the Windows Task Scheduler). [based on http://msdn.microsoft.com/en-us/library/windows/desktop/aa381311(v=vs.85).aspx]"@en ; sh:property + observable:WindowsTaskFacet-flags-in-shape , + observable:WindowsTaskFacet-priority-in-shape , + observable:WindowsTaskFacet-status-in-shape , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; @@ -8526,56 +8580,6 @@ observable:WindowsTaskFacet sh:path observable:status ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "SCHED_E_ACCOUNT_DBASE_CORRUPT" - "SCHED_E_ACCOUNT_INFORMATION_NOT_SET" - "SCHED_E_ACCOUNT_NAME_NOT_FOUND" - "SCHED_E_CANNOT_OPEN_TASK" - "SCHED_E_INVALID_TASK" - "SCHED_E_NO_SECURITY_SERVICES" - "SCHED_E_SERVICE_NOT_INSTALLED" - "SCHED_E_SERVICE_NOT_RUNNING" - "SCHED_E_TASK_NOT_READY" - "SCHED_E_TASK_NOT_RUNNING" - "SCHED_E_TRIGGER_NOT_FOUND" - "SCHED_E_UNKNOWN_OBJECT_VERSION" - "SCHED_E_UNSUPPORTED_ACCOUNT_OPTION" - "SCHED_S_EVENT_TRIGGER" - "SCHED_S_TASK_DISABLED" - "SCHED_S_TASK_HAS_NOT_RUN" - "SCHED_S_TASK_NOT_SCHEDULED" - "SCHED_S_TASK_NO_MORE_RUNS" - "SCHED_S_TASK_NO_VALID_TRIGGERS" - "SCHED_S_TASK_READY" - "SCHED_S_TASK_RUNNING" - "SCHED_S_TASK_TERMINATED" - "TASK_STATE_QUEUED" - "TASK_STATE_UNKNOWN" - ) ; - sh:message "Value is not member of the vocabulary TaskStatusVocab." ; - sh:path observable:status ; - ] , - [ - sh:in ( - "TASK_FLAG_DELETE_WHEN_DONE" - "TASK_FLAG_DISABLED" - "TASK_FLAG_DONT_START_IF_ON_BATTERIES" - "TASK_FLAG_HIDDEN" - "TASK_FLAG_INTERACTIVE" - "TASK_FLAG_KILL_IF_GOING_ON_BATTERIES" - "TASK_FLAG_KILL_ON_IDLE_END" - "TASK_FLAG_RESTART_ON_IDLE_RESUME" - "TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET" - "TASK_FLAG_RUN_ONLY_IF_LOGGED_ON" - "TASK_FLAG_START_ONLY_IF_IDLE" - "TASK_FLAG_SYSTEM_REQUIRED" - "TASK_FLAG_ZERO" - ) ; - sh:message "Value is not member of the vocabulary TaskFlagVocab." ; - sh:path observable:flags ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -8599,26 +8603,6 @@ observable:WindowsTaskFacet sh:path observable:priority ; sh:severity sh:Warning ; ] , - [ - sh:message "Value is not member of the vocabulary TaskPriorityVocab." ; - sh:or ( - [ - sh:in ( - "ABOVE_NORMAL_PRIORITY_CLASS" - "BELOW_NORMAL_PRIORITY_CLASS" - "HIGH_PRIORITY_CLASS" - "IDLE_PRIORITY_CLASS" - "NORMAL_PRIORITY_CLASS" - "REALTIME_PRIORITY_CLASS" - ) ; - ] - [ - sh:datatype xsd:integer ; - ] - ) ; - sh:path observable:priority ; - sh:severity sh:Info ; - ] , [ sh:nodeKind sh:Literal ; sh:path observable:flags ; @@ -8627,6 +8611,82 @@ observable:WindowsTaskFacet sh:targetClass observable:WindowsTaskFacet ; . +observable:WindowsTaskFacet-flags-in-shape + a sh:PropertyShape ; + sh:in ( + "TASK_FLAG_DELETE_WHEN_DONE" + "TASK_FLAG_DISABLED" + "TASK_FLAG_DONT_START_IF_ON_BATTERIES" + "TASK_FLAG_HIDDEN" + "TASK_FLAG_INTERACTIVE" + "TASK_FLAG_KILL_IF_GOING_ON_BATTERIES" + "TASK_FLAG_KILL_ON_IDLE_END" + "TASK_FLAG_RESTART_ON_IDLE_RESUME" + "TASK_FLAG_RUN_IF_CONNECTED_TO_INTERNET" + "TASK_FLAG_RUN_ONLY_IF_LOGGED_ON" + "TASK_FLAG_START_ONLY_IF_IDLE" + "TASK_FLAG_SYSTEM_REQUIRED" + "TASK_FLAG_ZERO" + ) ; + sh:message "Value is not member of the vocabulary TaskFlagVocab." ; + sh:path observable:flags ; + sh:severity sh:Info ; + . + +observable:WindowsTaskFacet-priority-in-shape + a sh:PropertyShape ; + sh:message "Value is not member of the vocabulary TaskPriorityVocab." ; + sh:or ( + [ + sh:in ( + "ABOVE_NORMAL_PRIORITY_CLASS" + "BELOW_NORMAL_PRIORITY_CLASS" + "HIGH_PRIORITY_CLASS" + "IDLE_PRIORITY_CLASS" + "NORMAL_PRIORITY_CLASS" + "REALTIME_PRIORITY_CLASS" + ) ; + ] + [ + sh:datatype xsd:integer ; + ] + ) ; + sh:path observable:priority ; + sh:severity sh:Info ; + . + +observable:WindowsTaskFacet-status-in-shape + a sh:PropertyShape ; + sh:in ( + "SCHED_E_ACCOUNT_DBASE_CORRUPT" + "SCHED_E_ACCOUNT_INFORMATION_NOT_SET" + "SCHED_E_ACCOUNT_NAME_NOT_FOUND" + "SCHED_E_CANNOT_OPEN_TASK" + "SCHED_E_INVALID_TASK" + "SCHED_E_NO_SECURITY_SERVICES" + "SCHED_E_SERVICE_NOT_INSTALLED" + "SCHED_E_SERVICE_NOT_RUNNING" + "SCHED_E_TASK_NOT_READY" + "SCHED_E_TASK_NOT_RUNNING" + "SCHED_E_TRIGGER_NOT_FOUND" + "SCHED_E_UNKNOWN_OBJECT_VERSION" + "SCHED_E_UNSUPPORTED_ACCOUNT_OPTION" + "SCHED_S_EVENT_TRIGGER" + "SCHED_S_TASK_DISABLED" + "SCHED_S_TASK_HAS_NOT_RUN" + "SCHED_S_TASK_NOT_SCHEDULED" + "SCHED_S_TASK_NO_MORE_RUNS" + "SCHED_S_TASK_NO_VALID_TRIGGERS" + "SCHED_S_TASK_READY" + "SCHED_S_TASK_RUNNING" + "SCHED_S_TASK_TERMINATED" + "TASK_STATE_QUEUED" + "TASK_STATE_UNKNOWN" + ) ; + sh:message "Value is not member of the vocabulary TaskStatusVocab." ; + sh:path observable:status ; + . + observable:WindowsThread a owl:Class , @@ -8721,6 +8781,7 @@ observable:WindowsVolumeFacet rdfs:label "WindowsVolumeFacet"@en ; rdfs:comment "A Windows volume facet is a grouping of characteristics unique to a single accessible storage area (volume) with a single Windows file system. [based on https://en.wikipedia.org/wiki/Volume_(computing)]"@en ; sh:property + observable:WindowsVolumeFacet-driveType-in-shape , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; @@ -8739,20 +8800,6 @@ observable:WindowsVolumeFacet sh:nodeKind sh:Literal ; sh:path observable:windowsVolumeAttributes ; ] , - [ - sh:in ( - "DRIVE_CDROM" - "DRIVE_FIXED" - "DRIVE_NO_ROOT_DIR" - "DRIVE_RAMDISK" - "DRIVE_REMOTE" - "DRIVE_REMOVABLE" - "DRIVE_UNKNOWN" - ) ; - sh:message "Value is not member of the vocabulary WindowsDriveTypeVocab." ; - sh:path observable:driveType ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -8762,6 +8809,22 @@ observable:WindowsVolumeFacet sh:targetClass observable:WindowsVolumeFacet ; . +observable:WindowsVolumeFacet-driveType-in-shape + a sh:PropertyShape ; + sh:in ( + "DRIVE_CDROM" + "DRIVE_FIXED" + "DRIVE_NO_ROOT_DIR" + "DRIVE_RAMDISK" + "DRIVE_REMOTE" + "DRIVE_REMOVABLE" + "DRIVE_UNKNOWN" + ) ; + sh:message "Value is not member of the vocabulary WindowsDriveTypeVocab." ; + sh:path observable:driveType ; + sh:severity sh:Info ; + . + observable:WindowsWaitableTime a owl:Class , @@ -8793,6 +8856,7 @@ observable:WirelessNetworkConnectionFacet rdfs:label "WirelessNetworkConnectionFacet"@en ; rdfs:comment "A wireless network connection facet is a grouping of characteristics unique to a connection (completed or attempted) across an IEEE 802.11 standards-conformant digital network (a group of two or more computer systems linked together). [based on https://www.webopedia.com/TERM/N/network.html]"@en ; sh:property + observable:WirelessNetworkConnectionFacet-wirelessNetworkSecurityMode-in-shape , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; @@ -8817,20 +8881,6 @@ observable:WirelessNetworkConnectionFacet sh:path observable:wirelessNetworkSecurityMode ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "None" - "WEP" - "WPA" - "WPA2-PSK" - "WPA2-Enterprise" - "WPA3-PSK" - "WPA3-Enterprise" - ) ; - sh:message "Value is not member of the vocabulary WirelessNetworkSecurityModeVocab." ; - sh:path observable:wirelessNetworkSecurityMode ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; @@ -8840,6 +8890,22 @@ observable:WirelessNetworkConnectionFacet sh:targetClass observable:WirelessNetworkConnectionFacet ; . +observable:WirelessNetworkConnectionFacet-wirelessNetworkSecurityMode-in-shape + a sh:PropertyShape ; + sh:in ( + "None" + "WEP" + "WPA" + "WPA2-PSK" + "WPA2-Enterprise" + "WPA3-PSK" + "WPA3-Enterprise" + ) ; + sh:message "Value is not member of the vocabulary WirelessNetworkSecurityModeVocab." ; + sh:path observable:wirelessNetworkSecurityMode ; + sh:severity sh:Info ; + . + observable:WriteBlocker a owl:Class , diff --git a/ontology/uco/types/types.ttl b/ontology/uco/types/types.ttl index 3eb7f9ce..3eba272f 100644 --- a/ontology/uco/types/types.ttl +++ b/ontology/uco/types/types.ttl @@ -136,6 +136,7 @@ types:Hash rdfs:label "Hash"@en ; rdfs:comment "A hash is a grouping of characteristics unique to the result of applying a mathematical algorithm that maps data of arbitrary size to a bit string (the 'hash') and is a one-way function, that is, a function which is practically infeasible to invert. This is commonly used for integrity checking of data. [based on https://en.wikipedia.org/wiki/Cryptographic_hash_function]"@en ; sh:property + types:Hash-hashMethod-in-shape , [ sh:datatype xsd:hexBinary ; sh:maxCount "1"^^xsd:integer ; @@ -149,25 +150,6 @@ types:Hash sh:path types:hashMethod ; sh:severity sh:Warning ; ] , - [ - sh:in ( - "MD5" - "MD6" - "SHA1" - "SHA224" - "SHA256" - "SHA3-224" - "SHA3-256" - "SHA3-384" - "SHA3-512" - "SHA384" - "SHA512" - "SSDEEP" - ) ; - sh:message "Value is not member of the vocabulary HashNameVocab." ; - sh:path types:hashMethod ; - sh:severity sh:Info ; - ] , [ sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; @@ -178,6 +160,27 @@ types:Hash sh:targetClass types:Hash ; . +types:Hash-hashMethod-in-shape + a sh:PropertyShape ; + sh:in ( + "MD5" + "MD6" + "SHA1" + "SHA224" + "SHA256" + "SHA3-224" + "SHA3-256" + "SHA3-384" + "SHA3-512" + "SHA384" + "SHA512" + "SSDEEP" + ) ; + sh:message "Value is not member of the vocabulary HashNameVocab." ; + sh:path types:hashMethod ; + sh:severity sh:Info ; + . + types:Identifier a rdfs:Datatype ; rdfs:comment "An identifier is a string conformant to the specified UUID-based format for UCO object identifiers."@en ; From d524b8eb57549e54eb475f37d2b6ce523815bbbf Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Wed, 26 Feb 2025 10:55:03 -0500 Subject: [PATCH 11/13] Regenerate Make-managed files References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- .../action_inheritance_PASS_validation.ttl | 15 +--- tests/examples/hash_PASS_validation.ttl | 80 +------------------ 2 files changed, 5 insertions(+), 90 deletions(-) diff --git a/tests/examples/action_inheritance_PASS_validation.ttl b/tests/examples/action_inheritance_PASS_validation.ttl index b121487c..eb053a17 100644 --- a/tests/examples/action_inheritance_PASS_validation.ttl +++ b/tests/examples/action_inheritance_PASS_validation.ttl @@ -15,20 +15,7 @@ sh:resultPath action:actionStatus ; sh:resultSeverity sh:Info ; sh:sourceConstraintComponent sh:InConstraintComponent ; - sh:sourceShape [ - sh:in ( - "Complete/Finish" - "Error" - "Fail" - "Ongoing" - "Pending" - "Success" - "Unknown" - ) ; - sh:message "Value is not member of the vocabulary ActionStatusTypeVocab." ; - sh:path action:actionStatus ; - sh:severity sh:Info ; - ] ; + sh:sourceShape action:Action-actionStatus-in-shape ; sh:value "CUSTOM Started" ; ] ; . diff --git a/tests/examples/hash_PASS_validation.ttl b/tests/examples/hash_PASS_validation.ttl index 193a7ada..674ba43e 100644 --- a/tests/examples/hash_PASS_validation.ttl +++ b/tests/examples/hash_PASS_validation.ttl @@ -17,25 +17,7 @@ sh:resultPath types:hashMethod ; sh:resultSeverity sh:Info ; sh:sourceConstraintComponent sh:InConstraintComponent ; - sh:sourceShape [ - sh:in ( - "MD5" - "MD6" - "SHA1" - "SHA224" - "SHA256" - "SHA3-224" - "SHA3-256" - "SHA3-384" - "SHA3-512" - "SHA384" - "SHA512" - "SSDEEP" - ) ; - sh:message "Value is not member of the vocabulary HashNameVocab." ; - sh:path types:hashMethod ; - sh:severity sh:Info ; - ] ; + sh:sourceShape types:Hash-hashMethod-in-shape ; sh:value "CUSTOM_hash" ; ] , [ @@ -45,25 +27,7 @@ sh:resultPath types:hashMethod ; sh:resultSeverity sh:Info ; sh:sourceConstraintComponent sh:InConstraintComponent ; - sh:sourceShape [ - sh:in ( - "MD5" - "MD6" - "SHA1" - "SHA224" - "SHA256" - "SHA3-224" - "SHA3-256" - "SHA3-384" - "SHA3-512" - "SHA384" - "SHA512" - "SSDEEP" - ) ; - sh:message "Value is not member of the vocabulary HashNameVocab." ; - sh:path types:hashMethod ; - sh:severity sh:Info ; - ] ; + sh:sourceShape types:Hash-hashMethod-in-shape ; sh:value "SHA-1" ; ] , [ @@ -88,25 +52,7 @@ sh:resultPath types:hashMethod ; sh:resultSeverity sh:Info ; sh:sourceConstraintComponent sh:InConstraintComponent ; - sh:sourceShape [ - sh:in ( - "MD5" - "MD6" - "SHA1" - "SHA224" - "SHA256" - "SHA3-224" - "SHA3-256" - "SHA3-384" - "SHA3-512" - "SHA384" - "SHA512" - "SSDEEP" - ) ; - sh:message "Value is not member of the vocabulary HashNameVocab." ; - sh:path types:hashMethod ; - sh:severity sh:Info ; - ] ; + sh:sourceShape types:Hash-hashMethod-in-shape ; sh:value "SHA1"^^vocabulary:HashNameVocab ; ] , [ @@ -131,25 +77,7 @@ sh:resultPath types:hashMethod ; sh:resultSeverity sh:Info ; sh:sourceConstraintComponent sh:InConstraintComponent ; - sh:sourceShape [ - sh:in ( - "MD5" - "MD6" - "SHA1" - "SHA224" - "SHA256" - "SHA3-224" - "SHA3-256" - "SHA3-384" - "SHA3-512" - "SHA384" - "SHA512" - "SSDEEP" - ) ; - sh:message "Value is not member of the vocabulary HashNameVocab." ; - sh:path types:hashMethod ; - sh:severity sh:Info ; - ] ; + sh:sourceShape types:Hash-hashMethod-in-shape ; sh:value "1"^^xsd:integer ; ] ; From 68ffd026009ef5ea99df3bec49f045a2e006a77c Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Wed, 26 Feb 2025 14:11:12 -0500 Subject: [PATCH 12/13] Fix logging syntax No effects were observed on Make-managed files. References: * https://docs.python.org/3.9/library/logging.html#logging.Logger.debug Signed-off-by: Alex Nelson --- tests/test_uco_monolithic.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/test_uco_monolithic.py b/tests/test_uco_monolithic.py index 583b42e8..693e145c 100644 --- a/tests/test_uco_monolithic.py +++ b/tests/test_uco_monolithic.py @@ -261,11 +261,9 @@ def test_semi_open_vocabulary_owl_shacl_alignment(graph: Graph) -> None: for (n_class, n_property, n_vocabulary) in computed: logging.error( "* %s and %s, used in %s", - ( - str(n_property), - str(n_vocabulary), - str(n_class), - ) + str(n_property), + str(n_vocabulary), + str(n_class), ) raise From 26a1b944e5e59bd4a8b9e0fd0bf7c1acc7165054 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Wed, 26 Feb 2025 15:22:48 -0500 Subject: [PATCH 13/13] Expand paths to SHACL vocabulary lists No effects were observed on Make-managed files. References: * https://github.com/ucoProject/UCO/issues/629 Signed-off-by: Alex Nelson --- tests/test_uco_monolithic.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/test_uco_monolithic.py b/tests/test_uco_monolithic.py index 693e145c..3503a35e 100644 --- a/tests/test_uco_monolithic.py +++ b/tests/test_uco_monolithic.py @@ -190,8 +190,9 @@ def test_semi_open_vocabulary_owl_shacl_alignment(graph: Graph) -> None: query = """\ SELECT ?nProperty ?nOwlSequence WHERE { + # The owl:unionOf path being optional finds cases like core:objectStatus. ?nProperty - rdfs:range / owl:unionOf / rdf:rest* / rdf:first ?nDatatype ; + rdfs:range / (owl:unionOf / rdf:rest* / rdf:first)? ?nDatatype ; . ?nDatatype a rdfs:Datatype ; @@ -219,12 +220,14 @@ def test_semi_open_vocabulary_owl_shacl_alignment(graph: Graph) -> None: ?nClass sh:property ?nMemberCheckShape ; . + # The sh:or path finds cases like observable:WindowsTaskFacet-priority-in-shape. ?nMemberCheckShape - sh:in ?nShaclList ; + (sh:or / rdf:rest* / rdf:first)? / sh:in ?nShaclList ; sh:path ?nProperty ; . + # The owl:unionOf path being optional finds cases like core:objectStatus. ?nProperty - rdfs:range / owl:unionOf / rdf:rest* / rdf:first ?nDatatype ; + rdfs:range / (owl:unionOf / rdf:rest* / rdf:first)? ?nDatatype ; . ?nDatatype a rdfs:Datatype ;