Skip to content

Commit

Permalink
Transcribe and update proposed concepts from UCO PR
Browse files Browse the repository at this point in the history
The file `drafting.ttl` contains the contents of UCO PR 408, transcribed
for the purpose of SHACL review.

As SHACL review occurred, two more shapes per datatype property were
added to account for validation according to the UCO semi-open
vocabulary design.  See Change Proposal 100 from UCO 0.8.0's release
page to understand this enforcement mechanism.

JSON-LD Knowledge Base concepts in this example were modified to use the
`drafting:` prefix instead of the under-proposal `observable:` and
`vocabulary:`-prefixed concepts.

A follow-on patch will regenerate Make-managed files.

References:
* ucoProject/UCO#408
* https://unifiedcyberontology.org/releases/0.8.0/

Signed-off-by: Alex Nelson <[email protected]>
  • Loading branch information
ajnelson-nist committed Jul 27, 2022
1 parent 836d047 commit 4a31112
Show file tree
Hide file tree
Showing 8 changed files with 260 additions and 20 deletions.
190 changes: 190 additions & 0 deletions examples/illustrations/recoverability/drafting.ttl
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
@prefix core: <https://ontology.unifiedcyberontology.org/uco/core/> .
@prefix drafting: <http://example.org/ontology/drafting/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://example.org/ontology/drafting>
a owl:Ontology ;
.

drafting:UnallocatedRecoverabilityFacet
a
owl:Class ,
sh:NodeShape
;
rdfs:subClassOf core:Facet ;
rdfs:label "UnallocatedRecoverabilityFacet"@en ;
rdfs:comment "Recoverability status of name, metadata, and content."@en ;
rdfs:seeAlso <https://unifiedcyberontology.atlassian.net/browse/ONT-119> ;
sh:property
[
sh:datatype drafting:UnallocatedRecoverabilityStatusVocab ;
sh:message "Value is outside the default vocabulary UnallocatedRecoverabilityStatusVocab." ;
sh:path drafting:nameRecoverabilityStatus ;
sh:severity sh:Info ;
] ,
[
sh:maxCount "1"^^xsd:integer ;
sh:nodeKind sh:Literal ;
sh:or (
[
sh:datatype drafting:UnallocatedRecoverabilityStatusVocab ;
]
[
sh:datatype xsd:string ;
]
) ;
sh:path drafting:nameRecoverabilityStatus ;
] ,
[
sh:message "Value is not member of the vocabulary UnallocatedRecoverabilityStatusVocab." ;
sh:or (
[
sh:datatype drafting:UnallocatedRecoverabilityStatusVocab ;
sh:in (
"recovered"^^drafting:UnallocatedRecoverabilityStatusVocab
"partially recovered"^^drafting:UnallocatedRecoverabilityStatusVocab
"overwritten"^^drafting:UnallocatedRecoverabilityStatusVocab
"unknown"^^drafting:UnallocatedRecoverabilityStatusVocab
) ;
]
[
sh:datatype xsd:string ;
]
) ;
sh:path drafting:nameRecoverabilityStatus ;
] ,
[
sh:datatype drafting:UnallocatedRecoverabilityStatusVocab ;
sh:message "Value is outside the default vocabulary UnallocatedRecoverabilityStatusVocab." ;
sh:path drafting:metadataRecoverabilityStatus ;
sh:severity sh:Info ;
] ,
[
sh:message "Value is not member of the vocabulary UnallocatedRecoverabilityStatusVocab." ;
sh:or (
[
sh:datatype drafting:UnallocatedRecoverabilityStatusVocab ;
sh:in (
"recovered"^^drafting:UnallocatedRecoverabilityStatusVocab
"partially recovered"^^drafting:UnallocatedRecoverabilityStatusVocab
"overwritten"^^drafting:UnallocatedRecoverabilityStatusVocab
"unknown"^^drafting:UnallocatedRecoverabilityStatusVocab
) ;
]
[
sh:datatype xsd:string ;
]
) ;
sh:path drafting:metadataRecoverabilityStatus ;
] ,
[
sh:maxCount "1"^^xsd:integer ;
sh:nodeKind sh:Literal ;
sh:or (
[
sh:datatype drafting:UnallocatedRecoverabilityStatusVocab ;
]
[
sh:datatype xsd:string ;
]
) ;
sh:path drafting:metadataRecoverabilityStatus ;
] ,
[
sh:datatype drafting:UnallocatedRecoverabilityStatusVocab ;
sh:message "Value is outside the default vocabulary UnallocatedRecoverabilityStatusVocab." ;
sh:path drafting:contentRecoverabilityStatus ;
sh:severity sh:Info ;
] ,
[
sh:maxCount "1"^^xsd:integer ;
sh:nodeKind sh:Literal ;
sh:or (
[
sh:datatype drafting:UnallocatedRecoverabilityStatusVocab ;
]
[
sh:datatype xsd:string ;
]
) ;
sh:path drafting:contentRecoverabilityStatus ;
] ,
[
sh:message "Value is not member of the vocabulary UnallocatedRecoverabilityStatusVocab." ;
sh:or (
[
sh:datatype drafting:UnallocatedRecoverabilityStatusVocab ;
sh:in (
"recovered"^^drafting:UnallocatedRecoverabilityStatusVocab
"partially recovered"^^drafting:UnallocatedRecoverabilityStatusVocab
"overwritten"^^drafting:UnallocatedRecoverabilityStatusVocab
"unknown"^^drafting:UnallocatedRecoverabilityStatusVocab
) ;
]
[
sh:datatype xsd:string ;
]
) ;
sh:path drafting:contentRecoverabilityStatus ;
]
;
sh:targetClass drafting:UnallocatedRecoverabilityFacet ;
.


