Date: 2025-05-28
UCO 1.4.0 incorporates required refinements and updates, building on the stable 1.0.0 release. Following SemVer, additive improvements will continue to be accepted, but backwards-incompatible changes will be scheduled only for the 2.0.0 release, which will come after at least 6 months to possibly 12 months.
This release includes additive updates and further preparations for backwards-incompatible changes in preparation for UCO 2.0.0.
Additions include new classes and properties, and new placements for some existing properties. The types:Dictionary
class now has specializations to handle when a dictionary must have unique keys, and/or detect when a conflicting second assignment for a key is present (enacted with classes types:ProperDictionary
and types:ImproperDictionary
), in response to finding an ambiguity in the pre-1.4.0 definition of types:Dictionary
. core:informalType
now unifies properties that are used to describe an object’s type with an unrestricted or semi-restricted string. core:objectStatus
is added to optionally house a graph node’s implementation status. observable:Device
s now have CPEs associable in observable:DeviceFacet
, consistent with the CPE Naming Specification, Version 2.3 (NIST IR 7695).
One relaxation put into place is that core:ContextualCompilation
is now permitted to have no members, for instances when the definition context constrains away the possibility for members. E.g., a contextual compilation can now be recorded of files in a certain directory that happens to be empty.
Coming backwards-incompatible changes include some class rearrangement, link constraining, and a semi-open vocabulary usage revision (with the vocabulary matter described in the following subsection). Several classes have had their position in the class hierarchy position adjusted (observable:AlternateDataStream
, observable:Disk
, and observable:OperatingSystem
). Disjointedness declarations that weren’t previously encoded outside of an OWL statement are now started with a SHACL warning-level check. observable:ObservableRelationship
now warns if non-observable:Observable
s are the related things.
One new data behavior likely to catch user attention is a warning, which will become an error in UCO 2.0.0, around semi-open vocabulary syntax forms. Generally, Literals that were using a UCO (or CASE) semi-open vocabulary datatype will now typed as xsd:string
, which, as the default datatype for RDF Literals, generally relieves the need for datatype annotations on these vocabulary Literals. For example, this would be how a uco-types:Hash
was represented prior to UCO 1.4.0:
{
"@context": {
"kb": "http://example.org/kb/",
"uco-types": "https://ontology.unifiedcyberontology.org/uco/types/",
"uco-vocabulary": "https://ontology.unifiedcyberontology.org/uco/vocabulary/",
"xsd": "http://www.w3.org/2001/XMLSchema#"
},
"@graph": [
{
"@id": "kb:Hash-6c971341-17c9-46cd-ab32-d274fd064c9b",
"@type": "uco-types:Hash",
"uco-types:hashMethod": {
"@type": "uco-vocabulary:HashNameVocab",
"@value": "SHA3-256"
},
"uco-types:hashValue": {
"@type": "xsd:hexBinary",
"@value": "a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a"
}
}
]
}
This is how a uco-types:Hash
will be represented at and after UCO 1.4.0. Note the reduction in uco-types:hashMethod
.
{
"@context": {
"kb": "http://example.org/kb/",
"uco-types": "https://ontology.unifiedcyberontology.org/uco/types/",
"xsd": "http://www.w3.org/2001/XMLSchema#"
},
"@graph": [
{
"@id": "kb:Hash-6c971341-17c9-46cd-ab32-d274fd064c9b",
"@type": "uco-types:Hash",
"uco-types:hashMethod": "SHA3-256",
"uco-types:hashValue": {
"@type": "xsd:hexBinary",
"@value": "a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a"
}
}
]
}
See (UCO GitHub Issue 629) for further descriptions and motivations of this revision.
(These are changes to ontologies, classes or properties in the preexisting ontology that make the new release non-backward-compatible.)
UCO 2.0.0 will consider the following breaking changes. They are implemented in UCO 1.4.0 as “Warning”-level SHACL violations; in 2.0.0, they will be “Error”-level.
ObservableRelationship
are not Observable
s (GitHub Issue 573)core:
and types:
(GitHub Issue 586)AlternateDataStream
instance is not also a FileSystemObject
(GitHub Issue 590)observable:Disk
instance is not also a observable:StorageMedium
(GitHub Issue 612)OperatingSystem
instance is not also a Software
(GitHub Issue 632)(These are changes to ontologies, classes or properties in the preexisting ontology.)
core:objectStatus
(GitHub Issue 549)core:ContextualCompilation
(GitHub Issue 599)types:Dictionary
(GitHub Issue 602)
types:Dictionary
, types:ProperDictionary
and types:ImproperDictionary
types:Dictionary
, with “Warning”-level SHACL violations raised if repeated keys are foundtypes:ProperDictionary
types:Dictionary
to separate expectation of key uniqueness in types:Dictionary
from formally validated requirement in types:ProperDictionary
observable:cpeid
to observable:DeviceFacet
(GitHub Issue 624)core:informalType
and linked as parent of type-describing properties (GitHub Issue 640)(These are bugs found within the preexisting ontology that have been fixed.)
owl:Datatype
(GitHub Issue 584)owl:onDatatype
from vocabulary definitions (GitHub Issue 593)Generated documentation is available at this site:
https://ontology.unifiedcyberontology.org/
Be aware that the documentation at that site will only show the most recent release. The upper-left corner of the documentation pages shows the ontology version being reviewed.
After the following UCO release, users interested seeing the rendered documentation at this version “Back in time” should locally clone the repository, check out this branch, and follow the deployment directions in CONTRIBUTE.md
.