diff --git a/dependencies/UCO-unstable b/dependencies/UCO-unstable
index 296497e1..08ef73c8 160000
--- a/dependencies/UCO-unstable
+++ b/dependencies/UCO-unstable
@@ -1 +1 @@
-Subproject commit 296497e103b048c44f3376831f675aaa746fc60e
+Subproject commit 08ef73c8acc4cf4f105dbfa3c39a82b5241add40
diff --git a/examples/urgent_evidence/src/urgent_evidence_validation-unstable.ttl b/examples/urgent_evidence/src/urgent_evidence_validation-unstable.ttl
index e7eba886..2a4fcc58 100644
--- a/examples/urgent_evidence/src/urgent_evidence_validation-unstable.ttl
+++ b/examples/urgent_evidence/src/urgent_evidence_validation-unstable.ttl
@@ -1,27 +1,628 @@
@prefix action: .
@prefix core: .
+@prefix dcterms: .
+@prefix observable: .
@prefix owl: .
@prefix rdf: .
@prefix rdfs: .
@prefix sh: .
+@prefix skos: .
+@prefix types: .
+@prefix vocabulary1: .
@prefix xsd: .
[]
a sh:ValidationReport ;
sh:conforms "false"^^xsd:boolean ;
- sh:result [
- a sh:ValidationResult ;
- sh:focusNode ;
- sh:resultMessage "Value does not have class core:UcoObject" ;
- sh:resultPath action:object ;
- sh:resultSeverity sh:Violation ;
- sh:sourceConstraintComponent sh:ClassConstraintComponent ;
- sh:sourceShape [
- sh:class core:UcoObject ;
- sh:nodeKind sh:BlankNodeOrIRI ;
- sh:path action:object ;
- ] ;
- sh:value ;
- ] ;
+ sh:result
+ [
+ a sh:ValidationResult ;
+ sh:focusNode ;
+ sh:resultMessage "Value does not have class core:UcoObject" ;
+ sh:resultPath action:object ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class core:UcoObject ;
+ sh:nodeKind sh:BlankNodeOrIRI ;
+ sh:path action:object ;
+ ] ;
+ sh:value ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode "image/jpeg" ;
+ sh:resultMessage "The used mimeType value is not a concept with a skos:notation. Some consumers of this data expect a string with the MIME 'type/subtype' format to be supplied with skos:notation. Please either add the skos:notation to your input graph or incorporate the UCO MIME Taxonomy."@en ;
+ sh:resultPath skos:notation ;
+ sh:resultSeverity sh:Warning ;
+ sh:sourceConstraintComponent sh:MinCountConstraintComponent ;
+ sh:sourceShape observable:mimeType-notation ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "132bfadcc46addedcafcd84653f1a56007eba2f27bfcb15824536cda65a49c9a"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "3777924"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value does not have class dcterms:FileFormat" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "132bfadcc46addedcafcd84653f1a56007eba2f27bfcb15824536cda65a49c9a"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "3777924"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape observable:mimeType-class-types-MIMEFormat ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "132bfadcc46addedcafcd84653f1a56007eba2f27bfcb15824536cda65a49c9a"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "3777924"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not of Node Kind sh:IRI" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "1929ec6c6186f43860da7c77c0c65d1b8543a5543572261a1b71084e7bf80a0e"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "5010291"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value does not have class dcterms:FileFormat" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "1929ec6c6186f43860da7c77c0c65d1b8543a5543572261a1b71084e7bf80a0e"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "5010291"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape observable:mimeType-class-types-MIMEFormat ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "1929ec6c6186f43860da7c77c0c65d1b8543a5543572261a1b71084e7bf80a0e"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "5010291"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not of Node Kind sh:IRI" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73a43362938b9824"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "3963541"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value does not have class dcterms:FileFormat" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73a43362938b9824"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "3963541"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape observable:mimeType-class-types-MIMEFormat ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73a43362938b9824"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "3963541"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not of Node Kind sh:IRI" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "6ba5b138057cca4e737a86083cf28426093f218efbef64967863a6c83138fe89"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4929041"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value does not have class dcterms:FileFormat" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "6ba5b138057cca4e737a86083cf28426093f218efbef64967863a6c83138fe89"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4929041"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape observable:mimeType-class-types-MIMEFormat ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "6ba5b138057cca4e737a86083cf28426093f218efbef64967863a6c83138fe89"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4929041"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not of Node Kind sh:IRI" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "9a171853eee9f8162e480b28c36f7619a2db8539ccfee849b8ec0068aef53789"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4007352"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value does not have class dcterms:FileFormat" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "9a171853eee9f8162e480b28c36f7619a2db8539ccfee849b8ec0068aef53789"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4007352"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape observable:mimeType-class-types-MIMEFormat ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "9a171853eee9f8162e480b28c36f7619a2db8539ccfee849b8ec0068aef53789"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4007352"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not of Node Kind sh:IRI" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "a49f0716e610bd0f77543b1e7ca7613e9b31bf32509e854c7ba65b79be502a18"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "2964571"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value does not have class dcterms:FileFormat" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "a49f0716e610bd0f77543b1e7ca7613e9b31bf32509e854c7ba65b79be502a18"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "2964571"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape observable:mimeType-class-types-MIMEFormat ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "a49f0716e610bd0f77543b1e7ca7613e9b31bf32509e854c7ba65b79be502a18"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "2964571"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not of Node Kind sh:IRI" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "cadc54f42a9d01ecb5ecdc3a9a4824c73301d6ce9857eaa73fc28317ccd5d40f"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4491816"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value does not have class dcterms:FileFormat" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "cadc54f42a9d01ecb5ecdc3a9a4824c73301d6ce9857eaa73fc28317ccd5d40f"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4491816"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape observable:mimeType-class-types-MIMEFormat ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "cadc54f42a9d01ecb5ecdc3a9a4824c73301d6ce9857eaa73fc28317ccd5d40f"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4491816"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not of Node Kind sh:IRI" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "ee3657ad73c09098312e71a31ca7ac468c1fb1b998b5d6647ad471dcc89c4141"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "3236101"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value does not have class dcterms:FileFormat" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "ee3657ad73c09098312e71a31ca7ac468c1fb1b998b5d6647ad471dcc89c4141"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "3236101"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape observable:mimeType-class-types-MIMEFormat ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "ee3657ad73c09098312e71a31ca7ac468c1fb1b998b5d6647ad471dcc89c4141"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "3236101"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not of Node Kind sh:IRI" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "fc0819ed4dcb2af9c85a041a0da11ea6a146dec0b108c09f5e0d41e8ea3bb041"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4565505"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value does not have class dcterms:FileFormat" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "fc0819ed4dcb2af9c85a041a0da11ea6a146dec0b108c09f5e0d41e8ea3bb041"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4565505"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Info ;
+ sh:sourceConstraintComponent sh:ClassConstraintComponent ;
+ sh:sourceShape observable:mimeType-class-types-MIMEFormat ;
+ sh:value "image/jpeg" ;
+ ] ,
+ [
+ a sh:ValidationResult ;
+ sh:focusNode [
+ a observable:ContentDataFacet ;
+ observable:hash [
+ a types:Hash ;
+ types:hashMethod "SHA256"^^vocabulary1:HashNameVocab ;
+ types:hashValue "fc0819ed4dcb2af9c85a041a0da11ea6a146dec0b108c09f5e0d41e8ea3bb041"^^xsd:hexBinary ;
+ ] ;
+ observable:mimeType "image/jpeg" ;
+ observable:sizeInBytes "4565505"^^xsd:integer ;
+ ] ;
+ sh:resultMessage "Value is not of Node Kind sh:IRI" ;
+ sh:resultPath observable:mimeType ;
+ sh:resultSeverity sh:Violation ;
+ sh:sourceConstraintComponent sh:NodeKindConstraintComponent ;
+ sh:sourceShape [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ;
+ sh:value "image/jpeg" ;
+ ]
+ ;
.
diff --git a/ontology/CASE-unstable.ttl b/ontology/CASE-unstable.ttl
index 6a187487..2d9f431b 100644
--- a/ontology/CASE-unstable.ttl
+++ b/ontology/CASE-unstable.ttl
@@ -1,3 +1,4 @@
+# imports: http://www.w3.org/TR/skos-reference/skos-owl1-dl.rdf
# imports: https://ontology.caseontology.org/case/investigation
# imports: https://ontology.caseontology.org/case/vocabulary
# imports: https://ontology.unifiedcyberontology.org/uco/action
@@ -17,7 +18,7 @@
@prefix action: .
@prefix core: .
-@prefix dct: .
+@prefix dcterms: .
@prefix identity: .
@prefix investigation: .
@prefix location: .
@@ -29,6 +30,7 @@
@prefix rdfs: .
@prefix role: .
@prefix sh: .
+@prefix skos: .
@prefix time1: .
@prefix tool: .
@prefix types: .
@@ -41,7 +43,7 @@
a owl:Ontology ;
rdfs:label "case-master"@en ;
rdfs:comment "The Cyber-investigation Analysis Standard Expression (CASE) ontology is a community-developed standard that defines concepts used in a broad range of cyber-investigation domains, including digital forensic science, incident response, counter-terrorism, criminal justice, forensic intelligence, and situational awareness. CASE includes all aspects of the digital forensic process, from evidence-gathering and chain of custody, to generating a final report. The goal is to increase sharing and interoperability of cyber-investigation information among organizations and between forensic analytic tools. CASE aligns with and extends the Unified Cyber Ontology (UCO). The preferred namespace abbreviation for this ontology is: case-master."@en ;
- dct:title "Cyber-investigation Analysis Standard Expression (CASE)"@en ;
+ dcterms:title "Cyber-investigation Analysis Standard Expression (CASE)"@en ;
owl:imports
,
,
@@ -88,6 +90,7 @@
a owl:Ontology ;
rdfs:label "uco-core"@en ;
rdfs:comment "This ontology defines classes and properties that are shared across the various UCO ontologies. At a high-level, the UCO core ontology provides base classes, relationship-oriented classes, content-aggregation classes, and shared classes."@en ;
+ owl:imports ;
.
@@ -162,6 +165,7 @@
a owl:Ontology ;
rdfs:label "uco-master"@en ;
owl:imports
+ ,
,
,
,
@@ -193,6 +197,11 @@
rdfs:label "uco-vocabularies"@en ;
.
+dcterms:FileFormat
+ a owl:Class ;
+ rdfs:comment "UCO extends dcterms:FileFormat to be an OWL Class in addition to its native definition of an RDF Class."@en ;
+ .
+
investigation:Attorney
a
owl:Class ,
@@ -1295,6 +1304,13 @@ core:Relationship
sh:targetClass core:Relationship ;
.
+core:TaxonomicConcept
+ a owl:Class ;
+ rdfs:subClassOf skos:Concept ;
+ rdfs:label "TaxonomicConcept"@en ;
+ rdfs:comment "Taxonomic Concept is a mix-in class that enables UCO as an OWL ontology to use SKOS taxonomic individuals. [based on https://www.w3.org/2006/07/SWD/SKOS/skos-and-owl/master.html#Hybrids]"@en ;
+ .
+
core:UcoObject
a
owl:Class ,
@@ -3998,6 +4014,11 @@ 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
+ [
+ sh:class dcterms:FileFormat ;
+ sh:nodeKind sh:IRI ;
+ sh:path observable:mimeType ;
+ ] ,
[
sh:class observable:ObservableObject ;
sh:maxCount "1"^^xsd:integer ;
@@ -4045,11 +4066,6 @@ observable:ContentDataFacet
sh:nodeKind sh:Literal ;
sh:path observable:mimeClass ;
] ,
- [
- sh:datatype xsd:string ;
- sh:nodeKind sh:Literal ;
- sh:path observable:mimeType ;
- ] ,
[
sh:datatype vocabulary1:EndiannessTypeVocab ;
sh:message "Value is outside the default vocabulary EndiannessTypeVocab." ;
@@ -5137,13 +5153,6 @@ observable:FileFacet
rdfs:label "FileFacet"@en ;
rdfs:comment "A file facet is a grouping of characteristics unique to the storage of a file (computer resource for recording data discretely in a computer storage device) on a file system (process that manages how and where data on a storage device is stored, accessed and managed). [based on https://en.wikipedia.org/Computer_file and https://www.techopedia.com/definition/5510/file-system]"@en ;
sh:property
- [
- rdfs:comment "When used to characterize a file the sizeInBytes property conveys the recorded size of a file in a file system."@en ;
- sh:datatype xsd:integer ;
- sh:maxCount "1"^^xsd:integer ;
- sh:nodeKind sh:Literal ;
- sh:path observable:sizeInBytes ;
- ] ,
[
sh:datatype xsd:boolean ;
sh:nodeKind sh:Literal ;
@@ -5173,6 +5182,13 @@ observable:FileFacet
sh:nodeKind sh:Literal ;
sh:path observable:observableCreatedTime ;
] ,
+ [
+ sh:datatype xsd:integer ;
+ sh:description "When used to characterize a file the sizeInBytes property conveys the recorded size of a file in a file system."@en ;
+ sh:maxCount "1"^^xsd:integer ;
+ sh:nodeKind sh:Literal ;
+ sh:path observable:sizeInBytes ;
+ ] ,
[
sh:datatype xsd:string ;
sh:maxCount "1"^^xsd:integer ;
@@ -13214,10 +13230,37 @@ observable:mimeClass
.
observable:mimeType
- a owl:DatatypeProperty ;
+ a owl:ObjectProperty ;
rdfs:label "mimeType"@en ;
- rdfs:comment "MIME type of the data. For example 'text/html' or 'audio/mp3'."@en ;
- rdfs:range xsd:string ;
+ rdfs:comment "MIME type of the data. The text form of '${type}/${subtype}' (for example, 'text/html' or 'audio/mp3') can be used to find a UCO-provisioned set of types from the UCO Media Types Taxonomy. For interoperability with non-UCO resources, dcterms:FileFormat is this property's required range. The more-specific UCO classes types:IANAMediaType or types:NonIANAMediaType should be used when available."@en ;
+ rdfs:range dcterms:FileFormat ;
+ rdfs:seeAlso
+ types:IANAMediaType ,
+ types:NonIANAMediaType ,
+
+ ;
+ .
+
+observable:mimeType-class-types-MIMEFormat
+ a sh:PropertyShape ;
+ rdfs:comment "This shape is given an IRI in order to facilitate deactivation on request."@en ;
+ rdfs:seeAlso sh:deactivated ;
+ sh:class types:MIMEFormat ;
+ sh:message "Value is not an instance of types:MIMEFormat or one of its subclasses. Please consider using a value having type types:IANAMediaType or types:NonIANAMediaType."@en ;
+ sh:path observable:mimeType ;
+ sh:severity sh:Info ;
+ sh:targetSubjectsOf observable:mimeType ;
+ .
+
+observable:mimeType-notation
+ a sh:PropertyShape ;
+ rdfs:comment "This shape is intended to be deactivated by using overriding shapes in the UCO Mime Taxonomy."@en ;
+ rdfs:seeAlso ;
+ sh:message "The used mimeType value is not a concept with a skos:notation. Some consumers of this data expect a string with the MIME 'type/subtype' format to be supplied with skos:notation. Please either add the skos:notation to your input graph or incorporate the UCO MIME Taxonomy."@en ;
+ sh:minCount "1"^^xsd:integer ;
+ sh:path skos:notation ;
+ sh:severity sh:Warning ;
+ sh:targetObjectsOf observable:mimeType ;
.
observable:minorImageVersion
@@ -15841,16 +15884,41 @@ types:Hash
sh:targetClass types:Hash ;
.
+types:IANAMediaType
+ a owl:Class ;
+ rdfs:subClassOf types:MIMEFormat ;
+ rdfs:label "IANAMediaType"@en ;
+ owl:disjointWith types:NonIANAMediaType ;
+ .
+
types:Identifier
a rdfs:Datatype ;
rdfs:comment "An identifier is a string conformant to the specified UUID-based format for UCO object identifiers."@en ;
.
+types:MIMEFormat
+ a owl:Class ;
+ rdfs:subClassOf
+ dcterms:FileFormat ,
+ core:TaxonomicConcept
+ ;
+ rdfs:label "MIMEFormat"@en ;
+ rdfs:comment "This class should be considered an intermediary, 'abstract' class, and should not have individuals defined that are not a member of one of its subclasses. This class has two purposes. First, to encode for interoperability with existing frameworks, without relying on RDFS inference, that a UCO MIMEFormat individual is both a SKOS Concept (via core:TaxonomicConcept) and Dublin Core Terms FileFormat. Second, to guarantee a concept to be used as a UCO MIME type has exactly one skos:notation. Note that strict SHACL enforcement of the skos:notation presence is not within the UCO Types ontology, but is instead a part of the shapes provided by the UCO MIME Taxonomy. The warning about skos:notation in the Observable namespace is deactivated on importing the taxonomy's shapes."@en ;
+ rdfs:seeAlso observable:mimeType-notation ;
+ .
+
types:NativeFormatString
a rdfs:Datatype ;
rdfs:comment "Specifies data in its native format of some external language. The data may be encoded in Base64 per [RFC4648]. Data encoded in Base64 must be denoted as such using the encoded property."@en ;
.
+types:NonIANAMediaType
+ a owl:Class ;
+ rdfs:subClassOf types:MIMEFormat ;
+ rdfs:label "NonIANAMediaType"@en ;
+ owl:disjointWith types:IANAMediaType ;
+ .
+
types:StructuredText
a rdfs:Datatype ;
rdfs:comment "Expresses string-based data in some information structuring format (e.g., HTML5)."@en ;