drafting:contentRecoverabilityStatus
a owl:DatatypeProperty ;
rdfs:label "contentRecoverabilityStatus"@en ;
rdfs:comment "Specifies the recoverability status of the content of an object."@en ;
rdfs:range [
a rdfs:Datatype ;
owl:unionOf (
drafting:UnallocatedRecoverabilityStatusVocab
xsd:string
) ;
] ;
.

drafting:metadataRecoverabilityStatus
a owl:DatatypeProperty ;
rdfs:label "metadataRecoverabilityStatus"@en ;
rdfs:comment "Specifies the recoverability status of the metadata of an object."@en ;
rdfs:range [
a rdfs:Datatype ;
owl:unionOf (
drafting:UnallocatedRecoverabilityStatusVocab
xsd:string
) ;
] ;
.

drafting:nameRecoverabilityStatus
a owl:DatatypeProperty ;
rdfs:label "nameRecoverabilityStatus"@en ;
rdfs:comment "Specifies the recoverability status of the name of an object."@en ;
rdfs:range [
a rdfs:Datatype ;
owl:unionOf (
drafting:UnallocatedRecoverabilityStatusVocab
xsd:string
) ;
] ;
.

drafting:UnallocatedRecoverabilityStatusVocab
a rdfs:Datatype ;
rdfs:subClassOf rdfs:Resource ;
rdfs:label "Unallocated Recoverability Status Vocabulary"@en-US ;
rdfs:comment "Defines the vocabulary for unallocated recoverability status of data."@en ;
owl:oneOf (
"recovered"^^drafting:UnallocatedRecoverabilityStatusVocab
"partially recovered"^^drafting:UnallocatedRecoverabilityStatusVocab
"overwritten"^^drafting:UnallocatedRecoverabilityStatusVocab
"unknown"^^drafting:UnallocatedRecoverabilityStatusVocab
) ;
.

4 changes: 4 additions & 0 deletions examples/illustrations/recoverability/src/README.md.in
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ If you need to edit its content, edit src/README.md.in, and then re-run `make` t

# Recoverability Examples

*A file containing all of the JSON-LD content within this page is here: [`recoverability.json`](recoverability.json).*

*A file containing draft ontology concepts is here: [`drafting.ttl`](drafting.ttl).*

There is a requirement to represent the recoverability status of entries in file systems, particularly in digital forensic examinations.
For clarity and completeness, it is necessary to represent the recoverability of unallocated filename, metadata, and content.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,19 @@
"uco-observable:modifiedTime": null
},
{
"@type": "uco-observable:UnallocatedRecoverabilityFacet",
"uco-observable:nameRecoverabilityStatus": "recovered",
"uco-observable:metadataRecoverabilityStatus": "unknown",
"uco-observable:contentRecoverabilityStatus": "unknown"
"@type": "drafting:UnallocatedRecoverabilityFacet",
"drafting:nameRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
},
"drafting:metadataRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "unknown"
},
"drafting:contentRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "unknown"
}
}
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,19 @@
}
},
{
"@type": "uco-observable:UnallocatedRecoverabilityFacet",
"uco-observable:nameRecoverabilityStatus": "recovered",
"uco-observable:metadataRecoverabilityStatus": "recovered",
"uco-observable:contentRecoverabilityStatus": "unknown"
"@type": "drafting:UnallocatedRecoverabilityFacet",
"drafting:nameRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
},
"drafting:metadataRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
},
"drafting:contentRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "unknown"
}
}
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,19 @@
}
},
{
"@type": "uco-observable:UnallocatedRecoverabilityFacet",
"uco-observable:nameRecoverabilityStatus": "recovered",
"uco-observable:metadataRecoverabilityStatus": "recovered",
"uco-observable:contentRecoverabilityStatus": "partially recovered"
"@type": "drafting:UnallocatedRecoverabilityFacet",
"drafting:nameRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
},
"drafting:metadataRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
},
"drafting:contentRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "partially recovered"
}
}
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,19 @@
"uco-observable:sizeInBytes": 712
},
{
"@type": "uco-observable:UnallocatedRecoverabilityFacet",
"uco-observable:nameRecoverabilityStatus": "recovered",
"uco-observable:metadataRecoverabilityStatus": "recovered",
"uco-observable:contentRecoverabilityStatus": "recovered"
"@type": "drafting:UnallocatedRecoverabilityFacet",
"drafting:nameRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
},
"drafting:metadataRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
},
"drafting:contentRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
}
}
]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,19 @@
}
},
{
"@type": "uco-observable:UnallocatedRecoverabilityFacet",
"uco-observable:nameRecoverabilityStatus": "recovered",
"uco-observable:metadataRecoverabilityStatus": "recovered",
"uco-observable:contentRecoverabilityStatus": "unknown"
"@type": "drafting:UnallocatedRecoverabilityFacet",
"drafting:nameRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
},
"drafting:metadataRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "recovered"
},
"drafting:contentRecoverabilityStatus": {
"@type": "drafting:UnallocatedRecoverabilityStatusVocab",
"@value": "unknown"
}
}
]
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"@context": {
"drafting": "http://example.org/ontology/drafting/",
"kb": "http://example.org/kb/",
"uco-core": "https://ontology.unifiedcyberontology.org/uco/core/",
"uco-observable": "https://ontology.unifiedcyberontology.org/uco/observable/",
Expand Down

0 comments on commit 4a31112

Please sign in to comment.