UCO 0.7.0 is primarily focused on the conversion of UCO ontologies to leverage the Shapes Constraint Language (SHACL) rather than domain assertions and owl property restrictions to define class shapes. In addition, it added a continuous integration (CI) method for testing and verifying the ontology and it corrects several minor issues and bugs.
[CP-23] Convert current property restrictions and domain assertions to SHACL shapes
[CP-39] Establish unit tests and Continuous Integration for ontology repository
[CP-46] Change range of observable:partitionID from xsd:integer to xsd:string within DiskPartitionFacet
[CP-48] Correct RDFS concept IRI typos introduced in UCO 0.6.0
[CP-53] Fix URI typo in core:ExternalReference and observable:OnlineServiceFacet
[CP-54] Add clarifying comment to use of observable:sizeInBytes on observable:FileFacet
[CP-55] Change definition of core:specVersion to include subontologies
[CP-57] Change name of identity:CountriesOfResidence to conform to naming standard
[CP-58] Modify range of observable:clockSetting from xsd:string to xsd:dateTime
[CP-59] Modify cardinality of observable:hasChanged on observable:ObservableObject from 1 to 0..1
[CP-62] Correct misuse of identity:Identity and marking:MarkingDefinition within the core namespace
[CP-64] Remove observable:faxNumber
[CP-66] Remove core:role
[CP-67] observable:region_end_address is a typo within obervable-da.ttl
[CP-69] Fix several typos within observable.ttl prior to SHACL release
[CP-73] observable:status property is being used in multiple classes with multiple datatypes
[CP-74] observable:priority is used across multiple context with multiple datatypes
[CP-76] Range of observable:owner should only be core:UcoObject
[CP-77] types:entry has multiple contexts with multiple datatypes
[CP-78] observable:listedCount was not created during the implementation of CP-7
UCO now runs a Continuous Integration test suite as part of its ontology pull request review [CP-39]
Continuous Integration tests now include SHACL-specific tests:
Validation of passing and expected-failing example data [CP-23]
Review of property-shape compatibility between subclasses and superclasses [CP-23]
Review of property shape datatype constraint validity [CP-79]
all namespaces: converted the entire UCO ontology to SHACL [CP-23]
all namespaces: UCO’s SHACL conversion converted OWL qualified cardinality statements (e.g. owl:maxQualifiedCardinality) to unqualified SHACL minima and maxima (e.g. sh:max). [CP-23]
uco-identity: modified the subclass of identity:Identity from core:UcoObject to core:IdentityAbstraction [CP-62]
uco-marking: modified the subclass of marking:MarkingDefinition from core:UcoObject to core:MarkingDefinitionAbstraction [CP-62]
uco-observable: modified observable:nameserver to be observable:nameServer [CP-52]
uco-observable: modified observable:NTFSFileSystemFacet to be observable:NTFSFileFacet [CP-38]
uco-identity: renamed identity:CountriesOfResidenceFacet to identity:CountryOfResidenceFacet [CP-57]
uco-observable: renamed observable:region_end_address to observable:regionEndAddress (within the obsolete observable-da.ttl file) [CP-67]
uco-observable: renamed observable:NetworkConnetion to observable:NetworkConnection [CP-69]
uco-observable: renamed all instances of core:DigitalAddressFacet to observable:DigitalAddressFacet [CP-69]
uco-observable: renamed all instances of core:IPAddressFacet to observable:IPAdressFacet [CP-69]
uco-observable: renamed all instances of core:MACAddressFacet to observable:MACAddressFacet [CP-69]
uco-observable: modified the rdfs:subClassOf observable:SymbolicLink to be observable:FileSystemObject [CP-69]
uco-observable: modified the range of observable:partitionID from xsd:integer to xsd:string [CP-46]
uco-observable: modified the range of observable:clockSetting from xsd:string to xsd:dateTime [CP-58]
uco-core: modified the range of core:createdBy from identity:Identity to core:IdentityAbstraction [CP-62]
uco-core: modified the range of core:objectMarking from marking:MarkingDefinition to core:MarkingDefinitionAbstraction [CP-62]
uco-observable: modified the range of observable:mockLocationsAllowed to only include xsd:boolean [CP-72]
uco-observable: modified the range of observable:phoneActivationTime to only include xsd:dateTime [CP-72]
uco-observable: modified the range of observable:status to be an owl:unionOf xsd:string, vocabulary:TaskStatusVocab and vocabulary:WhoisStatusTypeVocab [CP-73]
uco-observable: modified the range of the observable:status property restriction on observable:WindowsTaskFacet to only include vocabulary:TaskStatusVocab [CP-73]
uco-observable: modified the range of the observable:status property restriction on observable:ProcessFacet to only include xsd:string [CP-73]
uco-observable: modified the range of observable:priority to be an owl:unionOf xsd:string, xsd:integer, and vocabulary:TaskPriorityVocab [CP-74]
uco-observable: modified the range of the observable:priority property restriction on observable:WindowsTaskFacet to only include vocabulary:TaskPriorityVocab [CP-74]
uco-observable: modified the range of the observable:priority property restriction on observable:WindowsThreadFacet to only include xsd:integer [CP-74]
uco-observable: modified the range of observable:WindowsPESection to only include xsd:double [CP-75]
uco-observable: modified the range of observable:owner to only include core:UcoObject [CP-76]
updated all classes where observable:owner was used as a property restriction
observable:AccountFacet
observable:CalendarEntryFacet
observable:CalendarFacet
observable:FilePermissionsFacet
uco-types: modified the range of types:entry to be an owl:unionOf types:ControlledDictionaryEntry and types:DictionaryEntry [CP-77]
uco-types: modified the range of the types:entry property restriction on types:ControlledDictionaryEntry to only include types:ControlledDictionaryEntry [CP-77]
uco-observable: modified name of property restriction for observable:ContactAddress from observable:observable:geolocationAddress to observable:geolocationAddress [CP-5]
uco-observable: modified names of property restrictions for observable:ContactAffiliation [CP-5]
from observable:observable:organizationDepartment to observable:organizationDepartment
from observable:observable:organizationPosition to observable:organizationPosition
from observable:observable:organizationLocatoin to observable:organizationLocation
from observable:observable:contactEmail to observable:contactEmail
from observable:observable:contactMessaging to observable:contactMessaging
from observable:observable:contactPhone to observable:contactPhone
from observable:observable:contactProfile to observable:contactProfile
from observable:observable:contactURL to observable:contactURL
uco-observable: modified name of property restriction for observable:ContactEmail from observable:observable:emailAddress to observable:emailAddress [CP-5]
uco-observable: modified name of property restriction for observable:ContactListFacet from observable:observable:sourceApplication to observable:sourceApplication [CP-5]
uco-observable: modified names of property restrictions for observable:ContactMessaging [CP-5]
from observable:observable:contactAddress to observable:contactAddress
from observable:observable:contactMessagingPlatform to observable:contactMessagingPlatform
uco-observable: modified name of property restriction for observable:ContactPhone from observable:observable:contactPhoneNumber to observable:contactPhoneNumber [CP-5]
uco-observable: modified name of property restriction for observable:ContactSIP from observable:observable:sipAddress to observable:sipAddress [CP-5]
uco-observable: modified name of property restriction for observable:ContactURL from observable:observable:url to observable:url [CP-5]
uco-core: modified the cardinality of the core:id property restriction on core:UcoObject from exactly 1 to at most 1 [CP-63]
uco-core: modified owl:onClass for the core:createdBy property restriction on core:UcoObject to be core:IdentityAbstraction [CP-63]
uco-observable: renamed observable:profilelanguage to observable:profileLanguage [CP-65]
uco-core: changed the URI’s within the property restrictions for core:ExternalReference to use namespace prefixes (i.e., “core:{property}”) [CP-53]
owl:onProperty <https://unifiedcyberontology/ontology/uco/core#definingContext> became owl:onProperty core:definingContext
owl:onProperty <https://unifiedcyberontology/ontology/uco/core#externalIdentifier> became owl:onProperty core:externalIdentifier
owl:onProperty <https://unifiedcyberontology/ontology/uco/core#referenceURL> became own:onProperty core:referenceURL
uco-observable: changed the URI’s within the property restrictions for observable:OnlineService to use namespace prefixes (i.e., “observable:{property}”) [CP-53]
owl:onProperty <https://unifiedcyberontlogy/ontology/uco/observable#inetLocation> became owl:onProperty observable:inetLocation
owl:onProperty <https://unifiedcyberontology/ontology/uco/observable#location> became owl:onProperty observable:location
uco-observable: fixed typos within the rdfs:subClassOf statement of a few class objects [CP-48]
observable:GeoLocationEntry: subclass now reads rdfs:subClassOf observable:ObservableObject
observable:OnlineService: subclass now reads rdfs:subClassOf observable:ObservableObject
observable:Snapshot: subclass now reads rdfs:subClassOf observable:ObservableObject
uco-observable: modified the cardinality for observable:hasChanged from exactly 1 to at most 1 [CP-59]
all namespaces: removed all domain assertion files (*-da.ttl) with the implementation of SHACL [CP-23]
all namespaces: removed all owl:restriction property constraints on files and replaced with SHACL property shapes [CP-23]
uco-core: removed reference to identity:Identity [CP-62]
uco-core: removed reference to marking:MarkingDefinition [CP-62]
uco-observable: removed observable:faxNumber [CP-64]
uco-core: removed core:role [CP-66]
uco-core: added the class core:IdentityAbstraction as a subclass of core:UcoObject [CP-62]
uco-core: added the class core:MarkingDefinitionAbstraction as a subclass of core:UcoObject [CP-62]
uco-observable: added the property observable:listedCount with a range of xsd:integer [CP-78]
uco-core: changed rdfs:comment for core:object to read “Specifies one or more UcoObjects.” [CP-60]
uco-observable: changed rdfs:comment for observable:owner to read “Specifies the owner of an Observable Object.” [CP-60]
uco-observable: changed rdfs:comment for observable:password to read “Specifies an authentication password.” [CP-60]
uco-core: modified the rdfs:comment for core:specVersion to read “The version of UCO ontology or subontology specification used to characterize a concept.” [CP-55]
uco-observable: added an rdfs:comment to observable:sizeInBytes within the property restriction of observable:FileFacet [CP-54]
Any UCO instance content asserting not only a value for the core:kindOfRelationship property on a core:Relationship object but also asserting a specific vocabulary datatype for it will generate a SHACL validation error as the sh:datatype constraint in the ontology is defined as xsd:string due to the intentional general nature of the core:kindOfRelationship property. This is “correct” behavior though unsatisfying from a validation perspective for adopters wishing to be very specific in their content. There is potential for future adjustments to the SHACL to maintain “correct” validation but also to make it a little more satisfying for explicitly specific adopters.
Validation for any graph of UCO content containing references (ObjectProperties) to objects (by object ID) where the objects themselves are not explicitly defined in the graph (e.g., references to externally defined content such as linked data or previously defined but not repeated content) will generate SHACL class validation errors given that the graph does not contain enough information for the validator to determine the asserted class of the object by its ID alone. Further investigation, discussion and consideration will be required to determine how this issue will be addressed in future versions of UCO.
Document generated by Confluence on Aug 18, 2021 18:14