From 7b18ba1df271d9bce53bcf9fe29c4d7754ed0691 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Fri, 16 Apr 2021 17:05:59 -0400 Subject: [PATCH 01/94] Implement CI based on rdf-toolkit and 'make check' design pattern Tests are implemented base on CASE normalization practices, and by adapting a recursive-Make normalization pattern from the CASE-Examples-QC repository. `lib/Makfile` was copied directly from CASE 0.3.0. `src/review.mk` was adapted from the CASE-Examples-QC repository's `normalize` recipe. It now uses GNU Make functionality to identify ontology file directories and sometimes-present Turtle files (esp. `*-da.ttl`), instead of hard-coding file references that might be forgotten to be updated over time. References: * [CASE ONT-251] (CP-16) Establish unit tests, possibly Continuous Integration, for ontology repository * [CASE-Examples-QC] https://github.com/ajnelson-nist/CASE-Examples-QC * [OC-98] (CP-39) UCO should implement CI including at least rdf-toolkit runs Signed-off-by: Alex Nelson --- .github/workflows/ci.yml | 33 ++++++++++++++++++++ .gitignore | 3 ++ Makefile | 59 +++++++++++++++++++++++++++++++++++ lib/Makefile | 46 ++++++++++++++++++++++++++++ lib/rdf-toolkit.jar.sha512 | 1 + src/review.mk | 63 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 205 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 lib/Makefile create mode 100644 lib/rdf-toolkit.jar.sha512 create mode 100644 src/review.mk diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..bebcf362 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,33 @@ +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +# This workflow uses Make to confirm ontology files have been +# normalized. + +name: Continuous Integration + +on: + push: + branches: [ master, develop ] + pull_request: + branches: [ master, develop ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Start from clean state + run: make clean + - name: Run tests + run: make check diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..82ed6519 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.jar +.*.ttl +.lib.done.log diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..062c402e --- /dev/null +++ b/Makefile @@ -0,0 +1,59 @@ +#!/usr/bin/make -f + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +SHELL := /bin/bash + +turtle_directories := $(wildcard uco-*) + +all_directories := $(foreach turtle_directory,$(turtle_directories),all-$(turtle_directory)) + +check_directories := $(foreach turtle_directory,$(turtle_directories),check-$(turtle_directory)) + +clean_directories := $(foreach turtle_directory,$(turtle_directories),clean-$(turtle_directory)) + +all: \ + $(all_directories) + +all-%: \ + % \ + .lib.done.log + $(MAKE) \ + --directory $< \ + --file $$PWD/src/review.mk + +.lib.done.log: + $(MAKE) \ + --directory lib + touch $@ + +check: \ + $(check_directories) + +check-%: \ + % \ + .lib.done.log + $(MAKE) \ + --directory $< \ + --file $$PWD/src/review.mk \ + check + +clean: \ + $(clean_directories) + @rm -f .lib.done.log + +clean-%: \ + % + @$(MAKE) \ + --directory $< \ + --file $$PWD/src/review.mk \ + clean diff --git a/lib/Makefile b/lib/Makefile new file mode 100644 index 00000000..b65d1ff7 --- /dev/null +++ b/lib/Makefile @@ -0,0 +1,46 @@ +#!/usr/bin/make -f + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +SHELL := /bin/bash + +all: \ + rdf-toolkit.jar + +# Downloading rdf-toolkit was previously done following the directions +# at: +# https://github.com/edmcouncil/rdf-toolkit +# However, on the file becoming temporarily unavailable, CASE has placed +# a verified copy at a custom location, as a fallback for an alternative +# retrieval from an EDM Council member's repository. +# The checksum of the original file from EDM Council's build server is +# confirmed before moving file into position. (This practice will +# probably require frequent updates, unless a signed checksum for the +# jar can be retrieved somehow.) +# In case there are concerns on potentially multiple writes to the same +# file, the documentation for wget's "--output-document file" flag notes +# that "... file will be truncated immediately, and all downloaded +# content will be written there." +rdf-toolkit.jar: + test -r rdf-toolkit.jar.sha512 + # Try retrieval from Github, then from files.caseontology.org. + wget \ + --output-document $@_ \ + https://github.com/trypuz/openfibo/blob/1f9ab415e8ebd131eadcc9b0fc46241adeeb0384/etc/serialization/rdf-toolkit.jar?raw=true \ + || wget \ + --output-document $@_ \ + http://files.caseontology.org/rdf-toolkit.jar + test \ + "x$$(openssl dgst -sha512 $@_ | awk '{print($$NF)}')" \ + == \ + "x$$(head -n1 rdf-toolkit.jar.sha512)" + mv $@_ $@ diff --git a/lib/rdf-toolkit.jar.sha512 b/lib/rdf-toolkit.jar.sha512 new file mode 100644 index 00000000..4c4f5e0d --- /dev/null +++ b/lib/rdf-toolkit.jar.sha512 @@ -0,0 +1 @@ +24890b4aa484a46803841fbe5938daf60bf2d0889c0e231102c033d71cb84a2bfa8b44419df3ad896d833609afddd4b3910d2ce28660b3350cca22bea0770dad diff --git a/src/review.mk b/src/review.mk new file mode 100644 index 00000000..992551b2 --- /dev/null +++ b/src/review.mk @@ -0,0 +1,63 @@ +#!/usr/bin/make -f + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +SHELL := /bin/bash + +# This Makefile is assumed to execute in a repository directory /uco-*. +top_srcdir := $(shell cd .. ; pwd) + +srcdir := $(shell pwd) + +# Determine the basenames of the ontology turtle files. +# Note plurality - this also identifies domain assertion files ("*-da.ttl"). +# This computation is done to avoid catching temporary render files (".check-*.ttl") +srcdir_without_ucohyphen := $(subst uco-,,$(shell basename "$(srcdir)")) +ifeq ($(srcdir_without_ucohyphen),master) +ttl_basenames := uco.ttl +else +ttl_basenames := $(wildcard $(srcdir_without_ucohyphen)*.ttl) +endif + +# These are reference files, named with a leading dot. +check_reference_basenames := $(foreach ttl_basename,$(ttl_basenames),.check-$(ttl_basename)) + +# These are recipe targets, not intended to be created files. +check_targets := $(foreach ttl_basename,$(ttl_basenames),check-$(ttl_basename)) + +all: \ + $(check_reference_basenames) + +.check-%.ttl: \ + %.ttl \ + $(top_srcdir)/.lib.done.log + java -jar $(top_srcdir)/lib/rdf-toolkit.jar \ + --infer-base-iri \ + --inline-blank-nodes \ + --source $< \ + --source-format turtle \ + --target $@_ \ + --target-format turtle + mv $@_ $@ + +check: \ + $(check_targets) + +# Reminder: diff exits non-0 on finding any differences. +# Reminder: The $^ automatic Make variable is the name of all recipe prerequisites. +check-%.ttl: \ + %.ttl \ + .check-%.ttl + diff $^ + +clean: + @rm -f $(check_reference_basenames) From fe02f08d692818a8929483f65b4f646b841b6986 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Fri, 16 Apr 2021 17:10:02 -0400 Subject: [PATCH 02/94] Normalize content of observable-da.ttl Unit testing revealed this file had unsorted content. No semantic changes are made in this patch. References: * [OC-98] (CP-39) UCO should implement CI including at least rdf-toolkit runs Signed-off-by: Alex Nelson --- uco-observable/observable-da.ttl | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/uco-observable/observable-da.ttl b/uco-observable/observable-da.ttl index 3716f45b..06f6aaf4 100644 --- a/uco-observable/observable-da.ttl +++ b/uco-observable/observable-da.ttl @@ -128,7 +128,6 @@ observable:addressOfEntryPoint rdfs:domain observable:WindowsPEOptionalHeader ; . - observable:allocationStatus rdfs:domain observable:FileFacet ; . @@ -490,7 +489,10 @@ observable:diskType . observable:displayName - rdfs:domain observable:WindowsServiceFacet ; + rdfs:domain + observable:ContactFacet , + observable:WindowsServiceFacet + ; . observable:dllCharacteristics @@ -1590,10 +1592,6 @@ observable:scheme rdfs:domain observable:URLFacet ; . -observable:displayName - rdfs:domain observable:ContactFacet ; - . - observable:sectionAlignment rdfs:domain observable:WindowsPEOptionalHeader ; . @@ -2055,3 +2053,4 @@ observable:xMailer observable:xOriginatingIP rdfs:domain observable:EmailMessageFacet ; . + From a233596fa5483542c968e93862aa390cae6ca4ce Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 11 May 2021 13:33:52 -0400 Subject: [PATCH 03/94] Add missed update for partitionID type The proposal filed in Issue 160 changed the type of partitionID to be a string instead of an integer. Unfortunately, one update point was missed. (Patch v2: I did not realize that rdf-toolkit also has a "Hidden" Restriction sort key, by onDataRange before onProperty. Branch name was also of incorrect form.) References: * [Issue 160] Change Proposal: Revise range and documentation of partitionID * [OC-120] (CP-46) DiskPartitionFacet accidentally has partitionID range as xsd:integer Signed-off-by: Alex Nelson --- uco-observable/observable.ttl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 9b898a2e..120eb408 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -1539,12 +1539,6 @@ observable:DiskPartitionFacet owl:onProperty observable:observableCreatedTime ; owl:maxCardinality "1"^^xsd:nonNegativeInteger ; ] , - [ - a owl:Restriction ; - owl:onProperty observable:partitionID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; - ] , [ a owl:Restriction ; owl:onProperty observable:partitionLength ; @@ -1580,6 +1574,12 @@ observable:DiskPartitionFacet owl:onProperty observable:mountPoint ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange xsd:string ; + ] , + [ + a owl:Restriction ; + owl:onProperty observable:partitionID ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:string ; ] ; rdfs:label "DiskPartitionFacet"@en ; From d867184daed1d6ab459ac0555c8a610d4865c4b8 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 11 May 2021 13:49:59 -0400 Subject: [PATCH 04/94] Change NTFSFileSystemFacet to NTFSFileFacet References: * [OC-99] (CP-38) NTFSFileSystemFacet describes an NTFS file, not file system Signed-off-by: Alex Nelson --- uco-observable/observable-da.ttl | 6 +++--- uco-observable/observable.ttl | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/uco-observable/observable-da.ttl b/uco-observable/observable-da.ttl index 06f6aaf4..88eafbe3 100644 --- a/uco-observable/observable-da.ttl +++ b/uco-observable/observable-da.ttl @@ -133,7 +133,7 @@ observable:allocationStatus . observable:alternateDataStreams - rdfs:domain observable:NTFSFileSystemFacet ; + rdfs:domain observable:NTFSFileFacet ; . observable:application @@ -596,7 +596,7 @@ observable:entropy . observable:entryID - rdfs:domain observable:NTFSFileSystemFacet ; + rdfs:domain observable:NTFSFileFacet ; . observable:environmentVariables @@ -1653,7 +1653,7 @@ observable:showMessageTitle . observable:sid - rdfs:domain observable:NTFSFileSystemFacet ; + rdfs:domain observable:NTFSFileFacet ; . observable:signature diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 9b898a2e..c850142a 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -3039,14 +3039,7 @@ observable:NTFSFile rdfs:comment "An NTFS file is a New Technology File System (NTFS) file."@en ; . -observable:NTFSFilePermissionsFacet - a owl:Class ; - rdfs:subClassOf ; - rdfs:label "NTFSFilePermissionsFacet"@en ; - rdfs:comment "An NTFS file permissions facet is a grouping of characteristics unique to the access rights (e.g., view, change, navigate, execute) of a file on an NTFS (new technology filesystem) file system."@en ; - . - -observable:NTFSFileSystemFacet +observable:NTFSFileFacet a owl:Class ; rdfs:subClassOf , @@ -3063,8 +3056,15 @@ observable:NTFSFileSystemFacet owl:onDataRange xsd:string ; ] ; - rdfs:label "NTFSFileSystemFacet"@en ; - rdfs:comment "An NTFS file system facet is a grouping of characteristics unique to a file on an NTFS (new technology filesystem) file system."@en ; + rdfs:label "NTFSFileFacet"@en ; + rdfs:comment "An NTFS file facet is a grouping of characteristics unique to a file on an NTFS (new technology filesystem) file system."@en ; + . + +observable:NTFSFilePermissionsFacet + a owl:Class ; + rdfs:subClassOf ; + rdfs:label "NTFSFilePermissionsFacet"@en ; + rdfs:comment "An NTFS file permissions facet is a grouping of characteristics unique to the access rights (e.g., view, change, navigate, execute) of a file on an NTFS (new technology filesystem) file system."@en ; . observable:NamedPipe From dc44ac4bd7cc8b7342e4a07486d2de0ae47cc8ca Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 11 May 2021 14:46:56 -0400 Subject: [PATCH 05/94] Spell observable:nameserver with camel-casing References: * [OC-34] (CP-52) observable:nameserver should be camel-cased Signed-off-by: Alex Nelson --- uco-observable/observable-da.ttl | 2 +- uco-observable/observable.ttl | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/uco-observable/observable-da.ttl b/uco-observable/observable-da.ttl index 06f6aaf4..b2a88a4f 100644 --- a/uco-observable/observable-da.ttl +++ b/uco-observable/observable-da.ttl @@ -1230,7 +1230,7 @@ observable:nameConstraints rdfs:domain observable:X509V3ExtensionsFacet ; . -observable:nameserver +observable:nameServer rdfs:domain observable:WhoIsFacet ; . diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 9b898a2e..43eda60f 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -7939,7 +7939,7 @@ observable:ip observable:ipAddress a owl:ObjectProperty ; rdfs:label "ipAddress"@en ; - rdfs:comment "Specifies the corresponding ip address for a whois entry. Usually corresponds to a nameserver lookup."@en ; + rdfs:comment "Specifies the corresponding ip address for a whois entry. Usually corresponds to a name server lookup."@en ; rdfs:range observable:ObservableObject ; . @@ -8541,6 +8541,13 @@ observable:namePrefix rdfs:range xsd:string ; . +observable:nameServer + a owl:ObjectProperty ; + rdfs:label "nameServer"@en ; + rdfs:comment "Specifies a list of name server entries for a Whois entry."@en ; + rdfs:range observable:ObservableObject ; + . + observable:nameSuffix a owl:DatatypeProperty ; rdfs:label "nameSuffix"@en ; @@ -8548,13 +8555,6 @@ observable:nameSuffix rdfs:range xsd:string ; . -observable:nameserver - a owl:ObjectProperty ; - rdfs:label "nameserver"@en ; - rdfs:comment "Specifies a list of nameserver entries for a Whois entry."@en ; - rdfs:range observable:ObservableObject ; - . - observable:netBIOSName a owl:DatatypeProperty ; rdfs:label "netBIOSName"@en ; @@ -9371,7 +9371,7 @@ observable:serialNumber observable:serverName a owl:ObjectProperty ; rdfs:label "serverName"@en ; - rdfs:comment "Specifies the corresponding server name for a whois entry. This usually corresponds to a nameserver lookup."@en ; + rdfs:comment "Specifies the corresponding server name for a whois entry. This usually corresponds to a name server lookup."@en ; rdfs:range observable:ObservableObject ; . From d41f9b8886b49a91984b022a2673ba2369a463fa Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 25 May 2021 16:54:39 -0400 Subject: [PATCH 06/94] Perform Make directory traversal in sort order This patch is a revision to the implementation of CP-39, to guarantee the visit order of subdirectories. While undergoing an in-depth normalization review of each Turtle file today, I and a person I was working with realized that the visit order of subdirectories was non-deterministic between Make runs. On the scale of nuisances, this is minor, as it causes some confusion on when a per-file review will be completed, but does not cause any true review errors because UCO's subdirectories are all independently reviewable. (The non-determinimism was not apparent in my reviews for the initial patch because my testing tended to run with full parallelism from 'make -j'.) Aside from directory and file visit order, no semantic or behavioral changes are made in this patch. References: * [OC-98] (CP-39) UCO should implement CI including at least rdf-toolkit runs Signed-off-by: Alex Nelson --- Makefile | 2 +- src/review.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 062c402e..7c78a022 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ SHELL := /bin/bash -turtle_directories := $(wildcard uco-*) +turtle_directories := $(shell find uco-* -type d -maxdepth 0 | sort) all_directories := $(foreach turtle_directory,$(turtle_directories),all-$(turtle_directory)) diff --git a/src/review.mk b/src/review.mk index 992551b2..e66921c0 100644 --- a/src/review.mk +++ b/src/review.mk @@ -25,7 +25,7 @@ srcdir_without_ucohyphen := $(subst uco-,,$(shell basename "$(srcdir)")) ifeq ($(srcdir_without_ucohyphen),master) ttl_basenames := uco.ttl else -ttl_basenames := $(wildcard $(srcdir_without_ucohyphen)*.ttl) +ttl_basenames := $(shell find $(srcdir_without_ucohyphen)*.ttl -type f | sort) endif # These are reference files, named with a leading dot. From 0a67512079e1a2a9c382b1441e853cf3ad90f187 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Thu, 27 May 2021 13:15:27 -0400 Subject: [PATCH 07/94] Added the '.org' domain to the URIs within core:ExternalReference and observable:OnlineServiceFacet --- uco-core/core.ttl | 6 +++--- uco-observable/observable.ttl | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 4a738100..5098a169 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -152,17 +152,17 @@ core:ExternalReference rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty ; + owl:onProperty core:definingContext ; owl:maxCardinality "1"^^xsd:nonNegativeInteger ; ] , [ a owl:Restriction ; - owl:onProperty ; + owl:onProperty core:externalIdentifier ; owl:maxCardinality "1"^^xsd:nonNegativeInteger ; ] , [ a owl:Restriction ; - owl:onProperty ; + owl:onProperty core:referenceURL ; owl:maxCardinality "1"^^xsd:nonNegativeInteger ; ] ; diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 0a60fd11..5487da50 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -3544,20 +3544,20 @@ observable:OnlineService observable:OnlineServiceFacet a owl:Class ; rdfs:subClassOf - , + , [ a owl:Restriction ; - owl:onProperty ; + owl:onProperty ; owl:cardinality "1"^^xsd:nonNegativeInteger ; ] , [ a owl:Restriction ; - owl:onProperty ; + owl:onProperty observable:inetLocation ; owl:minCardinality "0"^^xsd:nonNegativeInteger ; ] , [ a owl:Restriction ; - owl:onProperty ; + owl:onProperty observable:location ; owl:minCardinality "0"^^xsd:nonNegativeInteger ; ] ; From d68c14d8440e58efbad48834f6a309bcb8e7c82f Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Thu, 27 May 2021 14:28:45 -0400 Subject: [PATCH 08/94] Deleted double prefix instances. As part of implementing Change Proposal 5, several properties were accidently misspelled with an additional prefix. This patch fixes the typo pattern outside of the Change Proposal process because it broke SHACL conversion capabilities being used in support of Change Proposal 23. Python verification script: ```python import sys for line in open(sys.argv[1], "r"): if "rdfs:comment" in line: continue if len(line.split(":")) >= 4: print(line.strip()) ``` Acked-by: Alex Nelson --- uco-observable/observable.ttl | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 5487da50..168b2824 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -789,7 +789,7 @@ observable:ContactAddress rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty observable:observable:geolocationAddress ; + owl:onProperty observable:geolocationAddress ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange ; ] , @@ -815,49 +815,49 @@ observable:ContactAffiliation rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty observable:observable:organizationDepartment ; + owl:onProperty observable:organizationDepartment ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange xsd:string ; ] , [ a owl:Restriction ; - owl:onProperty observable:observable:organizationPosition ; + owl:onProperty observable:organizationPosition ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange xsd:string ; ] , [ a owl:Restriction ; - owl:onProperty observable:observable:organizationLocation ; + owl:onProperty observable:organizationLocation ; owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ContactAddress ; ] , [ a owl:Restriction ; - owl:onProperty observable:observable:contactEmail ; + owl:onProperty observable:contactEmail ; owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ContactEmail ; ] , [ a owl:Restriction ; - owl:onProperty observable:observable:contactMessaging ; + owl:onProperty observable:contactMessaging ; owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ContactMessaging ; ] , [ a owl:Restriction ; - owl:onProperty observable:observable:contactPhone ; + owl:onProperty observable:contactPhone ; owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ContactPhone ; ] , [ a owl:Restriction ; - owl:onProperty observable:observable:contactProfile ; + owl:onProperty observable:contactProfile ; owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ContactProfile ; ] , [ a owl:Restriction ; - owl:onProperty observable:observable:contactURL ; + owl:onProperty observable:contactURL ; owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ContactURL ; ] , @@ -877,7 +877,7 @@ observable:ContactEmail rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty observable:observable:emailAddress ; + owl:onProperty observable:emailAddress ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ObservableObject ; ] , @@ -1058,7 +1058,7 @@ observable:ContactListFacet , [ a owl:Restriction ; - owl:onProperty observable:observable:sourceApplication ; + owl:onProperty observable:sourceApplication ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ObservableObject ; ] , @@ -1078,13 +1078,13 @@ observable:ContactMessaging rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty observable:observable:contactAddress ; + owl:onProperty observable:contactAddress ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ObservableObject ; ] , [ a owl:Restriction ; - owl:onProperty observable:observable:contactMessagingPlatform ; + owl:onProperty observable:contactMessagingPlatform ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ObservableObject ; ] @@ -1098,7 +1098,7 @@ observable:ContactPhone rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty observable:observable:contactPhoneNumber ; + owl:onProperty observable:contactPhoneNumber ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ObservableObject ; ] , @@ -1144,7 +1144,7 @@ observable:ContactSIP rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty observable:observable:sipAddress ; + owl:onProperty observable:sipAddress ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ObservableObject ; ] , @@ -1170,7 +1170,7 @@ observable:ContactURL rdfs:subClassOf [ a owl:Restriction ; - owl:onProperty observable:observable:url ; + owl:onProperty observable:url ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange observable:ObservableObject ; ] , From 64f4d93ab46d7c2556dd42b305ea2dbbd586e2c9 Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 27 May 2021 22:29:43 -0400 Subject: [PATCH 09/94] Fixed RDFS typos in support of CP-48 --- uco-observable/observable.ttl | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 5487da50..f146fe40 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -2128,7 +2128,7 @@ observable:FileSystem a owl:Class ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "FileSystem"@en ; - rdfs:commenet "A file system is the process that manages how and where data on a storage medium is stored, accessed and managed. [based on https://www.techopedia.com/definition/5510/file-system]"@en ; + rdfs:comment "A file system is the process that manages how and where data on a storage medium is stored, accessed and managed. [based on https://www.techopedia.com/definition/5510/file-system]"@en ; . observable:FileSystemFacet @@ -2197,7 +2197,7 @@ observable:GeoLocationEntry a owl:Class ; rdfs:label "GeoLocationEntry"@en ; rdfs:comment "A geolocation entry is a single application-specific geolocation entry."@en ; - rdfs:subCassOf observable:ObservableObject ; + rdfs:subClassOf observable:ObservableObject ; . observable:GeoLocationEntryFacet @@ -3538,7 +3538,7 @@ observable:OnlineService a owl:Class ; rdfs:label "OnlineService"@en ; rdfs:comment "An online service is a particular provision mechanism of information access, distribution or manipulation over the Internet."@en ; - rdfs:subClasOf observable:ObservableObject ; + rdfs:subClassOf observable:ObservableObject ; . observable:OnlineServiceFacet @@ -4282,7 +4282,7 @@ observable:Snapshot a owl:Class ; rdfs:label "Snapshot"@en ; rdfs:comment "A snapshot is a file system object representing a snapshot of the contents of a part of a file system at a point in time."@en ; - rdfs:subClasOf observable:FileSystemObject ; + rdfs:subClassOf observable:FileSystemObject ; . observable:Socket @@ -10173,4 +10173,3 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . - From af8cacd778590a9bdeb11ad9d5f0d52a9380f64e Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 27 May 2021 22:41:34 -0400 Subject: [PATCH 10/94] Removed duplicate definitions for core:object and normalized its definition in support of CP-60 --- uco-core/core.ttl | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 5098a169..bbb53879 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -404,10 +404,7 @@ core:namingAuthority core:object a owl:ObjectProperty ; rdfs:label "object"@en ; - rdfs:comment - "One or more UcoObject identifers referencing other objects."@en , - "One or more UcoObjects."@en - ; + rdfs:comment "Specifies one or more UcoObjects."@en ; rdfs:range core:UcoObject ; . @@ -502,4 +499,3 @@ core:value a owl:Class ; . - From 24b808b8b57c6aaa8847c9a1eb62b2d5e5b06555 Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 27 May 2021 22:42:10 -0400 Subject: [PATCH 11/94] Removed duplicate definitions for observable:owner and observable:password and normalized their definitions in support of CP-60 --- uco-observable/observable.ttl | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 5487da50..19c11841 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -8741,10 +8741,7 @@ observable:otherHeaders observable:owner a owl:ObjectProperty ; rdfs:label "owner"@en ; - rdfs:comment - "The owner of the file."@en , - "The owner of this account."@en - ; + rdfs:comment "Specifies the owner of an Observable Object."@en ; rdfs:range , observable:ObservableObject @@ -8821,10 +8818,7 @@ observable:partitionOffset observable:password a owl:DatatypeProperty ; rdfs:label "password"@en ; - rdfs:comment - "Password used to authenticate to this resource."@en , - "The account authentication password."@en - ; + rdfs:comment "Specifies an authentication password."@en ; rdfs:range xsd:string ; . @@ -10173,4 +10167,3 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . - From f9470502451b46466890219f68c6520430fe3484 Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 27 May 2021 22:45:31 -0400 Subject: [PATCH 12/94] Modified cardinality of observable:hasChanged property on observable:ObservableObject class from 1 to 0..1 in support of CP-59 --- uco-observable/observable.ttl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 5487da50..c4e737f4 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -3491,7 +3491,7 @@ observable:ObservableObject a owl:Restriction ; owl:onProperty observable:hasChanged ; owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; ] ; rdfs:label "ObservableObject"@en ; @@ -10173,4 +10173,3 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . - From cb1c6ee0e4d29d801377794e80e4941fe9406bc1 Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 27 May 2021 22:53:00 -0400 Subject: [PATCH 13/94] Modified range of observable:clockSetting from xsd:string to xsd:dateTime in support of CP-58 --- uco-observable/observable.ttl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 5487da50..dc7c9710 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -2979,7 +2979,7 @@ observable:MobileDeviceFacet a owl:Restriction ; owl:onProperty observable:clockSetting ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + owl:onDataRange xsd:dateTime ; ] , [ a owl:Restriction ; @@ -6716,7 +6716,7 @@ observable:clockSetting a owl:DatatypeProperty ; rdfs:label "clockSetting"@en ; rdfs:comment "The generalizedTime value on the mobile device when it was processed."@en ; - rdfs:range xsd:string ; + rdfs:range xsd:dateTime ; . observable:clusterSize @@ -10173,4 +10173,3 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . - From 74dda592608d2cb3f3a3819658ec352b09bd2bc8 Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 27 May 2021 22:57:18 -0400 Subject: [PATCH 14/94] Modified the name of the class identity:CountriesOfResidence to be identity:CountryOfResidence in support of CP-57 --- uco-identity/identity.ttl | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/uco-identity/identity.ttl b/uco-identity/identity.ttl index a8d93424..960b280d 100644 --- a/uco-identity/identity.ttl +++ b/uco-identity/identity.ttl @@ -55,11 +55,11 @@ identity:BirthInformationFacet rdfs:comment "Birth information is a grouping of characteristics unique to information pertaining to the birth of an entity."@en ; . -identity:CountriesOfResidenceFacet +identity:CountryOfResidenceFacet a owl:Class ; rdfs:subClassOf identity:IdentityFacet ; - rdfs:label "CountriesOfResidenceFacet"@en ; - rdfs:comment "Countries of residence is a grouping of characteristics unique to information related to the country, or countries, where an entity resides."@en ; + rdfs:label "CountryOfResidenceFacet"@en ; + rdfs:comment "Country of residence is a grouping of characteristics unique to information related to the country, or countries, where an entity resides."@en ; . identity:EventsFacet @@ -215,4 +215,3 @@ identity:honorificSuffix rdfs:comment ""@en ; rdfs:range xsd:string ; . - From 867eb13fa61c6d736e8fc64bd30ce38233a4383f Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 27 May 2021 23:01:20 -0400 Subject: [PATCH 15/94] Modified definition of core:specVersion to be "The version of UCO ontology or subontology specification used to characterize a concept." in support of CP-55 --- uco-core/core.ttl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 5098a169..375053bf 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -449,7 +449,7 @@ core:source core:specVersion a owl:DatatypeProperty ; rdfs:label "specVersion"@en ; - rdfs:comment "The version of UCO used to characterize a concept."@en ; + rdfs:comment "The version of UCO ontology or subontology specification used to characterize a concept."@en ; rdfs:range xsd:string ; . @@ -502,4 +502,3 @@ core:value a owl:Class ; . - From bb179d8fb2ee9ca7176369e8f3d4398ebf986bee Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 27 May 2021 23:06:42 -0400 Subject: [PATCH 16/94] Added rdfs:comment: "When used to characterize a file the sizeInBytes property conveys the recorded size of a file in a file system."@en ; to the owl:restriction for observable:sizeInBytes on the observable:FileFacet class in support of CP-54 --- uco-observable/observable.ttl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 5487da50..fb621585 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -2091,6 +2091,7 @@ observable:FileFacet owl:onProperty observable:sizeInBytes ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange xsd:integer ; + rdfs:comment: "When used to characterize a file the sizeInBytes property conveys the recorded size of a file in a file system."@en ; ] , [ a owl:Restriction ; @@ -10173,4 +10174,3 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . - From 99f84a578333a96de096f5264a988c56e034bbf3 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 4 Jun 2021 13:10:18 -0400 Subject: [PATCH 17/94] Added core:Identity and core:MarkingDefinition subClasses --- uco-core/core.ttl | 23 ++++++++++++++--------- uco-identity/identity.ttl | 2 +- uco-marking/marking.ttl | 2 +- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 5098a169..1628f230 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -190,6 +190,20 @@ core:Item rdfs:comment "An item is a distinct article or unit."@en ; . +core:Identity + a owl:Class ; + rdfs:subClassOf core:UcoObject ; + rdfs:label "Identity"@en ; + rdfs:comment "An identity is a grouping of identifying characteristics unique to an individual or organization. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the identity:Identity class."@en ; + . + +core:MarkingDefinition + a owl:Class ; + rdfs:subClassOf core:UcoObject ; + rdfs:label "MarkingDefinition"@en ; + rdfs:comment "A marking definition is a grouping of characteristics unique to the expression of a specific data marking conveying restrictions, permissions, and other guidance for how marked data can be used and shared. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the marking:MarkingDefinition class."@en ; + . + core:ModusOperandi a owl:Class ; rdfs:subClassOf core:UcoObject ; @@ -494,12 +508,3 @@ core:value rdfs:comment "A string value."@en ; rdfs:range xsd:string ; . - - - a owl:Class ; - . - - - a owl:Class ; - . - diff --git a/uco-identity/identity.ttl b/uco-identity/identity.ttl index a8d93424..449bed3f 100644 --- a/uco-identity/identity.ttl +++ b/uco-identity/identity.ttl @@ -78,7 +78,7 @@ identity:IdentifierFacet identity:Identity a owl:Class ; - rdfs:subClassOf ; + rdfs:subClassOf ; rdfs:label "Identity"@en ; rdfs:comment "An identity is a grouping of identifying characteristics unique to an individual or organization."@en ; . diff --git a/uco-marking/marking.ttl b/uco-marking/marking.ttl index 0e3738e0..e666aa88 100644 --- a/uco-marking/marking.ttl +++ b/uco-marking/marking.ttl @@ -43,7 +43,7 @@ marking:LicenseMarking marking:MarkingDefinition a owl:Class ; rdfs:subClassOf - , + , [ a owl:Restriction ; owl:onProperty marking:definitionType ; From 1cd45691901f99ca1d814e2dac9bcb85afab48b3 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 4 Jun 2021 13:40:25 -0400 Subject: [PATCH 18/94] Normalize --- uco-core/core.ttl | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 1628f230..1041e757 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -183,6 +183,13 @@ core:Grouping rdfs:comment "A grouping is a compilation of referenced UCO content with a shared context."@en ; . +core:Identity + a owl:Class ; + rdfs:subClassOf core:UcoObject ; + rdfs:label "Identity"@en ; + rdfs:comment "An identity is a grouping of identifying characteristics unique to an individual or organization. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the identity:Identity class."@en ; + . + core:Item a owl:Class ; rdfs:subClassOf core:UcoObject ; @@ -190,19 +197,12 @@ core:Item rdfs:comment "An item is a distinct article or unit."@en ; . -core:Identity - a owl:Class ; - rdfs:subClassOf core:UcoObject ; - rdfs:label "Identity"@en ; - rdfs:comment "An identity is a grouping of identifying characteristics unique to an individual or organization. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the identity:Identity class."@en ; - . - core:MarkingDefinition - a owl:Class ; - rdfs:subClassOf core:UcoObject ; - rdfs:label "MarkingDefinition"@en ; - rdfs:comment "A marking definition is a grouping of characteristics unique to the expression of a specific data marking conveying restrictions, permissions, and other guidance for how marked data can be used and shared. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the marking:MarkingDefinition class."@en ; - . + a owl:Class ; + rdfs:subClassOf core:UcoObject ; + rdfs:label "MarkingDefinition"@en ; + rdfs:comment "A marking definition is a grouping of characteristics unique to the expression of a specific data marking conveying restrictions, permissions, and other guidance for how marked data can be used and shared. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the marking:MarkingDefinition class."@en ; + . core:ModusOperandi a owl:Class ; @@ -508,3 +508,4 @@ core:value rdfs:comment "A string value."@en ; rdfs:range xsd:string ; . + From d7c5f4151a49db0cd55b469b9af6983e32a71375 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 4 Jun 2021 13:50:53 -0400 Subject: [PATCH 19/94] Normalize --- uco-observable/observable.ttl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index f146fe40..c9eecdfb 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -2195,9 +2195,9 @@ observable:GenericObservableObject observable:GeoLocationEntry a owl:Class ; + rdfs:subClassOf observable:ObservableObject ; rdfs:label "GeoLocationEntry"@en ; rdfs:comment "A geolocation entry is a single application-specific geolocation entry."@en ; - rdfs:subClassOf observable:ObservableObject ; . observable:GeoLocationEntryFacet @@ -3536,9 +3536,9 @@ observable:Observation observable:OnlineService a owl:Class ; + rdfs:subClassOf observable:ObservableObject ; rdfs:label "OnlineService"@en ; rdfs:comment "An online service is a particular provision mechanism of information access, distribution or manipulation over the Internet."@en ; - rdfs:subClassOf observable:ObservableObject ; . observable:OnlineServiceFacet @@ -4280,9 +4280,9 @@ observable:ShopListing observable:Snapshot a owl:Class ; + rdfs:subClassOf observable:FileSystemObject ; rdfs:label "Snapshot"@en ; rdfs:comment "A snapshot is a file system object representing a snapshot of the contents of a part of a file system at a point in time."@en ; - rdfs:subClassOf observable:FileSystemObject ; . observable:Socket @@ -10173,3 +10173,4 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . + From ecf841d027a78777f195d3052b6c31cb0428644d Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 4 Jun 2021 13:59:04 -0400 Subject: [PATCH 20/94] Normalize --- uco-observable/observable.ttl | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index fb621585..dbe21bad 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -2061,6 +2061,13 @@ observable:FileFacet a owl:Class ; rdfs:subClassOf , + [ + a owl:Restriction ; + owl:onProperty observable:sizeInBytes ; + rdfs:comment: "When used to characterize a file the sizeInBytes property conveys the recorded size of a file in a file system."@en ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:integer ; + ] , [ a owl:Restriction ; owl:onProperty observable:accessedTime ; @@ -2086,13 +2093,6 @@ observable:FileFacet owl:onProperty observable:observableCreatedTime ; owl:maxCardinality "1"^^xsd:nonNegativeInteger ; ] , - [ - a owl:Restriction ; - owl:onProperty observable:sizeInBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; - rdfs:comment: "When used to characterize a file the sizeInBytes property conveys the recorded size of a file in a file system."@en ; - ] , [ a owl:Restriction ; owl:onProperty observable:allocationStatus ; @@ -10174,3 +10174,4 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . + From e494ace1c22442563538814625a741274a96b81a Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 4 Jun 2021 14:06:27 -0400 Subject: [PATCH 21/94] Normalize --- uco-core/core.ttl | 1 + 1 file changed, 1 insertion(+) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 375053bf..ff83fda1 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -502,3 +502,4 @@ core:value a owl:Class ; . + From 961d7a3fb0d421ce154fe02fd1f7037b668a706d Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 4 Jun 2021 14:12:32 -0400 Subject: [PATCH 22/94] Normalize --- uco-identity/identity.ttl | 1 + 1 file changed, 1 insertion(+) diff --git a/uco-identity/identity.ttl b/uco-identity/identity.ttl index 960b280d..b817501c 100644 --- a/uco-identity/identity.ttl +++ b/uco-identity/identity.ttl @@ -215,3 +215,4 @@ identity:honorificSuffix rdfs:comment ""@en ; rdfs:range xsd:string ; . + From f50401863989f031d43b4b4ea0a703633325dace Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 4 Jun 2021 14:19:13 -0400 Subject: [PATCH 23/94] Normalize --- uco-observable/observable.ttl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index dc7c9710..f063648e 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -2951,6 +2951,12 @@ observable:MobileDeviceFacet a owl:Class ; rdfs:subClassOf , + [ + a owl:Restriction ; + owl:onProperty observable:clockSetting ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:dateTime ; + ] , [ a owl:Restriction ; owl:onProperty observable:storageCapacityInBytes ; @@ -2975,12 +2981,6 @@ observable:MobileDeviceFacet owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange xsd:string ; ] , - [ - a owl:Restriction ; - owl:onProperty observable:clockSetting ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; - ] , [ a owl:Restriction ; owl:onProperty observable:keypadUnlockCode ; @@ -10173,3 +10173,4 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . + From 62a6f96a8dabce0c5de187f4efdcb68c52eb673c Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 4 Jun 2021 14:24:57 -0400 Subject: [PATCH 24/94] Normalize --- uco-observable/observable.ttl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index c4e737f4..884617bc 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -3490,8 +3490,8 @@ observable:ObservableObject [ a owl:Restriction ; owl:onProperty observable:hasChanged ; - owl:onDataRange xsd:boolean ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange xsd:boolean ; ] ; rdfs:label "ObservableObject"@en ; @@ -10173,3 +10173,4 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . + From 0807b81f98a3799284d70f929effb364a7f217ed Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 4 Jun 2021 14:34:08 -0400 Subject: [PATCH 25/94] Normalize --- uco-core/core.ttl | 1 + uco-observable/observable.ttl | 1 + 2 files changed, 2 insertions(+) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index bbb53879..c30e7159 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -499,3 +499,4 @@ core:value a owl:Class ; . + diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 19c11841..e8b49a3b 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -10167,3 +10167,4 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . + From 0b2ee292b5083b237bc4ffbc51c4c495ddd729d9 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Tue, 15 Jun 2021 10:00:08 -0400 Subject: [PATCH 26/94] Added 'Abstraction' to the class names of core:Identity and core:MarkingDefinition --- uco-core/core.ttl | 12 ++++++------ uco-identity/identity.ttl | 2 +- uco-marking/marking.ttl | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 1041e757..6d36f27a 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -183,11 +183,11 @@ core:Grouping rdfs:comment "A grouping is a compilation of referenced UCO content with a shared context."@en ; . -core:Identity +core:IdentityAbstraction a owl:Class ; rdfs:subClassOf core:UcoObject ; - rdfs:label "Identity"@en ; - rdfs:comment "An identity is a grouping of identifying characteristics unique to an individual or organization. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the identity:Identity class."@en ; + rdfs:label "IdentityAbstraction"@en ; + rdfs:comment "An identity abstraction is a grouping of identifying characteristics unique to an individual or organization. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the identity:Identity class."@en ; . core:Item @@ -197,11 +197,11 @@ core:Item rdfs:comment "An item is a distinct article or unit."@en ; . -core:MarkingDefinition +core:MarkingDefinitionAbstraction a owl:Class ; rdfs:subClassOf core:UcoObject ; - rdfs:label "MarkingDefinition"@en ; - rdfs:comment "A marking definition is a grouping of characteristics unique to the expression of a specific data marking conveying restrictions, permissions, and other guidance for how marked data can be used and shared. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the marking:MarkingDefinition class."@en ; + rdfs:label "MarkingDefinitionAbstraction"@en ; + rdfs:comment "A marking definition abstraction is a grouping of characteristics unique to the expression of a specific data marking conveying restrictions, permissions, and other guidance for how marked data can be used and shared. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the marking:MarkingDefinition class."@en ; . core:ModusOperandi diff --git a/uco-identity/identity.ttl b/uco-identity/identity.ttl index 449bed3f..4f8e6c77 100644 --- a/uco-identity/identity.ttl +++ b/uco-identity/identity.ttl @@ -78,7 +78,7 @@ identity:IdentifierFacet identity:Identity a owl:Class ; - rdfs:subClassOf ; + rdfs:subClassOf ; rdfs:label "Identity"@en ; rdfs:comment "An identity is a grouping of identifying characteristics unique to an individual or organization."@en ; . diff --git a/uco-marking/marking.ttl b/uco-marking/marking.ttl index e666aa88..b47a34f5 100644 --- a/uco-marking/marking.ttl +++ b/uco-marking/marking.ttl @@ -43,7 +43,7 @@ marking:LicenseMarking marking:MarkingDefinition a owl:Class ; rdfs:subClassOf - , + , [ a owl:Restriction ; owl:onProperty marking:definitionType ; From 4fddeba7c002dfe3ab3dee9718de21f09373a18f Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 25 May 2021 21:50:23 -0400 Subject: [PATCH 27/94] Add Python testing framework and adapted CASE sample to evaluate SHACL validation This patch is presented for evaluation discussion, and is intended to be added to the Feature-CP-23 branch. The XFAIL test for SHACL validation currently XPASS's (a test failure) because the SHACL conversion needs to be merged in to this branch. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- Makefile | 11 ++- tests/.gitignore | 4 ++ tests/Makefile | 73 ++++++++++++++++++++ tests/examples/Makefile | 63 +++++++++++++++++ tests/examples/README.md | 9 +++ tests/examples/location_PASS.json | 55 +++++++++++++++ tests/examples/location_PASS_validation.ttl | 6 ++ tests/examples/location_XFAIL.json | 55 +++++++++++++++ tests/examples/location_XFAIL_validation.ttl | 6 ++ tests/examples/test_validation.py | 51 ++++++++++++++ tests/requirements.txt | 3 + tests/src/glom_graph.py | 39 +++++++++++ 12 files changed, 374 insertions(+), 1 deletion(-) create mode 100644 tests/.gitignore create mode 100644 tests/Makefile create mode 100644 tests/examples/Makefile create mode 100644 tests/examples/README.md create mode 100644 tests/examples/location_PASS.json create mode 100644 tests/examples/location_PASS_validation.ttl create mode 100644 tests/examples/location_XFAIL.json create mode 100644 tests/examples/location_XFAIL_validation.ttl create mode 100644 tests/examples/test_validation.py create mode 100644 tests/requirements.txt create mode 100644 tests/src/glom_graph.py diff --git a/Makefile b/Makefile index 062c402e..f602981b 100644 --- a/Makefile +++ b/Makefile @@ -38,6 +38,9 @@ all-%: \ check: \ $(check_directories) + $(MAKE) \ + --directory tests \ + check check-%: \ % \ @@ -48,7 +51,8 @@ check-%: \ check clean: \ - $(clean_directories) + $(clean_directories) \ + clean-tests @rm -f .lib.done.log clean-%: \ @@ -57,3 +61,8 @@ clean-%: \ --directory $< \ --file $$PWD/src/review.mk \ clean + +clean-tests: + @$(MAKE) \ + --directory tests \ + clean diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 00000000..e57590f5 --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1,4 @@ +.venv.done.log +__pycache__ +uco_monolithic.ttl +venv diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 00000000..d961742a --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,73 @@ +#!/usr/bin/make -f + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +SHELL := /bin/bash + +top_srcdir := $(shell cd .. ; pwd) + +PYTHON3 ?= $(shell which python3.9 2>/dev/null || which python3.8 2>/dev/null || which python3.7 2>/dev/null || which python3.6 2>/dev/null || which python3) + +uco_turtle_files := $(shell /bin/ls $(top_srcdir)/uco-*/*.ttl) + +all: + +.venv.done.log: \ + requirements.txt + rm -rf venv + $(PYTHON3) -m virtualenv \ + --python=$(PYTHON3) \ + venv + source venv/bin/activate \ + && pip install \ + --upgrade \ + pip \ + setuptools + source venv/bin/activate \ + && pip install \ + --requirement requirements.txt + touch $@ + +check: \ + uco_monolithic.ttl + $(MAKE) \ + --directory examples \ + check + +clean: + @$(MAKE) \ + --directory examples \ + clean + @rm -f \ + .venv.done.log \ + uco_monolithic.ttl + @rm -rf \ + venv + +uco_monolithic.ttl: \ + $(top_srcdir)/.lib.done.log \ + $(uco_turtle_files) \ + .venv.done.log \ + src/glom_graph.py + source venv/bin/activate \ + && python3 src/glom_graph.py \ + __$@ \ + $(uco_turtle_files) + java -jar $(top_srcdir)/lib/rdf-toolkit.jar \ + --infer-base-iri \ + --inline-blank-nodes \ + --source __$@ \ + --source-format turtle \ + --target _$@ \ + --target-format turtle + rm __$@ + mv _$@ $@ diff --git a/tests/examples/Makefile b/tests/examples/Makefile new file mode 100644 index 00000000..f1997de9 --- /dev/null +++ b/tests/examples/Makefile @@ -0,0 +1,63 @@ +#!/usr/bin/make -f + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +SHELL := /bin/bash + +top_srcdir := $(shell cd ../.. ; pwd) + +tests_srcdir := $(top_srcdir)/tests + +all: \ + location_PASS_validation.ttl \ + location_XFAIL_validation.ttl + +location_PASS_validation.ttl: \ + location_PASS.json \ + $(tests_srcdir)/.venv.done.log \ + $(tests_srcdir)/uco_monolithic.ttl + source $(tests_srcdir)/venv/bin/activate \ + && pyshacl \ + --data-file-format json-ld \ + --format turtle \ + --inference none \ + --shacl $(tests_srcdir)/uco_monolithic.ttl \ + --shacl-file-format turtle \ + --output _$@ \ + $< + mv _$@ $@ + +location_XFAIL_validation.ttl: \ + location_XFAIL.json \ + $(tests_srcdir)/.venv.done.log \ + $(tests_srcdir)/uco_monolithic.ttl + source $(tests_srcdir)/venv/bin/activate \ + && pyshacl \ + --data-file-format json-ld \ + --format turtle \ + --inference none \ + --shacl $(tests_srcdir)/uco_monolithic.ttl \ + --shacl-file-format turtle \ + --output _$@ \ + $< + mv _$@ $@ + +check: \ + location_PASS_validation.ttl \ + location_XFAIL_validation.ttl + source $(tests_srcdir)/venv/bin/activate \ + && pytest \ + --log-level=DEBUG + +clean: + @rm -f \ + *_validation.ttl diff --git a/tests/examples/README.md b/tests/examples/README.md new file mode 100644 index 00000000..ee7fe74f --- /dev/null +++ b/tests/examples/README.md @@ -0,0 +1,9 @@ +# SHACL tests on example data + +This directory contains example instance data files that are meant to trigger SHACL validation passing and failing in expected manners. + +Two instance data files are currently in the directory: +* `location_PASS.json` - a file adapted from the [CASE Examples repository](https://github.com/casework/CASE-Examples/). +* `location_XFAIL.json` - The file `location_PASS.jsonld`, with some data modified to trigger shape validation errors. + +SHACL validation results are stored in corresponding files named `..._validation.ttl`, to present the current state of validation conditions. diff --git a/tests/examples/location_PASS.json b/tests/examples/location_PASS.json new file mode 100644 index 00000000..307e4311 --- /dev/null +++ b/tests/examples/location_PASS.json @@ -0,0 +1,55 @@ +{ + "@context": { + "acme": "http://custompb.acme.org/core#", + "core": "https://unifiedcyberontology.org/ontology/uco/core#", + "kb": "http://example.org/kb/", + "location": "https://unifiedcyberontology.org/ontology/uco/location#", + "xsd": "http://www.w3.org/2001/XMLSchema#" + }, + "@graph": [ + { + "@id": "kb:location1", + "@type": "location:Location", + "core:description": "First of two locations in example.", + "core:hasFacet": [ + { + "@type": "location:SimpleAddress", + "location:locality": "Seattle", + "location:region": "WA", + "location:postalCode": "98052", + "location:street": "20341 Whitworth Institute 405 N. Whitworth" + }, + { + "@type": "acme:InternalLocation", + "acme:floor": 3, + "acme:roomNumber": 345 + } + ] + }, + { + "@id": "kb:location2", + "@type": "location:Location", + "core:description": "Second of two locations in example.", + "core:hasFacet": [ + { + "@type": "location:SimpleAddress", + "location:locality": "Paris", + "location:country": "France", + "location:postalCode": "F-75002", + "location:street": "38 Bad Guy Headquarters st." + }, + { + "@type": "location:LatLongCoordinates", + "location:latitude": { + "@type": "xsd:decimal", + "@value": "48.860346" + }, + "location:longitude": { + "@type": "xsd:decimal", + "@value": "2.331199" + } + } + ] + } + ] +} diff --git a/tests/examples/location_PASS_validation.ttl b/tests/examples/location_PASS_validation.ttl new file mode 100644 index 00000000..ad5d1106 --- /dev/null +++ b/tests/examples/location_PASS_validation.ttl @@ -0,0 +1,6 @@ +@prefix ns1: . +@prefix xsd: . + +[] a ns1:ValidationReport ; + ns1:conforms true . + diff --git a/tests/examples/location_XFAIL.json b/tests/examples/location_XFAIL.json new file mode 100644 index 00000000..72e233f7 --- /dev/null +++ b/tests/examples/location_XFAIL.json @@ -0,0 +1,55 @@ +{ + "@context": { + "acme": "http://custompb.acme.org/core#", + "core": "https://unifiedcyberontology.org/ontology/uco/core#", + "kb": "http://example.org/kb/", + "location": "https://unifiedcyberontology.org/ontology/uco/location#", + "xsd": "http://www.w3.org/2001/XMLSchema#" + }, + "@graph": [ + { + "@id": "kb:location1", + "@type": "location:Location", + "core:description": "First of two locations in example.", + "core:hasFacet": [ + { + "@type": "location:SimpleAddress", + "location:locality": "Seattle", + "location:region": "WA", + "location:postalCode": 98052, + "location:street": "20341 Whitworth Institute 405 N. Whitworth" + }, + { + "@type": "acme:InternalLocation", + "acme:floor": 3, + "acme:roomNumber": "345" + } + ] + }, + { + "@id": "kb:location2", + "@type": "location:Location", + "core:descriptionButWrongName": "Second of two locations in example.", + "core:hasFacet": [ + { + "@type": "location:SimpleAddress", + "location:locality": "Paris", + "location:country": "France", + "location:postalCode": "F-75002", + "location:street": "38 Bad Guy Headquarters st." + }, + { + "@type": "location:LatLongCoordinates", + "location:latitude": { + "@type": "xsd:decimal", + "@value": "48.860346" + }, + "location:longitude": { + "@type": "xsd:decimal", + "@value": "2.331199" + } + } + ] + } + ] +} diff --git a/tests/examples/location_XFAIL_validation.ttl b/tests/examples/location_XFAIL_validation.ttl new file mode 100644 index 00000000..ad5d1106 --- /dev/null +++ b/tests/examples/location_XFAIL_validation.ttl @@ -0,0 +1,6 @@ +@prefix ns1: . +@prefix xsd: . + +[] a ns1:ValidationReport ; + ns1:conforms true . + diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py new file mode 100644 index 00000000..81ed27ed --- /dev/null +++ b/tests/examples/test_validation.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +import pytest +import rdflib.plugins.sparql + +query_text = """\ +SELECT ?lConforms +WHERE { + ?nReport + a sh:ValidationReport ; + sh:conforms ?lConforms ; + . +} +""" + +nsdict = {"sh": "http://www.w3.org/ns/shacl#"} + +def load_validation_graph(filename): + g = rdflib.Graph() + g.parse(filename, format="turtle") + g.namespace_manager.bind("sh", "http://www.w3.org/ns/shacl#") + return g + +def test_location_PASS_validation(): + g = load_validation_graph("location_PASS_validation.ttl") + query = rdflib.plugins.sparql.prepareQuery(query_text, initNs=nsdict) + conforms = None + for result in g.query(query): + (l_conforms,) = result + conforms = bool(l_conforms) + assert conforms + +def test_location_XFAIL_validation(): + g = load_validation_graph("location_XFAIL_validation.ttl") + query = rdflib.plugins.sparql.prepareQuery(query_text, initNs=nsdict) + conforms = None + for result in g.query(query): + (l_conforms,) = result + conforms = bool(l_conforms) + assert conforms == False diff --git a/tests/requirements.txt b/tests/requirements.txt new file mode 100644 index 00000000..63aa49dd --- /dev/null +++ b/tests/requirements.txt @@ -0,0 +1,3 @@ +pyshacl +pytest +requests diff --git a/tests/src/glom_graph.py b/tests/src/glom_graph.py new file mode 100644 index 00000000..7ec47b81 --- /dev/null +++ b/tests/src/glom_graph.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +""" +This script takes multiple input JSON-LD or Turtle files and emits a +single Turtle graph. + +This script was copied from the CASE-Utilities-Python repository and has +had functionality simplified to reduce dependencies. It will only accept +Turtle files as input and produce Turtle files as output. +""" + +__version__ = "0.1.0" + +import rdflib + +def main(): + g = rdflib.Graph() + for in_graph in args.in_graph: + g.parse(in_graph, format="turtle") + g.serialize(args.out_graph, format="turtle") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser() + parser.add_argument("out_graph") + parser.add_argument("in_graph", nargs="+") + args = parser.parse_args() + main() From 0b1c692a435d9ff98a44a76ffdbdfcf19966315c Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 15 Jun 2021 18:15:38 -0400 Subject: [PATCH 28/94] Fix typo References: * [OC-86] (CP-54) sizeInBytes needs documenting comments on contextual interpretation Signed-off-by: Alex Nelson --- uco-observable/observable.ttl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 745e9c56..fee5b850 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -2063,8 +2063,8 @@ observable:FileFacet , [ a owl:Restriction ; + rdfs:comment "When used to characterize a file the sizeInBytes property conveys the recorded size of a file in a file system."@en ; owl:onProperty observable:sizeInBytes ; - rdfs:comment: "When used to characterize a file the sizeInBytes property conveys the recorded size of a file in a file system."@en ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onDataRange xsd:integer ; ] , From fdeb32e1cb102b265cbe418af2aae145967a0035 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Thu, 17 Jun 2021 09:55:06 -0400 Subject: [PATCH 29/94] Updated ranges for core:createdBy and core:objectMarking as specified in CP-62 --- uco-core/core.ttl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 753c7049..24a71d33 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -250,7 +250,7 @@ core:UcoObject [ a owl:Restriction ; owl:onProperty core:createdBy ; - owl:onClass ; + owl:onClass core:IdentityAbstraction ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; ] , [ @@ -328,7 +328,7 @@ core:createdBy a owl:ObjectProperty ; rdfs:label "createdBy"@en ; rdfs:comment "The identity that created a characterization of a concept."@en ; - rdfs:range ; + rdfs:range core:IdentityAbstraction ; . core:definingContext @@ -433,7 +433,7 @@ core:objectMarking a owl:ObjectProperty ; rdfs:label "objectMarking"@en ; rdfs:comment "Marking definitions to be applied to a particular concept characterization in its entirety."@en ; - rdfs:range ; + rdfs:range core:MarkingDefinitionAbstraction ; . core:referenceURL From 1ee9f8a69167fb97233482a2bcf9d727e63221af Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 17 Jun 2021 13:11:49 -0400 Subject: [PATCH 30/94] Correct Facet names Reported-by: Sean Barnum --- tests/examples/location_PASS.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/examples/location_PASS.json b/tests/examples/location_PASS.json index 307e4311..0de81871 100644 --- a/tests/examples/location_PASS.json +++ b/tests/examples/location_PASS.json @@ -13,14 +13,14 @@ "core:description": "First of two locations in example.", "core:hasFacet": [ { - "@type": "location:SimpleAddress", + "@type": "location:SimpleAddressFacet", "location:locality": "Seattle", "location:region": "WA", "location:postalCode": "98052", "location:street": "20341 Whitworth Institute 405 N. Whitworth" }, { - "@type": "acme:InternalLocation", + "@type": "acme:InternalLocationFacet", "acme:floor": 3, "acme:roomNumber": 345 } @@ -32,14 +32,14 @@ "core:description": "Second of two locations in example.", "core:hasFacet": [ { - "@type": "location:SimpleAddress", + "@type": "location:SimpleAddressFacet", "location:locality": "Paris", "location:country": "France", "location:postalCode": "F-75002", "location:street": "38 Bad Guy Headquarters st." }, { - "@type": "location:LatLongCoordinates", + "@type": "location:LatLongCoordinatesFacet", "location:latitude": { "@type": "xsd:decimal", "@value": "48.860346" From b437d33016224d6bbff6b007f136058f669b4da8 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 17 Jun 2021 13:18:04 -0400 Subject: [PATCH 31/94] Regenerate Make-managed files --- tests/examples/location_PASS_validation.ttl | 6 +++--- tests/examples/location_XFAIL_validation.ttl | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/examples/location_PASS_validation.ttl b/tests/examples/location_PASS_validation.ttl index ad5d1106..9b8084b8 100644 --- a/tests/examples/location_PASS_validation.ttl +++ b/tests/examples/location_PASS_validation.ttl @@ -1,6 +1,6 @@ -@prefix ns1: . +@prefix sh: . @prefix xsd: . -[] a ns1:ValidationReport ; - ns1:conforms true . +[] a sh:ValidationReport ; + sh:conforms true . diff --git a/tests/examples/location_XFAIL_validation.ttl b/tests/examples/location_XFAIL_validation.ttl index ad5d1106..9b8084b8 100644 --- a/tests/examples/location_XFAIL_validation.ttl +++ b/tests/examples/location_XFAIL_validation.ttl @@ -1,6 +1,6 @@ -@prefix ns1: . +@prefix sh: . @prefix xsd: . -[] a ns1:ValidationReport ; - ns1:conforms true . +[] a sh:ValidationReport ; + sh:conforms true . From 480ffb4c32e12eb48bcd403cc4c92e57dfd31e2d Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 17 Jun 2021 13:25:27 -0400 Subject: [PATCH 32/94] Use example.org non-resolving domain for custom-Facet namespace References: * https://datatracker.ietf.org/doc/html/rfc2606#section-3 --- tests/examples/location_PASS.json | 2 +- tests/examples/location_XFAIL.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/examples/location_PASS.json b/tests/examples/location_PASS.json index 0de81871..517e66ab 100644 --- a/tests/examples/location_PASS.json +++ b/tests/examples/location_PASS.json @@ -1,6 +1,6 @@ { "@context": { - "acme": "http://custompb.acme.org/core#", + "acme": "http://example.org/ontology/acme/core/", "core": "https://unifiedcyberontology.org/ontology/uco/core#", "kb": "http://example.org/kb/", "location": "https://unifiedcyberontology.org/ontology/uco/location#", diff --git a/tests/examples/location_XFAIL.json b/tests/examples/location_XFAIL.json index 72e233f7..ebfefd29 100644 --- a/tests/examples/location_XFAIL.json +++ b/tests/examples/location_XFAIL.json @@ -1,6 +1,6 @@ { "@context": { - "acme": "http://custompb.acme.org/core#", + "acme": "http://example.org/ontology/acme/core/", "core": "https://unifiedcyberontology.org/ontology/uco/core#", "kb": "http://example.org/kb/", "location": "https://unifiedcyberontology.org/ontology/uco/location#", From 41abcb37c35e3217d46d09f22e79c37a7425c872 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Thu, 17 Jun 2021 13:56:20 -0400 Subject: [PATCH 33/94] Changed cardinality on core:id to maxQualifiedCardinality=1 --- uco-core/core.ttl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 24a71d33..4b21f1d9 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -273,15 +273,15 @@ core:UcoObject ] , [ a owl:Restriction ; - owl:onProperty core:externalReference ; - owl:onClass core:ExternalReference ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + owl:onProperty core:id ; + owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onDataRange ; ] , [ a owl:Restriction ; - owl:onProperty core:id ; - owl:onDataRange ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + owl:onProperty core:externalReference ; + owl:onClass core:ExternalReference ; + owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; ] ; rdfs:label "UcoObject"@en ; From e272df401c286c982c101c07c0f2fdc72edff7a8 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 17 Jun 2021 15:21:24 -0400 Subject: [PATCH 34/94] Correct Facet names I had forgotten to make this change in the other JSON file. Reported-by: Trevor Bobka --- tests/examples/location_XFAIL.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/examples/location_XFAIL.json b/tests/examples/location_XFAIL.json index ebfefd29..56d8fff6 100644 --- a/tests/examples/location_XFAIL.json +++ b/tests/examples/location_XFAIL.json @@ -13,14 +13,14 @@ "core:description": "First of two locations in example.", "core:hasFacet": [ { - "@type": "location:SimpleAddress", + "@type": "location:SimpleAddressFacet", "location:locality": "Seattle", "location:region": "WA", "location:postalCode": 98052, "location:street": "20341 Whitworth Institute 405 N. Whitworth" }, { - "@type": "acme:InternalLocation", + "@type": "acme:InternalLocationFacet", "acme:floor": 3, "acme:roomNumber": "345" } @@ -32,7 +32,7 @@ "core:descriptionButWrongName": "Second of two locations in example.", "core:hasFacet": [ { - "@type": "location:SimpleAddress", + "@type": "location:SimpleAddressFacet", "location:locality": "Paris", "location:country": "France", "location:postalCode": "F-75002", From 58ba3b87c262e1acf4b11c20f3623f00fbefe5e6 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 17 Jun 2021 15:23:25 -0400 Subject: [PATCH 35/94] Account for pyshacl exiting 1 in XFAIL test based on intended non-conformance --- tests/examples/Makefile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/examples/Makefile b/tests/examples/Makefile index f1997de9..f165edb5 100644 --- a/tests/examples/Makefile +++ b/tests/examples/Makefile @@ -36,6 +36,15 @@ location_PASS_validation.ttl: \ $< mv _$@ $@ +# NOTE - this recipe makes an allowance for a certain failure type +# reported by pyshacl. Pyshacl will exit status 1 in the case where +# "DataGraph is Non-Conformant". This XFAIL test is intenced to +# generate a non-conformance result, and feed that result forward to +# pytest. Hence, the Make recipe allows for an exit status of 0 or 1. +# (0 would cause an expected failure later in pytest.) +# Note that should another issue cause an exit status of 1, pytest will +# fail because the result validation-graph file would not have expected +# characteristics. location_XFAIL_validation.ttl: \ location_XFAIL.json \ $(tests_srcdir)/.venv.done.log \ @@ -48,7 +57,8 @@ location_XFAIL_validation.ttl: \ --shacl $(tests_srcdir)/uco_monolithic.ttl \ --shacl-file-format turtle \ --output _$@ \ - $< + $< \ + ; rc=$$? ; test 0 -eq $$rc -o 1 -eq $$rc mv _$@ $@ check: \ From 5b5654f1de8f204119b713f872f59991c0623c46 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 17 Jun 2021 15:26:23 -0400 Subject: [PATCH 36/94] Ignore temporary Make-generated files --- tests/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/.gitignore b/tests/.gitignore index e57590f5..e12ae364 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -1,4 +1,4 @@ .venv.done.log -__pycache__ +_* uco_monolithic.ttl venv From 2c36bdb3ed8a5ac0536c044893e47b034a856a4e Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 21 Jun 2021 11:34:38 -0400 Subject: [PATCH 37/94] Add Python setup to Github Actions CI This is to support adding SHACL testing. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- .github/workflows/ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bebcf362..424d4025 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,14 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install Python virtualenv for Github runner + run: | + python -m pip install --upgrade pip + pip install virtualenv - name: Start from clean state run: make clean - name: Run tests From 25b7773824401dc130a697add5492f64ca21c3b3 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Tue, 22 Jun 2021 16:12:37 -0400 Subject: [PATCH 38/94] Continuation of CP-16. Fixed naming convention of observable:region_end_address within observable-da.ttl. This is in continuation of implementing changes for CP-16. Acked-by: Trevor Bobka --- uco-observable/observable-da.ttl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uco-observable/observable-da.ttl b/uco-observable/observable-da.ttl index 7b9656fb..142b21c9 100644 --- a/uco-observable/observable-da.ttl +++ b/uco-observable/observable-da.ttl @@ -1504,15 +1504,15 @@ observable:referralURL rdfs:domain observable:WhoisRegistrarInfoType ; . -observable:regionSize +observable:regionEndAddress rdfs:domain observable:MemoryFacet ; . -observable:regionStartAddress +observable:regionSize rdfs:domain observable:MemoryFacet ; . -observable:region_end_address +observable:regionStartAddress rdfs:domain observable:MemoryFacet ; . From d5ef1515c315cd4c125e16882982d4f5549ee7fe Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Tue, 22 Jun 2021 16:20:57 -0400 Subject: [PATCH 39/94] Fixed naming convention for observable:profileLanguage --- uco-observable/observable.ttl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index fee5b850..98a7d5d6 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -9061,7 +9061,7 @@ observable:profileWebsite rdfs:range observable:ObservableObject ; . -observable:profilelanguage +observable:profileLanguage a owl:DatatypeProperty ; rdfs:label "Profile Language"@en-US ; rdfs:comment "Specifies the language associated with the profile. When present, it MUST be a language code conformant to RFC 5646/BCP47."@en-US ; From 0aa5cf36db22ae839aa28e0e20dde29537c2870d Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Tue, 22 Jun 2021 16:27:30 -0400 Subject: [PATCH 40/94] Normalize --- uco-observable/observable.ttl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 98a7d5d6..8bfdbf1c 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -9047,6 +9047,13 @@ observable:profileIsVerified rdfs:range xsd:boolean ; . +observable:profileLanguage + a owl:DatatypeProperty ; + rdfs:label "Profile Language"@en-US ; + rdfs:comment "Specifies the language associated with the profile. When present, it MUST be a language code conformant to RFC 5646/BCP47."@en-US ; + rdfs:range xsd:string ; + . + observable:profileService a owl:ObjectProperty ; rdfs:label "Profile Service"@en-US ; @@ -9061,13 +9068,6 @@ observable:profileWebsite rdfs:range observable:ObservableObject ; . -observable:profileLanguage - a owl:DatatypeProperty ; - rdfs:label "Profile Language"@en-US ; - rdfs:comment "Specifies the language associated with the profile. When present, it MUST be a language code conformant to RFC 5646/BCP47."@en-US ; - rdfs:range xsd:string ; - . - observable:properties a owl:DatatypeProperty ; rdfs:label "properties"@en ; From c4346163b1fc22dd0ced3409a369362465fbced9 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Tue, 22 Jun 2021 16:32:32 -0400 Subject: [PATCH 41/94] Removed observable:faxNumber (CP-64) --- uco-observable/observable.ttl | 7 ------- 1 file changed, 7 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index fee5b850..f4985a52 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -7555,13 +7555,6 @@ observable:favoritesCount rdfs:range xsd:nonNegativeInteger ; . -observable:faxNumber - a owl:ObjectProperty ; - rdfs:label "faxNumber"@en ; - rdfs:comment "A phone number(account) of a fax."@en ; - rdfs:range observable:ObservableObject ; - . - observable:fileAlignment a owl:DatatypeProperty ; rdfs:label "fileAlignment"@en ; From 0385b112310ffb2bd39cb0bcc2036bab934632f3 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Tue, 22 Jun 2021 16:39:02 -0400 Subject: [PATCH 42/94] Removed core:role from core.ttl and core-da.ttl --- uco-core/core-da.ttl | 4 ---- uco-core/core.ttl | 7 ------- 2 files changed, 11 deletions(-) diff --git a/uco-core/core-da.ttl b/uco-core/core-da.ttl index 73c6b056..f8d77050 100644 --- a/uco-core/core-da.ttl +++ b/uco-core/core-da.ttl @@ -93,10 +93,6 @@ core:referenceURL rdfs:domain core:ExternalReferenceFacet ; . -core:role - rdfs:domain core:RelatedIdentity ; - . - core:source rdfs:domain core:Relationship ; . diff --git a/uco-core/core.ttl b/uco-core/core.ttl index dbdb474f..b31d9aec 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -429,13 +429,6 @@ core:referenceURL rdfs:range xsd:anyURI ; . -core:role - a owl:DatatypeProperty ; - rdfs:label "role"@en ; - rdfs:comment "Usual or customary function based on contextual perspective."@en ; - rdfs:range xsd:string ; - . - core:source a owl:ObjectProperty ; rdfs:label "source"@en ; From 995c32d3fd6dfaa7a70d92ca1ba4aa0101bdc2da Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Wed, 23 Jun 2021 15:36:12 -0400 Subject: [PATCH 43/94] Correct casing of picturetype to pictureType This is a continuation of Github Issue 143, originally thought resolved for UCO 0.4.0. The casing correction was not applied in the domain assertions file, which could impact the SHACL conversion of UCO. This patch has no attached Change Proposal because of its prior approval under Issue 143. This was discovered through inspection of UCO with the tool, "ROBOT". References: * [Issue 143] Casing correction - "picturetype" https://github.com/ucoProject/UCO/issues/143 * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes * [ROBOT] R.C. Jackson, J.P. Balhoff, E. Douglass, N.L. Harris, C.J. Mungall, and J.A. Overton. ROBOT: A tool for automating ontology workflows. BMC Bioinformatics, vol. 20, July 2019. Signed-off-by: Alex Nelson --- uco-observable/observable-da.ttl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uco-observable/observable-da.ttl b/uco-observable/observable-da.ttl index 142b21c9..9564f4dd 100644 --- a/uco-observable/observable-da.ttl +++ b/uco-observable/observable-da.ttl @@ -1408,11 +1408,11 @@ observable:pictureHeight rdfs:domain observable:RasterPictureFacet ; . -observable:pictureWidth +observable:pictureType rdfs:domain observable:RasterPictureFacet ; . -observable:picturetype +observable:pictureWidth rdfs:domain observable:RasterPictureFacet ; . From 9dfe290a85fc8dde52483ece5127d491013f945e Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Wed, 23 Jun 2021 16:02:21 -0400 Subject: [PATCH 44/94] Carry rename of contactInfo to registrantContactInfo to observable-da.ttl This is a continuation of Change Proposal 5, originally thought resolved for UCO 0.6.0. A property rename was not applied in the domain assertions file, which could impact the SHACL conversion of UCO. This patch has no new attached Change Proposal because of its prior approval under Change Proposal 5. This was discovered through inspection of UCO with the tool, "ROBOT". References: * [OC-24] (CP-5) Refactor and improve contacts * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes * [ROBOT] R.C. Jackson, J.P. Balhoff, E. Douglass, N.L. Harris, C.J. Mungall, and J.A. Overton. ROBOT: A tool for automating ontology workflows. BMC Bioinformatics, vol. 20, July 2019. Signed-off-by: Alex Nelson --- uco-observable/observable-da.ttl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/uco-observable/observable-da.ttl b/uco-observable/observable-da.ttl index 142b21c9..0873f3ab 100644 --- a/uco-observable/observable-da.ttl +++ b/uco-observable/observable-da.ttl @@ -344,10 +344,6 @@ observable:computerName rdfs:domain observable:EventFacet ; . -observable:contactInfo - rdfs:domain observable:WhoIsFacet ; - . - observable:contentDisposition rdfs:domain observable:EmailMessageFacet ; . @@ -1528,6 +1524,10 @@ observable:registeredOwner rdfs:domain observable:WindowsComputerSpecificationFacet ; . +observable:registrantContactInfo + rdfs:domain observable:WhoIsFacet ; + . + observable:registrantIDs rdfs:domain observable:WhoIsFacet ; . From d9e930bf04145e649537baf717d34a8d08347f1d Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Mon, 28 Jun 2021 12:04:47 -0400 Subject: [PATCH 45/94] Initial SHACL files These SHACL files were created assuming Bug Fixes 62 through 66 were already implemented into the develop branch. Acked-by: Trevor Bobka --- uco-action/action-da.ttl | 115 - uco-action/action.ttl | 297 +- uco-core/core-da.ttl | 127 - uco-core/core.ttl | 357 +- uco-identity/identity-da.ttl | 38 - uco-identity/identity.ttl | 170 +- uco-location/location-da.ttl | 67 - uco-location/location.ttl | 143 +- uco-marking/marking-da.ttl | 47 - uco-marking/marking.ttl | 148 +- uco-master/uco.ttl | 11 +- uco-observable/observable-da.ttl | 2056 --------- uco-observable/observable.ttl | 7162 +++++++++++++++++------------- uco-pattern/pattern-da.ttl | 18 - uco-pattern/pattern.ttl | 37 +- uco-role/role.ttl | 28 +- uco-time/time.ttl | 3 +- uco-tool/tool-da.ttl | 146 - uco-tool/tool.ttl | 363 +- uco-types/types-da.ttl | 34 - uco-types/types.ttl | 115 +- uco-victim/victim.ttl | 16 +- uco-vocabulary/vocabulary.ttl | 3 +- 23 files changed, 5018 insertions(+), 6483 deletions(-) delete mode 100644 uco-action/action-da.ttl delete mode 100644 uco-core/core-da.ttl delete mode 100644 uco-identity/identity-da.ttl delete mode 100644 uco-location/location-da.ttl delete mode 100644 uco-marking/marking-da.ttl delete mode 100644 uco-observable/observable-da.ttl delete mode 100644 uco-pattern/pattern-da.ttl delete mode 100644 uco-tool/tool-da.ttl delete mode 100644 uco-types/types-da.ttl diff --git a/uco-action/action-da.ttl b/uco-action/action-da.ttl deleted file mode 100644 index 08506a94..00000000 --- a/uco-action/action-da.ttl +++ /dev/null @@ -1,115 +0,0 @@ -# baseURI: https://unifiedcyberontology.org/ontology/uco/action-da - -@base . -@prefix action: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a owl:Ontology ; - rdfs:label "action domain assertions"@en ; - rdfs:comment "This ontology defines the domain assertions for action properties."@en-US ; - . - -action:action - rdfs:domain action:ArrayOfAction ; - . - -action:actionCount - rdfs:domain action:Action ; - . - -action:actionStatus - rdfs:domain action:Action ; - . - -action:argumentName - rdfs:domain action:ActionArgumentFacet ; - . - -action:endTime - rdfs:domain action:Action ; - . - -action:environment - rdfs:domain action:ActionReferencesFacet ; - . - -action:error - rdfs:domain action:Action ; - . - -action:estimatedCost - rdfs:domain action:ActionEstimationFacet ; - . - -action:estimatedEfficacy - rdfs:domain action:ActionEstimationFacet ; - . - -action:estimatedImpact - rdfs:domain action:ActionEstimationFacet ; - . - -action:instrument - rdfs:domain action:ActionReferencesFacet ; - . - -action:location - rdfs:domain action:ActionReferencesFacet ; - . - -action:object - rdfs:domain action:ActionReferencesFacet ; - . - -action:objective - rdfs:domain action:ActionEstimationFacet ; - . - -action:participant - rdfs:domain action:ActionReferencesFacet ; - . - -action:performer - rdfs:domain action:ActionReferencesFacet ; - . - -action:phase - rdfs:domain action:ActionLifecycle ; - . - -action:rate - rdfs:domain action:ActionFrequencyFacet ; - . - -action:result - rdfs:domain action:ActionReferencesFacet ; - . - -action:scale - rdfs:domain action:ActionFrequencyFacet ; - . - -action:startTime - rdfs:domain action:Action ; - . - -action:subaction - rdfs:domain action:Action ; - . - -action:trend - rdfs:domain action:ActionFrequencyFacet ; - . - -action:units - rdfs:domain action:ActionFrequencyFacet ; - . - -action:value - rdfs:domain action:ActionArgumentFacet ; - . - diff --git a/uco-action/action.ttl b/uco-action/action.ttl index 8ca3d4d6..c99bb365 100644 --- a/uco-action/action.ttl +++ b/uco-action/action.ttl @@ -7,9 +7,13 @@ @base . @prefix action: . +@prefix core: . +@prefix location: . @prefix owl: . +@prefix pattern: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . @prefix vocabulary: . @prefix xsd: . @@ -27,204 +31,241 @@ . action:Action - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:UcoObject ; + rdfs:label "Action"@en ; + rdfs:comment "An action is something that may be done or performed."@en ; + sh:property + [ + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:actionCount ; + ] , + [ + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:actionStatus ; + ] , [ - a owl:Restriction ; - owl:onProperty action:actionStatus ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty action:endTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:startTime ; ] , [ - a owl:Restriction ; - owl:onProperty action:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:path action:error ; ] , [ - a owl:Restriction ; - owl:onProperty action:actionCount ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:nonNegativeInteger ; + sh:path action:subaction ; ] ; - rdfs:label "Action"@en ; - rdfs:comment "An action is something that may be done or performed."@en ; + sh:targetClass action:Action ; . action:ActionArgumentFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ActionArgumentFacet"@en ; + rdfs:comment "An action argument facet is a grouping of characteristics unique to a single parameter of an action."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty action:argumentName ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path action:argumentName ; ] , [ - a owl:Restriction ; - owl:onProperty action:value ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path action:value ; ] ; - rdfs:label "ActionArgumentFacet"@en ; - rdfs:comment "An action argument facet is a grouping of characteristics unique to a single parameter of an action."@en ; + sh:targetClass action:ActionArgumentFacet ; . action:ActionEstimationFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ActionEstimationFacet"@en ; + rdfs:comment "An action estimation facet is a grouping of characteristics unique to decision-focused approximation aspects for an action that may potentially be performed."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty action:estimatedCost ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:estimatedCost ; ] , [ - a owl:Restriction ; - owl:onProperty action:estimatedEfficacy ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:estimatedEfficacy ; ] , [ - a owl:Restriction ; - owl:onProperty action:estimatedImpact ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:estimatedImpact ; ] , [ - a owl:Restriction ; - owl:onProperty action:objective ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:objective ; ] ; - rdfs:label "ActionEstimationFacet"@en ; - rdfs:comment "An action estimation facet is a grouping of characteristics unique to decision-focused approximation aspects for an action that may potentially be performed."@en ; + sh:targetClass action:ActionEstimationFacet ; . action:ActionFrequencyFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 [ - a owl:Restriction ; - owl:onProperty action:rate ; - owl:onDataRange xsd:float ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:float ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path action:rate ; ] , [ - a owl:Restriction ; - owl:onProperty action:scale ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path action:scale ; ] , [ - a owl:Restriction ; - owl:onProperty action:units ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path action:units ; ] , [ - a owl:Restriction ; - owl:onProperty action:trend ; - owl:onDataRange vocabulary:TrendVocab ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype vocabulary:TrendVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path action:trend ; ] ; - 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:targetClass action:ActionFrequencyFacet ; . action:ActionLifecycle - a owl:Class ; - rdfs:subClassOf - action:Action , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf action:Action ; + rdfs:label "ActionLifecycle"@en ; + rdfs:comment "An action lifecycle is an action pattern consisting of an ordered set of multiple actions or subordinate action lifecycles."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty action:actionStatus ; - owl:maxCardinality "0"^^xsd:nonNegativeInteger ; + sh:class action:ArrayOfAction ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path action:phase ; ] , [ - a owl:Restriction ; - owl:onProperty action:endTime ; - owl:maxCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:path action:actionCount ; ] , [ - a owl:Restriction ; - owl:onProperty action:error ; - owl:maxCardinality "0"^^xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:path action:actionStatus ; ] , [ - a owl:Restriction ; - owl:onProperty action:startTime ; - owl:maxCardinality "0"^^xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:path action:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty action:actionCount ; - owl:maxQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:path action:error ; ] , [ - a owl:Restriction ; - owl:onProperty action:phase ; - owl:onClass action:ArrayOfAction ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:path action:startTime ; ] ; - rdfs:label "ActionLifecycle"@en ; - rdfs:comment "An action lifecycle is an action pattern consisting of an ordered set of multiple actions or subordinate action lifecycles."@en ; + sh:targetClass action:ActionLifecycle ; . action:ActionPattern - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf action:Action , - + pattern:Pattern ; rdfs:label "ActionPattern"@en ; rdfs:comment "An action pattern is a grouping of characteristics unique to a combination of actions forming a consistent or characteristic arrangement."@en ; + sh:targetClass action:ActionPattern ; . action:ActionReferencesFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ActionReferencesFacet"@en ; + rdfs:comment """An action references facet is a grouping of characteristics unique to the core elements (who, how, with what, where, etc.) for an action. The characteristics are references to separate UCO objects detailing the particular characteristic. + """@en ; + sh:property + [ + sh:class core:UcoObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:environment ; + ] , [ - a owl:Restriction ; - owl:onProperty action:environment ; - owl:onClass ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class core:UcoObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path action:performer ; ] , [ - a owl:Restriction ; - owl:onProperty action:performer ; - owl:onClass ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path action:instrument ; + ] , + [ + sh:path action:location ; + ] , + [ + sh:path action:object ; + ] , + [ + sh:path action:participant ; + ] , + [ + sh:path action:result ; ] ; - rdfs:label "ActionReferencesFacet"@en ; - rdfs:comment """An action references facet is a grouping of characteristics unique to the core elements (who, how, with what, where, etc.) for an action. The characteristics are references to separate UCO objects detailing the particular characteristic. - """@en ; + sh:targetClass action:ActionReferencesFacet ; . action:ArrayOfAction - a owl:Class ; - rdfs:subClassOf [ - a owl:Restriction ; - owl:onProperty action:action ; - owl:minCardinality "1"^^xsd:nonNegativeInteger ; - ] ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "ArrayOfAction"@en ; rdfs:comment "An array of action is an ordered list of references to things that may be done or performed."@en ; + sh:property [ + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path action:action ; + ] ; + sh:targetClass action:ArrayOfAction ; . action:action @@ -266,14 +307,14 @@ action:environment a owl:ObjectProperty ; rdfs:label "environment"@en ; rdfs:comment "The environment wherein an action occurs."@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . action:error a owl:ObjectProperty ; rdfs:label "error"@en ; rdfs:comment "A characterization of the differences between the expected and the actual performance of the action."@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . action:estimatedCost @@ -301,21 +342,21 @@ action:instrument a owl:ObjectProperty ; rdfs:label "instrument"@en ; rdfs:comment "The things used to perform an action."@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . action:location a owl:ObjectProperty ; rdfs:label "location"@en ; rdfs:comment "The locations where an action occurs."@en ; - rdfs:range ; + rdfs:range location:Location ; . action:object a owl:ObjectProperty ; rdfs:label "object"@en ; rdfs:comment "The things that the action is performed on/against."@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . action:objective @@ -329,14 +370,14 @@ action:participant a owl:ObjectProperty ; rdfs:label "participant"@en ; rdfs:comment "The supporting (non-primary) performers of an action."@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . action:performer a owl:ObjectProperty ; rdfs:label "performer"@en ; rdfs:comment "The primary performer of an action."@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . action:phase @@ -358,7 +399,7 @@ action:result a owl:ObjectProperty ; rdfs:label "result"@en ; rdfs:comment "The things resulting from performing an action."@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . action:scale diff --git a/uco-core/core-da.ttl b/uco-core/core-da.ttl deleted file mode 100644 index f8d77050..00000000 --- a/uco-core/core-da.ttl +++ /dev/null @@ -1,127 +0,0 @@ -# baseURI: https://unifiedcyberontology.org/ontology/uco/core-da - -@base . -@prefix core: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - 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 ; - . - -core:confidence - rdfs:domain core:ConfidenceFacet ; - . - -core:constrainingVocabularyName - rdfs:domain core:ControlledVocabulary ; - . - -core:constrainingVocabularyReference - rdfs:domain core:ControlledVocabulary ; - . - -core:context - rdfs:domain core:Grouping ; - . - -core:createdBy - rdfs:domain core:UcoObject ; - . - -core:definingContext - rdfs:domain core:ExternalReferenceFacet ; - . - -core:description - rdfs:domain core:UcoObject ; - . - -core:endTime - rdfs:domain core:Relationship ; - . - -core:externalIdentifier - rdfs:domain core:ExternalReferenceFacet ; - . - -core:hasFacet - rdfs:domain core:UcoObject ; - . - -core:id - rdfs:domain core:UcoObject ; - . - -core:isDirectional - rdfs:domain core:Relationship ; - . - -core:kindOfRelationship - rdfs:domain core:Relationship ; - . - -core:modifiedTime - rdfs:domain core:UcoObject ; - . - -core:name - rdfs:domain core:UcoObject ; - . - -core:object - rdfs:domain - core:Annotation , - core:ContextualCompilation , - core:EnclosingCompilation - ; - . - -core:objectCreatedTime - rdfs:domain core:UcoObject ; - . - -core:objectMarking - rdfs:domain core:UcoObject ; - . - -core:referenceURL - rdfs:domain core:ExternalReferenceFacet ; - . - -core:source - rdfs:domain core:Relationship ; - . - -core:specVersion - rdfs:domain core:UcoObject ; - . - -core:startTime - rdfs:domain core:Relationship ; - . - -core:statement - rdfs:domain core:Assertion ; - . - -core:tag - rdfs:domain core:UcoObject ; - . - -core:target - rdfs:domain core:Relationship ; - . - -core:type - rdfs:domain core:UcoObject ; - . - -core:value - rdfs:domain core:ControlledVocabulary ; - . - diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 35593f81..4980df46 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -2,13 +2,12 @@ # imports: https://unifiedcyberontology.org/ontology/uco/vocabulary @base . -@prefix : . @prefix core: . @prefix owl: . @prefix rdf: . @prefix rdfs: . -@prefix vocabulary: . -@prefix xml: . +@prefix sh: . +@prefix types: . @prefix xsd: . @@ -19,273 +18,349 @@ . core:Annotation - a owl:Class ; - rdfs:subClassOf - core:Assertion , - [ - a owl:Restriction ; - owl:onProperty core:object ; - owl:onClass core:UcoObject ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Assertion ; rdfs:label "Annotation"@en ; rdfs:comment "An annotation is an assertion made in relation to one or more objects."@en ; + sh:property [ + sh:class core:UcoObject ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:object ; + ] ; + sh:targetClass core:Annotation ; . core:Assertion - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf core:UcoObject ; rdfs:label "Assertion"@en ; rdfs:comment "An assertion is a statement declared to be true."@en ; + sh:property [ + sh:path core:statement ; + ] ; + sh:targetClass core:Assertion ; . core:AttributedName - a owl:Class ; - rdfs:subClassOf - core:UcoObject , - [ - a owl:Restriction ; - owl:onProperty core:namingAuthority ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:UcoObject ; rdfs:label "AttributedName"@en ; rdfs:comment "An attributed name is a name of an entity issued by some attributed naming authority."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:namingAuthority ; + ] ; + sh:targetClass core:AttributedName ; . core:Bundle - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf core:EnclosingCompilation ; rdfs:label "Bundle"@en ; rdfs:comment "A bundle is a container for a grouping of UCO content with no presumption of shared context."@en ; + sh:targetClass core:Bundle ; . core:Compilation - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf core:UcoObject ; rdfs:label "Compilation"@en ; rdfs:comment "A compilation is a grouping of things."@en ; + sh:targetClass core:Compilation ; . core:ConfidenceFacet - a owl:Class ; - rdfs:subClassOf - core:Facet , - [ - a owl:Restriction ; - owl:onProperty core:confidence ; - owl:onDataRange xsd:nonNegativeInteger ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "ConfidenceFacet"@en ; rdfs:comment "A confidence is a grouping of characteristics unique to an asserted level of certainty in the accuracy of some information."@en ; + sh:property [ + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:confidence ; + ] ; + sh:targetClass core:ConfidenceFacet ; . core:ContextualCompilation - a owl:Class ; - rdfs:subClassOf - core:Compilation , - [ - a owl:Restriction ; - owl:onProperty core:object ; - owl:onClass core:UcoObject ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Compilation ; rdfs:label "ContextualCompilation"@en ; rdfs:comment "A contextual compilation is a grouping of things sharing some context (e.g., a set of network connections observed on a given day, all accounts associated with a given person)."@en ; + sh:property [ + sh:class core:UcoObject ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:object ; + ] ; + sh:targetClass core:ContextualCompilation ; . core:ControlledVocabulary - a owl:Class ; - rdfs:subClassOf - core:UcoObject , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:UcoObject ; + rdfs:label "ControlledVocabulary"@en ; + rdfs:comment "A controlled vocabulary is an explicitly constrained set of string values."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty core:constrainingVocabularyReference ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:anyURI ; + sh:datatype xsd:anyURI ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:constrainingVocabularyReference ; ] , [ - a owl:Restriction ; - owl:onProperty core:constrainingVocabularyName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:value ; ] , [ - a owl:Restriction ; - owl:onProperty core:value ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:constrainingVocabularyName ; ] ; - rdfs:label "ControlledVocabulary"@en ; - rdfs:comment "A controlled vocabulary is an explicitly constrained set of string values."@en ; + sh:targetClass core:ControlledVocabulary ; . core:EnclosingCompilation - a owl:Class ; - rdfs:subClassOf - core:Compilation , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Compilation ; + rdfs:label "EnclosingCompilation"@en ; + rdfs:comment "An enclosing compilation is a container for a grouping of things."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty core:description ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class core:UcoObject ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:object ; ] , [ - a owl:Restriction ; - owl:onProperty core:object ; - owl:onClass core:UcoObject ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:description ; ] ; - rdfs:label "EnclosingCompilation"@en ; - rdfs:comment "An enclosing compilation is a container for a grouping of things."@en ; + sh:targetClass core:EnclosingCompilation ; . core:ExternalReference - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "ExternalReference"@en ; + rdfs:comment "Characteristics of a reference to a resource outside of the UCO."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty core:definingContext ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:definingContext ; ] , [ - a owl:Restriction ; - owl:onProperty core:externalIdentifier ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:externalIdentifier ; ] , [ - a owl:Restriction ; - owl:onProperty core:referenceURL ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:referenceURL ; ] ; - rdfs:label "ExternalReference"@en ; - rdfs:comment "Characteristics of a reference to a resource outside of the UCO."@en ; + sh:targetClass core:ExternalReference ; . core:Facet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "Facet"@en ; rdfs:comment "A facet is a grouping of characteristics unique to a particular aspect of an object."@en ; + sh:targetClass core:Facet ; . core:Grouping - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf core:ContextualCompilation ; rdfs:label "Grouping"@en ; rdfs:comment "A grouping is a compilation of referenced UCO content with a shared context."@en ; + sh:property [ + sh:path core:context ; + ] ; + sh:targetClass core:Grouping ; . core:IdentityAbstraction - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf core:UcoObject ; rdfs:label "IdentityAbstraction"@en ; rdfs:comment "An identity abstraction is a grouping of identifying characteristics unique to an individual or organization. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the identity:Identity class."@en ; + sh:targetClass core:IdentityAbstraction ; . core:Item - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf core:UcoObject ; rdfs:label "Item"@en ; rdfs:comment "An item is a distinct article or unit."@en ; + sh:targetClass core:Item ; . core:MarkingDefinitionAbstraction - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf core:UcoObject ; rdfs:label "MarkingDefinitionAbstraction"@en ; rdfs:comment "A marking definition abstraction is a grouping of characteristics unique to the expression of a specific data marking conveying restrictions, permissions, and other guidance for how marked data can be used and shared. This class is an ontological structural abstraction for this concept. Implementations of this concept should utilize the marking:MarkingDefinition class."@en ; + sh:targetClass core:MarkingDefinitionAbstraction ; . core:ModusOperandi - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf core:UcoObject ; rdfs:label "ModusOperandi"@en ; rdfs:comment "A modus operandi is a particular method of operation (how a particular entity behaves or the resources they use)."@en ; + sh:targetClass core:ModusOperandi ; . core:Relationship - a owl:Class ; - rdfs:subClassOf - core:UcoObject , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:UcoObject ; + rdfs:label "Relationship"@en ; + rdfs:comment "A relationship is a grouping of characteristics unique to an assertion that one or more objects are related to another object in some way."@en ; + sh:property + [ + sh:class core:UcoObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:target ; + ] , + [ + sh:class core:UcoObject ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:source ; + ] , [ - a owl:Restriction ; - owl:onProperty core:kindOfRelationship ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:isDirectional ; ] , [ - a owl:Restriction ; - owl:onProperty core:source ; - owl:onClass core:UcoObject ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:kindOfRelationship ; ] , [ - a owl:Restriction ; - owl:onProperty core:target ; - owl:onClass core:UcoObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path core:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty core:isDirectional ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path core:startTime ; ] ; - rdfs:label "Relationship"@en ; - rdfs:comment "A relationship is a grouping of characteristics unique to an assertion that one or more objects are related to another object in some way."@en ; + sh:targetClass core:Relationship ; . core:UcoObject - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "UcoObject"@en ; + rdfs:comment "A UCO object is a representation of a fundamental concept either directly inherent to the cyber domain or indirectly related to the cyber domain and necessary for contextually characterizing cyber domain concepts and relationships. Within the Unified Cyber Ontology (UCO) structure this is the base class acting as a consistent, unifying and interoperable foundation for all explicit and inter-relatable content objects."@en ; + sh:property + [ + sh:class core:ExternalReference ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path core:externalReference ; + ] , + [ + sh:class core:IdentityAbstraction ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:createdBy ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:objectCreatedTime ; + ] , [ - a owl:Restriction ; - owl:onProperty core:createdBy ; - owl:onClass core:IdentityAbstraction ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:name ; ] , [ - a owl:Restriction ; - owl:onProperty core:objectCreatedTime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:specVersion ; ] , [ - a owl:Restriction ; - owl:onProperty core:name ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype types:Identifier ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:id ; ] , [ - a owl:Restriction ; - owl:onProperty core:specVersion ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path core:description ; ] , [ - a owl:Restriction ; - owl:onProperty core:id ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange ; + sh:path core:hasFacet ; ] , [ - a owl:Restriction ; - owl:onProperty core:externalReference ; - owl:onClass core:ExternalReference ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + sh:path core:modifiedTime ; + ] , + [ + sh:path core:objectMarking ; + ] , + [ + sh:path core:tag ; + ] , + [ + sh:path core:type ; ] ; - rdfs:label "UcoObject"@en ; - rdfs:comment "A UCO object is a representation of a fundamental concept either directly inherent to the cyber domain or indirectly related to the cyber domain and necessary for contextually characterizing cyber domain concepts and relationships. Within the Unified Cyber Ontology (UCO) structure this is the base class acting as a consistent, unifying and interoperable foundation for all explicit and inter-relatable content objects."@en ; + sh:targetClass core:UcoObject ; . core:confidence @@ -377,7 +452,7 @@ core:id a owl:DatatypeProperty ; rdfs:label "id"@en ; rdfs:comment "A globally unique identifier for a characterization of a concept."@en ; - rdfs:range ; + rdfs:range types:Identifier ; . core:isDirectional diff --git a/uco-identity/identity-da.ttl b/uco-identity/identity-da.ttl deleted file mode 100644 index 287c7f0f..00000000 --- a/uco-identity/identity-da.ttl +++ /dev/null @@ -1,38 +0,0 @@ -# baseURI: https://unifiedcyberontology.org/ontology/uco/identity-da - -@base . -@prefix identity: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a owl:Ontology ; - rdfs:label "identity domain assertions"@en ; - . - -identity:address - rdfs:domain identity:AddressFacet ; - . - -identity:birthdate - rdfs:domain identity:BirthInformationFacet ; - . - -identity:familyName - rdfs:domain identity:SimpleNameFacet ; - . - -identity:givenName - rdfs:domain identity:SimpleNameFacet ; - . - -identity:honorificPrefix - rdfs:domain identity:SimpleNameFacet ; - . - -identity:honorificSuffix - rdfs:domain identity:SimpleNameFacet ; - . - diff --git a/uco-identity/identity.ttl b/uco-identity/identity.ttl index b9beb342..eeaf8e66 100644 --- a/uco-identity/identity.ttl +++ b/uco-identity/identity.ttl @@ -3,10 +3,13 @@ # imports: https://unifiedcyberontology.org/ontology/uco/location @base . +@prefix core: . @prefix identity: . +@prefix location: . @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . @prefix xsd: . @@ -19,166 +22,255 @@ . identity:AddressFacet - a owl:Class ; - rdfs:subClassOf - identity:IdentityFacet , - [ - a owl:Restriction ; - owl:onProperty identity:address ; - owl:onClass ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf identity:IdentityFacet ; rdfs:label "AddressFacet"@en ; rdfs:comment "An address facet is a grouping of characteristics unique to an administrative identifier for a geolocation associated with a specific identity."@en ; + sh:property [ + sh:class location:Location ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path identity:address ; + ] ; + sh:targetClass identity:AddressFacet ; . identity:AffiliationFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "AffiliationFacet"@en ; rdfs:comment "An affiliation is a grouping of characteristics unique to the established affiliations of an entity."@en ; + sh:targetClass identity:AffiliationFacet ; . identity:BirthInformationFacet - a owl:Class ; - rdfs:subClassOf - identity:IdentityFacet , - [ - a owl:Restriction ; - owl:onProperty identity:birthdate ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf identity:IdentityFacet ; rdfs:label "BirthInformationFacet"@en ; rdfs:comment "Birth information is a grouping of characteristics unique to information pertaining to the birth of an entity."@en ; + sh:property [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path identity:birthdate ; + ] ; + sh:targetClass identity:BirthInformationFacet ; . identity:CountryOfResidenceFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "CountryOfResidenceFacet"@en ; rdfs:comment "Country of residence is a grouping of characteristics unique to information related to the country, or countries, where an entity resides."@en ; + sh:targetClass identity:CountryOfResidenceFacet ; . identity:EventsFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "EventsFacet"@en ; rdfs:comment "Events is a grouping of characteristics unique to information related to specific relevant things that happen in the lifetime of an entity."@en ; + sh:targetClass identity:EventsFacet ; . identity:IdentifierFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "IdentifierFacet"@en ; rdfs:comment "Identifier is a grouping of characteristics unique to information that uniquely and specifically identities an entity."@en ; + sh:targetClass identity:IdentifierFacet ; . identity:Identity - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:IdentityAbstraction ; rdfs:label "Identity"@en ; rdfs:comment "An identity is a grouping of identifying characteristics unique to an individual or organization."@en ; + sh:targetClass identity:Identity ; . identity:IdentityFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "IdentityFacet"@en ; rdfs:comment "An identity facet is a grouping of characteristics unique to a particular aspect of an identity."@en ; + sh:targetClass identity:IdentityFacet ; . identity:LanguagesFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "LanguagesFacet"@en ; rdfs:comment "Languages is a grouping of characteristics unique to specific syntactically and grammatically standardized forms of communication (human or computer) in which an entity has proficiency (comprehends, speaks, reads, or writes)."@en ; + sh:targetClass identity:LanguagesFacet ; . identity:NationalityFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "NationalityFacet"@en ; rdfs:comment "Nationality is a grouping of characteristics unique to the condition of an entity belonging to a particular nation."@en ; + sh:targetClass identity:NationalityFacet ; . identity:OccupationFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "OccupationFacet"@en ; rdfs:comment "Occupation is a grouping of characteristics unique to the job or profession of an entity."@en ; + sh:targetClass identity:OccupationFacet ; . identity:Organization - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:Identity ; rdfs:label "Organization"@en ; rdfs:comment "An organization is a grouping of identifying characteristics unique to a group of people who work together in an organized way for a shared purpose. [based on https://dictionary.cambridge.org/us/dictionary/english/organization]"@en ; + sh:targetClass identity:Organization ; . identity:OrganizationDetailsFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "OrganizationDetailsFacet"@en ; rdfs:comment "Organization details is a grouping of characteristics unique to an identity representing an administrative and functional structure."@en ; + sh:targetClass identity:OrganizationDetailsFacet ; . identity:Person - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:Identity ; rdfs:label "Person"@en ; rdfs:comment "A person is a grouping of identifying characteristics unique to a human being regarded as an individual. [based on https://www.lexico.com/en/definition/person]"@en ; + sh:targetClass identity:Person ; . identity:PersonalDetailsFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "PersonalDetailsFacet"@en ; rdfs:comment "Personal details is a grouping of characteristics unique to an identity representing an individual person."@en ; + sh:targetClass identity:PersonalDetailsFacet ; . identity:PhysicalInfoFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "PhysicalInfoFacet"@en ; rdfs:comment "Physical info is a grouping of characteristics unique to the outwardly observable nature of an individual person."@en ; + sh:targetClass identity:PhysicalInfoFacet ; . identity:QualificationFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "QualificationFacet"@en ; rdfs:comment "Qualification is a grouping of characteristics unique to particular skills, capabilities or their related achievements (educational, professional, etc.) of an entity."@en ; + sh:targetClass identity:QualificationFacet ; . identity:RelatedIdentityFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "RelatedIdentityFacet"@en ; rdfs:comment ""@en ; + sh:targetClass identity:RelatedIdentityFacet ; . identity:SimpleNameFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "SimpleNameFacet"@en ; rdfs:comment "A simple name facet is a grouping of characteristics unique to the personal name (e.g., Dr. John Smith Jr.) held by an identity."@en ; + sh:property + [ + sh:path identity:familyName ; + ] , + [ + sh:path identity:givenName ; + ] , + [ + sh:path identity:honorificPrefix ; + ] , + [ + sh:path identity:honorificSuffix ; + ] + ; + sh:targetClass identity:SimpleNameFacet ; . identity:VisaFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf identity:IdentityFacet ; rdfs:label "VisaFacet"@en ; rdfs:comment "Visa is a grouping of characteristics unique to information related to a person's ability to enter, leave, or stay for a specified period of time in a country."@en ; + sh:targetClass identity:VisaFacet ; . identity:address a owl:ObjectProperty ; rdfs:label "address"@en ; rdfs:comment ""@en ; - rdfs:range ; + rdfs:range location:Location ; . identity:birthdate diff --git a/uco-location/location-da.ttl b/uco-location/location-da.ttl deleted file mode 100644 index b33d7df7..00000000 --- a/uco-location/location-da.ttl +++ /dev/null @@ -1,67 +0,0 @@ -# baseURI: https://unifiedcyberontology.org/ontology/uco/location-da - -@base . -@prefix location: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a owl:Ontology ; - rdfs:label "location domain assertions"@en ; - . - -location:addressType - rdfs:domain location:SimpleAddressFacet ; - . - -location:altitude - rdfs:domain location:LatLongCoordinatesFacet ; - . - -location:country - rdfs:domain location:SimpleAddressFacet ; - . - -location:hdop - rdfs:domain location:GPSCoordinatesFacet ; - . - -location:latitude - rdfs:domain location:LatLongCoordinatesFacet ; - . - -location:locality - rdfs:domain location:SimpleAddressFacet ; - . - -location:longitude - rdfs:domain location:LatLongCoordinatesFacet ; - . - -location:pdop - rdfs:domain location:GPSCoordinatesFacet ; - . - -location:postalCode - rdfs:domain location:SimpleAddressFacet ; - . - -location:region - rdfs:domain location:SimpleAddressFacet ; - . - -location:street - rdfs:domain location:SimpleAddressFacet ; - . - -location:tdop - rdfs:domain location:GPSCoordinatesFacet ; - . - -location:vdop - a owl:DatatypeProperty ; - rdfs:domain location:GPSCoordinatesFacet ; - . - diff --git a/uco-location/location.ttl b/uco-location/location.ttl index 69fb9f92..b5dfefe7 100644 --- a/uco-location/location.ttl +++ b/uco-location/location.ttl @@ -2,10 +2,12 @@ # imports: https://unifiedcyberontology.org/ontology/uco/core @base . +@prefix core: . @prefix location: . @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . @prefix xsd: . @@ -15,115 +17,118 @@ . location:GPSCoordinatesFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "GPSCoordinatesFacet"@en ; + rdfs:comment "A GPS coordinates facet is a grouping of characteristics unique to the expression of quantified dilution of precision (DOP) for an asserted set of geolocation coordinates typically associated with satellite navigation such as the Global Positioning System (GPS)."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty location:hdop ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:double ; + sh:datatype xsd:double ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:hdop ; ] , [ - a owl:Restriction ; - owl:onProperty location:pdop ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:double ; + sh:datatype xsd:double ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:pdop ; ] , [ - a owl:Restriction ; - owl:onProperty location:tdop ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:double ; + sh:datatype xsd:double ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:tdop ; ] , [ - a owl:Restriction ; - owl:onProperty location:vdop ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:double ; + sh:datatype xsd:double ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:vdop ; ] ; - rdfs:label "GPSCoordinatesFacet"@en ; - rdfs:comment "A GPS coordinates facet is a grouping of characteristics unique to the expression of quantified dilution of precision (DOP) for an asserted set of geolocation coordinates typically associated with satellite navigation such as the Global Positioning System (GPS)."@en ; + sh:targetClass location:GPSCoordinatesFacet ; . location:LatLongCoordinatesFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "LatLongCoordinatesFacet"@en ; + rdfs:comment "A lat long coordinates facet is a grouping of characteristics unique to the expression of a geolocation as the intersection of specific latitude, longitude, and altitude values."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty location:altitude ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:decimal ; + sh:datatype xsd:decimal ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:altitude ; ] , [ - a owl:Restriction ; - owl:onProperty location:latitude ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:decimal ; + sh:datatype xsd:decimal ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:latitude ; ] , [ - a owl:Restriction ; - owl:onProperty location:longitude ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:decimal ; + sh:datatype xsd:decimal ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:longitude ; ] ; - rdfs:label "LatLongCoordinatesFacet"@en ; - rdfs:comment "A lat long coordinates facet is a grouping of characteristics unique to the expression of a geolocation as the intersection of specific latitude, longitude, and altitude values."@en ; + sh:targetClass location:LatLongCoordinatesFacet ; . location:Location - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:UcoObject ; rdfs:label "Location"@en ; rdfs:comment "A location is a geospatial place, site, or position."@en ; + sh:targetClass location:Location ; . location:SimpleAddressFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "SimpleAddressFacet"@en ; + rdfs:comment "A simple address facet is a grouping of characteristics unique to a geolocation expressed as an administrative address."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty location:addressType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:addressType ; ] , [ - a owl:Restriction ; - owl:onProperty location:country ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:country ; ] , [ - a owl:Restriction ; - owl:onProperty location:locality ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:locality ; ] , [ - a owl:Restriction ; - owl:onProperty location:postalCode ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:postalCode ; ] , [ - a owl:Restriction ; - owl:onProperty location:region ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:region ; ] , [ - a owl:Restriction ; - owl:onProperty location:street ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path location:street ; ] ; - rdfs:label "SimpleAddressFacet"@en ; - rdfs:comment "A simple address facet is a grouping of characteristics unique to a geolocation expressed as an administrative address."@en ; + sh:targetClass location:SimpleAddressFacet ; . location:addressType diff --git a/uco-marking/marking-da.ttl b/uco-marking/marking-da.ttl deleted file mode 100644 index 260e16b7..00000000 --- a/uco-marking/marking-da.ttl +++ /dev/null @@ -1,47 +0,0 @@ -# baseURI: https://unifiedcyberontology.org/ontology/uco/marking-da - -@base . -@prefix marking: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a owl:Ontology ; - rdfs:label "marking domain assertions"@en ; - rdfs:comment "This ontology defines the domain assertions for the marking ontology"@en ; - . - -marking:authorizedIdentities - rdfs:domain marking:ReleaseToMarking ; - . - -marking:contentSelectors - rdfs:domain marking:GranularMarking ; - . - -marking:definition - rdfs:domain marking:MarkingDefinition ; - . - -marking:definitionType - rdfs:domain marking:MarkingDefinition ; - . - -marking:license - rdfs:domain marking:LicenseMarking ; - . - -marking:marking - rdfs:domain marking:GranularMarking ; - . - -marking:statement - rdfs:domain marking:StatementMarking ; - . - -marking:termsOfUse - rdfs:domain marking:TermsOfUseMarking ; - . - diff --git a/uco-marking/marking.ttl b/uco-marking/marking.ttl index b47a34f5..43647816 100644 --- a/uco-marking/marking.ttl +++ b/uco-marking/marking.ttl @@ -2,10 +2,12 @@ # imports: https://unifiedcyberontology.org/ontology/uco/core @base . +@prefix core: . @prefix marking: . @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . @prefix xsd: . @@ -16,107 +18,141 @@ . marking:GranularMarking - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "GranularMarking"@en ; rdfs:comment "A granular marking is a grouping of characteristics unique to specification of marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) that apply to particular portions of a particular UCO object."@en ; + sh:property + [ + sh:path marking:contentSelectors ; + ] , + [ + sh:path marking:marking ; + ] + ; + sh:targetClass marking:GranularMarking ; . marking:LicenseMarking - a owl:Class ; - rdfs:subClassOf - marking:MarkingModel , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf marking:MarkingModel ; + rdfs:label "License Marking"@en ; + rdfs:comment "A license marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of license restrictions that apply to the data."@en-US ; + sh:property [ - a owl:Restriction ; - owl:onProperty marking:license ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; + sh:hasValue "license" ; + sh:path marking:definitionType ; ] , [ - a owl:Restriction ; - owl:onProperty marking:definitionType ; - owl:hasValue "license" ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path marking:license ; ] ; - rdfs:label "License Marking"@en ; - rdfs:comment "A license marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of license restrictions that apply to the data."@en-US ; + sh:targetClass marking:LicenseMarking ; . marking:MarkingDefinition - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty marking:definitionType ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:MarkingDefinitionAbstraction ; rdfs:label "MarkingDefinition"@en ; rdfs:comment "A marking definition is a grouping of characteristics unique to the expression of a specific data marking conveying restrictions, permissions, and other guidance for how marked data can be used and shared."@en ; + sh:property + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path marking:definitionType ; + ] , + [ + sh:path marking:definition ; + ] + ; + sh:targetClass marking:MarkingDefinition ; . marking:MarkingModel - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "MarkingModel"@en ; rdfs:comment "A marking model is a grouping of characteristics unique to the expression of a particular form of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared)."@en ; + sh:targetClass marking:MarkingModel ; . marking:ReleaseToMarking - a owl:Class ; - rdfs:subClassOf - marking:MarkingModel , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf marking:MarkingModel ; + rdfs:label "Release-To Marking"@en ; + rdfs:comment "A release-to marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of authorized persons and/or organizations to which to the associated content may be released. The existence of the Release-To marking restricts access to ONLY those identities explicitly listed, regardless of whether another data marking exists that allows sharing with other members of the community."@en-US ; + sh:property [ - a owl:Restriction ; - owl:onProperty marking:definitionType ; - owl:hasValue "release-to" ; + sh:datatype xsd:string ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path marking:authorizedIdentities ; ] , [ - a owl:Restriction ; - owl:onProperty marking:authorizedIdentities ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:hasValue "release-to" ; + sh:path marking:definitionType ; ] ; - rdfs:label "Release-To Marking"@en ; - rdfs:comment "A release-to marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of authorized persons and/or organizations to which to the associated content may be released. The existence of the Release-To marking restricts access to ONLY those identities explicitly listed, regardless of whether another data marking exists that allows sharing with other members of the community."@en-US ; + sh:targetClass marking:ReleaseToMarking ; . marking:StatementMarking - a owl:Class ; - rdfs:subClassOf - marking:MarkingModel , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf marking:MarkingModel ; + rdfs:label "Statement Marking"@en ; + rdfs:comment "A statement marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of a textual marking statement, (e.g., copyright) whose semantic meaning should apply to the associated content. Statement markings are generally not machine-readable. An example of this would be a simple marking to apply copyright information, such as 'Copyright 2014 Acme Inc.'."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty marking:statement ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; + sh:hasValue "statement" ; + sh:path marking:definitionType ; ] , [ - a owl:Restriction ; - owl:onProperty marking:definitionType ; - owl:hasValue "statement" ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path marking:statement ; ] ; - rdfs:label "Statement Marking"@en ; - rdfs:comment "A statement marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of a textual marking statement, (e.g., copyright) whose semantic meaning should apply to the associated content. Statement markings are generally not machine-readable. An example of this would be a simple marking to apply copyright information, such as 'Copyright 2014 Acme Inc.'."@en ; + sh:targetClass marking:StatementMarking ; . marking:TermsOfUseMarking - a owl:Class ; - rdfs:subClassOf - marking:MarkingModel , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf marking:MarkingModel ; + rdfs:label "Terms Of Use Marking"@en ; + rdfs:comment "A terms of use marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of a textual statement specifying the Terms of Use (that is, the conditions under which the content may be shared, applied, or otherwise used) of the marked content. An example of this would be used to communicate a simple statement, such as 'Acme Inc. is not responsible for the content of this file'."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty marking:termsOfUse ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; + sh:hasValue "terms-of-use" ; + sh:path marking:definitionType ; ] , [ - a owl:Restriction ; - owl:onProperty marking:definitionType ; - owl:hasValue "terms-of-use" ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path marking:termsOfUse ; ] ; - rdfs:label "Terms Of Use Marking"@en ; - rdfs:comment "A terms of use marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of a textual statement specifying the Terms of Use (that is, the conditions under which the content may be shared, applied, or otherwise used) of the marked content. An example of this would be used to communicate a simple statement, such as 'Acme Inc. is not responsible for the content of this file'."@en ; + sh:targetClass marking:TermsOfUseMarking ; . marking:authorizedIdentities diff --git a/uco-master/uco.ttl b/uco-master/uco.ttl index 75626c54..92366d80 100644 --- a/uco-master/uco.ttl +++ b/uco-master/uco.ttl @@ -22,14 +22,13 @@ # imports: https://unifiedcyberontology.org/ontology/uco/victim @base . -@prefix : . +@prefix core: . @prefix owl: . @prefix rdf: . @prefix rdfs: . -@prefix uco: . -@prefix xml: . +@prefix sh: . +@prefix types: . @prefix xs: . -@prefix xsd: . a owl:Ontology ; @@ -60,7 +59,7 @@ owl:versionInfo "0.6.0" ; . - - rdfs:range ; +core:id + rdfs:range types:Identifier ; . diff --git a/uco-observable/observable-da.ttl b/uco-observable/observable-da.ttl deleted file mode 100644 index d8deb738..00000000 --- a/uco-observable/observable-da.ttl +++ /dev/null @@ -1,2056 +0,0 @@ -# baseURI: https://unifiedcyberontology.org/ontology/uco/observable-da - -@base . -@prefix observable: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix types: . -@prefix xml: . -@prefix xsd: . - - - a owl:Ontology ; - rdfs:label "observable domain assertions"@en ; - . - -observable:ESN - rdfs:domain observable:MobileDeviceFacet ; - . - -observable:ICCID - rdfs:domain observable:SIMCardFacet ; - . - -observable:IMEI - rdfs:domain observable:MobileDeviceFacet ; - . - -observable:IMSI - rdfs:domain - observable:MobileAccountFacet , - observable:SIMCardFacet - ; - . - -observable:MSISDN - rdfs:domain - observable:MobileAccountFacet , - observable:MobileDeviceFacet - ; - . - -observable:MSISDNType - rdfs:domain observable:MobileAccountFacet ; - . - -observable:PIN - rdfs:domain observable:SIMCardFacet ; - . - -observable:PUK - rdfs:domain observable:SIMCardFacet ; - . - -observable:SIMForm - rdfs:domain observable:SIMCardFacet ; - . - -observable:SIMType - rdfs:domain observable:SIMCardFacet ; - . - -observable:abbreviation - rdfs:domain observable:GlobalFlagType ; - . - -observable:accessedDirectory - rdfs:domain observable:WindowsPrefetchFacet ; - . - -observable:accessedFile - rdfs:domain observable:WindowsPrefetchFacet ; - . - -observable:accessedTime - rdfs:domain observable:FileFacet ; - . - -observable:account - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:accountIdentifier - rdfs:domain observable:AccountFacet ; - . - -observable:accountIssuer - rdfs:domain observable:AccountFacet ; - . - -observable:accountLogin - rdfs:domain observable:DigitalAccountFacet ; - . - -observable:accountLogonType - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:accountRunLevel - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:accountType - rdfs:domain observable:AccountFacet ; - . - -observable:actionID - rdfs:domain observable:TaskActionType ; - . - -observable:actionList - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:actionType - rdfs:domain observable:TaskActionType ; - . - -observable:activeDirectoryGroups - rdfs:domain observable:WindowsActiveDirectoryAccountFacet ; - . - -observable:adapterName - rdfs:domain observable:NetworkInterfaceFacet ; - . - -observable:addressOfEntryPoint - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:allocationStatus - rdfs:domain observable:FileFacet ; - . - -observable:alternateDataStreams - rdfs:domain observable:NTFSFileFacet ; - . - -observable:application - rdfs:domain observable:PhoneCallFacet ; - . - -observable:applicationFileName - rdfs:domain observable:WindowsPrefetchFacet ; - . - -observable:applicationIdentifier - rdfs:domain observable:ApplicationFacet ; - . - -observable:archiveType - rdfs:domain observable:ArchiveFileFacet ; - . - -observable:arguments - rdfs:domain observable:ProcessFacet ; - . - -observable:asHandle - rdfs:domain observable:AutonomousSystemFacet ; - . - -observable:aslrEnabled - rdfs:domain observable:WindowsProcessFacet ; - . - -observable:attendant - rdfs:domain observable:CalendarEntryFacet ; - . - -observable:audioType - rdfs:domain observable:AudioFacet ; - . - -observable:authorityKeyIdentifier - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:availableRam - rdfs:domain observable:ComputerSpecificationFacetFacet ; - . - -observable:baseOfCode - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:baseStation - rdfs:domain observable:WirelessNetworkConnectionFacet ; - . - -observable:basicConstraints - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:bcc - rdfs:domain observable:EmailMessageFacet ; - . - -observable:binary - rdfs:domain observable:ProcessFacet ; - . - -observable:biosDate - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:biosManufacturer - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:biosReleaseDate - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:biosSerialNumber - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:biosVersion - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:bitRate - rdfs:domain observable:AudioFacet ; - . - -observable:bitness - rdfs:domain observable:OperatingSystemFacet ; - . - -observable:bitsPerPixel - rdfs:domain observable:RasterPictureFacet ; - . - -observable:blockType - rdfs:domain observable:MemoryFacet ; - . - -observable:bluetoothDeviceName - rdfs:domain observable:MobileDeviceFacet ; - . - -observable:body - rdfs:domain observable:EmailMessageFacet ; - . - -observable:bodyMultipart - rdfs:domain observable:EmailMessageFacet ; - . - -observable:bodyRaw - rdfs:domain observable:EmailMessageFacet ; - . - -observable:bookmarkPath - rdfs:domain observable:BrowserBookmarkFacet ; - . - -observable:byteOrder - rdfs:domain observable:ContentDataFacet ; - . - -observable:byteStringValue - rdfs:domain observable:ExtractedString ; - . - -observable:callType - rdfs:domain observable:PhoneCallFacet ; - . - -observable:camera - rdfs:domain observable:RasterPictureFacet ; - . - -observable:canEscalatePrivs - rdfs:domain observable:UserAccountFacet ; - . - -observable:carrier - rdfs:domain observable:SIMCardFacet ; - . - -observable:categories - rdfs:domain observable:EmailMessageFacet ; - . - -observable:cc - rdfs:domain observable:EmailMessageFacet ; - . - -observable:certificateIssuer - rdfs:domain observable:DigitalSignatureInfoFacet ; - . - -observable:certificatePolicies - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:certificateSubject - rdfs:domain observable:DigitalSignatureInfoFacet ; - . - -observable:characteristics - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:checksum - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:clockSetting - rdfs:domain observable:MobileDeviceFacet ; - . - -observable:clusterSize - rdfs:domain observable:FileSystemFacet ; - . - -observable:columnName - rdfs:domain observable:SQLiteBlobFacet ; - . - -observable:comClassID - rdfs:domain observable:IComHandlerActionType ; - . - -observable:comData - rdfs:domain observable:IComHandlerActionType ; - . - -observable:comment - rdfs:domain observable:ArchiveFileFacet ; - . - -observable:compressionMethod - rdfs:domain observable:CompressedStreamFacet ; - . - -observable:compressionRatio - rdfs:domain observable:CompressedStreamFacet ; - . - -observable:computerName - rdfs:domain observable:EventFacet ; - . - -observable:contentDisposition - rdfs:domain observable:EmailMessageFacet ; - . - -observable:contentType - rdfs:domain observable:EmailMessageFacet ; - . - -observable:context - rdfs:domain observable:WindowsThreadFacet ; - . - -observable:controlCode - rdfs:domain observable:SendControlCodeEffectFacet ; - . - -observable:cookieDomain - rdfs:domain observable:BrowserCookieFacet ; - . - -observable:cookieName - rdfs:domain observable:BrowserCookieFacet ; - . - -observable:cookiePath - rdfs:domain observable:BrowserCookieFacet ; - . - -observable:cpeid - rdfs:domain observable:SoftwareFacet ; - . - -observable:cpu - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:cpuFamily - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:creationDate - rdfs:domain observable:WhoIsFacet ; - . - -observable:creationFlags - rdfs:domain observable:WindowsThreadFacet ; - . - -observable:creationTime - rdfs:domain observable:WindowsThreadFacet ; - . - -observable:creator - rdfs:domain observable:WindowsRegistryKeyFacet ; - . - -observable:creatorUser - rdfs:domain observable:ProcessFacet ; - . - -observable:crlDistributionPoints - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:currentSystemDate - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:currentWorkingDirectory - rdfs:domain observable:ProcessFacet ; - . - -observable:cyberAction - rdfs:domain observable:EventFacet ; - . - -observable:data - rdfs:domain observable:WindowsRegistryValue ; - . - -observable:dataPayload - rdfs:domain observable:ContentDataFacet ; - . - -observable:dataPayloadReferenceURL - rdfs:domain observable:ContentDataFacet ; - . - -observable:dataType - rdfs:domain observable:WindowsRegistryValue ; - . - -observable:depEnabled - rdfs:domain observable:WindowsProcessFacet ; - . - -observable:descriptions - rdfs:domain observable:WindowsServiceFacet ; - . - -observable:destination - rdfs:domain observable:GlobalFlagType ; - . - -observable:destinationFlags - rdfs:domain observable:TCPConnectionFacet ; - . - -observable:destinationPort - rdfs:domain observable:NetworkConnectionFacet ; - . - -observable:deviceType - rdfs:domain observable:DeviceFacet ; - . - -observable:dhcpLeaseExpires - rdfs:domain observable:NetworkInterfaceFacet ; - . - -observable:dhcpLeaseObtained - rdfs:domain observable:NetworkInterfaceFacet ; - . - -observable:dhcpServer - rdfs:domain observable:NetworkInterfaceFacet ; - . - -observable:diskPartitionType - rdfs:domain observable:DiskPartitionFacet ; - . - -observable:diskSize - rdfs:domain observable:DiskFacet ; - . - -observable:diskType - rdfs:domain observable:DiskFacet ; - . - -observable:displayName - rdfs:domain - observable:ContactFacet , - observable:WindowsServiceFacet - ; - . - -observable:dllCharacteristics - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:dnssec - rdfs:domain observable:WhoIsFacet ; - . - -observable:documentInformationDictionary - rdfs:domain observable:PDFFIle ; - . - -observable:domain - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:domainID - rdfs:domain observable:WhoIsFacet ; - . - -observable:domainName - rdfs:domain observable:WhoIsFacet ; - . - -observable:driveLetter - rdfs:domain observable:WindowsVolumeFacet ; - . - -observable:driveType - rdfs:domain observable:WindowsVolumeFacet ; - . - -observable:dst - rdfs:domain observable:NetworkConnectionFacet ; - . - -observable:dstBytes - rdfs:domain observable:NetworkFlowFacet ; - . - -observable:dstPackets - rdfs:domain observable:NetworkFlowFacet ; - . - -observable:dstPayload - rdfs:domain observable:NetworkFlowFacet ; - . - -observable:duration - rdfs:domain observable:PhoneCallFacet ; - . - -observable:effectiveGroup - rdfs:domain observable:UserSessionFacet ; - . - -observable:effectiveGroupID - rdfs:domain observable:UserSessionFacet ; - . - -observable:effectiveUser - rdfs:domain observable:UserSessionFacet ; - . - -observable:encoding - rdfs:domain observable:ExtractedString ; - . - -observable:encodingMethod - rdfs:domain observable:EncodedStreamFacet ; - . - -observable:encryptionIV - rdfs:domain observable:EncryptedStreamFacet ; - . - -observable:encryptionKey - rdfs:domain observable:EncryptedStreamFacet ; - . - -observable:encryptionMethod - rdfs:domain observable:EncryptedStreamFacet ; - . - -observable:encryptionMode - rdfs:domain observable:EncryptedStreamFacet ; - . - -observable:endTime - rdfs:domain observable:PhoneCallFacet ; - . - -observable:englishTranslation - rdfs:domain observable:ExtractedString ; - . - -observable:entropy - rdfs:domain observable:ContentDataFacet ; - . - -observable:entryID - rdfs:domain observable:NTFSFileFacet ; - . - -observable:environmentVariables - rdfs:domain observable:ProcessFacet ; - . - -observable:eventID - rdfs:domain observable:EventFacet ; - . - -observable:eventStatus - rdfs:domain observable:CalendarEntryFacet ; - . - -observable:eventText - rdfs:domain observable:EventFacet ; - . - -observable:eventType - rdfs:domain observable:EventFacet ; - . - -observable:execArguments - rdfs:domain observable:IExecActionType ; - . - -observable:execProgramHashes - rdfs:domain observable:IExecActionType ; - . - -observable:execProgramPath - rdfs:domain observable:IExecActionType ; - . - -observable:execWorkingDirectory - rdfs:domain observable:IExecActionType ; - . - -observable:exifData - rdfs:domain observable:EXIFFacet ; - . - -observable:exitCode - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:exitStatus - rdfs:domain observable:ProcessFacet ; - . - -observable:exitTime - rdfs:domain observable:ProcessFacet ; - . - -observable:expirationDate - rdfs:domain observable:WhoIsFacet ; - . - -observable:expirationTime - rdfs:domain observable:BrowserCookieFacet ; - . - -observable:extDeletionTime - rdfs:domain observable:ExtInodeFacet ; - . - -observable:extFileType - rdfs:domain observable:ExtInodeFacet ; - . - -observable:extFlags - rdfs:domain observable:ExtInodeFacet ; - . - -observable:extHardLinkCount - rdfs:domain observable:ExtInodeFacet ; - . - -observable:extInodeChangeTime - rdfs:domain observable:ExtInodeFacet ; - . - -observable:extInodeID - rdfs:domain observable:ExtInodeFacet ; - . - -observable:extPermissions - rdfs:domain observable:ExtInodeFacet ; - . - -observable:extSGID - rdfs:domain observable:ExtInodeFacet ; - . - -observable:extSUID - rdfs:domain observable:ExtInodeFacet ; - . - -observable:extendedKeyUsage - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:extension - rdfs:domain observable:FileFacet ; - . - -observable:fileAlignment - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:fileHeaderHashes - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:fileName - rdfs:domain observable:FileFacet ; - . - -observable:filePath - rdfs:domain observable:FileFacet ; - . - -observable:fileSystemType - rdfs:domain observable:FileSystemFacet ; - . - -observable:firstLoginTime - rdfs:domain observable:DigitalAccountFacet ; - . - -observable:firstName - rdfs:domain observable:ContactFacet ; - . - -observable:firstRun - rdfs:domain observable:WindowsPrefetchFacet ; - . - -observable:flags - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:format - rdfs:domain observable:AudioFacet ; - . - -observable:fragment - rdfs:domain observable:URLFacet ; - . - -observable:fragmentIndex - rdfs:domain observable:FragmentFacet ; - . - -observable:freeSpace - rdfs:domain observable:DiskFacet ; - . - -observable:from - rdfs:domain observable:PhoneCallFacet ; - . - -observable:fullValue - rdfs:domain observable:URLFacet ; - . - -observable:geoLocationEntry - rdfs:domain observable:GeoLocationTrackFacet ; - . - -observable:gid - rdfs:domain observable:UNIXAccountFacet ; - . - -observable:globalFlagList - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:gpu - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:gpuFamily - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:groupName - rdfs:domain observable:WindowsServiceFacet ; - . - -observable:groups - rdfs:domain observable:WindowsAccountFacet ; - . - -observable:hasChanged - rdfs:domain observable:ObservableObject ; - . - -observable:hash - rdfs:domain observable:ContentDataFacet ; - . - -observable:hashes - rdfs:domain observable:WindowsPESection ; - . - -observable:headerRaw - rdfs:domain observable:EmailMessageFacet ; - . - -observable:hexadecimalValue - rdfs:domain observable:GlobalFlagType ; - . - -observable:hiveType - rdfs:domain observable:WindowsRegistryHiveFacet ; - . - -observable:homeDirectory - rdfs:domain observable:UserAccountFacet ; - . - -observable:host - rdfs:domain observable:URLFacet ; - . - -observable:hostname - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:httpMesageBodyLength - rdfs:domain observable:HTTPConnectionFacet ; - . - -observable:httpMessageBodyData - rdfs:domain observable:HTTPConnectionFacet ; - . - -observable:httpRequestHeader - rdfs:domain observable:HTTPConnectionFacet ; - . - -observable:iComHandlerAction - rdfs:domain observable:TaskActionType ; - . - -observable:iEmailAction - rdfs:domain observable:TaskActionType ; - . - -observable:iExecAction - rdfs:domain observable:TaskActionType ; - . - -observable:iShowMessageAction - rdfs:domain observable:TaskActionType ; - . - -observable:icmpCode - rdfs:domain observable:ICMPConnectionFacet ; - . - -observable:icmpType - rdfs:domain observable:ICMPConnectionFacet ; - . - -observable:imageBase - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:imageCompressionMethod - rdfs:domain observable:RasterPictureFacet ; - . - -observable:imageName - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:imageType - rdfs:domain observable:ImageFacet ; - . - -observable:impHash - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:inReplyTo - rdfs:domain observable:EmailMessageFacet ; - . - -observable:inhibitAnyPolicy - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:installDate - rdfs:domain observable:OperatingSystemFacet ; - . - -observable:ip - rdfs:domain observable:NetworkInterfaceFacet ; - . - -observable:ipAddress - rdfs:domain observable:WhoIsFacet ; - . - -observable:ipGateway - rdfs:domain observable:NetworkInterfaceFacet ; - . - -observable:ipfix - rdfs:domain observable:NetworkFlowFacet ; - . - -observable:isActive - rdfs:domain observable:NetworkConnectionFacet ; - . - -observable:isDirectory - rdfs:domain observable:FileFacet ; - . - -observable:isDisabled - rdfs:domain observable:DigitalAccountFacet ; - . - -observable:isEnabled - rdfs:domain observable:TriggerType ; - . - -observable:isEncrypted - rdfs:domain observable:ContentDataFacet ; - . - -observable:isHidden - rdfs:domain observable:ProcessFacet ; - . - -observable:isInjected - rdfs:domain observable:MemoryFacet ; - . - -observable:isMapped - rdfs:domain observable:MemoryFacet ; - . - -observable:isMimeEncoded - rdfs:domain observable:EmailMessageFacet ; - . - -observable:isMultipart - rdfs:domain observable:EmailMessageFacet ; - . - -observable:isNamed - rdfs:domain observable:MutexFacet ; - . - -observable:isOptimized - rdfs:domain observable:PDFFIle ; - . - -observable:isPrivate - rdfs:domain observable:CalendarEntryFacet ; - . - -observable:isPrivileged - rdfs:domain observable:UserAccountFacet ; - . - -observable:isProtected - rdfs:domain observable:MemoryFacet ; - . - -observable:isRead - rdfs:domain observable:EmailMessageFacet ; - . - -observable:isSecure - rdfs:domain observable:BrowserCookieFacet ; - . - -observable:isSelfSigned - rdfs:domain observable:X509CertificateFacet ; - . - -observable:isServiceAccount - rdfs:domain observable:UserAccountFacet ; - . - -observable:isTLD - rdfs:domain observable:DomainNameFacet ; - . - -observable:isVolatile - rdfs:domain observable:MemoryFacet ; - . - -observable:issuer - rdfs:domain observable:X509CertificateFacet ; - . - -observable:issuerAlternativeName - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:issuerHash - rdfs:domain observable:X509CertificateFacet ; - . - -observable:key - rdfs:domain observable:WindowsRegistryKeyFacet ; - . - -observable:keyUsage - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:keypadUnlockCode - rdfs:domain observable:MobileDeviceFacet ; - . - -observable:labels - rdfs:domain observable:EmailMessageFacet ; - . - -observable:language - rdfs:domain observable:ExtractedString ; - . - -observable:lastLoginTime - rdfs:domain observable:DigitalAccountFacet ; - . - -observable:lastName - rdfs:domain observable:ContactFacet ; - . - -observable:lastRun - rdfs:domain observable:WindowsPrefetchFacet ; - . - -observable:length - rdfs:domain observable:ExtractedString ; - . - -observable:libraryType - rdfs:domain observable:LibraryFacet ; - . - -observable:loaderFlags - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:localTime - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:location - rdfs:domain observable:GeoLocationEntryFacet ; - . - -observable:loginTime - rdfs:domain observable:UserSessionFacet ; - . - -observable:logoutTime - rdfs:domain observable:UserSessionFacet ; - . - -observable:lookupDate - rdfs:domain observable:WhoIsFacet ; - . - -observable:macAddress - rdfs:domain observable:NetworkInterfaceFacet ; - . - -observable:machine - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:magic - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:magicNumber - rdfs:domain observable:ContentDataFacet ; - . - -observable:majorImageVersion - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:majorLinkerVersion - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:majorOSVersion - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:majorSubsystemVersion - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:manufacturer - rdfs:domain observable:DeviceFacet ; - . - -observable:maxRunTime - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:message - rdfs:domain observable:MessageThreadFacet ; - . - -observable:messageID - rdfs:domain - observable:EmailMessageFacet , - observable:MessageFacet - ; - . - -observable:messageText - rdfs:domain observable:MessageFacet ; - . - -observable:messageType - rdfs:domain observable:MessageFacet ; - . - -observable:metadataChangeTime - rdfs:domain observable:FileFacet ; - . - -observable:mftFileID - rdfs:domain observable:MftRecordFacet ; - . - -observable:mftFileNameAccessedTime - rdfs:domain observable:MftRecordFacet ; - . - -observable:mftFileNameCreatedTime - rdfs:domain observable:MftRecordFacet ; - . - -observable:mftFileNameLength - rdfs:domain observable:MftRecordFacet ; - . - -observable:mftFileNameModifiedTime - rdfs:domain observable:MftRecordFacet ; - . - -observable:mftFileNameRecordChangeTime - rdfs:domain observable:MftRecordFacet ; - . - -observable:mftFlags - rdfs:domain observable:MftRecordFacet ; - . - -observable:mftParentID - rdfs:domain observable:MftRecordFacet ; - . - -observable:mftRecordChangeTime - rdfs:domain observable:MftRecordFacet ; - . - -observable:middleName - rdfs:domain observable:ContactFacet ; - . - -observable:mimeClass - rdfs:domain observable:ContentDataFacet ; - . - -observable:mimeType - rdfs:domain observable:ContentDataFacet ; - . - -observable:minorImageVersion - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:minorLinkerVersion - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:minorOSVersion - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:minorSubsystemVersion - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:mockLocationsAllowed - rdfs:domain observable:MobileDeviceFacet ; - . - -observable:model - rdfs:domain observable:DeviceFacet ; - . - -observable:modifiedTime - rdfs:domain observable:FileFacet ; - . - -observable:mostRecentRunTime - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:mountPoint - rdfs:domain observable:DiskPartitionFacet ; - . - -observable:msProductID - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:msProductName - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:nameConstraints - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:nameServer - rdfs:domain observable:WhoIsFacet ; - . - -observable:netBIOSName - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:network - rdfs:domain observable:MobileDeviceFacet ; - . - -observable:networkInterface - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:newObject - rdfs:domain observable:StateChangeEffectFacet ; - . - -observable:nextRunTime - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:ntfsHardLinkCount - rdfs:domain observable:MftRecordFacet ; - . - -observable:ntfsOwnerID - rdfs:domain observable:MftRecordFacet ; - . - -observable:ntfsOwnerSID - rdfs:domain observable:MftRecordFacet ; - . - -observable:number - rdfs:domain observable:AutonomousSystemFacet ; - . - -observable:numberOfLaunches - rdfs:domain observable:ApplicationFacet ; - . - -observable:numberOfRVAAndSizes - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:numberOfSections - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:numberOfSubkeys - rdfs:domain observable:WindowsRegistryKeyFacet ; - . - -observable:numberOfSymbols - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:objectGUID - rdfs:domain observable:WindowsActiveDirectoryAccountFacet ; - . - -observable:observableCreatedTime - rdfs:domain observable:FileFacet ; - . - -observable:oldObject - rdfs:domain observable:StateChangeEffectFacet ; - . - -observable:openFileDescriptor - rdfs:domain observable:UNIXProcessFacet ; - . - -observable:operatingSystem - rdfs:domain observable:ApplicationFacet ; - . - -observable:optionalHeader - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:options - rdfs:domain observable:UNIXVolumeFacet ; - . - -observable:otherHeaders - rdfs:domain observable:EmailMessageFacet ; - . - -observable:owner - rdfs:domain - observable:AccountFacet , - observable:FilePermissionsFacet - ; - . - -observable:ownerSID - rdfs:domain observable:WindowsProcessFacet ; - . - -observable:parameterAddress - rdfs:domain observable:WindowsThreadFacet ; - . - -observable:parameters - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:parent - rdfs:domain observable:ProcessFacet ; - . - -observable:participant - rdfs:domain observable:MessageThreadFacet ; - . - -observable:partition - rdfs:domain observable:DiskFacet ; - . - -observable:partitionID - rdfs:domain observable:DiskPartitionFacet ; - . - -observable:partitionLength - rdfs:domain observable:DiskPartitionFacet ; - . - -observable:partitionOffset - rdfs:domain observable:DiskPartitionFacet ; - . - -observable:password - rdfs:domain - observable:AccountAuthenticationFacet , - observable:URLFacet - ; - . - -observable:passwordLastChanged - rdfs:domain observable:AccountAuthenticationFacet ; - . - -observable:passwordType - rdfs:domain observable:AccountAuthenticationFacet ; - . - -observable:path - rdfs:domain observable:PathRelationFacet ; - . - -observable:pdfId0 - rdfs:domain observable:PDFFileFacet ; - . - -observable:pdfId1 - rdfs:domain observable:PDFFileFacet ; - . - -observable:peType - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:phoneActivationTime - rdfs:domain observable:MobileDeviceFacet ; - . - -observable:phoneNumber - rdfs:domain observable:PhoneAccountFacet ; - . - -observable:pictureHeight - rdfs:domain observable:RasterPictureFacet ; - . - -observable:pictureType - rdfs:domain observable:RasterPictureFacet ; - . - -observable:pictureWidth - rdfs:domain observable:RasterPictureFacet ; - . - -observable:pid - rdfs:domain observable:ProcessFacet ; - . - -observable:pointerToSymbolTable - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:policyConstraints - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:policyMappings - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:port - rdfs:domain observable:URLFacet ; - . - -observable:prefetchHash - rdfs:domain observable:WindowsPrefetchFacet ; - . - -observable:priority - rdfs:domain observable:EmailMessageFacet ; - . - -observable:privateKeyUsagePeriodNotAfter - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:privateKeyUsagePeriodNotBefore - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:processorArchitecture - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:properties - rdfs:domain observable:PropertiesEnumeratedEffectFacet ; - . - -observable:propertyName - rdfs:domain observable:PropertyReadEffectFacet ; - . - -observable:protocols - rdfs:domain observable:NetworkConnectionFacet ; - . - -observable:query - rdfs:domain observable:URLFacet ; - . - -observable:rangeOffset - rdfs:domain observable:DataRangeFacet ; - . - -observable:rangeOffsetType - rdfs:domain observable:DataRangeFacet ; - . - -observable:rangeSize - rdfs:domain observable:DataRangeFacet ; - . - -observable:receivedLines - rdfs:domain observable:EmailMessageFacet ; - . - -observable:receivedTime - rdfs:domain observable:EmailMessageFacet ; - . - -observable:recurrence - rdfs:domain observable:CalendarEntryFacet ; - . - -observable:references - rdfs:domain observable:EmailMessageFacet ; - . - -observable:referralURL - rdfs:domain observable:WhoisRegistrarInfoType ; - . - -observable:regionEndAddress - rdfs:domain observable:MemoryFacet ; - . - -observable:regionSize - rdfs:domain observable:MemoryFacet ; - . - -observable:regionStartAddress - rdfs:domain observable:MemoryFacet ; - . - -observable:regionalInternetRegistry - rdfs:domain observable:WhoIsFacet ; - . - -observable:registeredOrganization - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:registeredOwner - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:registrantContactInfo - rdfs:domain observable:WhoIsFacet ; - . - -observable:registrantIDs - rdfs:domain observable:WhoIsFacet ; - . - -observable:registrarGUID - rdfs:domain observable:WhoisRegistrarInfoType ; - . - -observable:registrarID - rdfs:domain observable:WhoisRegistrarInfoType ; - . - -observable:registrarInfo - rdfs:domain observable:WhoIsFacet ; - . - -observable:registrarName - rdfs:domain observable:WhoisRegistrarInfoType ; - . - -observable:registryValues - rdfs:domain observable:WindowsRegistryKeyFacet ; - . - -observable:remarks - rdfs:domain observable:WhoIsFacet ; - . - -observable:remindTime - rdfs:domain observable:CalendarEntryFacet ; - . - -observable:requestMethod - rdfs:domain observable:HTTPConnectionFacet ; - . - -observable:requestValue - rdfs:domain observable:HTTPConnectionFacet ; - . - -observable:requestVersion - rdfs:domain observable:HTTPConnectionFacet ; - . - -observable:rowCondition - rdfs:domain observable:SQLiteBlobFacet ; - . - -observable:rowIndex - rdfs:domain observable:SQLiteBlobFacet ; - . - -observable:ruid - rdfs:domain observable:UNIXProcessFacet ; - . - -observable:runningStatus - rdfs:domain observable:WindowsThreadFacet ; - . - -observable:scheme - rdfs:domain observable:URLFacet ; - . - -observable:sectionAlignment - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sections - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:sectorSize - rdfs:domain observable:VolumeFacet ; - . - -observable:securityAttributes - rdfs:domain observable:WindowsThreadFacet ; - . - -observable:sender - rdfs:domain observable:EmailMessageFacet ; - . - -observable:sentTime - rdfs:domain observable:EmailMessageFacet ; - . - -observable:serialNumber - rdfs:domain observable:DeviceFacet ; - . - -observable:serverName - rdfs:domain observable:WhoIsFacet ; - . - -observable:serviceName - rdfs:domain observable:WindowsServiceFacet ; - . - -observable:serviceStatus - rdfs:domain observable:WindowsServiceFacet ; - . - -observable:serviceType - rdfs:domain observable:WindowsServiceFacet ; - . - -observable:sessionID - rdfs:domain observable:MessageFacet ; - . - -observable:shell - rdfs:domain observable:UNIXAccountFacet ; - . - -observable:showMessageBody - rdfs:domain observable:IShowMessageActionType ; - . - -observable:showMessageTitle - rdfs:domain observable:IShowMessageActionType ; - . - -observable:sid - rdfs:domain observable:NTFSFileFacet ; - . - -observable:signature - rdfs:domain observable:X509CertificateFacet ; - . - -observable:signatureAlgorithm - rdfs:domain observable:X509CertificateFacet ; - . - -observable:signatureDescription - rdfs:domain observable:DigitalSignatureInfoFacet ; - . - -observable:signatureExists - rdfs:domain observable:DigitalSignatureInfoFacet ; - . - -observable:signatureVerified - rdfs:domain observable:DigitalSignatureInfoFacet ; - . - -observable:size - rdfs:domain observable:WindowsPESection ; - . - -observable:sizeInBytes - rdfs:domain observable:ContentDataFacet ; - . - -observable:sizeOfCode - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sizeOfHeaders - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sizeOfHeapCommit - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sizeOfHeapReserve - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sizeOfImage - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sizeOfInitializedData - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sizeOfOptionalHeader - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:sizeOfStackCommit - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sizeOfStackReserve - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sizeOfUninitializedData - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:sourceFlags - rdfs:domain observable:TCPConnectionFacet ; - . - -observable:sourcePort - rdfs:domain observable:NetworkConnectionFacet ; - . - -observable:spaceLeft - rdfs:domain observable:DiskPartitionFacet ; - . - -observable:spaceUsed - rdfs:domain observable:DiskPartitionFacet ; - . - -observable:sponsoringRegistrar - rdfs:domain observable:WhoIsFacet ; - . - -observable:src - rdfs:domain observable:NetworkConnectionFacet ; - . - -observable:srcBytes - rdfs:domain observable:NetworkFlowFacet ; - . - -observable:srcPackets - rdfs:domain observable:NetworkFlowFacet ; - . - -observable:srcPayload - rdfs:domain observable:NetworkFlowFacet ; - . - -observable:ssid - rdfs:domain observable:WirelessNetworkConnectionFacet ; - . - -observable:stackSize - rdfs:domain observable:WindowsThreadFacet ; - . - -observable:startAddress - rdfs:domain observable:WindowsThreadFacet ; - . - -observable:startCommandLine - rdfs:domain observable:WindowsServiceFacet ; - . - -observable:startTime - rdfs:domain observable:PhoneCallFacet ; - . - -observable:startType - rdfs:domain observable:WindowsServiceFacet ; - . - -observable:startupInfo - rdfs:domain observable:WindowsProcessFacet ; - . - -observable:state - rdfs:domain observable:ObservableObject ; - . - -observable:status - rdfs:domain observable:WhoIsFacet ; - . - -observable:storageCapacityInBytes - rdfs:domain - observable:MobileDeviceFacet , - observable:SIMCardFacet - ; - . - -observable:stringValue - rdfs:domain observable:ExtractedString ; - . - -observable:strings - rdfs:domain observable:ExtractedStringsFacet ; - . - -observable:subject - rdfs:domain observable:EmailMessageFacet ; - . - -observable:subjectAlternativeName - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:subjectDirectoryAttributes - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:subjectHash - rdfs:domain observable:X509CertificateFacet ; - . - -observable:subjectKeyIdentifier - rdfs:domain observable:X509V3ExtensionsFacet ; - . - -observable:subjectPublicKeyAlgorithm - rdfs:domain observable:X509CertificateFacet ; - . - -observable:subjectPublicKeyExponent - rdfs:domain observable:X509CertificateFacet ; - . - -observable:subjectPublicKeyModulus - rdfs:domain observable:X509CertificateFacet ; - . - -observable:subsystem - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:swid - rdfs:domain observable:SoftwareFacet ; - . - -observable:symbolicName - rdfs:domain observable:GlobalFlagType ; - . - -observable:systemTime - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:tableName - rdfs:domain observable:SQLiteBlobFacet ; - . - -observable:targetFile - rdfs:domain observable:SymbolicLinkFacet ; - . - -observable:taskComment - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:taskCreator - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:text - rdfs:domain observable:NoteFacet ; - . - -observable:threadID - rdfs:domain observable:WindowsThreadFacet ; - . - -observable:thumbprintHash - rdfs:range types:Hash ; - . - -observable:timeDateStamp - rdfs:domain observable:WindowsPEBinaryFileFacet ; - . - -observable:timesExecuted - rdfs:domain observable:WindowsPrefetchFacet ; - . - -observable:timezoneDST - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:timezoneStandard - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:to - rdfs:domain observable:PhoneCallFacet ; - . - -observable:totalFragments - rdfs:domain observable:FragmentFacet ; - . - -observable:totalRam - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:totalSpace - rdfs:domain observable:DiskPartitionFacet ; - . - -observable:triggerBeginTime - rdfs:domain observable:TriggerType ; - . - -observable:triggerDelay - rdfs:domain observable:TriggerType ; - . - -observable:triggerEndTime - rdfs:domain observable:TriggerType ; - . - -observable:triggerFrequency - rdfs:domain observable:TriggerType ; - . - -observable:triggerList - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:triggerMaxRunTime - rdfs:domain observable:TriggerType ; - . - -observable:triggerSessionChangeType - rdfs:domain observable:TriggerType ; - . - -observable:triggerType - rdfs:domain observable:TriggerType ; - . - -observable:updatedDate - rdfs:domain observable:WhoIsFacet ; - . - -observable:uptime - rdfs:domain observable:ComputerSpecificationFacet ; - . - -observable:url - rdfs:domain observable:AttachmentFacet ; - . - -observable:urlTargeted - rdfs:domain observable:BrowserBookmarkFacet ; - . - -observable:userName - rdfs:domain observable:URLFacet ; - . - -observable:validityNotAfter - rdfs:domain observable:X509CertificateFacet ; - . - -observable:validityNotBefore - rdfs:domain observable:X509CertificateFacet ; - . - -observable:values - rdfs:domain observable:ValuesEnumeratedEffectFacet ; - . - -observable:version - rdfs:domain - observable:ApplicationFacet , - observable:PDFFileFacet - ; - . - -observable:visibility - rdfs:domain observable:MessageThreadFacet ; - . - -observable:visitCount - rdfs:domain observable:BrowserBookmarkFacet ; - . - -observable:volume - rdfs:domain observable:WindowsPrefetchFacet ; - . - -observable:volumeID - rdfs:domain observable:VolumeFacet ; - . - -observable:whoisServer - rdfs:domain observable:WhoisRegistrarInfoType ; - . - -observable:win32VersionValue - rdfs:domain observable:WindowsPEOptionalHeader ; - . - -observable:windowTitle - rdfs:domain observable:WindowsProcessFacet ; - . - -observable:windowsDirectory - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:windowsSystemDirectory - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:windowsTempDirectory - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:windowsVolumeAttributes - rdfs:domain observable:WindowsVolumeFacet ; - . - -observable:workItemData - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:workingDirectory - rdfs:domain observable:WindowsTaskFacet ; - . - -observable:x509v3extensions - rdfs:domain observable:X509CertificateFacet ; - . - -observable:xMailer - rdfs:domain observable:EmailMessageFacet ; - . - -observable:xOriginatingIP - rdfs:domain observable:EmailMessageFacet ; - . - diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index fcdb1878..38023f56 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -7,13 +7,17 @@ # imports: https://unifiedcyberontology.org/ontology/uco/vocabulary @base . +@prefix action: . +@prefix core: . @prefix identity: . +@prefix location: . @prefix observable: . @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . +@prefix types: . @prefix vocabulary: . -@prefix xml: . @prefix xsd: . @@ -30,1588 +34,1706 @@ . observable:API - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "API"@en ; rdfs:comment "An API (application programming interface) is a computing interface that defines interactions between multiple software or mixed hardware-software intermediaries. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc. [based on https://en.wikipedia.org/wiki/API]"@en ; + sh:targetClass observable:API ; . observable:ARPCache - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "ARPCache"@en ; rdfs:comment "An ARP cache is a collection of Address Resolution Protocol (ARP) entries (mostly dynamic) that are created when an IP address is resolved to a MAC address (so the computer can effectively communicate with the IP address). [based on https://en.wikipedia.org/wiki/ARP_cache]"@en ; + sh:targetClass observable:ARPCache ; . observable:ARPCacheEntry - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "ARPCacheEntry"@en ; rdfs:comment "An ARP cache entry is a single Address Resolution Protocol (ARP) response record that is created when an IP address is resolved to a MAC address (so the computer can effectively communicate with the IP address). [based on https://en.wikipedia.org/wiki/ARP_cache]"@en ; + sh:targetClass observable:ARPCacheEntry ; . observable:Account - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Account"@en ; rdfs:comment "An account is an arrangement with an entity to enable and control the provision of some capability or service."@en ; + sh:targetClass observable:Account ; . observable:AccountAuthenticationFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "AccountAuthenticationFacet"@en ; + rdfs:comment "An account authentication facet is a grouping of characteristics unique to the mechanism of accessing an account."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:passwordLastChanged ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:password ; ] , [ - a owl:Restriction ; - owl:onProperty observable:password ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:passwordType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:passwordType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:passwordLastChanged ; ] ; - rdfs:label "AccountAuthenticationFacet"@en ; - rdfs:comment "An account authentication facet is a grouping of characteristics unique to the mechanism of accessing an account."@en ; + sh:targetClass observable:AccountAuthenticationFacet ; . observable:AccountFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:accountIssuer ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isActive ; ] , [ - a owl:Restriction ; - owl:onProperty observable:accountType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:accountIdentifier ; ] , [ - a owl:Restriction ; - owl:onProperty observable:expirationTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:accountIssuer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:accountType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:expirationTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:owner ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isActive ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:accountIdentifier ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:owner ; ] ; - 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:targetClass observable:AccountFacet ; . observable:Address - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Address"@en ; rdfs:comment "An address is an identifier assigned to enable routing and management of information."@en ; + sh:targetClass observable:Address ; . observable:AlternateDataStream - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "AlternateDataStream"@en ; + rdfs:comment "An alternate data stream is data content stored within an NTFS file that is independent of the standard content stream of the file and is hidden from access by default NTFS file viewing mechanisms."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:hashes ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:size ; ] , [ - a owl:Restriction ; - owl:onProperty observable:size ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:name ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:hashes ; ] ; - rdfs:label "AlternateDataStream"@en ; - rdfs:comment "An alternate data stream is data content stored within an NTFS file that is independent of the standard content stream of the file and is hidden from access by default NTFS file viewing mechanisms."@en ; + sh:targetClass observable:AlternateDataStream ; . observable:Appliance - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Device ; rdfs:label "Appliance"@en ; rdfs:comment "An appliance is a purpose-built computer with software or firmware that is designed to provide a specific computing capability or resource. [based on https://en.wikipedia.org/wiki/Computer_appliance]"@en ; + sh:targetClass observable:Appliance ; . observable:Application - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Application"@en ; rdfs:comment "An application is a particular software program designed for end users."@en ; + sh:targetClass observable:Application ; . observable:ApplicationAccount - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAccount ; rdfs:label "ApplicationAccount"@en ; rdfs:comment "An application account is an account within a particular software program designed for end users."@en ; + sh:targetClass observable:ApplicationAccount ; . observable:ApplicationAccountFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "ApplicationAccountFacet"@en ; rdfs:comment "An application account facet is a grouping of characteristics unique to an account within a particular software program designed for end users."@en ; + sh:property [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; + ] ; + sh:targetClass observable:ApplicationAccountFacet ; . observable:ApplicationFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ApplicationFacet"@en ; + rdfs:comment "An application facet is a grouping of characteristics unique to a particular software program designed for ends users."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:operatingSystem ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:operatingSystem ; ] , [ - a owl:Restriction ; - owl:onProperty observable:numberOfLaunches ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:numberOfLaunches ; ] , [ - a owl:Restriction ; - owl:onProperty observable:applicationIdentifier ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:applicationIdentifier ; ] , [ - a owl:Restriction ; - owl:onProperty observable:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:version ; ] ; - rdfs:label "ApplicationFacet"@en ; - rdfs:comment "An application facet is a grouping of characteristics unique to a particular software program designed for ends users."@en ; + sh:targetClass observable:ApplicationFacet ; . observable:ArchiveFile - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:File ; rdfs:label "ArchiveFile"@en ; rdfs:comment "An archive file is a file that is composed of one or more computer files along with metadata."@en ; + sh:targetClass observable:ArchiveFile ; . observable:ArchiveFileFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ArchiveFileFacet"@en ; + rdfs:comment "An archive file facet is a grouping of characteristics unique to a file that is composed of one or more computer files along with metadata."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:archiveType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:archiveType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:comment ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:comment ; ] , [ - a owl:Restriction ; - owl:onProperty observable:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:version ; ] ; - rdfs:label "ArchiveFileFacet"@en ; - rdfs:comment "An archive file facet is a grouping of characteristics unique to a file that is composed of one or more computer files along with metadata."@en ; + sh:targetClass observable:ArchiveFileFacet ; . observable:AttachmentFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "AttachmentFacet"@en ; rdfs:comment "An attachment facet is a grouping of characteristics unique to the inclusion of an associated object as part of a message."@en ; + sh:property [ + sh:path observable:url ; + ] ; + sh:targetClass observable:AttachmentFacet ; . observable:Audio - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Audio"@en ; rdfs:comment "Audio is a digital representation of sound."@en ; + sh:targetClass observable:Audio ; . observable:AudioFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "AudioFacet"@en ; + rdfs:comment "An audio facet is a grouping of characteristics unique to a digital representation of sound."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:bitRate ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:bitRate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:duration ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:duration ; ] , [ - a owl:Restriction ; - owl:onProperty observable:audioType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:audioType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:format ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:format ; ] ; - rdfs:label "AudioFacet"@en ; - rdfs:comment "An audio facet is a grouping of characteristics unique to a digital representation of sound."@en ; + sh:targetClass observable:AudioFacet ; . observable:AutonomousSystem - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "AutonomousSystem"@en ; rdfs:comment "An autonomous system is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the Internet. [based on https://en.wikipedia.org/wiki/Autonomous_system_(Internet)]"@en ; + sh:targetClass observable:AutonomousSystem ; . observable:AutonomousSystemFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "AutonomousSystemFacet"@en ; + rdfs:comment "An autonomous system facet is a grouping of characteristics unique to a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the Internet. [based on https://en.wikipedia.org/wiki/Autonomous_system_(Internet)]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:regionalInternetRegistry ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:number ; ] , [ - a owl:Restriction ; - owl:onProperty observable:asHandle ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:asHandle ; ] , [ - a owl:Restriction ; - owl:onProperty observable:number ; - owl:onDataRange xsd:integer ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:regionalInternetRegistry ; ] ; - rdfs:label "AutonomousSystemFacet"@en ; - rdfs:comment "An autonomous system facet is a grouping of characteristics unique to a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the Internet. [based on https://en.wikipedia.org/wiki/Autonomous_system_(Internet)]"@en ; + sh:targetClass observable:AutonomousSystemFacet ; . observable:BlockDeviceNode - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:FileSystemObject ; rdfs:label "BlockDeviceNode"@en ; rdfs:comment "A block device node is a UNIX filesystem special file that serves as a conduit to communicate with devices, providing buffered randomly accesible input and output. Block device nodes are used to apply access rights to the devices and to direct operations on the files to the appropriate device drivers. [based on https://en.wikipedia.org/wiki/Unix_file_types]"@en ; + sh:targetClass observable:BlockDeviceNode ; . observable:BluetoothAddress - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:MACAddress ; rdfs:label "BluetoothAddress"@en ; rdfs:comment "A Bluetooth address is a Bluetooth standard conformant identifier assigned to a Bluetooth device to enable routing and management of Bluetooth standards conformant communication to or from that device."@en ; + sh:targetClass observable:BluetoothAddress ; . observable:BluetoothAddressFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:MACAddressFacet ; rdfs:label "BluetoothAddressFacet"@en ; rdfs:comment "A Bluetooth address facet is a grouping of characteristics unique to a Bluetooth standard conformant identifier assigned to a Bluetooth device to enable routing and management of Bluetooth standards conformant communication to or from that device."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; + ] ; + sh:targetClass observable:BluetoothAddressFacet ; . observable:BotConfiguration - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "BotConfiguration"@en ; rdfs:comment "A bot configuration is a set of contextual settings for a software application that runs automated tasks (scripts) over the Internet at a much higher rate than would be possible for a human alone."@en ; + sh:targetClass observable:BotConfiguration ; . observable:BrowserBookmark - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "BrowserBookmark"@en ; rdfs:comment "A browser bookmark is a saved shortcut that directs a WWW (World Wide Web) browser software program to a particular WWW accessible resource. [based on https://techterms.com/definition/bookmark]"@en ; + sh:targetClass observable:BrowserBookmark ; . observable:BrowserBookmarkFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "BrowserBookmarkFacet"@en ; + rdfs:comment "A browser bookmark facet is a grouping of characteristics unique to a saved shortcut that directs a WWW (World Wide Web) browser software program to a particular WWW accessible resource. [based on https://techterms.com/definition/bookmark]"@en ; + sh:property + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:accessedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:visitCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:bookmarkPath ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:accessedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:visitCount ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:bookmarkPath ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:urlTargeted ; ] ; - rdfs:label "BrowserBookmarkFacet"@en ; - rdfs:comment "A browser bookmark facet is a grouping of characteristics unique to a saved shortcut that directs a WWW (World Wide Web) browser software program to a particular WWW accessible resource. [based on https://techterms.com/definition/bookmark]"@en ; + sh:targetClass observable:BrowserBookmarkFacet ; . observable:BrowserCookie - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "BrowserCookie"@en ; rdfs:comment "A browser cookie is a piece of of data sent from a website and stored on the user's computer by the user's web browser while the user is browsing. [based on https://en.wikipedia.org/wiki/HTTP_cookie]"@en ; + sh:targetClass observable:BrowserCookie ; . observable:BrowserCookieFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "BrowserCookieFacet"@en ; + rdfs:comment "A browser cookie facet is a grouping of characteristics unique to a piece of data sent from a website and stored on the user's computer by the user's web browser while the user is browsing. [based on https://en.wikipedia.org/wiki/HTTP_cookie]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:accessedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:expirationTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:cookieDomain ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isSecure ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:cookieName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cookieDomain ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:cookiePath ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isSecure ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:accessedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cookieName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:expirationTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cookiePath ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] ; - rdfs:label "BrowserCookieFacet"@en ; - rdfs:comment "A browser cookie facet is a grouping of characteristics unique to a piece of data sent from a website and stored on the user's computer by the user's web browser while the user is browsing. [based on https://en.wikipedia.org/wiki/HTTP_cookie]"@en ; + sh:targetClass observable:BrowserCookieFacet ; . observable:Calendar - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Calendar"@en ; rdfs:comment "A calendar is a collection of appointments, meetings, and events."@en ; + sh:targetClass observable:Calendar ; . observable:CalendarEntry - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "CalendarEntry"@en ; rdfs:comment "A calendar entry is an appointment, meeting or event within a collection of appointments, meetings and events."@en ; + sh:targetClass observable:CalendarEntry ; . observable:CalendarEntryFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "CalendarEntryFacet"@en ; + rdfs:comment "A calendar entry facet is a grouping of characteristics unique to an appointment, meeting, or event within a collection of appointments, meetings, and events."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:endTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:location ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isPrivate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:duration ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:eventStatus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:owner ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:eventType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:remindTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:recurrence ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subject ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isPrivate ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:location ; ] , [ - a owl:Restriction ; - owl:onProperty observable:duration ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventStatus ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:owner ; ] , [ - a owl:Restriction ; - owl:onProperty observable:recurrence ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:remindTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:startTime ; + ] , + [ + sh:path observable:attendant ; ] ; - rdfs:label "CalendarEntryFacet"@en ; - rdfs:comment "A calendar entry facet is a grouping of characteristics unique to an appointment, meeting, or event within a collection of appointments, meetings, and events."@en ; + sh:targetClass observable:CalendarEntryFacet ; . observable:CalendarFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "CalendarFacet"@en ; + rdfs:comment "A calendar facet is a grouping of characteristics unique to a collection of appointments, meetings, and events."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:owner ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:owner ; ] ; - rdfs:label "CalendarFacet"@en ; - rdfs:comment "A calendar facet is a grouping of characteristics unique to a collection of appointments, meetings, and events."@en ; + sh:targetClass observable:CalendarFacet ; . observable:CharacterDeviceNode - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:FileSystemObject ; rdfs:label "CharacterDeviceNode"@en ; rdfs:comment "A character device node is a UNIX filesystem special file that serves as a conduit to communicate with devices, providing only a serial stream of input or accepting a serial stream of output. Character device nodes are used to apply access rights to the devices and to direct operations on the files to the appropriate device drivers. [based on https://en.wikipedia.org/wiki/Unix_file_types]"@en ; + sh:targetClass observable:CharacterDeviceNode ; . observable:Code - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Code"@en ; rdfs:comment "Code is a direct representation (source, byte or binary) of a collection of computer instructions that form software which tell a computer how to work. [based on https://en.wikipedia.org/wiki/Software]"@en ; + sh:targetClass observable:Code ; . observable:CompressedStreamFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "CompressedStreamFacet"@en ; + rdfs:comment "A compressed stream facet is a grouping of characteristics unique to the application of a size-reduction process to a body of data content."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:compressionRatio ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:double ; + sh:datatype xsd:double ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:compressionRatio ; ] , [ - a owl:Restriction ; - owl:onProperty observable:compressionMethod ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:compressionMethod ; ] ; - rdfs:label "CompressedStreamFacet"@en ; - rdfs:comment "A compressed stream facet is a grouping of characteristics unique to the application of a size-reduction process to a body of data content."@en ; + sh:targetClass observable:CompressedStreamFacet ; . observable:ComputerSpecification - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "ComputerSpecification"@en ; rdfs:comment "A computer specification is the hardware and software of a programmable electronic device that can store, retrieve, and process data. {based on merriam-webster.com/dictionary/computer]"@en ; + sh:targetClass observable:ComputerSpecification ; . observable:ComputerSpecificationFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ComputerSpecificationFacet"@en ; + rdfs:comment "A computer specificaiton facet is a grouping of characteristics unique to the hardware and software of a programmable electronic device that can store, retrieve, and process data. [based on merriam-webster.com/dictionary/computer]"@en ; + sh:property + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:currentSystemDate ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:biosDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:availableRam ; ] , [ - a owl:Restriction ; - owl:onProperty observable:biosReleaseDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:totalRam ; ] , [ - a owl:Restriction ; - owl:onProperty observable:localTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:biosManufacturer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:systemTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:biosSerialNumber ; ] , [ - a owl:Restriction ; - owl:onProperty observable:currentSystemDate ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:biosVersion ; ] , [ - a owl:Restriction ; - owl:onProperty observable:availableRam ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:cpu ; ] , [ - a owl:Restriction ; - owl:onProperty observable:totalRam ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:cpuFamily ; ] , [ - a owl:Restriction ; - owl:onProperty observable:biosManufacturer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:gpu ; ] , [ - a owl:Restriction ; - owl:onProperty observable:biosSerialNumber ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:gpuFamily ; ] , [ - a owl:Restriction ; - owl:onProperty observable:biosVersion ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:hostname ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cpu ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:processorArchitecture ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cpuFamily ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:timezoneDST ; ] , [ - a owl:Restriction ; - owl:onProperty observable:gpu ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:timezoneStandard ; ] , [ - a owl:Restriction ; - owl:onProperty observable:gpuFamily ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:uptime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:hostname ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:biosDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:processorArchitecture ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:biosReleaseDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:timezoneDST ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:localTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:timezoneStandard ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:systemTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:uptime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:networkInterface ; ] ; - rdfs:label "ComputerSpecificationFacet"@en ; - rdfs:comment "A computer specificaiton facet is a grouping of characteristics unique to the hardware and software of a programmable electronic device that can store, retrieve, and process data. [based on merriam-webster.com/dictionary/computer]"@en ; + sh:targetClass observable:ComputerSpecificationFacet ; . observable:Contact - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Contact"@en ; rdfs:comment "A contact is a set of identification and communication related details for a single entity."@en ; + sh:targetClass observable:Contact ; . observable:ContactAddress - a owl:Class ; - rdfs:subClassOf - [ - a owl:Restriction ; - owl:onProperty observable:geolocationAddress ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange ; - ] , - [ - a owl:Restriction ; - owl:onProperty observable:contactAddressScope ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange [ - a rdfs:Datatype ; - owl:unionOf ( - xsd:string - vocabulary:ContactAddressScopeVocab - ) ; - ] ; - ] + a + owl:Class , + sh:NodeShape ; 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 + [ + sh:datatype location:Location ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:geolocationAddress ; + ] , + [ + sh:datatype vocabulary:ContactAddressScopeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactAddressScope ; + ] + ; + sh:targetClass observable:ContactAddress ; . observable:ContactAffiliation - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "ContactListAffiliation"@en ; + rdfs:comment "A contact affiliation is a grouping of characteristics unique to details of an organizational affiliation for a single contact entity."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:organizationDepartment ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:organizationDepartment ; ] , [ - a owl:Restriction ; - owl:onProperty observable:organizationPosition ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:organizationPosition ; ] , [ - a owl:Restriction ; - owl:onProperty observable:organizationLocation ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactAddress ; + sh:datatype identity:Organization ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactOrganization ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactEmail ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactEmail ; + sh:datatype observable:ContactAddress ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:organizationLocation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactMessaging ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactMessaging ; + sh:datatype observable:ContactEmail ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactEmail ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactPhone ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactPhone ; + sh:datatype observable:ContactMessaging ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactMessaging ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactProfile ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactProfile ; + sh:datatype observable:ContactPhone ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactPhone ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactURL ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactURL ; + sh:datatype observable:ContactProfile ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactProfile ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactOrganization ; - owl:onDataRange identity:Organization ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype observable:ContactURL ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactURL ; ] ; - rdfs:label "ContactListAffiliation"@en ; - rdfs:comment "A contact affiliation is a grouping of characteristics unique to details of an organizational affiliation for a single contact entity."@en ; + sh:targetClass observable:ContactAffiliation ; . observable:ContactEmail - a owl:Class ; - rdfs:subClassOf - [ - a owl:Restriction ; - owl:onProperty observable:emailAddress ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; - ] , - [ - a owl:Restriction ; - owl:onProperty observable:contactEmailScope ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange [ - a rdfs:Datatype ; - owl:unionOf ( - xsd:string - vocabulary:ContactEmailScopeVocab - ) ; - ] ; - ] + a + owl:Class , + sh:NodeShape ; 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 + [ + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:emailAddress ; + ] , + [ + sh:datatype vocabulary:ContactEmailScopeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactEmailScope ; + ] + ; + sh:targetClass observable:ContactEmail ; . observable:ContactFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ContactFacet"@en ; + rdfs:comment "A contact facet is a grouping of characteristics unique to a set of identification and communication related details for a single entity."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:sourceApplication ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sourceApplication ; ] , [ - a owl:Restriction ; - owl:onProperty identity:birthdate ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path identity:birthdate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastTimeContacted ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:lastTimeContacted ; ] , [ - a owl:Restriction ; - owl:onProperty observable:numberTimesContacted ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:numberTimesContacted ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:displayName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:firstName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:firstName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:lastName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:middleName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:middleName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:namePhonetic ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:namePhonetic ; ] , [ - a owl:Restriction ; - owl:onProperty observable:namePrefix ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:namePrefix ; ] , [ - a owl:Restriction ; - owl:onProperty observable:nameSuffix ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:nameSuffix ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactGroup ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactGroup ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactNote ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactNote ; ] , [ - a owl:Restriction ; - owl:onProperty observable:nickname ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:nickname ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactAddress ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactAddress ; + sh:datatype observable:ContactAddress ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactAffiliation ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactAffiliation ; + sh:datatype observable:ContactAffiliation ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactAffiliation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactEmail ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactEmail ; + sh:datatype observable:ContactEmail ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactEmail ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactMessaging ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactMessaging ; + sh:datatype observable:ContactMessaging ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactMessaging ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactPhone ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactPhone ; + sh:datatype observable:ContactPhone ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactPhone ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactProfile ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactProfile ; + sh:datatype observable:ContactProfile ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactProfile ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactSIP ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactSIP ; + sh:datatype observable:ContactSIP ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactSIP ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactURL ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactURL ; + sh:datatype observable:ContactURL ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:contactURL ; ] ; - rdfs:label "ContactFacet"@en ; - rdfs:comment "A contact facet is a grouping of characteristics unique to a set of identification and communication related details for a single entity."@en ; + sh:targetClass observable:ContactFacet ; . observable:ContactList - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "ContactList"@en ; rdfs:comment "A contact list is a set of multiple individual contacts such as that found in a digital address book."@en ; + sh:targetClass observable:ContactList ; . observable:ContactListFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ContactListFacet"@en ; + rdfs:comment "A contact list facet is a grouping of characteristics unique to a set of multiple individual contacts such as that found in a digital address book."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:sourceApplication ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sourceApplication ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contact ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contact ; ] ; - rdfs:label "ContactListFacet"@en ; - rdfs:comment "A contact list facet is a grouping of characteristics unique to a set of multiple individual contacts such as that found in a digital address book."@en ; + sh:targetClass observable:ContactListFacet ; . observable:ContactMessaging - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "ContactMessaging"@en ; + rdfs:comment "A contact messaging is a grouping of characteristics unique to details for contacting a contact entity by digital messaging."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:contactAddress ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactMessagingPlatform ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactMessagingPlatform ; ] ; - rdfs:label "ContactMessaging"@en ; - rdfs:comment "A contact messaging is a grouping of characteristics unique to details for contacting a contact entity by digital messaging."@en ; + sh:targetClass observable:ContactMessaging ; . observable:ContactPhone - a owl:Class ; - rdfs:subClassOf - [ - a owl:Restriction ; - owl:onProperty observable:contactPhoneNumber ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; - ] , - [ - a owl:Restriction ; - owl:onProperty observable:contactPhoneScope ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange [ - a rdfs:Datatype ; - owl:unionOf ( - xsd:string - vocabulary:ContactPhoneScopeVocab - ) ; - ] ; - ] + a + owl:Class , + sh:NodeShape ; 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 + [ + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactPhoneNumber ; + ] , + [ + sh:datatype vocabulary:ContactPhoneScopeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactPhoneScope ; + ] + ; + sh:targetClass observable:ContactPhone ; . observable:ContactProfile - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "ContactProfile"@en ; + rdfs:comment "A contact profile is a grouping of characteristics unique to details for contacting a contact entity by online service."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:contactProfilePlatform ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactProfilePlatform ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profile ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profile ; ] ; - rdfs:label "ContactProfile"@en ; - rdfs:comment "A contact profile is a grouping of characteristics unique to details for contacting a contact entity by online service."@en ; + sh:targetClass observable:ContactProfile ; . observable:ContactSIP - a owl:Class ; - rdfs:subClassOf - [ - a owl:Restriction ; - owl:onProperty observable:sipAddress ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; - ] , - [ - a owl:Restriction ; - owl:onProperty observable:contactSIPScope ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange [ - a rdfs:Datatype ; - owl:unionOf ( - xsd:string - vocabulary:ContactSIPScopeVocab - ) ; - ] ; - ] + a + owl:Class , + sh:NodeShape ; 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 + [ + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sipAddress ; + ] , + [ + sh:datatype vocabulary:ContactSIPScopeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactSIPScope ; + ] + ; + sh:targetClass observable:ContactSIP ; . observable:ContactURL - a owl:Class ; - rdfs:subClassOf - [ - a owl:Restriction ; - owl:onProperty observable:url ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; - ] , - [ - a owl:Restriction ; - owl:onProperty observable:contactURLScope ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange [ - a rdfs:Datatype ; - owl:unionOf ( - xsd:string - vocabulary:ContactURLScopeVocab - ) ; - ] ; - ] + a + owl:Class , + sh:NodeShape ; 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 + [ + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:url ; + ] , + [ + sh:datatype vocabulary:ContactURLScopeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactURLScope ; + ] + ; + sh:targetClass observable:ContactURL ; . observable:ContentData - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "ContentData"@en ; rdfs:comment "Content data is a block of digital data."@en ; + sh:targetClass observable:ContentData ; . observable:ContentDataFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:dataPayloadReferenceURL ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:byteOrder ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isEncrypted ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dataPayloadReferenceURL ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:double ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:entropy ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isEncrypted ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sizeInBytes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:entropy ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:double ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:dataPayload ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sizeInBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:magicNumber ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dataPayload ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mimeClass ; ] , [ - a owl:Restriction ; - owl:onProperty observable:magicNumber ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mimeType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mimeClass ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:byteOrder ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mimeType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:hash ; ] ; - rdfs:label "ContentDataFacet"@en ; - rdfs:comment "A content data facet is a grouping of characteristics unique to a block of digital data."@en ; + sh:targetClass observable:ContentDataFacet ; . observable:CookieHistory - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "CookieHistory"@en ; rdfs:comment "A cookie history is the stored web cookie history for a particular web browser."@en ; + sh:targetClass observable:CookieHistory ; . observable:Credential - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Credential"@en ; rdfs:comment "A credential is a single specific login and password combination for authorization of access to a digital account or system."@en ; + sh:targetClass observable:Credential ; . observable:CredentialDump - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "CredentialDump"@en ; rdfs:comment "A credential dump is a collection (typically forcibly extracted from a system) of specific login and password combinations for authorization of access to a digital account or system."@en ; + sh:targetClass observable:CredentialDump ; . observable:DNSCache - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "DNSCache"@en ; rdfs:comment "An DNS cache is a temporary locally stored collection of previous Domain Name System (DNS) query results (created when an domain name is resolved to a IP address) for a particular computer."@en ; + sh:targetClass observable:DNSCache ; . observable:DNSRecord - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "DNSRecord"@en ; rdfs:comment "A DNS record is a single Domain Name System (DNS) artifact specifying information of a particular type (routing, authority, responsibility, security, etc.) for a specific Internet domain name."@en ; + sh:targetClass observable:DNSRecord ; . observable:DataRangeFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "DataRangeFacet"@en ; + rdfs:comment "A data range facet is a grouping of characteristics unique to a particular contiguous scope within a block of digital data."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:rangeOffset ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:rangeOffset ; ] , [ - a owl:Restriction ; - owl:onProperty observable:rangeSize ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:rangeSize ; ] , [ - a owl:Restriction ; - owl:onProperty observable:rangeOffsetType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:rangeOffsetType ; ] ; - rdfs:label "DataRangeFacet"@en ; - rdfs:comment "A data range facet is a grouping of characteristics unique to a particular contiguous scope within a block of digital data."@en ; + sh:targetClass observable:DataRangeFacet ; . observable:DefinedEffectFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "DefinedEffectFacet"@en ; rdfs:comment "A defined effect facet is a grouping of characteristics unique to the effect of an observable action in relation to one or more observable objects."@en ; + sh:targetClass observable:DefinedEffectFacet ; . observable:Device - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Device"@en ; rdfs:comment "A device is a piece of equipment or a mechanism designed to serve a special purpose or perform a special function. [based on https://www.merriam-webster.com/dictionary/device]"@en ; + sh:targetClass observable:Device ; . observable:DeviceFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "DeviceFacet"@en ; + rdfs:comment "A device facet is a grouping of characteristics unique to a piece of equipment or a mechanism designed to serve a special purpose or perform a special function. [based on https://www.merriam-webster.com/dictionary/device]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:deviceType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:manufacturer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:manufacturer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:model ; ] , [ - a owl:Restriction ; - owl:onProperty observable:model ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:serialNumber ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serialNumber ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:deviceType ; ] ; - rdfs:label "DeviceFacet"@en ; - rdfs:comment "A device facet is a grouping of characteristics unique to a piece of equipment or a mechanism designed to serve a special purpose or perform a special function. [based on https://www.merriam-webster.com/dictionary/device]"@en ; + sh:targetClass observable:DeviceFacet ; . observable:DigitalAccount - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Account ; rdfs:label "DigitalAccount"@en ; rdfs:comment "A digital account is an arrangement with an entity to enable and control the provision of some capability or service within the digital domain."@en ; + sh:targetClass observable:DigitalAccount ; . observable:DigitalAccountFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "DigitalAccountFacet"@en ; + rdfs:comment "A digital 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 within the digital domain."@en ; + sh:property + [ + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isDisabled ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:firstLoginTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:displayName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastLoginTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:firstLoginTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isDisabled ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:lastLoginTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:accountLogin ; ] ; - rdfs:label "DigitalAccountFacet"@en ; - rdfs:comment "A digital 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 within the digital domain."@en ; + sh:targetClass observable:DigitalAccountFacet ; . observable:DigitalAddress - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Address ; rdfs:label "DigitalAddress"@en ; rdfs:comment "A digital address is an identifier assigned to enable routing and management of digital communication."@en ; + sh:targetClass observable:DigitalAddress ; . observable:DigitalAddressFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "DigitalAddressFacet"@en ; + rdfs:comment "A digital address facet is a grouping of characteristics unique to an identifier assigned to enable routing and management of digital communication."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:displayName ; ] ; - rdfs:label "DigitalAddressFacet"@en ; - rdfs:comment "A digital address facet is a grouping of characteristics unique to an identifier assigned to enable routing and management of digital communication."@en ; + sh:targetClass observable:DigitalAddressFacet ; . observable:DigitalSignatureInfo - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "DigitalSignatureInfo"@en ; rdfs:comment "A digital signature info is a value calculated via a mathematical scheme for demonstrating the authenticity of an electronic message or document."@en ; + sh:targetClass observable:DigitalSignatureInfo ; . observable:DigitalSignatureInfoFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "DigitalSignatureInfoFacet"@en ; + rdfs:comment "A digital signature info facet is a grouping of characteristics unique to a value calculated via a mathematical scheme for demonstrating the authenticity of an electronic message or document."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:certificateIssuer ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:signatureExists ; ] , [ - a owl:Restriction ; - owl:onProperty observable:certificateSubject ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:signatureVerified ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signatureDescription ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:signatureDescription ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signatureExists ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:certificateIssuer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signatureVerified ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:certificateSubject ; ] ; - rdfs:label "DigitalSignatureInfoFacet"@en ; - rdfs:comment "A digital signature info facet is a grouping of characteristics unique to a value calculated via a mathematical scheme for demonstrating the authenticity of an electronic message or document."@en ; + sh:targetClass observable:DigitalSignatureInfoFacet ; . observable:Directory - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:FileSystemObject ; rdfs:label "Directory"@en ; rdfs:comment "A directory is a file system cataloging structure which contains references to other computer files, and possibly other directories. On many computers, directories are known as folders, or drawers, analogous to a workbench or the traditional office filing cabinet. In UNIX a directory is implemented as a special file. [based on https://en.wikipedia.org/wiki/Directory_(computing)]"@en ; + sh:targetClass observable:Directory ; . observable:Disk - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Disk"@en ; rdfs:comment "A disk is a storage mechanism where data is recorded by various electronic, magnetic, optical, or mechanical changes to a surface layer of one or more rotating disks."@en ; + sh:targetClass observable:Disk ; . observable:DiskFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "DiskFacet"@en ; + rdfs:comment "A disk facet is a grouping of characteristics unique to a storage mechanism where data is recorded by various electronic, magnetic, optical, or mechanical changes to a surface layer of one or more rotating disks."@en ; + sh:property + [ + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:diskSize ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:diskType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:freeSpace ; ] , [ - a owl:Restriction ; - owl:onProperty observable:diskSize ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:diskType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:freeSpace ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:path observable:partition ; ] ; - rdfs:label "DiskFacet"@en ; - rdfs:comment "A disk facet is a grouping of characteristics unique to a storage mechanism where data is recorded by various electronic, magnetic, optical, or mechanical changes to a surface layer of one or more rotating disks."@en ; + sh:targetClass observable:DiskFacet ; . observable:DiskPartition - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "DiskPartition"@en ; rdfs:comment "A disk partition is a particular managed region on a storage mechanism where data is recorded by various electronic, magnetic, optical, or mechanical changes to a surface layer of one or more rotating disks. [based on https://en.wikipedia.org/wiki/Disk_storage]"@en ; + sh:targetClass observable:DiskPartition ; . observable:DiskPartitionFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:diskPartitionType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "DiskPartitionFacet"@en ; + rdfs:comment "A disk partition facet is a grouping of characteristics unique to a particular managed region on a storage mechanism."@en ; + sh:property + [ + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:partitionLength ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:partitionOffset ; ] , [ - a owl:Restriction ; - owl:onProperty observable:partitionLength ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:spaceLeft ; ] , [ - a owl:Restriction ; - owl:onProperty observable:partitionOffset ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:spaceUsed ; ] , [ - a owl:Restriction ; - owl:onProperty observable:spaceLeft ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:totalSpace ; ] , [ - a owl:Restriction ; - owl:onProperty observable:spaceUsed ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mountPoint ; ] , [ - a owl:Restriction ; - owl:onProperty observable:totalSpace ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:partitionID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mountPoint ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:diskPartitionType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:partitionID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] ; - rdfs:label "DiskPartitionFacet"@en ; - rdfs:comment "A disk partition facet is a grouping of characteristics unique to a particular managed region on a storage mechanism."@en ; + sh:targetClass observable:DiskPartitionFacet ; . observable:DomainName - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "DomainName"@en ; rdfs:comment "A domain name is an identification string that defines a realm of administrative autonomy, authority or control within the Internet. [based on https://en.wikipedia.org/wiki/Domain_name]"@en ; + sh:targetClass observable:DomainName ; . observable:DomainNameFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "DomainNameFacet"@en ; + rdfs:comment "A domain name facet is a grouping of characteristics unique to an identification string that defines a realm of administrative autonomy, authority or control within the Internet. [based on https://en.wikipedia.org/wiki/Domain_name]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:isTLD ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isTLD ; ] , [ - a owl:Restriction ; - owl:onProperty observable:value ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:value ; ] ; - rdfs:label "DomainNameFacet"@en ; - rdfs:comment "A domain name facet is a grouping of characteristics unique to an identification string that defines a realm of administrative autonomy, authority or control within the Internet. [based on https://en.wikipedia.org/wiki/Domain_name]"@en ; + sh:targetClass observable:DomainNameFacet ; . observable:ESN @@ -1622,751 +1744,875 @@ observable:ESN . observable:EXIFFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:exifData ; - owl:minCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "EXIFFacet"@en ; rdfs:comment "An EXIF (exchangeable image file format) facet is a grouping of characteristics unique to the formats for images, sound, and ancillary tags used by digital cameras (including smartphones), scanners and other systems handling image and sound files recorded by digital cameras conformant to JEIDA/JEITA/CIPA specifications. [based on https://en.wikipedia.org/wiki/Exif]"@en ; + sh:property [ + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:exifData ; + ] ; + sh:targetClass observable:EXIFFacet ; . observable:EmailAccount - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAccount ; rdfs:label "EmailAccount"@en ; rdfs:comment "An email account is an arrangement with an entity to enable and control the provision of electronic mail (email) capabilities or services."@en ; + sh:targetClass observable:EmailAccount ; . observable:EmailAccountFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:emailAddress ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "EmailAccountFacet"@en ; rdfs:comment "An email account facet is a grouping of characteristics unique to an arrangement with an entity to enable and control the provision of electronic mail (email) capabilities or services."@en ; + sh:property [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:emailAddress ; + ] ; + sh:targetClass observable:EmailAccountFacet ; . observable:EmailAddress - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAddress ; rdfs:label "EmailAddress"@en ; rdfs:comment "An email address is an identifier for an electronic mailbox to which electronic mail messages (conformant to the Simple Mail Transfer Protocol (SMTP)) are sent from and delivered to."@en ; + sh:targetClass observable:EmailAddress ; . observable:EmailAddressFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:DigitalAddressFacet ; + rdfs:label "EmailAddressFacet"@en ; + rdfs:comment "An email address facet is a grouping of characteristics unique to an identifier for an electronic mailbox to which electronic mail messages (conformant to the Simple Mail Transfer Protocol (SMTP)) are sent from and delivered to."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:displayName ; ] ; - rdfs:label "EmailAddressFacet"@en ; - rdfs:comment "An email address facet is a grouping of characteristics unique to an identifier for an electronic mailbox to which electronic mail messages (conformant to the Simple Mail Transfer Protocol (SMTP)) are sent from and delivered to."@en ; + sh:targetClass observable:EmailAddressFacet ; . observable:EmailMessage - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Message ; rdfs:label "EmailMessage"@en ; rdfs:comment "An email message is a message that is an instance of an electronic mail correspondence conformant to the internet message format described in RFC 5322 and related RFCs."@en ; + sh:targetClass observable:EmailMessage ; . observable:EmailMessageFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "EmailMessageFacet"@en ; + rdfs:comment "An email message facet is a grouping of characteristics unique to a message that is an instance of an electronic mail correspondence conformant to the internet message format described in RFC 5322 and related RFCs."@en ; + sh:property + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; + ] , + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:bodyRaw ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:from ; ] , [ - a owl:Restriction ; - owl:onProperty observable:otherHeaders ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:headerRaw ; ] , [ - a owl:Restriction ; - owl:onProperty observable:receivedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:inReplyTo ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sentTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sender ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:xOriginatingIP ; ] , [ - a owl:Restriction ; - owl:onProperty observable:bodyRaw ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isMimeEncoded ; ] , [ - a owl:Restriction ; - owl:onProperty observable:from ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isMultipart ; ] , [ - a owl:Restriction ; - owl:onProperty observable:headerRaw ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isRead ; ] , [ - a owl:Restriction ; - owl:onProperty observable:inReplyTo ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:body ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sender ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contentDisposition ; ] , [ - a owl:Restriction ; - owl:onProperty observable:xOriginatingIP ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contentType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isRead ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:messageID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:body ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:priority ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contentDisposition ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subject ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contentType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:xMailer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:messageID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:priority ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:otherHeaders ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:receivedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:xMailer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sentTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isMimeEncoded ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:bcc ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isMultipart ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:bodyMultipart ; + ] , + [ + sh:path observable:categories ; + ] , + [ + sh:path observable:cc ; + ] , + [ + sh:path observable:labels ; + ] , + [ + sh:path observable:receivedLines ; + ] , + [ + sh:path observable:references ; ] ; - rdfs:label "EmailMessageFacet"@en ; - rdfs:comment "An email message facet is a grouping of characteristics unique to a message that is an instance of an electronic mail correspondence conformant to the internet message format described in RFC 5322 and related RFCs."@en ; + sh:targetClass observable:EmailMessageFacet ; . observable:EncodedStreamFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:encodingMethod ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "EncodedStreamFacet"@en ; rdfs:comment "An encoded stream facet is a grouping of characteristics unique to the conversion of a body of data content from one form to another form."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:encodingMethod ; + ] ; + sh:targetClass observable:EncodedStreamFacet ; . observable:EncryptedStreamFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "EncryptedStreamFacet"@en ; + rdfs:comment "An encrypted stream facet is a grouping of characteristics unique to the conversion of a body of data content from one form to another obfuscated form in such a way that reversing the conversion to obtain the original data form can only be accomplished through possession and use of a specific key."@en ; + sh:property + [ + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:encryptionMethod ; + ] , + [ + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:encryptionMode ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:encryptionMethod ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:encryptionIV ; ] , [ - a owl:Restriction ; - owl:onProperty observable:encryptionMode ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:encryptionKey ; ] ; - rdfs:label "EncryptedStreamFacet"@en ; - rdfs:comment "An encrypted stream facet is a grouping of characteristics unique to the conversion of a body of data content from one form to another obfuscated form in such a way that reversing the conversion to obtain the original data form can only be accomplished through possession and use of a specific key."@en ; + sh:targetClass observable:EncryptedStreamFacet ; . observable:EnvironmentVariable - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "EnvironmentVariable"@en ; + rdfs:comment "An environment variable is a grouping of characteristics unique to a dynamic-named value that can affect the way running processes will behave on a computer. [based on https://en.wikipedia.org/wiki/Environment_variable]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:value ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:name ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:value ; ] ; - rdfs:label "EnvironmentVariable"@en ; - rdfs:comment "An environment variable is a grouping of characteristics unique to a dynamic-named value that can affect the way running processes will behave on a computer. [based on https://en.wikipedia.org/wiki/Environment_variable]"@en ; + sh:targetClass observable:EnvironmentVariable ; . observable:Event - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Event"@en ; rdfs:comment "An event is something that happens in a digital context (e.g., operating system events)."@en ; + sh:targetClass observable:Event ; . observable:EventFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "EventFacet"@en ; + rdfs:comment "An event facet is a grouping of characteristics unique to something that happens in a digital context (e.g., operating system events)."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableAction ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:cyberAction ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cyberAction ; - owl:onClass observable:ObservableAction ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:computerName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:computerName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:eventID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventText ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:eventText ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:eventType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] ; - rdfs:label "EventFacet"@en ; - rdfs:comment "An event facet is a grouping of characteristics unique to something that happens in a digital context (e.g., operating system events)."@en ; + sh:targetClass observable:EventFacet ; . observable:EventLog - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "EventLog"@en ; rdfs:comment "An event log is a recorded collection of events."@en ; + sh:targetClass observable:EventLog ; . observable:ExtInodeFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ExtInodeFacet"@en ; + rdfs:comment "An extInode facet is a grouping of characteristics unique to a file system object (file, directory, etc.) conformant to the extended file system (EXT or related derivations) specification."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:extDeletionTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extFileType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extInodeChangeTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extFlags ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extFileType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extHardLinkCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extFlags ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extInodeID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extHardLinkCount ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extPermissions ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extInodeID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extSGID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extPermissions ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extSUID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extSGID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extDeletionTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extSUID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extInodeChangeTime ; ] ; - rdfs:label "ExtInodeFacet"@en ; - rdfs:comment "An extInode facet is a grouping of characteristics unique to a file system object (file, directory, etc.) conformant to the extended file system (EXT or related derivations) specification."@en ; + sh:targetClass observable:ExtInodeFacet ; . observable:ExtractedString - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "ExtractedString"@en ; + rdfs:comment "An extracted string is a grouping of characteristics unique to a series of characters pulled from an observable object."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:byteStringValue ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:length ; ] , [ - a owl:Restriction ; - owl:onProperty observable:encoding ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:englishTranslation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:language ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:stringValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:length ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:byteStringValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:englishTranslation ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:encoding ; ] , [ - a owl:Restriction ; - owl:onProperty observable:stringValue ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:language ; ] ; - rdfs:label "ExtractedString"@en ; - rdfs:comment "An extracted string is a grouping of characteristics unique to a series of characters pulled from an observable object."@en ; + sh:targetClass observable:ExtractedString ; . observable:ExtractedStringsFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "ExtractedStringsFacet"@en ; rdfs:comment "An extracted strings facet is a grouping of characteristics unique to one or more sequences of characters pulled from an observable object."@en ; + sh:property [ + sh:path observable:strings ; + ] ; + sh:targetClass observable:ExtractedStringsFacet ; . observable:File - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:FileSystemObject ; rdfs:label "File"@en ; rdfs:comment "A file is a computer resource for recording data discretely on a computer storage device."@en ; + sh:targetClass observable:File ; . observable:FileFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 "None" ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sizeInBytes ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:allocationStatus ; + ] , [ - a owl:Restriction ; - rdfs:comment "When used to characterize a file the sizeInBytes property conveys the recorded size of a file in a file system."@en ; - owl:onProperty observable:sizeInBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extension ; ] , [ - a owl:Restriction ; - owl:onProperty observable:accessedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:accessedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:fileSystemType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:fileSystemType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:metadataChangeTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:metadataChangeTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:allocationStatus ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:fileName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extension ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:filePath ; + ] , + [ + sh:path observable:isDirectory ; ] ; - 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:targetClass observable:FileFacet ; . observable:FilePermissionsFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:owner ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "FilePermissionsFacet"@en ; rdfs:comment "A file permissions facet is a grouping of characteristics unique to the access rights (e.g., view, change, navigate, execute) of a file on a file system."@en ; + sh:property [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:owner ; + ] ; + sh:targetClass observable:FilePermissionsFacet ; . observable:FileSystem - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "FileSystem"@en ; rdfs:comment "A file system is the process that manages how and where data on a storage medium is stored, accessed and managed. [based on https://www.techopedia.com/definition/5510/file-system]"@en ; + sh:targetClass observable:FileSystem ; . observable:FileSystemFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "FileSystemFacet"@en ; + rdfs:comment "A file system facet is a grouping of characteristics unique to the process that manages how and where data on a storage medium is stored, accessed and managed. [based on https://www.techopedia.com/definition/5510/file-system]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:fileSystemType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:clusterSize ; ] , [ - a owl:Restriction ; - owl:onProperty observable:clusterSize ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:fileSystemType ; ] ; - rdfs:label "FileSystemFacet"@en ; - rdfs:comment "A file system facet is a grouping of characteristics unique to the process that manages how and where data on a storage medium is stored, accessed and managed. [based on https://www.techopedia.com/definition/5510/file-system]"@en ; + sh:targetClass observable:FileSystemFacet ; . observable:FileSystemObject - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "FileSystemObject"@en ; rdfs:comment "A file system object is an informational object represented and managed within a file system."@en ; + sh:targetClass observable:FileSystemObject ; . observable:ForumPost - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Message ; rdfs:label "ForumPost"@en ; rdfs:comment "A forum post is message submitted by a user account to an online forum where the message content (and typically metadata including who posted it and when) is viewable by any party with viewing permissions on the forum."@en ; + sh:targetClass observable:ForumPost ; . observable:ForumPrivateMessage - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Message ; rdfs:label "ForumPrivateMessage"@en ; rdfs:comment "A forum private message (aka PM or DM (direct message)) is a one-to-one message from one specific user account to another specific user account on an online form where transmission is managed by the online forum platform and the message is only viewable by the parties directly involved."@en ; + sh:targetClass observable:ForumPrivateMessage ; . observable:FragmentFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "FragmentFacet"@en ; rdfs:comment "A fragment facet is a grouping of characteristics unique to an individual piece of the content of a file."@en ; + sh:property + [ + sh:path observable:fragmentIndex ; + ] , + [ + sh:path observable:totalFragments ; + ] + ; + sh:targetClass observable:FragmentFacet ; . observable:GUI - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "GUI"@en ; rdfs:comment "A GUI is a graphical user interface that allows users to interact with electronic devices through graphical icons and audio indicators such as primary notation, instead of text-based user interfaces, typed command labels or text navigation. [based on https://en.wikipedia.org/wiki/Graphical_user_interface]"@en ; + sh:targetClass observable:GUI ; . observable:GenericObservableObject - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "GenericObservableObject"@en ; rdfs:comment "A generic observable object is an article or unit within the digital domain."@en ; + sh:targetClass observable:GenericObservableObject ; . observable:GeoLocationEntry - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "GeoLocationEntry"@en ; rdfs:comment "A geolocation entry is a single application-specific geolocation entry."@en ; + sh:targetClass observable:GeoLocationEntry ; . observable:GeoLocationEntryFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "GeoLocationEntryFacet"@en ; + rdfs:comment "A geolocation entry facet is a grouping of characteristics unique to a single application-specific geolocation entry."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:location ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:location ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] ; - rdfs:label "GeoLocationEntryFacet"@en ; - rdfs:comment "A geolocation entry facet is a grouping of characteristics unique to a single application-specific geolocation entry."@en ; + sh:targetClass observable:GeoLocationEntryFacet ; . observable:GeoLocationLog - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "GeoLocationLog"@en ; rdfs:comment "A geolocation log is a record containing geolocation tracks and/or geolocation entries."@en ; + sh:targetClass observable:GeoLocationLog ; . observable:GeoLocationLogFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "GeoLocationLogFacet"@en ; + rdfs:comment "A geolocation log facet is a grouping of characteristics unique to a record containing geolocation tracks and/or geolocation entries."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] ; - rdfs:label "GeoLocationLogFacet"@en ; - rdfs:comment "A geolocation log facet is a grouping of characteristics unique to a record containing geolocation tracks and/or geolocation entries."@en ; + sh:targetClass observable:GeoLocationLogFacet ; . observable:GeoLocationTrack - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "GeoLocationTrack"@en ; rdfs:comment "A geolocation track is a set of contiguous geolocation entries representing a path/track taken."@en ; + sh:targetClass observable:GeoLocationTrack ; . observable:GeoLocationTrackFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "GeoLocationTrackFacet"@en ; + rdfs:comment "A geolocation track facet is a grouping of characteristics unique to a set of contiguous geolocation entries representing a path/track taken."@en ; + sh:property + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:endTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:startTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:geoLocationEntry ; ] ; - rdfs:label "GeoLocationTrackFacet"@en ; - rdfs:comment "A geolocation track facet is a grouping of characteristics unique to a set of contiguous geolocation entries representing a path/track taken."@en ; + sh:targetClass observable:GeoLocationTrackFacet ; . observable:GlobalFlagType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "GlobalFlagType"@en ; + rdfs:comment 'A global flag type is a grouping of characteristics unique to the Windows systemwide global variable named NtGlobalFlag that enables various internal debugging, tracing, and validation support in the operating system. [based on "Windows Global Flags, Chapter 3: System Mechanisms of Windows Internals by Solomon, Russinovich, and Ionescu]'@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:abbreviation ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:abbreviation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:destination ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:destination ; ] , [ - a owl:Restriction ; - owl:onProperty observable:symbolicName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:symbolicName ; + ] , + [ + sh:path observable:hexadecimalValue ; ] ; - rdfs:label "GlobalFlagType"@en ; - rdfs:comment 'A global flag type is a grouping of characteristics unique to the Windows systemwide global variable named NtGlobalFlag that enables various internal debugging, tracing, and validation support in the operating system. [based on "Windows Global Flags, Chapter 3: System Mechanisms of Windows Internals by Solomon, Russinovich, and Ionescu]'@en ; + sh:targetClass observable:GlobalFlagType ; . observable:HTTPConnection - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:NetworkConnection ; rdfs:label "HTTPConnection"@en ; rdfs:comment "An HTTP connection is network connection that is conformant to the Hypertext Transfer Protocol (HTTP) standard."@en ; + sh:targetClass observable:HTTPConnection ; . observable:HTTPConnectionFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "HTTPConnectionFacet"@en ; + rdfs:comment "An HTTP connection facet is a grouping of characteristics unique to portions of a network connection that are conformant to the Hypertext Transfer Protocol (HTTP) standard."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:httpRequestHeader ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:httpMessageBodyData ; ] , [ - a owl:Restriction ; - owl:onProperty observable:httpMessageBodyData ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:httpMesageBodyLength ; ] , [ - a owl:Restriction ; - owl:onProperty observable:httpMesageBodyLength ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:requestMethod ; ] , [ - a owl:Restriction ; - owl:onProperty observable:requestVersion ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:requestValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:requestMethod ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:requestVersion ; ] , [ - a owl:Restriction ; - owl:onProperty observable:requestValue ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:httpRequestHeader ; ] ; - rdfs:label "HTTPConnectionFacet"@en ; - rdfs:comment "An HTTP connection facet is a grouping of characteristics unique to portions of a network connection that are conformant to the Hypertext Transfer Protocol (HTTP) standard."@en ; + sh:targetClass observable:HTTPConnectionFacet ; . observable:Hostname - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Hostname"@en ; rdfs:comment "A hostname is a label that is assigned to a device connected to a computer network and that is used to identify the device in various forms of electronic communication, such as the World Wide Web. A hostname may be a domain name, if it is properly organized into the domain name system. A domain name may be a hostname if it has been assigned to an Internet host and associated with the host's IP address. [based on https://en.wikipedia.org/wiki/Hostname]"@en ; + sh:targetClass observable:Hostname ; . observable:ICCID @@ -2377,63 +2623,85 @@ observable:ICCID . observable:ICMPConnection - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:NetworkConnection ; rdfs:label "ICMPConnection"@en ; rdfs:comment "An ICMP connection is a network connection that is conformant to the Internet Control Message Protocol (ICMP) standard."@en ; + sh:targetClass observable:ICMPConnection ; . observable:ICMPConnectionFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "ICMPConnectionFacet"@en ; rdfs:comment "An ICMP connection facet is a grouping of characteristics unique to portions of a network connection that are conformant to the Internet Control Message Protocol (ICMP) standard."@en ; + sh:property + [ + sh:path observable:icmpCode ; + ] , + [ + sh:path observable:icmpType ; + ] + ; + sh:targetClass observable:ICMPConnectionFacet ; . observable:IComHandlerActionType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "IComHandlerActionType"@en ; + rdfs:comment "An IComHandler action type is a grouping of characteristics unique to a Windows Task-related action that fires a Windows COM handler (smart code in the client address space that can optimize calls between a client and server). [based on https://docs.microsoft.com/en-us/windows/win32/taskschd/comhandleraction]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:comClassID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:comClassID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:comData ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:comData ; ] ; - rdfs:label "IComHandlerActionType"@en ; - rdfs:comment "An IComHandler action type is a grouping of characteristics unique to a Windows Task-related action that fires a Windows COM handler (smart code in the client address space that can optimize calls between a client and server). [based on https://docs.microsoft.com/en-us/windows/win32/taskschd/comhandleraction]"@en ; + sh:targetClass observable:IComHandlerActionType ; . observable:IExecActionType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "IExecActionType"@en ; + rdfs:comment "An IExec action type is a grouping of characteristics unique to an action that executes a command-line operation on a Windows operating system. [based on https://docs.microsoft.com/en-us/windows/win32/api/taskschd/nn-taskschd-iexecaction?redirectedfrom=MSDN]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:execArguments ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:execArguments ; ] , [ - a owl:Restriction ; - owl:onProperty observable:execProgramPath ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:execProgramPath ; ] , [ - a owl:Restriction ; - owl:onProperty observable:execWorkingDirectory ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:execWorkingDirectory ; + ] , + [ + sh:path observable:execProgramHashes ; ] ; - rdfs:label "IExecActionType"@en ; - rdfs:comment "An IExec action type is a grouping of characteristics unique to an action that executes a command-line operation on a Windows operating system. [based on https://docs.microsoft.com/en-us/windows/win32/api/taskschd/nn-taskschd-iexecaction?redirectedfrom=MSDN]"@en ; + sh:targetClass observable:IExecActionType ; . observable:IMEI @@ -2451,202 +2719,254 @@ observable:IMSI . observable:IPAddress - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAddress ; rdfs:label "IPAddress"@en ; rdfs:comment "An IP address is an Internet Protocol (IP) standards conformant identifier assigned to a device to enable routing and management of IP standards conformant communication to or from that device."@en ; + sh:targetClass observable:IPAddress ; . observable:IPAddressFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:DigitalAddressFacet ; + rdfs:label "IPAddressFacet"@en ; + rdfs:comment "An IP address facet is a grouping of characteristics unique to an Internet Protocol (IP) standards conformant identifier assigned to a device to enable routing and management of IP standards conformant communication to or from that device."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:displayName ; ] ; - rdfs:label "IPAddressFacet"@en ; - rdfs:comment "An IP address facet is a grouping of characteristics unique to an Internet Protocol (IP) standards conformant identifier assigned to a device to enable routing and management of IP standards conformant communication to or from that device."@en ; + sh:targetClass observable:IPAddressFacet ; . observable:IPNetmask - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "IPNetmask"@en ; rdfs:comment "An IP netmask is a 32-bit \"mask\" used to divide an IP address into subnets and specify the network's available hosts."@en ; + sh:targetClass observable:IPNetmask ; . observable:IPv4Address - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:IPAddress ; rdfs:label "IPv4Address"@en ; rdfs:comment "An IPv4 (Internet Protocol version 4) address is an IPv4 standards conformant identifier assigned to a device to enable routing and management of IPv4 standards conformant communication to or from that device."@en ; + sh:targetClass observable:IPv4Address ; . observable:IPv4AddressFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:IPAddressFacet ; rdfs:label "IPv4AddressFacet"@en ; rdfs:comment "An IPv4 (Internet Protocol version 4) address facet is a grouping of characteristics unique to an IPv4 standards conformant identifier assigned to a device to enable routing and management of IPv4 standards conformant communication to or from that device."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; + ] ; + sh:targetClass observable:IPv4AddressFacet ; . observable:IPv6Address - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:IPAddress ; rdfs:label "IPv6Address"@en ; rdfs:comment "An IPv6 (Internet Protocol version 6) address is an IPv6 standards conformant identifier assigned to a device to enable routing and management of IPv6 standards conformant communication to or from that device."@en ; + sh:targetClass observable:IPv6Address ; . observable:IPv6AddressFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:IPAddressFacet ; rdfs:label "IPv6AddressFacet"@en ; rdfs:comment "An IPv6 (Internet Protocol version 6) address facet is a grouping of characteristics unique to an IPv6 standards conformant identifier assigned to a device to enable routing and management of IPv6 standards conformant communication to or from that device."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; + ] ; + sh:targetClass observable:IPv6AddressFacet ; . observable:IShowMessageActionType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "IShowMessageActionType"@en ; + rdfs:comment "An IShow message action type is a grouping of characteristics unique to an action that shows a message box when a task is activate. [based on https://docs.microsoft.com/en-us/windows/win32/api/taskschd/nn-taskschd-ishowmessageaction?redirectedfrom=MSDN]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:showMessageBody ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:showMessageBody ; ] , [ - a owl:Restriction ; - owl:onProperty observable:showMessageTitle ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:showMessageTitle ; ] ; - rdfs:label "IShowMessageActionType"@en ; - rdfs:comment "An IShow message action type is a grouping of characteristics unique to an action that shows a message box when a task is activate. [based on https://docs.microsoft.com/en-us/windows/win32/api/taskschd/nn-taskschd-ishowmessageaction?redirectedfrom=MSDN]"@en ; + sh:targetClass observable:IShowMessageActionType ; . observable:Image - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Image"@en ; rdfs:comment "An image is a complete copy of a hard disk, memory, or other digital media."@en ; + sh:targetClass observable:Image ; . observable:ImageFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:imageType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "ImageFacet"@en ; rdfs:comment "An image facet is a grouping of characteristics unique to a complete copy of a hard disk, memory, or other digital media."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:imageType ; + ] ; + sh:targetClass observable:ImageFacet ; . observable:InstantMessagingAddress - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAddress ; rdfs:label "InstantMessagingAddress"@en ; rdfs:comment ""@en ; + sh:targetClass observable:InstantMessagingAddress ; . observable:InstantMessagingAddressFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:DigitalAddressFacet ; + rdfs:label "InstantMessagingAddressFacet"@en ; + rdfs:comment "An instant messaging address facet is a grouping of characteristics unique to an identifier assigned to enable routing and management of instant messaging digital communication."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:displayName ; ] ; - rdfs:label "InstantMessagingAddressFacet"@en ; - rdfs:comment "An instant messaging address facet is a grouping of characteristics unique to an identifier assigned to enable routing and management of instant messaging digital communication."@en ; + sh:targetClass observable:InstantMessagingAddressFacet ; . observable:Junction - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:FileSystemObject ; rdfs:label "Junction"@en ; rdfs:comment "A junction is a specific NTFS (New Technology File System) reparse point to redirect a directory access to another directory which can be on the same volume or another volume. A junction is similar to a directory symbolic link but may differ on whether they are processed on the local system or on the remote file server. [based on https://jp-andre.pagesperso-orange.fr/junctions.html]"@en ; + sh:targetClass observable:Junction ; . observable:Library - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Library"@en ; rdfs:comment "A library is a suite of data and programming code that is used to develop software programs and applications. [based on https://www.techopedia.com/definition/3828/software-library]"@en ; + sh:targetClass observable:Library ; . observable:LibraryFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:libraryType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "LibraryFacet"@en ; rdfs:comment "A library facet is a grouping of characteristics unique to a suite of data and programming code that is used to develop software programs and applications. [based on https://www.techopedia.com/definition/3828/software-library]"@en ; + sh:property [ + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:libraryType ; + ] ; + sh:targetClass observable:LibraryFacet ; . observable:MACAddress - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAddress ; rdfs:label "MACAddress"@en ; rdfs:comment "A MAC address is a media access control standards conformant identifier assigned to a network interface to enable routing and management of communications at the data link layer of a network segment."@en ; + sh:targetClass observable:MACAddress ; . observable:MACAddressFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:DigitalAddressFacet ; rdfs:label "MACAddressFacet"@en ; rdfs:comment "A MAC address facet is a grouping of characteristics unique to a media access control standards conformant identifier assigned to a network interface to enable routing and management of communications at the data link layer of a network segment."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; + ] ; + sh:targetClass observable:MACAddressFacet ; . observable:MSISDN @@ -2664,580 +2984,658 @@ observable:MSISDNType . observable:Memory - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Memory"@en ; rdfs:comment "Memory is a particular region of temporary information storage (e.g., RAM (random access memory), ROM (read only memory)) on a digital device."@en ; + sh:targetClass observable:Memory ; . observable:MemoryFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:regionSize ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isInjected ; ] , [ - a owl:Restriction ; - owl:onProperty observable:blockType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:MemoryBlockTypeVocab ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isMapped ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isInjected ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isProtected ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isMapped ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isVolatile ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isProtected ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype vocabulary:MemoryBlockTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:blockType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isVolatile ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:regionSize ; + ] , + [ + sh:path observable:regionEndAddress ; + ] , + [ + sh:path observable:regionStartAddress ; ] ; - 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:targetClass observable:MemoryFacet ; . observable:Message - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Message"@en ; rdfs:comment "A message is a discrete unit of electronic communication intended by the source for consumption by some recipient or group of recipients. [based on https://en.wikipedia.org/wiki/Message]"@en ; + sh:targetClass observable:Message ; . observable:MessageFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "MessageFacet"@en ; + rdfs:comment "A message facet is a grouping of characteristics unique to a discrete unit of electronic communication intended by the source for consumption by some recipient or group of recipients. [based on https://en.wikipedia.org/wiki/Message]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:sentTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:from ; ] , [ - a owl:Restriction ; - owl:onProperty observable:from ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:messageID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:messageID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:messageText ; ] , [ - a owl:Restriction ; - owl:onProperty observable:messageText ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:messageType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:messageType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sessionID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sessionID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sentTime ; ] ; - rdfs:label "MessageFacet"@en ; - rdfs:comment "A message facet is a grouping of characteristics unique to a discrete unit of electronic communication intended by the source for consumption by some recipient or group of recipients. [based on https://en.wikipedia.org/wiki/Message]"@en ; + sh:targetClass observable:MessageFacet ; . observable:MessageThread - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "MessageTread"@en ; rdfs:comment "A message thread is a running commentary of electronic messages pertaining to one topic or question."@en ; + sh:targetClass observable:MessageThread ; . observable:MessageThreadFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "MessageThreadFacet"@en ; + rdfs:comment "A message thread facet is a grouping of characteristics unique to a running commentary of electronic messages pertaining to one topic or question."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:visibility ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:class observable:ObservableObject ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:message ; ] , [ - a owl:Restriction ; - owl:onProperty observable:message ; - owl:onClass observable:ObservableObject ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:visibility ; + ] , + [ + sh:path observable:participant ; ] ; - rdfs:label "MessageThreadFacet"@en ; - rdfs:comment "A message thread facet is a grouping of characteristics unique to a running commentary of electronic messages pertaining to one topic or question."@en ; + sh:targetClass observable:MessageThreadFacet ; . observable:MftRecordFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "MftRecordFacet"@en ; + rdfs:comment "An MFT record facet is a grouping of characteristics unique to the details of a single file as managed in an NTFS (new technology filesystem) master file table (which is a collection of information about all files on an NTFS filesystem). [based on https://docs.microsoft.com/en-us/windows/win32/devnotes/master-file-table]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:mftFileNameAccessedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mftFileID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileNameCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mftFileNameLength ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileNameModifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mftFlags ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileNameRecordChangeTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mftParentID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftRecordChangeTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:ntfsHardLinkCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:ntfsOwnerID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileNameLength ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:ntfsOwnerSID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFlags ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mftFileNameAccessedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftParentID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mftFileNameCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ntfsHardLinkCount ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mftFileNameModifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ntfsOwnerID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mftFileNameRecordChangeTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ntfsOwnerSID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mftRecordChangeTime ; ] ; - rdfs:label "MftRecordFacet"@en ; - rdfs:comment "An MFT record facet is a grouping of characteristics unique to the details of a single file as managed in an NTFS (new technology filesystem) master file table (which is a collection of information about all files on an NTFS filesystem). [based on https://docs.microsoft.com/en-us/windows/win32/devnotes/master-file-table]"@en ; + sh:targetClass observable:MftRecordFacet ; . observable:MimePartType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "MimePartType"@en ; + rdfs:comment "A mime part type is a grouping of characteristics unique to a component of a multi-part email body."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:bodyRaw ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:bodyRaw ; ] , [ - a owl:Restriction ; - owl:onProperty observable:body ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:body ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contentDisposition ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contentDisposition ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contentType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contentType ; ] ; - rdfs:label "MimePartType"@en ; - rdfs:comment "A mime part type is a grouping of characteristics unique to a component of a multi-part email body."@en ; + sh:targetClass observable:MimePartType ; . observable:MobileAccount - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAccount ; rdfs:label "MobileAccount"@en ; rdfs:comment "A mobile account is an arrangement with an entity to enable and control the provision of some capability or service on a portable computing device. [based on https://www.lexico.com/definition/mobile_device]"@en ; + sh:targetClass observable:MobileAccount ; . observable:MobileAccountFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "MobileAccountFacet"@en ; + rdfs:comment "A mobile 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 on a portable computing device. [based on https://www.lexico.com/definition/mobile_device]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:IMSI ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:IMSI ; ] , [ - a owl:Restriction ; - owl:onProperty observable:MSISDN ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:MSISDN ; ] , [ - a owl:Restriction ; - owl:onProperty observable:MSISDNType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:MSISDNType ; ] ; - rdfs:label "MobileAccountFacet"@en ; - rdfs:comment "A mobile 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 on a portable computing device. [based on https://www.lexico.com/definition/mobile_device]"@en ; + sh:targetClass observable:MobileAccountFacet ; . observable:MobileDevice - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Device ; rdfs:label "MobileDevice"@en ; rdfs:comment "A mobile device is a portable computing device. [based on https://www.lexico.com.definition/mobile_device]"@en ; + sh:targetClass observable:MobileDevice ; . observable:MobileDeviceFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "MobileDeviceFacet"@en ; + rdfs:comment "A mobile device facet is a grouping of characteristics unique to a portable computing device. [based on https://www.lexico.com/definition/mobile_device]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:clockSetting ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:clockSetting ; ] , [ - a owl:Restriction ; - owl:onProperty observable:storageCapacityInBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:storageCapacityInBytes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ESN ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:ESN ; ] , [ - a owl:Restriction ; - owl:onProperty observable:IMEI ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:IMEI ; ] , [ - a owl:Restriction ; - owl:onProperty observable:bluetoothDeviceName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:bluetoothDeviceName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:keypadUnlockCode ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:keypadUnlockCode ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mockLocationsAllowed ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mockLocationsAllowed ; ] , [ - a owl:Restriction ; - owl:onProperty observable:network ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:network ; ] , [ - a owl:Restriction ; - owl:onProperty observable:phoneActivationTime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:phoneActivationTime ; + ] , + [ + sh:path observable:MSISDN ; ] ; - rdfs:label "MobileDeviceFacet"@en ; - rdfs:comment "A mobile device facet is a grouping of characteristics unique to a portable computing device. [based on https://www.lexico.com/definition/mobile_device]"@en ; + sh:targetClass observable:MobileDeviceFacet ; . observable:Mutex - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Mutex"@en ; rdfs:comment "A mutex is a mechanism that enforces limits on access to a resource when there are many threads of execution. A mutex is designed to enforce a mutual exclusion concurrency control policy, and with a variety of possible methods there exists multiple unique implementations for different applications. [based on https://en.wikipedia.org/wiki/Lock_(computer_science)]"@en ; + sh:targetClass observable:Mutex ; . observable:MutexFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:isNamed ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "MutexFacet"@en ; rdfs:comment "A mutex facet is a grouping of characteristics unique to a mechanism that enforces limits on access to a resource when there are many threads of execution. A mutex is designed to enforce a mutual exclusion concurrency control policy, and with a variety of possible methods there exists multiple unique implementations for different applications. [based on https://en.wikipedia.org/wiki/Lock_(computer_science)]"@en ; + sh:property [ + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isNamed ; + ] ; + sh:targetClass observable:MutexFacet ; . observable:NTFSFile - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:File ; rdfs:label "NTFSFile"@en ; rdfs:comment "An NTFS file is a New Technology File System (NTFS) file."@en ; + sh:targetClass observable:NTFSFile ; . observable:NTFSFileFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "NTFSFileFacet"@en ; + rdfs:comment "An NTFS file facet is a grouping of characteristics unique to a file on an NTFS (new technology filesystem) file system."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:entryID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:entryID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sid ; + ] , + [ + sh:path observable:alternateDataStreams ; ] ; - rdfs:label "NTFSFileFacet"@en ; - rdfs:comment "An NTFS file facet is a grouping of characteristics unique to a file on an NTFS (new technology filesystem) file system."@en ; + sh:targetClass observable:NTFSFileFacet ; . observable:NTFSFilePermissionsFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "NTFSFilePermissionsFacet"@en ; rdfs:comment "An NTFS file permissions facet is a grouping of characteristics unique to the access rights (e.g., view, change, navigate, execute) of a file on an NTFS (new technology filesystem) file system."@en ; + sh:targetClass observable:NTFSFilePermissionsFacet ; . observable:NamedPipe - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:FileSystemObject ; rdfs:label "NamedPipe"@en ; rdfs:comment "A named pipe is a mechanism for FIFO (first-in-first-out) inter-process communication. It is persisted as a filesystem object (that can be deleted like any other file), can be written to or read from by any process and exists beyond the lifespan of any process interacting with it (unlike simple anonymous pipes). [based on https://en.wikipedia.org/wiki/Named_pipe]"@en ; + sh:targetClass observable:NamedPipe ; . observable:NetworkAppliance - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Appliance ; rdfs:label "NetworkAppliance"@en ; rdfs:comment "A network appliance is a purpose-built computer with software or firmware that is designed to provide a specific network management function."@en ; + sh:targetClass observable:NetworkAppliance ; . observable:NetworkConnectionFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "NetworkConnectionFacet"@en ; + rdfs:comment "A network connection facet is a grouping of characteristics unique to a connection (complete or attempted) accross a 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 + [ + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isActive ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:endTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:destinationPort ; ] , [ - a owl:Restriction ; - owl:onProperty observable:protocols ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sourcePort ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isActive ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:protocols ; ] , [ - a owl:Restriction ; - owl:onProperty observable:destinationPort ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:startTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sourcePort ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:path observable:dst ; + ] , + [ + sh:path observable:src ; ] ; - rdfs:label "NetworkConnectionFacet"@en ; - rdfs:comment "A network connection facet is a grouping of characteristics unique to a connection (complete or attempted) accross a digital network (a group of two or more computer systems linked together). [based on https://www.webopedia.com/TERM/N/network.html]"@en ; + sh:targetClass observable:NetworkConnectionFacet ; . observable:NetworkConnetion - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "NetworkConnection"@en ; rdfs:comment "A network connection is a connection (completed or attempted) across a digital network (a group of two or more computer systems linked together). [based on https://www.webopedia.com/TERM/N/network.html]"@en ; + sh:targetClass observable:NetworkConnetion ; . observable:NetworkFlow - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "NetworkFlow"@en ; rdfs:comment "A network flow is a sequence of data transiting one or more digital network (a group or two or more computer systems linked together) connections. [based on https://www.webopedia.com/TERM/N/network.html]"@en ; + sh:targetClass observable:NetworkFlow ; . observable:NetworkFlowFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "NetworkFlowFacet"@en ; + rdfs:comment "A network flow facet is a grouping of characteristics unique to a sequence of data transiting one or more digital network (a group of two or more computer systems linked together) connections. [based on https://www.webopedia.com/TERM/N/network.html]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:ipfix ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:dstPayload ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dstPayload ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:srcPayload ; ] , [ - a owl:Restriction ; - owl:onProperty observable:srcPayload ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:dstBytes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dstBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:dstPackets ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dstPackets ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:srcBytes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:srcBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:srcPackets ; ] , [ - a owl:Restriction ; - owl:onProperty observable:srcPackets ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:ipfix ; ] ; - rdfs:label "NetworkFlowFacet"@en ; - rdfs:comment "A network flow facet is a grouping of characteristics unique to a sequence of data transiting one or more digital network (a group of two or more computer systems linked together) connections. [based on https://www.webopedia.com/TERM/N/network.html]"@en ; + sh:targetClass observable:NetworkFlowFacet ; . observable:NetworkInterface - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "NetworkInterface"@en ; rdfs:comment "A network interface is a software or hardware interface between two pieces of equipment or protocol layers in a computer network."@en ; + sh:targetClass observable:NetworkInterface ; . observable:NetworkInterfaceFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "NetworkInterfaceFacet"@en ; + rdfs:comment "A network interface facet is a grouping of characteristics unique to a software or hardware interface between two pieces of equipment or protocol layers in a computer network."@en ; + sh:property + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:macAddress ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:adapterName ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:dhcpLeaseExpires ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:dhcpLeaseExpires ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dhcpLeaseObtained ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:dhcpLeaseObtained ; ] , [ - a owl:Restriction ; - owl:onProperty observable:macAddress ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:dhcpServer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:adapterName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:ip ; + ] , + [ + sh:path observable:ipGateway ; ] - ; - rdfs:label "NetworkInterfaceFacet"@en ; - rdfs:comment "A network interface facet is a grouping of characteristics unique to a software or hardware interface between two pieces of equipment or protocol layers in a computer network."@en ; + ; + sh:targetClass observable:NetworkInterfaceFacet ; . observable:NetworkProtocol - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "NetworkProtocol"@en ; rdfs:comment "A network protocol is an established set of structured rules that determine how data is transmitted between different devices in the same network. Essentially, it allows connected devices to communicate with each other, regardless of any differences in their internal processes, structure or design. [based on https://www.comptia.org/content/guides/what-is-a-network-protocol]"@en ; + sh:targetClass observable:NetworkProtocol ; . observable:NetworkRoute - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "NetworkRoute"@en ; rdfs:comment "A network route is a specific path (of specific network nodes, connections and protocols) for traffic in a network or between or across multiple networks."@en ; + sh:targetClass observable:NetworkRoute ; . observable:NetworkSocketAddressFamily @@ -3417,235 +3815,278 @@ observable:NetworkSocketType . observable:NetworkSubnet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "NetworkSubnet"@en ; rdfs:comment "A network subnet is a logical subdivision of an IP network. [based on https://en.wikipedia.org/wiki/Subnetwork]"@en ; + sh:targetClass observable:NetworkSubnet ; . observable:Note - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Note"@en ; rdfs:comment "A note is a brief textual record."@en ; + sh:targetClass observable:Note ; . observable:NoteFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "NoteFacet"@en ; + rdfs:comment "A note facet is a grouping of characteristics unique to a brief textual record."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:text ; ] , [ - a owl:Restriction ; - owl:onProperty observable:text ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] ; - rdfs:label "NoteFacet"@en ; - rdfs:comment "A note facet is a grouping of characteristics unique to a brief textual record."@en ; + sh:targetClass observable:NoteFacet ; . observable:Observable - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:UcoObject ; rdfs:label "Observable"@en ; rdfs:comment "An observable is a characterizable item or action within the digital domain."@en ; + sh:targetClass observable:Observable ; . observable:ObservableAction - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf - , + action:Action , observable:Observable ; rdfs:label "ObservableAction"@en ; rdfs:comment "An observable action is a grouping of characteristics unique to something that may be done or performed within the digital domain."@en ; + sh:targetClass observable:ObservableAction ; . observable:ObservableObject - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf - , - observable:Observable , + core:Item , + observable:Observable + ; + rdfs:label "ObservableObject"@en ; + rdfs:comment "An observable object is a grouping of characteristics unique to a distinct article or unit within the digital domain."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:state ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:hasChanged ; ] , [ - a owl:Restriction ; - owl:onProperty observable:hasChanged ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:state ; ] ; - rdfs:label "ObservableObject"@en ; - rdfs:comment "An observable object is a grouping of characteristics unique to a distinct article or unit within the digital domain."@en ; + sh:targetClass observable:ObservableObject ; . observable:ObservablePattern - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Observable ; rdfs:label "ObservablePattern"@en ; rdfs:comment "An observable pattern is a grouping of characteristics unique to a logical pattern composed of observable object and observable action properties."@en ; + sh:targetClass observable:ObservablePattern ; . observable:ObservableRelationship - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf - , + core:Relationship , observable:Observable ; rdfs:label "ObservableRelationship"@en ; rdfs:comment "An observable relationship is a grouping of characteristics unique to an assertion of an association between two observable objects."@en ; + sh:targetClass observable:ObservableRelationship ; . observable:Observation - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; - ] , - [ - a owl:Restriction ; - owl:onProperty ; - owl:hasValue "observe" ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf action:Action ; rdfs:label "Observation"@en ; rdfs:comment "An observation is a temporal perception of an observable."@en ; + sh:property [ + sh:hasValue "observe" ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:name ; + ] ; + sh:targetClass observable:Observation ; . observable:OnlineService - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "OnlineService"@en ; rdfs:comment "An online service is a particular provision mechanism of information access, distribution or manipulation over the Internet."@en ; + sh:targetClass observable:OnlineService ; . observable:OnlineServiceFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "OnlineServiceFacet"@en-US ; + rdfs:comment "An online service facet is a grouping of characteristics unique to a particular provision mechanism of information access, distribution or manipulation over the Internet."@en-US ; + sh:property [ - a owl:Restriction ; - owl:onProperty ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:name ; ] , [ - a owl:Restriction ; - owl:onProperty observable:inetLocation ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:inetLocation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:location ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:location ; ] ; - rdfs:label "OnlineServiceFacet"@en-US ; - rdfs:comment "An online service facet is a grouping of characteristics unique to a particular provision mechanism of information access, distribution or manipulation over the Internet."@en-US ; + sh:targetClass observable:OnlineServiceFacet ; . observable:OperatingSystem - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "OperatingSystem"@en ; rdfs:comment "An operating system is the software that manages computer hardware, software resources, and provides common services for computer programs. [based on https://en.wikipedia.org/wiki/Operating_system]"@en ; + sh:targetClass observable:OperatingSystem ; . observable:OperatingSystemFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "OperatingSystemFacet"@en ; + rdfs:comment "An operating system facet is a grouping of characteristics unique to the software that manages computer hardware, software resources, and provides common services for computer programs. [based on https://en.wikipedia.org/wiki/Operating_system]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:bitness ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:manufacturer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:environmentVariables ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:version ; ] , [ - a owl:Restriction ; - owl:onProperty observable:installDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:bitness ; ] , [ - a owl:Restriction ; - owl:onProperty observable:manufacturer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:environmentVariables ; ] , [ - a owl:Restriction ; - owl:onProperty observable:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:installDate ; ] ; - rdfs:label "OperatingSystemFacet"@en ; - rdfs:comment "An operating system facet is a grouping of characteristics unique to the software that manages computer hardware, software resources, and provides common services for computer programs. [based on https://en.wikipedia.org/wiki/Operating_system]"@en ; + sh:targetClass observable:OperatingSystemFacet ; . observable:PDFFile - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:File ; rdfs:label "PDFFile"@en ; rdfs:comment "A PDF file is a Portable Document Format (PDF) file."@en ; + sh:targetClass observable:PDFFile ; . observable:PDFFileFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "PDFFileFacet"@en ; + rdfs:comment "A PDF file facet is a grouping of characteristics unique to a PDF (Portable Document Format) file."@en ; + sh:property + [ + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isOptimized ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:documentInformationDictionary ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:pdfId1 ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isOptimized ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:version ; ] , [ - a owl:Restriction ; - owl:onProperty observable:pdfId1 ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:documentInformationDictionary ; ] , [ - a owl:Restriction ; - owl:onProperty observable:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:pdfId0 ; ] ; - rdfs:label "PDFFileFacet"@en ; - rdfs:comment "A PDF file facet is a grouping of characteristics unique to a PDF (Portable Document Format) file."@en ; + sh:targetClass observable:PDFFileFacet ; . observable:PIN @@ -3663,354 +4104,387 @@ observable:PUK . observable:PathRelationFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "PathRelationFacet"@en ; rdfs:comment "A path relation facet is a grouping of characteristics unique to the location of one object within another containing object."@en ; + sh:property [ + sh:path observable:path ; + ] ; + sh:targetClass observable:PathRelationFacet ; . observable:PaymentCard - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "PaymentCard"@en ; rdfs:comment "A payment card is a physical token that is part of a payment system issued by financial institutions, such as a bank, to a customer that enables its owner (the cardholder) to access the funds in the customer's designated bank accounts, or through a credit account and make payments by electronic funds transfer and access automated teller machines (ATMs). [based on https://en.wikipedia.org/wiki/Payment_card]"@en ; + sh:targetClass observable:PaymentCard ; . observable:PhoneAccount - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAccount ; rdfs:label "PhoneAccount"@en ; rdfs:comment "A phone account is an arrangement with an entity to enable and control the provision of a telephony capability or service."@en ; + sh:targetClass observable:PhoneAccount ; . observable:PhoneAccountFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:phoneNumber ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "PhoneAccountFacet"@en ; rdfs:comment "A phone account facet is a grouping of characteristics unique to an arrangement with an entity to enable and control the provision of a telephony capability or service."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:phoneNumber ; + ] ; + sh:targetClass observable:PhoneAccountFacet ; . observable:PhoneCall - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "PhoneCall"@en ; rdfs:comment "A phone call is a connection over a telephone network between the called party and the calling party. [based on https://en.wikipedia.org/wiki/Telephone_call]"@en ; + sh:targetClass observable:PhoneCall ; . observable:PhoneCallFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "PhoneCallFacet"@en ; + rdfs:comment "A phone call facet is a grouping of characteristics unique to a connection over a telephone network between the called party and the calling party. [based on https://en.wikipedia.org/wiki/Telephone_call]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:endTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:from ; ] , [ - a owl:Restriction ; - owl:onProperty observable:from ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:to ; ] , [ - a owl:Restriction ; - owl:onProperty observable:to ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:duration ; ] , [ - a owl:Restriction ; - owl:onProperty observable:duration ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:callType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:callType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:startTime ; ] ; - rdfs:label "PhoneCallFacet"@en ; - rdfs:comment "A phone call facet is a grouping of characteristics unique to a connection over a telephone network between the called party and the calling party. [based on https://en.wikipedia.org/wiki/Telephone_call]"@en ; + sh:targetClass observable:PhoneCallFacet ; . observable:Pipe - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Pipe"@en ; rdfs:comment "A pipe is a mechanism for one-way inter-process communication using message passing where data written by one process is buffered by the operating system until it is read by the next process, and this uni-directional channel disappears when the processes are completed. [based on https://en.wikipedia.org/wiki/Pipeline_(Unix) ; https://en.wikipedia.org/wiki/Anonymous_pipe]"@en ; + sh:targetClass observable:Pipe ; . observable:Post - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Message ; rdfs:label "Post"@en ; rdfs:comment "A post is message submitted to an online discussion/publishing site (forum, blog, etc.)."@en ; + sh:targetClass observable:Post ; . observable:Process - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Process"@en ; rdfs:comment "A process is an instance of a computer program executed on an operating system."@en ; + sh:targetClass observable:Process ; . observable:ProcessFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ProcessFacet"@en ; + rdfs:comment "A process facet is a grouping of characteristics unique to an instance of a computer program executed on an operating system."@en ; + sh:property + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:binary ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:environmentVariables ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:creatorUser ; ] , [ - a owl:Restriction ; - owl:onProperty observable:exitTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:parent ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isHidden ; ] , [ - a owl:Restriction ; - owl:onProperty observable:binary ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:exitStatus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:creatorUser ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:pid ; ] , [ - a owl:Restriction ; - owl:onProperty observable:parent ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:currentWorkingDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isHidden ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:status ; ] , [ - a owl:Restriction ; - owl:onProperty observable:exitStatus ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:environmentVariables ; ] , [ - a owl:Restriction ; - owl:onProperty observable:pid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:exitTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:currentWorkingDirectory ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:status ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:arguments ; ] ; - rdfs:label "ProcessFacet"@en ; - rdfs:comment "A process facet is a grouping of characteristics unique to an instance of a computer program executed on an operating system."@en ; + sh:targetClass observable:ProcessFacet ; . observable:Profile - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Profile"@en ; rdfs:comment "A profile is an explicit digital representation of identity and characteristics of the owner of a single user account associated with an online service or application. [based on https://en.wikipedia.org/wiki/User_profile]"@en ; + sh:targetClass observable:Profile ; . observable:ProfileFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "ProfileFacet"@en-US ; + rdfs:comment "A profile facet is a grouping of characteristics unique to an explicit digital representation of identity and characteristics of the owner of a single user account associated with an online service or application. [based on https://en.wikipedia.org/wiki/User_profile]"@en-US ; + sh:property [ - a owl:Restriction ; - owl:onProperty ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path core:name ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactAddress ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactEmail ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactEmail ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactMessaging ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactMessaging ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactPhone ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactPhone ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactURL ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactURL ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:displayName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileAccount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profileAccount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileCreated ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profileCreated ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileIdentity ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profileIdentity ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileService ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profileService ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileLanguage ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:profileLanguage ; ] ; - rdfs:label "ProfileFacet"@en-US ; - rdfs:comment "A profile facet is a grouping of characteristics unique to an explicit digital representation of identity and characteristics of the owner of a single user account associated with an online service or application. [based on https://en.wikipedia.org/wiki/User_profile]"@en-US ; + sh:targetClass observable:ProfileFacet ; . observable:PropertiesEnumeratedEffectFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf - , - observable:DefinedEffectFacet , - [ - a owl:Restriction ; - owl:onProperty observable:properties ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + core:Facet , + observable:DefinedEffectFacet ; rdfs:label "PropertiesEnumeratedEffectFacet"@en ; rdfs:comment "A properties enumerated effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a characteristic of the observable object is enumerated. An example of this would be startup parameters for a process."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:properties ; + ] ; + sh:targetClass observable:PropertiesEnumeratedEffectFacet ; . observable:PropertyReadEffectFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf - , - observable:DefinedEffectFacet , + core:Facet , + observable:DefinedEffectFacet + ; + rdfs:label "PropertyReadEffectFacet"@en ; + rdfs:comment "A properties read effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a characteristic is read from an observable object. An example of this would be the current running state of a process."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:propertyName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:propertyName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:value ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:value ; ] ; - rdfs:label "PropertyReadEffectFacet"@en ; - rdfs:comment "A properties read effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a characteristic is read from an observable object. An example of this would be the current running state of a process."@en ; + sh:targetClass observable:PropertyReadEffectFacet ; . observable:RasterPicture - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:File ; rdfs:label "RasterPicture"@en ; rdfs:comment "A raster picture is a raster (or bitmap) image."@en ; + sh:targetClass observable:RasterPicture ; . observable:RasterPictureFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "RasterPictureFacet"@en ; + rdfs:comment "A raster picture facet is a grouping of characteristics unique to a raster (or bitmap) image."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:camera ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:camera ; ] , [ - a owl:Restriction ; - owl:onProperty observable:bitsPerPixel ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:bitsPerPixel ; ] , [ - a owl:Restriction ; - owl:onProperty observable:pictureHeight ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:pictureHeight ; ] , [ - a owl:Restriction ; - owl:onProperty observable:pictureWidth ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:pictureWidth ; ] , [ - a owl:Restriction ; - owl:onProperty observable:imageCompressionMethod ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:imageCompressionMethod ; ] , [ - a owl:Restriction ; - owl:onProperty observable:pictureType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:pictureType ; ] ; - rdfs:label "RasterPictureFacet"@en ; - rdfs:comment "A raster picture facet is a grouping of characteristics unique to a raster (or bitmap) image."@en ; + sh:targetClass observable:RasterPictureFacet ; . observable:RegistryDatatype @@ -4074,74 +4548,78 @@ observable:RegistryDatatype . observable:ReparsePoint - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:FileSystemObject ; rdfs:label "ReparsePoint"@en ; rdfs:comment "A reparse point is a type of NTFS (New Technology File System) object which is an optional attribute of files and directories meant to define some sort of preprocessing before accessing the said file or directory. For instance reparse points can be used to redirect access to files which have been moved to long term storage so that some application would retrieve them and make them directly accessible. A reparse point contains a reparse tag and data that are interpreted by a filesystem filter identified by the tag. [based on https://jp-andre.pagesperso-orange.fr/junctions.html ; https://en.wikipedia.org/wiki/NTFS_reparse_point]"@en ; + sh:targetClass observable:ReparsePoint ; . observable:SIMCard - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Device ; rdfs:label "SIMCard" ; rdfs:comment "A SIM card is a subscriber identification module card intended to securely store the international mobile subscriber identity (IMSI) number and its related key, which are used to identify and authenticate subscribers on mobile telephony. [based on https://en.wikipedia.org/wiki/SIM_card]"@en ; + sh:targetClass observable:SIMCard ; . observable:SIMCardFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "SIMCardFacet"@en ; + rdfs:comment "A SIM card facet is a grouping of characteristics unique to a subscriber identification module card intended to securely store the international mobile subscriber identity (IMSI) number and its related key, which are used to identify and authenticate subscribers on mobile telephony devices (such as mobile phones and computers). [based on https://en.wikipedia.org/wiki/SIM_card]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:carrier ; - owl:onClass identity:Identity ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class identity:Identity ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:carrier ; ] , [ - a owl:Restriction ; - owl:onProperty observable:storageCapacityInBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:storageCapacityInBytes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ICCID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:ICCID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:IMSI ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:IMSI ; ] , [ - a owl:Restriction ; - owl:onProperty observable:PIN ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:PIN ; ] , [ - a owl:Restriction ; - owl:onProperty observable:PUK ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:PUK ; ] , [ - a owl:Restriction ; - owl:onProperty observable:SIMForm ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:SIMForm ; ] , [ - a owl:Restriction ; - owl:onProperty observable:SIMType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:SIMType ; ] ; - rdfs:label "SIMCardFacet"@en ; - rdfs:comment "A SIM card facet is a grouping of characteristics unique to a subscriber identification module card intended to securely store the international mobile subscriber identity (IMSI) number and its related key, which are used to identify and authenticate subscribers on mobile telephony devices (such as mobile phones and computers). [based on https://en.wikipedia.org/wiki/SIM_card]"@en ; + sh:targetClass observable:SIMCardFacet ; . observable:SIMForm @@ -4159,1284 +4637,1482 @@ observable:SIMType . observable:SIPAddress - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAddress ; rdfs:label "SIPAddress"@en ; rdfs:comment "A SIP address is an identifier for Session Initiation Protocol (SIP) communication."@en ; + sh:targetClass observable:SIPAddress ; . observable:SIPAddressFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:DigitalAddressFacet ; + rdfs:label "SIPAddressFacet"@en ; + rdfs:comment "A SIP address facet is a grouping of characteristics unique to a Session Initiation Protocol (SIP) standards conformant identifier assigned to a user to enable routing and management of SIP standards conformant communication to or from that user loosely coupled from any particular devices."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:displayName ; ] ; - rdfs:label "SIPAddressFacet"@en ; - rdfs:comment "A SIP address facet is a grouping of characteristics unique to a Session Initiation Protocol (SIP) standards conformant identifier assigned to a user to enable routing and management of SIP standards conformant communication to or from that user loosely coupled from any particular devices."@en ; + sh:targetClass observable:SIPAddressFacet ; . observable:SMSMessage - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Message ; rdfs:label "SMSMessage"@en ; rdfs:comment "An SMS message is a message conformant to the short message service (SMS) communication protocol standards."@en ; + sh:targetClass observable:SMSMessage ; . observable:SMSMessageFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:isRead ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "SMSMessageFacet"@en ; rdfs:comment "A SMS message facet is a grouping of characteristics unique to a message conformant to the short message service (SMS) communication protocol standards."@en ; + sh:property [ + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isRead ; + ] ; + sh:targetClass observable:SMSMessageFacet ; . observable:SQLiteBlob - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "SQLiteBlob"@en ; rdfs:comment "An SQLite blob is a blob (binary large object) of data within an SQLite database. [based on https://en.wikipedia.org/wiki/SQLite]"@en ; + sh:targetClass observable:SQLiteBlob ; . observable:SQLiteBlobFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "SQLiteBlobFacet"@en ; + rdfs:comment "An SQLite blob facet is a grouping of characteristics unique to a blob (binary large object) of data within an SQLite database. [based on https://en.wikipedia.org/wiki/SQLite]"@en ; + sh:property + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:columnName ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:columnName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:rowCondition ; ] , [ - a owl:Restriction ; - owl:onProperty observable:rowCondition ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:tableName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:tableName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:rowIndex ; ] ; - rdfs:label "SQLiteBlobFacet"@en ; - rdfs:comment "An SQLite blob facet is a grouping of characteristics unique to a blob (binary large object) of data within an SQLite database. [based on https://en.wikipedia.org/wiki/SQLite]"@en ; + sh:targetClass observable:SQLiteBlobFacet ; . observable:SecurityAppliance - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Appliance ; rdfs:label "SecurityAppliance"@en ; rdfs:comment "A security appliance is a purpose-built computer with software or firmware that is designed to provide a specific security function to protect computer networks."@en ; + sh:targetClass observable:SecurityAppliance ; . observable:Semaphore - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Semaphore"@en ; rdfs:comment "A semaphore is a variable or abstract data type used to control access to a common resource by multiple processes and avoid critical section problems in a concurrent system such as a multitasking operating system. [based on https://en.wikipedia.org/wiki/Semaphore_(programming)]"@en ; + sh:targetClass observable:Semaphore ; . observable:SendControlCodeEffectFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf - , - observable:DefinedEffectFacet , - [ - a owl:Restriction ; - owl:onProperty observable:controlCode ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + core:Facet , + observable:DefinedEffectFacet ; rdfs:label "SendControlCodeEffectFacet"@en ; rdfs:comment "A send control code effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a control code, or other control-oriented communication signal, is sent to the observable object. An example of this would be an action sending a control code changing the running state of a process."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:controlCode ; + ] ; + sh:targetClass observable:SendControlCodeEffectFacet ; . observable:ShopListing - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "ShopListing"@en ; rdfs:comment "A shop listing is a listing of offered products on an online marketplace/shop."@en ; + sh:targetClass observable:ShopListing ; . observable:Snapshot - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:FileSystemObject ; rdfs:label "Snapshot"@en ; rdfs:comment "A snapshot is a file system object representing a snapshot of the contents of a part of a file system at a point in time."@en ; + sh:targetClass observable:Snapshot ; . observable:Socket - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:FileSystemObject ; rdfs:label "Socket"@en ; rdfs:comment "A socket is a special file used for inter-process communication, which enables communication between two processes. In addition to sending data, processes can send file descriptors across a Unix domain socket connection using the sendmsg() and recvmsg() system calls. Unlike named pipes which allow only unidirectional data flow, sockets are fully duplex-capable. [based on https://en.wikipedia.org/wiki/Unix_file_types]"@en ; + sh:targetClass observable:Socket ; . observable:SocketAddress - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Address ; rdfs:label "SocketAddress"@en ; rdfs:comment "A socket address (combining and IP address and a port number) is a composite identifier for a network socket endpoint supporting internet protocol communications."@en ; + sh:targetClass observable:SocketAddress ; . observable:Software - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Software"@en ; rdfs:comment "Software is a definitely scoped instance of a collection of data or computer instructions that tell the computer how to work. [based on https://en.wikipedia.org/wiki/Software]"@en ; + sh:targetClass observable:Software ; . observable:SoftwareFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "SoftwareFacet"@en ; + rdfs:comment "A software facet is a grouping of characteristics unique to a software program (a definitively scoped instance of a collection of data or computer instructions that tell the computer how to work). [based on https://en.wikipedia.org/wiki/Software]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:cpeid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:cpeid ; ] , [ - a owl:Restriction ; - owl:onProperty observable:language ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:language ; ] , [ - a owl:Restriction ; - owl:onProperty observable:manufacturer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:manufacturer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:swid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:swid ; ] , [ - a owl:Restriction ; - owl:onProperty observable:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:version ; ] ; - rdfs:label "SoftwareFacet"@en ; - rdfs:comment "A software facet is a grouping of characteristics unique to a software program (a definitively scoped instance of a collection of data or computer instructions that tell the computer how to work). [based on https://en.wikipedia.org/wiki/Software]"@en ; + sh:targetClass observable:SoftwareFacet ; . observable:StateChangeEffectFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf - , - observable:DefinedEffectFacet , + core:Facet , + observable:DefinedEffectFacet + ; + rdfs:label "StateChangeEffectFacet"@en ; + rdfs:comment "A state change effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a state of the observable object is changed."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:oldObject ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:newObject ; ] , [ - a owl:Restriction ; - owl:onProperty observable:newObject ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:oldObject ; ] ; - rdfs:label "StateChangeEffectFacet"@en ; - rdfs:comment "A state change effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a state of the observable object is changed."@en ; + sh:targetClass observable:StateChangeEffectFacet ; . observable:SymbolicLink - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf ; rdfs:label "SymbolicLink"@en ; rdfs:comment "A symbolic link is a file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. [based on https://en.wikipedia.org/wiki/Symbolic_link]"@en ; + sh:targetClass observable:SymbolicLink ; . observable:SymbolicLinkFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:targetFile ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "SymbolicLinkFacet"@en ; rdfs:comment "A symbolic link facet is a grouping of characteristics unique to a file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. [based on https://en.wikipedia.org/wiki/Symbolic_link]"@en ; + sh:property [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:targetFile ; + ] ; + sh:targetClass observable:SymbolicLinkFacet ; . observable:TCPConnection - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:NetworkConnection ; rdfs:label "TCPConnection"@en ; rdfs:comment "A TCP connection is a network connection that is conformant to the Transfer "@en ; + sh:targetClass observable:TCPConnection ; . observable:TCPConnectionFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "TCPConnectionFacet"@en ; rdfs:comment "A TCP connection facet is a grouping of characteristics unique to portions of a network connection that are conformant to the Transmission Control Protocl (TCP) standard."@en ; + sh:property + [ + sh:path observable:destinationFlags ; + ] , + [ + sh:path observable:sourceFlags ; + ] + ; + sh:targetClass observable:TCPConnectionFacet ; . observable:TaskActionType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:iComHandlerAction ; - owl:onClass observable:IComHandlerActionType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:IComHandlerActionType ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:iComHandlerAction ; ] , [ - a owl:Restriction ; - owl:onProperty observable:iExecAction ; - owl:onClass observable:IExecActionType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:IExecActionType ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:iExecAction ; ] , [ - a owl:Restriction ; - owl:onProperty observable:iShowMessageAction ; - owl:onClass observable:IShowMessageActionType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:IShowMessageActionType ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:iShowMessageAction ; ] , [ - a owl:Restriction ; - owl:onProperty observable:iEmailAction ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:iEmailAction ; ] , [ - a owl:Restriction ; - owl:onProperty observable:actionID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:actionID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:actionType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:TaskActionTypeVocab ; + sh:datatype vocabulary:TaskActionTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:actionType ; ] ; - rdfs:label "TaskActionType"@en ; - rdfs:comment "A task action type is a grouping of characteristics for a scheduled action to be completed."@en ; + sh:targetClass observable:TaskActionType ; . observable:Thread - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Thread"@en ; rdfs:comment "A thread is the smallest sequence of programmed instructions that can be managed independently by a scheduler on a computer, which is typically a part of the operating system. It is a component of a process. Multiple threads can exist within one process, executing concurrently and sharing resources such as memory, while different processes do not share these resources. In particular, the threads of a process share its executable code and the values of its dynamically allocated variables and non-thread-local global variables at any given time. [based on https://en.wikipedia.org/wiki/Thread_(computing)]"@en ; + sh:targetClass observable:Thread ; . observable:TriggerType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:triggerBeginTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isEnabled ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerEndTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:triggerDelay ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isEnabled ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:triggerMaxRunTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerDelay ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:triggerSessionChangeType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerMaxRunTime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype vocabulary:TriggerFrequencyVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:triggerFrequency ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerSessionChangeType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype vocabulary:TriggerTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:triggerType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerFrequency ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:TriggerFrequencyVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:triggerBeginTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:TriggerTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:triggerEndTime ; ] ; - 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:targetClass observable:TriggerType ; . observable:Tweet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Message ; rdfs:label "Tweet"@en ; rdfs:comment "A tweet is message submitted by a Twitter user account to the Twitter microblogging platform."@en ; + sh:targetClass observable:Tweet ; . observable:TwitterProfileFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "TwitterProfileFacet" ; + rdfs:comment "A twitter profile facet is a grouping of characteristics unique to an explicit digital representation of identity and characteristics of the owner of a single Twitter user account. [based on https://en.wikipedia.org/wiki/User_profile]" ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:twitterId ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:twitterId ; ] , [ - a owl:Restriction ; - owl:onProperty observable:favoritesCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:favoritesCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:followersCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:followersCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:friendsCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:friendsCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:listedCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:listedCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileBackgroundLocation ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profileBackgroundLocation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileBannerLocation ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profileBannerLocation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileImageLocation ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profileImageLocation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileIsProtected ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profileIsProtected ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileIsVerified ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:profileIsVerified ; ] , [ - a owl:Restriction ; - owl:onProperty observable:statusesCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:statusesCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:twitterHandle ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:twitterHandle ; ] , [ - a owl:Restriction ; - owl:onProperty observable:userLocationString ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:userLocationString ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileBackgroundHash ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:profileBackgroundHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileBannerHash ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:profileBannerHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileImageHash ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:profileImageHash ; ] ; - rdfs:label "TwitterProfileFacet" ; - rdfs:comment "A twitter profile facet is a grouping of characteristics unique to an explicit digital representation of identity and characteristics of the owner of a single Twitter user account. [based on https://en.wikipedia.org/wiki/User_profile]" ; + sh:targetClass observable:TwitterProfileFacet ; . observable:UNIXAccount - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAccount ; rdfs:label "UNIXAccount"@en ; rdfs:comment "A UNIX account is an account on a UNIX operating system."@en ; + sh:targetClass observable:UNIXAccount ; . observable:UNIXAccountFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "UNIXAccountFacet"@en ; + rdfs:comment "A UNIX account facet is a grouping of characteristics unique to an account on a UNIX operating system."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:gid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:gid ; ] , [ - a owl:Restriction ; - owl:onProperty observable:shell ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:shell ; ] ; - rdfs:label "UNIXAccountFacet"@en ; - rdfs:comment "A UNIX account facet is a grouping of characteristics unique to an account on a UNIX operating system."@en ; + sh:targetClass observable:UNIXAccountFacet ; . observable:UNIXFile - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:File ; rdfs:label "UNIXFile"@en ; rdfs:comment "A UNIX file is a file pertaining to the UNIX operating system."@en ; + sh:targetClass observable:UNIXFile ; . observable:UNIXFilePermissionsFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "UNIXFilePermissionsFacet"@en ; rdfs:comment "A UNIX file permissions facet is a grouping of characteristics unique to the access rights (e.g., view, change, navigate, execute) of a file on a UNIX file system."@en ; + sh:targetClass observable:UNIXFilePermissionsFacet ; . observable:UNIXProcess - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Process ; rdfs:label "UNIXProcess"@en ; rdfs:comment "A UNIX process is an instance of a computer program executed on a UNIX operating system."@en ; + sh:targetClass observable:UNIXProcess ; . observable:UNIXProcessFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "UNIXProcessFacet"@en ; rdfs:comment "A UNIX process facet is a grouping of characteristics unique to an instance of a computer program executed on a UNIX operating system."@en ; + sh:property + [ + sh:path observable:openFileDescriptor ; + ] , + [ + sh:path observable:ruid ; + ] + ; + sh:targetClass observable:UNIXProcessFacet ; . observable:UNIXVolumeFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "UNIXVolumeFacet"@en ; + rdfs:comment "A UNIX volume facet is a grouping of characteristics unique to a single accessible storage area (volume) with a single UNIX file system. [based on https://en.wikipedia.org/wiki/Volume_(computing)]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:mountPoint ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mountPoint ; ] , [ - a owl:Restriction ; - owl:onProperty observable:options ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:options ; ] ; - rdfs:label "UNIXVolumeFacet"@en ; - rdfs:comment "A UNIX volume facet is a grouping of characteristics unique to a single accessible storage area (volume) with a single UNIX file system. [based on https://en.wikipedia.org/wiki/Volume_(computing)]"@en ; + sh:targetClass observable:UNIXVolumeFacet ; . observable:URL - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "URL"@en ; rdfs:comment "A URL is a uniform resource locator (URL) acting as a resolvable address to a particular WWW (World Wide Web) accessible resource."@en ; + sh:targetClass observable:URL ; . observable:URLFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "URLFacet"@en ; + rdfs:comment "A URL facet is a grouping of characteristics unique to a uniform resource locator (URL) acting as a resolvable address to a particular WWW (World Wide Web) accessible resource."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:host ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:host ; ] , [ - a owl:Restriction ; - owl:onProperty observable:userName ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:userName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:port ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:port ; ] , [ - a owl:Restriction ; - owl:onProperty observable:fragment ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:fullValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:password ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:fragment ; ] , [ - a owl:Restriction ; - owl:onProperty observable:path ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:password ; ] , [ - a owl:Restriction ; - owl:onProperty observable:query ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:path ; ] , [ - a owl:Restriction ; - owl:onProperty observable:scheme ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:query ; ] , [ - a owl:Restriction ; - owl:onProperty observable:fullValue ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:scheme ; ] ; - rdfs:label "URLFacet"@en ; - rdfs:comment "A URL facet is a grouping of characteristics unique to a uniform resource locator (URL) acting as a resolvable address to a particular WWW (World Wide Web) accessible resource."@en ; + sh:targetClass observable:URLFacet ; . observable:URLHistory - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "URLHistory"@en ; rdfs:comment "A URL history characterizes the stored URL history for a particular web browser"@en ; + sh:targetClass observable:URLHistory ; . observable:URLHistoryEntry - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "URL History Entry"@en-US ; + rdfs:comment "A URL history entry is a grouping of characteristics unique to the properties of a single URL history entry for a particular browser."@en-US ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:browserUserProfile ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:browserUserProfile ; ] , [ - a owl:Restriction ; - owl:onProperty observable:expirationTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:expirationTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:firstVisit ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:firstVisit ; ] , [ - a owl:Restriction ; - owl:onProperty observable:hostname ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:hostname ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastVisit ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:lastVisit ; ] , [ - a owl:Restriction ; - owl:onProperty observable:manuallyEnteredCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:manuallyEnteredCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:pageTitle ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:pageTitle ; ] , [ - a owl:Restriction ; - owl:onProperty observable:url ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:url ; ] , [ - a owl:Restriction ; - owl:onProperty observable:visitCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:visitCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:keywordSearchTerm ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:keywordSearchTerm ; ] , [ - a owl:Restriction ; - owl:onProperty observable:referrerUrl ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:path observable:referrerUrl ; ] ; - rdfs:label "URL History Entry"@en-US ; - rdfs:comment "A URL history entry is a grouping of characteristics unique to the properties of a single URL history entry for a particular browser."@en-US ; + sh:targetClass observable:URLHistoryEntry ; . observable:URLHistoryFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "URLHistoryFacet"@en-US ; + rdfs:comment "A URL history facet is a grouping of characteristics unique to the stored URL history for a particular web browser"@en-US ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:browserInformation ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:browserInformation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:urlHistoryEntry ; - owl:minCardinality "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:urlHistoryEntry ; ] ; - rdfs:label "URLHistoryFacet"@en-US ; - rdfs:comment "A URL history facet is a grouping of characteristics unique to the stored URL history for a particular web browser"@en-US ; + sh:targetClass observable:URLHistoryFacet ; . observable:URLVisit - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "URLVisit"@en ; rdfs:comment "A URL visit characterizes the properties of a visit of a URL within a particular browser."@en ; + sh:targetClass observable:URLVisit ; . observable:URLVisitFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:browserInformation ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:browserInformation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:fromURLVisit ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:fromURLVisit ; ] , [ - a owl:Restriction ; - owl:onProperty observable:url ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:url ; ] , [ - a owl:Restriction ; - owl:onProperty observable:urlTransitionType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:urlTransitionType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:visitDuration ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:visitDuration ; ] , [ - a owl:Restriction ; - owl:onProperty observable:visitTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:visitTime ; ] ; - 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:targetClass observable:URLVisitFacet ; . observable:UserAccount - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAccount ; rdfs:label "UserAccount"@en ; rdfs:comment "A user account is an account controlling a user's access to a network, system or platform."@en ; + sh:targetClass observable:UserAccount ; . observable:UserAccountFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "UserAccountFacet"@en ; + rdfs:comment "A user account facet is a grouping of characteristics unique to an account controlling a user's access to a network, system, or platform."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:canEscalatePrivs ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:canEscalatePrivs ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isPrivileged ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isPrivileged ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isServiceAccount ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isServiceAccount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:homeDirectory ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:homeDirectory ; ] ; - rdfs:label "UserAccountFacet"@en ; - rdfs:comment "A user account facet is a grouping of characteristics unique to an account controlling a user's access to a network, system, or platform."@en ; + sh:targetClass observable:UserAccountFacet ; . observable:UserSession - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "UserSession"@en ; rdfs:comment "A user session is a temporary and interactive information interchange between two or more communicating devices within the managed scope of a single user. [based on https://en.wikipedia.org/wiki/Session_(computer_science)]"@en ; + sh:targetClass observable:UserSession ; . observable:UserSessionFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "UserSessionFacet"@en ; + rdfs:comment "A user session facet is a grouping of characteristics unique to a temporary and interactive information interchange between two or more communicating devices within the managed scope of a single user. [based on https://en.wikipedia.org/wiki/Session_(computer_science)]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:loginTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:effectiveUser ; ] , [ - a owl:Restriction ; - owl:onProperty observable:logoutTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:effectiveGroup ; ] , [ - a owl:Restriction ; - owl:onProperty observable:effectiveUser ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:effectiveGroupID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:effectiveGroup ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:loginTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:effectiveGroupID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:logoutTime ; ] ; - rdfs:label "UserSessionFacet"@en ; - rdfs:comment "A user session facet is a grouping of characteristics unique to a temporary and interactive information interchange between two or more communicating devices within the managed scope of a single user. [based on https://en.wikipedia.org/wiki/Session_(computer_science)]"@en ; + sh:targetClass observable:UserSessionFacet ; . observable:ValuesEnumeratedEffectFacet - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf - , - observable:DefinedEffectFacet , - [ - a owl:Restriction ; - owl:onProperty observable:values ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + core:Facet , + observable:DefinedEffectFacet ; rdfs:label "ValuesEnumeratedEffectFacet"@en ; rdfs:comment "A values enumerated effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a value of the observable object is enumerated. An example of this would be the values of a registry key."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:values ; + ] ; + sh:targetClass observable:ValuesEnumeratedEffectFacet ; . observable:Volume - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Volume"@en ; rdfs:comment "A volume is a single accessible storage area (volume) with a single file system. [based on https://en.wikipedia.org/wiki/Volume_(computing)]"@en ; + sh:targetClass observable:Volume ; . observable:VolumeFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "VolumeFacet"@en ; + rdfs:comment "A volume facet is a grouping of characteristics unique to a single accessible storage area (volume) with a single file system. [based on https://en.wikipedia.org/wiki/Volume_(computing)]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:sectorSize ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sectorSize ; ] , [ - a owl:Restriction ; - owl:onProperty observable:volumeID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:volumeID ; ] ; - rdfs:label "VolumeFacet"@en ; - rdfs:comment "A volume facet is a grouping of characteristics unique to a single accessible storage area (volume) with a single file system. [based on https://en.wikipedia.org/wiki/Volume_(computing)]"@en ; + sh:targetClass observable:VolumeFacet ; . observable:WebPage - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WebPage"@en ; rdfs:comment "A web page is a specific collection of information provided by a website and displayed to a user in a web browser. A website typically consists of many web pages linked together in a coherent fashion. [based on https://en.wikipedia.org/wiki/Web_page]"@en ; + sh:targetClass observable:WebPage ; . observable:WhoIs - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WhoIs"@en ; rdfs:comment "WhoIs is a response record conformant to the WHOIS protocol standard (RFC 3912). [based on https://en.wikipedia.org/wiki/WHOIS]"@en ; + sh:targetClass observable:WhoIs ; . observable:WhoIsFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:domainName ; + ] , + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:ipAddress ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:creationDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:registrantContactInfo ; ] , [ - a owl:Restriction ; - owl:onProperty observable:expirationDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:serverName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lookupDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:WhoisRegistrarInfoType ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:registrarInfo ; ] , [ - a owl:Restriction ; - owl:onProperty observable:updatedDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:domainID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:domainName ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:remarks ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ipAddress ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sponsoringRegistrar ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrantContactInfo ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype vocabulary:RegionalRegistryTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:regionalInternetRegistry ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serverName ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype vocabulary:WhoisDNSSECTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:dnssec ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrarInfo ; - owl:onClass observable:WhoisRegistrarInfoType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype vocabulary:WhoisStatusTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:status ; ] , [ - a owl:Restriction ; - owl:onProperty observable:domainID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:creationDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:remarks ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:expirationDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sponsoringRegistrar ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:lookupDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:regionalInternetRegistry ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:RegionalRegistryTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:updatedDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dnssec ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:WhoisDNSSECTypeVocab ; + sh:path observable:nameServer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:status ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:WhoisStatusTypeVocab ; + sh:path observable:registrantIDs ; ] ; - 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:targetClass observable:WhoIsFacet ; . observable:WhoisContactFacet - a owl:Class ; - rdfs:subClassOf - observable:ContactFacet , - [ - a owl:Restriction ; - owl:onProperty observable:whoisContactType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange [ - a rdfs:Datatype ; - owl:unionOf ( - xsd:string - observable:WhoisContactTypeVocab - ) ; - ] ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf observable:ContactFacet ; 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 [ + sh:datatype observable:WhoisContactTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:whoisContactType ; + ] ; + sh:targetClass observable:WhoisContactFacet ; . observable:WhoisRegistrarInfoType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "WhoisRegistrarInfoType"@en ; + rdfs:comment "A Whois registrar info type is a grouping of characteristics unique to registrar-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 [ - a owl:Restriction ; - owl:onProperty observable:geolocationAddress ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:contactPhoneNumber ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactPhoneNumber ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:emailAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:emailAddress ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:referralURL ; ] , [ - a owl:Restriction ; - owl:onProperty observable:referralURL ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:whoisServer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:whoisServer ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:registrarGUID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrarGUID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:registrarID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrarID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:registrarName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrarName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:geolocationAddress ; ] ; - rdfs:label "WhoisRegistrarInfoType"@en ; - rdfs:comment "A Whois registrar info type is a grouping of characteristics unique to registrar-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:targetClass observable:WhoisRegistrarInfoType ; . observable:WifiAddress - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:MACAddress ; rdfs:label "WifiAddress"@en ; rdfs:comment "A Wi-Fi address is a media access control (MAC) standards-conformant identifier assigned to a device network interface to enable routing and management of IEEE 802.11 standards-conformant communications to and from that device."@en ; + sh:targetClass observable:WifiAddress ; . observable:WifiAddressFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:MACAddressFacet ; rdfs:label "WifiAddressFacet"@en ; rdfs:comment "A Wi-Fi address facet is a grouping of characteristics unique to a media access control (MAC) standards conformant identifier assigned to a device network interface to enable routing and management of IEEE 802.11 standards-conformant communications to and from that device."@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:addressValue ; + ] ; + sh:targetClass observable:WifiAddressFacet ; . observable:Wiki - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "Wiki"@en ; rdfs:comment "A wiki is an online hypertext publication collaboratively edited and managed by its own audience directly using a web browser. A typical wiki contains multiple pages/articles for the subjects or scope of the project and could be either open to the public or limited to use within an organization for maintaining its internal knowledge base. [based on https://en.wikipedia.org/wiki/Wiki]"@en ; + sh:targetClass observable:Wiki ; . observable:WikiArticle - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WikiArticle"@en ; rdfs:comment "A wiki article is one or more pages in a wiki focused on characterizing a particular topic."@en ; + sh:targetClass observable:WikiArticle ; . observable:WindowsAccount - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAccount ; rdfs:label "WindowsAccount"@en ; rdfs:comment "A Windows account is a user account on a Windows operating system."@en ; + sh:targetClass observable:WindowsAccount ; . observable:WindowsAccountFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "WindowsAccountFacet"@en ; rdfs:comment "A Windows account facet is a grouping of characteristics unique to a user account on a Windows operating system."@en ; + sh:property [ + sh:path observable:groups ; + ] ; + sh:targetClass observable:WindowsAccountFacet ; . observable:WindowsActiveDirectoryAccount - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:DigitalAccount ; rdfs:label "WindowsActiveDirectoryAccount"@en ; rdfs:comment "A Windows Active Directory account is an account managed by directory-based identity-related services of a Windows operating system."@en ; + sh:targetClass observable:WindowsActiveDirectoryAccount ; . observable:WindowsActiveDirectoryAccountFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:objectGUID ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "WindowsActiveDirectoryAccountFacet"@en ; rdfs:comment "A Windows Active Directory account facet is a grouping of characteristics unique to an account managed by directory-based identity-related services of a Windows operating system."@en ; + sh:property + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:objectGUID ; + ] , + [ + sh:path observable:activeDirectoryGroups ; + ] + ; + sh:targetClass observable:WindowsActiveDirectoryAccountFacet ; . observable:WindowsComputerSpecification - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsComputerSpecification"@en ; rdfs:comment "A Windows computer specification is the hardware ans software of a programmable electronic device that can store, retrieve, and process data running a Microsoft Windows operating system. [based on merriam-webster.com/dictionary/computer]"@en ; + sh:targetClass observable:WindowsComputerSpecification ; . observable:WindowsComputerSpecificationFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "WindowsComputerSpecificationFacet"@en ; + rdfs:comment "A Windows computer specification facet is a grouping of characteristics unique to the hardware and software of a programmable electronic device that can store, retrieve, and process data running a Microsoft Windows operating system. [based on merriam-webster.com/dictionary/computer]"@en ; + sh:property + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:windowsDirectory ; + ] , + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:windowsSystemDirectory ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:registeredOrganization ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:windowsTempDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registeredOwner ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:msProductID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:windowsDirectory ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:msProductName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:windowsSystemDirectory ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:netBIOSName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:windowsTempDirectory ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:registeredOrganization ; ] , [ - a owl:Restriction ; - owl:onProperty observable:msProductID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:registeredOwner ; ] , [ - a owl:Restriction ; - owl:onProperty observable:msProductName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:domain ; ] , [ - a owl:Restriction ; - owl:onProperty observable:netBIOSName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:globalFlagList ; ] ; - rdfs:label "WindowsComputerSpecificationFacet"@en ; - rdfs:comment "A Windows computer specification facet is a grouping of characteristics unique to the hardware and software of a programmable electronic device that can store, retrieve, and process data running a Microsoft Windows operating system. [based on merriam-webster.com/dictionary/computer]"@en ; + sh:targetClass observable:WindowsComputerSpecificationFacet ; . observable:WindowsCriticalSection - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsCriticalSection"@en ; rdfs:comment "A Windows critical section is a Windows object that provides synchronization similar to that provided by a mutex object, except that a critical section can be used only by the threads of a single process. Critical section objects cannot be shared across processes. Event, mutex, and semaphore objects can also be used in a single-process application, but critical section objects provide a slightly faster, more efficient mechanism for mutual-exclusion synchronization (a processor-specific test and set instruction). Like a mutex object, a critical section object can be owned by only one thread at a time, which makes it useful for protecting a shared resource from simultaneous access. Unlike a mutex object, there is no way to tell whether a critical section has been abandoned. [based on https://docs.microsoft.com/en-us/windows/win32/sync/critical-section-objects]"@en ; + sh:targetClass observable:WindowsCriticalSection ; . observable:WindowsEvent - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsEvent"@en ; rdfs:comment "A Windows event is a notification record of an occurance of interest (system, security, application, etc.) on a Windows operating system."@en ; + sh:targetClass observable:WindowsEvent ; . observable:WindowsFilemapping - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsFilemapping"@en ; rdfs:comment "A Windows file mapping is the association of a file's contents with a portion of the virtual address space of a process within a Windows operating system. The system creates a file mapping object (also known as a section object) to maintain this association. A file view is the portion of virtual address space that a process uses to access the file's contents. File mapping allows the process to use both random input and output (I/O) and sequential I/O. It also allows the process to work efficiently with a large data file, such as a database, without having to map the whole file into memory. Multiple processes can also use memory-mapped files to share data. Processes read from and write to the file view using pointers, just as they would with dynamically allocated memory. The use of file mapping improves efficiency because the file resides on disk, but the file view resides in memory.[based on https://docs.microsoft.com/en-us/windows/win32/memory/file-mapping]"@en ; + sh:targetClass observable:WindowsFilemapping ; . observable:WindowsHandle - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsHandle"@en ; rdfs:comment "A Windows handle is an abstract reference to a resource within the Windows operating system, such as a window, memory, an open file or a pipe. It is the mechanism by which applications interact with such resources in the Windows operating system."@en ; + sh:targetClass observable:WindowsHandle ; . observable:WindowsHook - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsHook"@en ; rdfs:comment "A Windows hook is a mechanism by which an application can intercept events, such as messages, mouse actions, and keystrokes within the Windows operating system. A function that intercepts a particular type of event is known as a hook procedure. A hook procedure can act on each event it receives, and then modify or discard the event. [based on https://docs.microsoft.com/en-us/windows/win32/winmsg/about-hooks]"@en ; + sh:targetClass observable:WindowsHook ; . observable:WindowsMailslot - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsMailslot"@en ; rdfs:comment "A Windows mailslot is is a pseudofile that resides in memory, and may be accessed using standard file functions. The data in a mailslot message can be in any form, but cannot be larger than 424 bytes when sent between computers. Unlike disk files, mailslots are temporary. When all handles to a mailslot are closed, the mailslot and all the data it contains are deleted. [based on https://docs.microsoft.com/en-us/windows/win32/ipc/about-mailslots]"@en ; + sh:targetClass observable:WindowsMailslot ; . observable:WindowsNetworkShare - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsNetworkShare"@en ; rdfs:comment "A Windows network share is a Windows computer resource made available from one host to other hosts on a computer network. It is a device or piece of information on a computer that can be remotely accessed from another computer transparently as if it were a resource in the local machine. Network sharing is made possible by inter-process communication over the network. [based on https://en.wikipedia.org/wiki/Shared_resource]"@en ; + sh:targetClass observable:WindowsNetworkShare ; . observable:WindowsPEBinaryFile - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:File ; rdfs:label "WindowsPEBinaryFile"@en ; rdfs:comment "A Windows PE binary file is a Windows portable executable (PE) file."@en ; + sh:targetClass observable:WindowsPEBinaryFile ; . observable:WindowsPEBinaryFileFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "WindowsPEBinaryFileFacet"@en ; + rdfs:comment "A Windows PE binary file facet is a grouping of characteristics unique to a Windows portable executable (PE) file."@en ; + sh:property + [ + sh:class observable:WindowsPEOptionalHeader ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:optionalHeader ; + ] , + [ + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:numberOfSections ; + ] , + [ + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:numberOfSymbols ; + ] , + [ + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:sizeOfOptionalHeader ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:impHash ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:peType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:peType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:timeDateStamp ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:timeDateStamp ; ] , [ - a owl:Restriction ; - owl:onProperty observable:optionalHeader ; - owl:onClass observable:WindowsPEOptionalHeader ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:characteristics ; ] , [ - a owl:Restriction ; - owl:onProperty observable:numberOfSections ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:path observable:fileHeaderHashes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:numberOfSymbols ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:path observable:machine ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sizeOfOptionalHeader ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:path observable:pointerToSymbolTable ; ] , [ - a owl:Restriction ; - owl:onProperty observable:impHash ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:sections ; ] ; - rdfs:label "WindowsPEBinaryFileFacet"@en ; - rdfs:comment "A Windows PE binary file facet is a grouping of characteristics unique to a Windows portable executable (PE) file."@en ; + sh:targetClass observable:WindowsPEBinaryFileFacet ; . observable:WindowsPEBinaryType @@ -5460,288 +6136,419 @@ observable:WindowsPEBinaryType . observable:WindowsPEFileHeader - a owl:Class ; - rdfs:subClassOf [ - a owl:Restriction ; - owl:onProperty observable:timeDateStamp ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; - ] ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "WindowsPEFileHeader"@en ; rdfs:comment "A Windows PE file header is a grouping of characteristics unique to the 'header' of a Windows PE (Portable Executable) file, consisting of a collection of metadata about the overall nature and structure of the file."@en ; + sh:property [ + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:timeDateStamp ; + ] ; + sh:targetClass observable:WindowsPEFileHeader ; . observable:WindowsPEOptionalHeader - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "WindowsPEOptionalHeader"@en ; rdfs:comment "A Windows PE optional header is a grouping of characteristics unique to the 'optional header' of a Windows PE (Portable Executable) file, consisting of a collection of metadata about the executable code structure of the file."@en ; + sh:property + [ + sh:path observable:addressOfEntryPoint ; + ] , + [ + sh:path observable:baseOfCode ; + ] , + [ + sh:path observable:checksum ; + ] , + [ + sh:path observable:dllCharacteristics ; + ] , + [ + sh:path observable:fileAlignment ; + ] , + [ + sh:path observable:imageBase ; + ] , + [ + sh:path observable:loaderFlags ; + ] , + [ + sh:path observable:magic ; + ] , + [ + sh:path observable:majorImageVersion ; + ] , + [ + sh:path observable:majorLinkerVersion ; + ] , + [ + sh:path observable:majorOSVersion ; + ] , + [ + sh:path observable:majorSubsystemVersion ; + ] , + [ + sh:path observable:minorImageVersion ; + ] , + [ + sh:path observable:minorLinkerVersion ; + ] , + [ + sh:path observable:minorOSVersion ; + ] , + [ + sh:path observable:minorSubsystemVersion ; + ] , + [ + sh:path observable:numberOfRVAAndSizes ; + ] , + [ + sh:path observable:sectionAlignment ; + ] , + [ + sh:path observable:sizeOfCode ; + ] , + [ + sh:path observable:sizeOfHeaders ; + ] , + [ + sh:path observable:sizeOfHeapCommit ; + ] , + [ + sh:path observable:sizeOfHeapReserve ; + ] , + [ + sh:path observable:sizeOfImage ; + ] , + [ + sh:path observable:sizeOfInitializedData ; + ] , + [ + sh:path observable:sizeOfStackCommit ; + ] , + [ + sh:path observable:sizeOfStackReserve ; + ] , + [ + sh:path observable:sizeOfUninitializedData ; + ] , + [ + sh:path observable:subsystem ; + ] , + [ + sh:path observable:win32VersionValue ; + ] + ; + sh:targetClass observable:WindowsPEOptionalHeader ; . observable:WindowsPESection - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "WindowsPESection"@en ; + rdfs:comment "A Windows PE section is a grouping of characteristics unique to a specific default or custom-defined region of a Windows PE (Portable Executable) file, consisting of an individual portion of the actual executable content of the file delineated according to unique purpose and memory protection requirements."@en ; + sh:property + [ + sh:datatype xsd:float ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:entropy ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:entropy ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:float ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:size ; ] , [ - a owl:Restriction ; - owl:onProperty observable:size ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:name ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:hashes ; ] ; - rdfs:label "WindowsPESection"@en ; - rdfs:comment "A Windows PE section is a grouping of characteristics unique to a specific default or custom-defined region of a Windows PE (Portable Executable) file, consisting of an individual portion of the actual executable content of the file delineated according to unique purpose and memory protection requirements."@en ; + sh:targetClass observable:WindowsPESection ; . observable:WindowsPrefetch - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsPrefetch"@en ; rdfs:comment "The Windows prefetch contains entries in a Windows prefetch file (used to speed up application startup starting with Windows XP)."@en ; + sh:targetClass observable:WindowsPrefetch ; . observable:WindowsPrefetchFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "WindowsPrefetchFacet"@en ; + rdfs:comment "A Windows prefetch facet is a grouping of characteristics unique to entries in the Windows prefetch file (used to speed up application startup starting with Windows XP)."@en ; + sh:property + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:volume ; + ] , + [ + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:timesExecuted ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:firstRun ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:applicationFileName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastRun ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:prefetchHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:volume ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:firstRun ; ] , [ - a owl:Restriction ; - owl:onProperty observable:timesExecuted ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:lastRun ; ] , [ - a owl:Restriction ; - owl:onProperty observable:applicationFileName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:accessedDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:prefetchHash ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:accessedFile ; ] ; - rdfs:label "WindowsPrefetchFacet"@en ; - rdfs:comment "A Windows prefetch facet is a grouping of characteristics unique to entries in the Windows prefetch file (used to speed up application startup starting with Windows XP)."@en ; + sh:targetClass observable:WindowsPrefetchFacet ; . observable:WindowsProcess - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Process ; rdfs:label "WindowsProcess"@en ; rdfs:comment "A Windows process is a program running on a Windows operating system."@en ; + sh:targetClass observable:WindowsProcess ; . observable:WindowsProcessFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "WindowsProcessFacet"@en ; + rdfs:comment "A Windows process facet is a grouping of characteristics unique to a program running on a Windows operating system."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:startupInfo ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:aslrEnabled ; ] , [ - a owl:Restriction ; - owl:onProperty observable:aslrEnabled ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:depEnabled ; ] , [ - a owl:Restriction ; - owl:onProperty observable:depEnabled ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:ownerSID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ownerSID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:priority ; ] , [ - a owl:Restriction ; - owl:onProperty observable:priority ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:windowTitle ; ] , [ - a owl:Restriction ; - owl:onProperty observable:windowTitle ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:startupInfo ; ] ; - rdfs:label "WindowsProcessFacet"@en ; - rdfs:comment "A Windows process facet is a grouping of characteristics unique to a program running on a Windows operating system."@en ; + sh:targetClass observable:WindowsProcessFacet ; . observable:WindowsRegistryHive - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsRegistryHive"@en ; rdfs:comment "The Windows registry hive is a particular logical group of keys, subkeys, and values in a Windows registry (a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry). [based on https://en.wikipedia.org/wiki/Windows_Registry]"@en ; + sh:targetClass observable:WindowsRegistryHive ; . observable:WindowsRegistryHiveFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty observable:hiveType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "WindowsRegistryHiveFacet"@en ; rdfs:comment "A Windows registry hive facet is a grouping of characteristics unique to a particular logical group of keys, subkeys, and values in a Windows registry (a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry). [based on https://en.wikipedia.org/wiki/Windows_Registry]"@en ; + sh:property [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:hiveType ; + ] ; + sh:targetClass observable:WindowsRegistryHiveFacet ; . observable:WindowsRegistryKey - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsRegistryKey"@en ; rdfs:comment "A Windows registry key is a particular key within a Windows registry (a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry). [based on https://en.wikipedia.org/wiki/Windows_Registry]"@en ; + sh:targetClass observable:WindowsRegistryKey ; . observable:WindowsRegistryKeyFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "WindowsRegistryKeyFacet"@en ; + rdfs:comment "A Windows registry key facet is a grouping of characteristics unique to a particular key within a Windows registry (A hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry). [based on https://en.wikipedia.org/wiki/Windows_Registry]"@en ; + sh:property + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:creator ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:numberOfSubkeys ; ] , [ - a owl:Restriction ; - owl:onProperty observable:creator ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:key ; ] , [ - a owl:Restriction ; - owl:onProperty observable:numberOfSubkeys ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:key ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:registryValues ; ] ; - rdfs:label "WindowsRegistryKeyFacet"@en ; - rdfs:comment "A Windows registry key facet is a grouping of characteristics unique to a particular key within a Windows registry (A hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry). [based on https://en.wikipedia.org/wiki/Windows_Registry]"@en ; + sh:targetClass observable:WindowsRegistryKeyFacet ; . observable:WindowsRegistryValue - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "WindowsRegistryValue"@en ; + rdfs:comment "A Windows registry value is a grouping of characteristics unique to a particular value within a Windows registry (a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry. [based on https://en.wikipedia.org/wiki/Windows_Registry]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:dataType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path core:name ; ] , [ - a owl:Restriction ; - owl:onProperty observable:data ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:data ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:dataType ; ] ; - rdfs:label "WindowsRegistryValue"@en ; - rdfs:comment "A Windows registry value is a grouping of characteristics unique to a particular value within a Windows registry (a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry. [based on https://en.wikipedia.org/wiki/Windows_Registry]"@en ; + sh:targetClass observable:WindowsRegistryValue ; . observable:WindowsService - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsService"@en ; rdfs:comment "A Windows service is a specific Windows service (a computer program that operates in the background of a Windows operating system, similar to the way a UNIX daemon runs on UNIX). [based on https://en.wikipedia.org/wiki/Windows_service]"@en ; + sh:targetClass observable:WindowsService ; . observable:WindowsServiceFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "WindowsServiceFacet"@en ; + rdfs:comment "A Windows service facet is a grouping of characteristics unique to a specific Windows service (a computer program that operates in the background of a Windows operating system, similar to the way a UNIX daemon runs on UNIX). [based on https://en.wikipedia.org/wiki/Windows_service]"@en ; + sh:property + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:serviceName ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:serviceStatus ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:displayName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serviceType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:groupName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:startCommandLine ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:serviceStatus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:groupName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:serviceType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startCommandLine ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:startType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serviceName ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:descriptions ; ] ; - rdfs:label "WindowsServiceFacet"@en ; - rdfs:comment "A Windows service facet is a grouping of characteristics unique to a specific Windows service (a computer program that operates in the background of a Windows operating system, similar to the way a UNIX daemon runs on UNIX). [based on https://en.wikipedia.org/wiki/Windows_service]"@en ; + sh:targetClass observable:WindowsServiceFacet ; . observable:WindowsServiceStartType @@ -5833,448 +6640,465 @@ observable:WindowsServiceType . observable:WindowsSystemRestore - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsSystemRestore"@en ; rdfs:comment "A Windows system restore is a capture of a Windows computer's state (including system files, installed applications, Windows Registry, and system settings) at a particular point in time such that the computer can be reverted to that state in the event of system malfunctions or other problems. [based on https://en.wikipedia.org/wiki/System_Restore]"@en ; + sh:targetClass observable:WindowsSystemRestore ; . observable:WindowsTask - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsTask"@en ; rdfs:comment "A Windows task is 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:targetClass observable:WindowsTask ; . observable:WindowsTaskFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:account ; + ] , + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:application ; + ] , + [ + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:workItemData ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:mostRecentRunTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:workingDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:nextRunTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:exitCode ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:maxRunTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:account ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:accountLogonType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:accountRunLevel ; ] , [ - a owl:Restriction ; - owl:onProperty observable:workItemData ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:imageName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:workingDirectory ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:parameters ; ] , [ - a owl:Restriction ; - owl:onProperty observable:exitCode ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:taskComment ; ] , [ - a owl:Restriction ; - owl:onProperty observable:maxRunTime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:taskCreator ; ] , [ - a owl:Restriction ; - owl:onProperty observable:accountLogonType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype vocabulary:TaskPriorityVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:priority ; ] , [ - a owl:Restriction ; - owl:onProperty observable:accountRunLevel ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype vocabulary:TaskStatusVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:status ; ] , [ - a owl:Restriction ; - owl:onProperty observable:imageName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:mostRecentRunTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:parameters ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:nextRunTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:taskComment ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:taskCreator ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:actionList ; ] , [ - a owl:Restriction ; - owl:onProperty observable:priority ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:TaskPriorityVocab ; + sh:path observable:flags ; ] , [ - a owl:Restriction ; - owl:onProperty observable:status ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:TaskStatusVocab ; + sh:path observable:triggerList ; ] ; - 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:targetClass observable:WindowsTaskFacet ; . observable:WindowsThread - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:Thread ; rdfs:label "WindowsThread"@en ; rdfs:comment "A Windows thread is a single thread of execution within a Windows process."@en ; + sh:targetClass observable:WindowsThread ; . observable:WindowsThreadFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "WindowsThreadFacet"@en ; + rdfs:comment "A Windows thread facet is a grouping os characteristics unique to a single thread of execution within a Windows process."@en ; + sh:property + [ + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:priority ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:context ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:securityAttributes ; + ] , + [ + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:creationTime ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:creationTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:runningStatus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:runningStatus ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:path observable:creationFlags ; ] , [ - a owl:Restriction ; - owl:onProperty observable:priority ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:path observable:parameterAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:context ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:stackSize ; ] , [ - a owl:Restriction ; - owl:onProperty observable:securityAttributes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path observable:startAddress ; + ] , + [ + sh:path observable:threadID ; ] ; - rdfs:label "WindowsThreadFacet"@en ; - rdfs:comment "A Windows thread facet is a grouping os characteristics unique to a single thread of execution within a Windows process."@en ; + sh:targetClass observable:WindowsThreadFacet ; . observable:WindowsVolumeFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:driveLetter ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:driveLetter ; ] , [ - a owl:Restriction ; - owl:onProperty observable:driveType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:WindowsDriveTypeVocab ; + sh:datatype vocabulary:WindowsDriveTypeVocab ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:driveType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:windowsVolumeAttributes ; - owl:maxQualifiedCardinality "4"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:WindowsVolumeAttributeVocab ; + sh:datatype vocabulary:WindowsVolumeAttributeVocab ; + sh:maxCount "4"^^xsd:nonNegativeInteger ; + sh:path observable:windowsVolumeAttributes ; ] ; - 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:targetClass observable:WindowsVolumeFacet ; . observable:WindowsWaitableTime - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "WindowsWaitableTime"@en ; rdfs:comment "A Windows waitable timer is a synchronization object within the Windows operating system whose state is set to signaled when a specified due time arrives. There are two types of waitable timers that can be created: manual-reset and synchronization. A timer of either type can also be a periodic timer. [based on https://docs.microsoft.com/en-us/windows/win32/sync/waitable-timer-objects]"@en ; + sh:targetClass observable:WindowsWaitableTime ; . observable:WirelessNetworkConnection - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:NetworkConnection ; rdfs:label "WirelessNetworkConnection"@en ; rdfs:comment "A wireless network connection is a connection (completed or attempted) across an IEEE 802.11 standards-confromant digital network (a group of two or more computer systems linked together). [based on https://www.webopedia.com/TERM/N/network.html]"@en ; + sh:targetClass observable:WirelessNetworkConnection ; . observable:WirelessNetworkConnectionFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:baseStation ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:baseStation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ssid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:ssid ; ] ; - 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:targetClass observable:WirelessNetworkConnectionFacet ; . observable:X509Certificate - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "X509Certificate"@en ; rdfs:comment "A X.509 certificate is a public key digital identity certificate conformant to the X.509 PKI (Public Key Infrastructure) standard."@en ; + sh:targetClass observable:X509Certificate ; . observable:X509CertificateFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "X509CertificateFacet"@en ; + rdfs:comment "A X.509 certificate facet is a grouping of characteristics unique to a public key digital identity certificate conformant to the X.509 PKI (Public Key Infrastructure) standard. "@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:issuerHash ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:X509V3ExtensionsFacet ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:x509v3extensions ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectHash ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:isSelfSigned ; ] , [ - a owl:Restriction ; - owl:onProperty observable:thumbprintHash ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subjectPublicKeyExponent ; ] , [ - a owl:Restriction ; - owl:onProperty observable:validityNotAfter ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:issuer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:validityNotBefore ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:serialNumber ; ] , [ - a owl:Restriction ; - owl:onProperty observable:x509v3extensions ; - owl:onClass observable:X509V3ExtensionsFacet ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:signature ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isSelfSigned ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:signatureAlgorithm ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectPublicKeyExponent ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subject ; ] , [ - a owl:Restriction ; - owl:onProperty observable:issuer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subjectPublicKeyAlgorithm ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serialNumber ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subjectPublicKeyModulus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signature ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:version ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signatureAlgorithm ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:issuerHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subjectHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectPublicKeyAlgorithm ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:thumbprintHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectPublicKeyModulus ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:validityNotAfter ; ] , [ - a owl:Restriction ; - owl:onProperty observable:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:validityNotBefore ; ] ; - rdfs:label "X509CertificateFacet"@en ; - rdfs:comment "A X.509 certificate facet is a grouping of characteristics unique to a public key digital identity certificate conformant to the X.509 PKI (Public Key Infrastructure) standard. "@en ; + sh:targetClass observable:X509CertificateFacet ; . observable:X509V3Certificate - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf observable:ObservableObject ; rdfs:label "X509V3Certificate"@en ; rdfs:comment "An X.509 v3 certificate is a public key digital identity certificate conformant to the X.509 v3 PKI (Public Key Infrastructure) standard. "@en ; + sh:targetClass observable:X509V3Certificate ; . observable:X509V3ExtensionsFacet - a owl:Class ; - rdfs:subClassOf - , + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; + rdfs:label "X509V3ExtensionsFacet"@en ; + rdfs:comment "An X.509 v3 certificate extensions facet is a grouping of characteristics unique to a public key digital identity certificate conformant to the X.509 v3 PKI (Public Key Infrastructure) standard."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty observable:privateKeyUsagePeriodNotAfter ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:authorityKeyIdentifier ; ] , [ - a owl:Restriction ; - owl:onProperty observable:privateKeyUsagePeriodNotBefore ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:basicConstraints ; ] , [ - a owl:Restriction ; - owl:onProperty observable:authorityKeyIdentifier ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:certificatePolicies ; ] , [ - a owl:Restriction ; - owl:onProperty observable:basicConstraints ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:crlDistributionPoints ; ] , [ - a owl:Restriction ; - owl:onProperty observable:certificatePolicies ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:extendedKeyUsage ; ] , [ - a owl:Restriction ; - owl:onProperty observable:crlDistributionPoints ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:inhibitAnyPolicy ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extendedKeyUsage ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:issuerAlternativeName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:inhibitAnyPolicy ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:keyUsage ; ] , [ - a owl:Restriction ; - owl:onProperty observable:issuerAlternativeName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:nameConstraints ; ] , [ - a owl:Restriction ; - owl:onProperty observable:keyUsage ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:policyConstraints ; ] , [ - a owl:Restriction ; - owl:onProperty observable:nameConstraints ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:policyMappings ; ] , [ - a owl:Restriction ; - owl:onProperty observable:policyConstraints ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subjectAlternativeName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:policyMappings ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subjectDirectoryAttributes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectAlternativeName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:subjectKeyIdentifier ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectDirectoryAttributes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:privateKeyUsagePeriodNotAfter ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectKeyIdentifier ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path observable:privateKeyUsagePeriodNotBefore ; ] ; - rdfs:label "X509V3ExtensionsFacet"@en ; - rdfs:comment "An X.509 v3 certificate extensions facet is a grouping of characteristics unique to a public key digital identity certificate conformant to the X.509 v3 PKI (Public Key Infrastructure) standard."@en ; + sh:targetClass observable:X509V3ExtensionsFacet ; . observable:abbreviation @@ -6323,7 +7147,7 @@ observable:accountIssuer a owl:ObjectProperty ; rdfs:label "accountIssuer"@en ; rdfs:comment "The issuer of this account."@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . observable:accountLogin @@ -6696,13 +7520,13 @@ observable:certificatePolicies observable:certificateSubject a owl:ObjectProperty ; rdfs:label "certificateSubject"@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . observable:characteristics a owl:DatatypeProperty ; rdfs:label "characteristics"@en ; - rdfs:comment "Specifies the flags that indicate the file’s characteristics."@en ; + rdfs:comment "Specifies the flags that indicate the file’s characteristics."@en ; rdfs:range xsd:unsignedShort ; . @@ -7206,7 +8030,7 @@ observable:dnssec observable:documentInformationDictionary a owl:ObjectProperty ; rdfs:label "documentInformationDictionary"@en ; - rdfs:range ; + rdfs:range types:ControlledDictionary ; . observable:domain @@ -7372,7 +8196,7 @@ observable:environmentVariables a owl:ObjectProperty ; rdfs:label "environmentVariables"@en ; rdfs:comment "A list of environment variables associated with the process. "@en ; - rdfs:range ; + rdfs:range types:Dictionary ; . observable:eventID @@ -7414,7 +8238,7 @@ observable:execProgramHashes a owl:ObjectProperty ; rdfs:label "execProgramHashes"@en ; rdfs:comment "Specifies the hashes of the executable file launched by the action."@en ; - rdfs:range ; + rdfs:range types:Hash ; . observable:execProgramPath @@ -7434,7 +8258,7 @@ observable:execWorkingDirectory observable:exifData a owl:ObjectProperty ; rdfs:label "exifData"@en ; - rdfs:range ; + rdfs:range types:ControlledDictionary ; . observable:exitCode @@ -7566,7 +8390,7 @@ observable:fileHeaderHashes a owl:ObjectProperty ; rdfs:label "fileHeaderHashes"@en ; rdfs:comment "Specifies any hashes that were computed for the file header."@en ; - rdfs:range ; + rdfs:range types:Hash ; . observable:fileName @@ -7697,7 +8521,7 @@ observable:geolocationAddress a owl:ObjectProperty ; rdfs:label "geolocationAddress"@en ; rdfs:comment "An administrative address for a particular geolocation."@en ; - rdfs:range ; + rdfs:range location:Location ; . observable:gid @@ -7749,14 +8573,14 @@ observable:hash a owl:ObjectProperty ; rdfs:label "hash"@en ; rdfs:comment "Hash values of the data."@en ; - rdfs:range ; + rdfs:range types:Hash ; . observable:hashes a owl:ObjectProperty ; rdfs:label "hashes"@en ; rdfs:comment "Specifies any hashes computed over the section."@en ; - rdfs:range ; + rdfs:range types:Hash ; . observable:headerRaw @@ -7817,7 +8641,7 @@ observable:httpRequestHeader a owl:ObjectProperty ; rdfs:label "httpRequestHeader"@en ; rdfs:comment "Specifies all of the HTTP header fields that may be found in the HTTP client request"@en ; - rdfs:range ; + rdfs:range types:Dictionary ; . observable:iComHandlerAction @@ -7892,7 +8716,7 @@ observable:imageType observable:impHash a owl:DatatypeProperty ; rdfs:label "impHash"@en ; - rdfs:comment "Specifies the special import hash, or ‘imphash’, calculated for the PE Binary based on its imported libraries and functions. "@en ; + rdfs:comment "Specifies the special import hash, or ‘imphash’, calculated for the PE Binary based on its imported libraries and functions. "@en ; rdfs:range xsd:string ; . @@ -7948,7 +8772,7 @@ observable:ipfix a owl:ObjectProperty ; rdfs:label "ipfix"@en ; rdfs:comment "Specifies any IP Flow Information Export (IPFIX) data for the network traffic flow."@en ; - rdfs:range ; + rdfs:range types:Dictionary ; . observable:isActive @@ -8105,7 +8929,7 @@ observable:issuerHash a owl:ObjectProperty ; rdfs:label "issuerHash"@en ; rdfs:comment "A hash calculated on the certificate issuer name."@en ; - rdfs:range ; + rdfs:range types:Hash ; . observable:key @@ -8215,7 +9039,7 @@ observable:location a owl:ObjectProperty ; rdfs:label "location"@en ; rdfs:comment "An associated location."@en ; - rdfs:range ; + rdfs:range location:Location ; . observable:loginTime @@ -8729,7 +9553,7 @@ observable:organizationPosition observable:otherHeaders a owl:ObjectProperty ; rdfs:label "otherHeaders"@en ; - rdfs:range ; + rdfs:range types:Dictionary ; . observable:owner @@ -8737,7 +9561,7 @@ observable:owner rdfs:label "owner"@en ; rdfs:comment "Specifies the owner of an Observable Object."@en ; rdfs:range - , + core:UcoObject , observable:ObservableObject ; . @@ -8974,7 +9798,7 @@ observable:profileBackgroundHash a owl:ObjectProperty ; rdfs:label "Profile Background Hash"@en-US ; rdfs:comment "Specifies hashes of the background associated with the profile."@en-US ; - rdfs:range ; + rdfs:range types:Hash ; . observable:profileBackgroundLocation @@ -8988,7 +9812,7 @@ observable:profileBannerHash a owl:ObjectProperty ; rdfs:label "Profile Banner Hash"@en-US ; rdfs:comment "Specifies hashes of the banner associated with the profile."@en-US ; - rdfs:range ; + rdfs:range types:Hash ; . observable:profileBannerLocation @@ -9016,7 +9840,7 @@ observable:profileImageHash a owl:ObjectProperty ; rdfs:label "Profile Image Hash"@en-US ; rdfs:comment "Specifies hashes of the profile image associated with the profile."@en-US ; - rdfs:range ; + rdfs:range types:Hash ; . observable:profileImageLocation @@ -9079,7 +9903,7 @@ observable:protocols a owl:ObjectProperty ; rdfs:label "protocols"@en ; rdfs:comment "Specifies the protocols involved in the network connection, along with their corresponding state. "@en ; - rdfs:range ; + rdfs:range types:ControlledDictionary ; . observable:query @@ -9583,7 +10407,7 @@ observable:src a owl:ObjectProperty ; rdfs:label "src"@en ; rdfs:comment "Specifies the source(s) of the network connection."@en ; - rdfs:range ; + rdfs:range core:UcoObject ; . observable:srcBytes @@ -9644,7 +10468,7 @@ observable:startType observable:startupInfo a owl:ObjectProperty ; rdfs:label "startupInfo"@en ; - rdfs:range ; + rdfs:range types:Dictionary ; . observable:state @@ -9710,7 +10534,7 @@ observable:subjectHash a owl:ObjectProperty ; rdfs:label "subjectHash"@en ; rdfs:comment "A hash calculated on the certificate subject name."@en ; - rdfs:range ; + rdfs:range types:Hash ; . observable:subjectKeyIdentifier @@ -9807,7 +10631,7 @@ observable:thumbprintHash a owl:ObjectProperty ; rdfs:label "thumbprintHash"@en ; rdfs:comment "A hash calculated on the entire certificate including signature."@en ; - rdfs:range ; + rdfs:range types:Hash ; . observable:timeDateStamp diff --git a/uco-pattern/pattern-da.ttl b/uco-pattern/pattern-da.ttl deleted file mode 100644 index 6b76a2b1..00000000 --- a/uco-pattern/pattern-da.ttl +++ /dev/null @@ -1,18 +0,0 @@ -# baseURI: https://unifiedcyberontology.org/ontology/uco/pattern-da - -@base . -@prefix owl: . -@prefix pattern: . -@prefix rdf: . -@prefix rdfs: . -@prefix xsd: . - - - a owl:Ontology ; - rdfs:label "pattern domain assertions"@en ; - . - -pattern:patternExpression - rdfs:domain pattern:LogicalPattern ; - . - diff --git a/uco-pattern/pattern.ttl b/uco-pattern/pattern.ttl index ef9b4f58..96e6ca10 100644 --- a/uco-pattern/pattern.ttl +++ b/uco-pattern/pattern.ttl @@ -2,11 +2,13 @@ # imports: https://unifiedcyberontology.org/ontology/uco/core @base . +@prefix core: . @prefix owl: . @prefix pattern: . @prefix rdf: . @prefix rdfs: . -@prefix xsd: . +@prefix sh: . +@prefix xs: . a owl:Ontology ; @@ -15,31 +17,40 @@ . pattern:LogicalPattern - a owl:Class ; - rdfs:subClassOf - pattern:Pattern , - [ - a owl:Restriction ; - owl:onProperty pattern:patternExpression ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange pattern:PatternExpression ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf pattern:Pattern ; rdfs:label "LogicalPattern"@en ; rdfs:comment "A logical pattern is a grouping of characteristics unique to an informational pattern expressed via a structured pattern expression following the rules of logic."@en ; + sh:property [ + sh:datatype pattern:PatternExpression ; + sh:maxCount "1"^^xs:nonNegativeInteger ; + sh:path pattern:patternExpression ; + ] ; + sh:targetClass pattern:LogicalPattern ; . pattern:Pattern - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:UcoObject ; rdfs:label "Pattern"@en ; rdfs:comment "A pattern is a combination of properties, acts, tendencies, etc., forming a consistent or characteristic arrangement."@en ; + sh:targetClass pattern:Pattern ; . pattern:PatternExpression - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "PatternExpression"@en ; rdfs:comment "A pattern expression is a grouping of characteristics unique to an explicit logical expression defining a pattern (e.g., regular expression, SQL Select expression, etc.)."@en ; + sh:targetClass pattern:PatternExpression ; . pattern:patternExpression diff --git a/uco-role/role.ttl b/uco-role/role.ttl index 7144a20e..b9db2738 100644 --- a/uco-role/role.ttl +++ b/uco-role/role.ttl @@ -2,10 +2,12 @@ # imports: https://unifiedcyberontology.org/ontology/uco/core @base . +@prefix core: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @prefix role: . +@prefix sh: . @prefix xs: . @@ -15,30 +17,46 @@ . role:BenevolentRole - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf role:Role ; rdfs:label "BenevolentRole"@en ; rdfs:comment "A benevolent role is a role with positive and/or beneficial intent."@en ; + sh:targetClass role:BenevolentRole ; . role:MaliciousRole - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf role:Role ; rdfs:label "MaliciousRole"@en ; rdfs:comment "A malicious role is a role with malevolent intent."@en ; + sh:targetClass role:MaliciousRole ; . role:NeutralRole - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf role:Role ; rdfs:label "NeutralRole"@en ; rdfs:comment "A neutral role is a role with impartial intent."@en ; + sh:targetClass role:NeutralRole ; . role:Role - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:UcoObject ; rdfs:label "Role"@en ; rdfs:comment "A role is a usual or customary function based on contextual perspective."@en ; + sh:targetClass role:Role ; . diff --git a/uco-time/time.ttl b/uco-time/time.ttl index 2bf62d8f..428b3a9d 100644 --- a/uco-time/time.ttl +++ b/uco-time/time.ttl @@ -5,8 +5,9 @@ @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . @prefix time: . -@prefix xsd: . +@prefix xs: . a owl:Ontology ; diff --git a/uco-tool/tool-da.ttl b/uco-tool/tool-da.ttl deleted file mode 100644 index 16c6afe4..00000000 --- a/uco-tool/tool-da.ttl +++ /dev/null @@ -1,146 +0,0 @@ -# baseURI: https://unifiedcyberontology.org/ontology/uco/tool-da - -@base . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix tool: . -@prefix xsd: . - - - a owl:Ontology ; - rdfs:label "tool domain assertions"@en ; - . - -tool:buildConfiguration - rdfs:domain tool:BuildInformationType ; - . - -tool:buildID - rdfs:domain tool:BuildInformationType ; - . - -tool:buildInformation - rdfs:domain tool:BuildFacet ; - . - -tool:buildLabel - rdfs:domain tool:BuildInformationType ; - . - -tool:buildOutputLog - rdfs:domain tool:BuildInformationType ; - . - -tool:buildProject - rdfs:domain tool:BuildInformationType ; - . - -tool:buildScript - rdfs:domain tool:BuildInformationType ; - . - -tool:buildUtility - rdfs:domain tool:BuildInformationType ; - . - -tool:buildUtilityName - rdfs:domain tool:BuildUtilityType ; - . - -tool:buildVersion - rdfs:domain tool:BuildInformationType ; - . - -tool:compilationDate - rdfs:domain tool:BuildInformationType ; - . - -tool:compilerInformalDescription - rdfs:domain tool:CompilerType ; - . - -tool:compilers - rdfs:domain tool:BuildInformationType ; - . - -tool:configurationSettingDescription - rdfs:domain tool:BuildConfigurationType ; - . - -tool:configurationSettings - rdfs:domain tool:BuildConfigurationType ; - . - -tool:cpeid - rdfs:domain tool:CompilerType ; - . - -tool:creator - rdfs:domain tool:Tool ; - . - -tool:dependencies - rdfs:domain tool:ToolConfigurationTypeFacet ; - . - -tool:dependencyDescription - rdfs:domain tool:DependencyType ; - . - -tool:dependencyType - rdfs:domain tool:DependencyType ; - . - -tool:itemDescription - rdfs:domain tool:ConfigurationSettingType ; - . - -tool:itemName - rdfs:domain tool:ConfigurationSettingType ; - . - -tool:itemType - rdfs:domain tool:ConfigurationSettingType ; - . - -tool:itemValue - rdfs:domain tool:ConfigurationSettingType ; - . - -tool:libraries - rdfs:domain tool:BuildInformationType ; - . - -tool:libraryName - rdfs:domain tool:LibraryType ; - . - -tool:libraryVersion - rdfs:domain tool:LibraryType ; - . - -tool:references - rdfs:domain tool:Tool ; - . - -tool:servicePack - rdfs:domain tool:Tool ; - . - -tool:swid - rdfs:domain tool:CompilerType ; - . - -tool:toolType - rdfs:domain tool:Tool ; - . - -tool:usageContextAssumptions - rdfs:domain tool:ToolConfigurationTypeFacet ; - . - -tool:version - rdfs:domain tool:Tool ; - . - diff --git a/uco-tool/tool.ttl b/uco-tool/tool.ttl index 84153e11..5914c575 100644 --- a/uco-tool/tool.ttl +++ b/uco-tool/tool.ttl @@ -2,9 +2,11 @@ # imports: https://unifiedcyberontology.org/ontology/uco/core @base . +@prefix core: . @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . @prefix tool: . @prefix xsd: . @@ -15,274 +17,323 @@ . tool:AnalyticTool - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf tool:Tool ; rdfs:label "AnalyticTool"@en ; rdfs:comment "An analytic tool is an artifact of hardware and/or software utilized to accomplish a task or purpose of explanation, interpretation or logical reasoning."@en ; + sh:targetClass tool:AnalyticTool ; . tool:BuildConfigurationType - a owl:Class ; - rdfs:subClassOf [ - a owl:Restriction ; - owl:onProperty tool:configurationSettingDescription ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; - ] ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "BuildConfigurationType"@en ; rdfs:comment "A build configuration type is a characterization of how a particular version of software can or should be built."@en ; + sh:property + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:configurationSettingDescription ; + ] , + [ + sh:path tool:configurationSettings ; + ] + ; + sh:targetClass tool:BuildConfigurationType ; . tool:BuildFacet - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty tool:buildInformation ; - owl:onClass tool:BuildInformationType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] + a + owl:Class , + sh:NodeShape ; + rdfs:subClassOf core:Facet ; rdfs:label "BuildFacet"@en ; rdfs:comment "A build facet is a grouping of characteristics unique to a particular version of a software."@en ; + sh:property [ + sh:class tool:BuildInformationType ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildInformation ; + ] ; + sh:targetClass tool:BuildFacet ; . tool:BuildInformationType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "BuildInformationType"@en ; + rdfs:comment "A build information type is a grouping of characteristics that describe how a particular version of software was converted from source code to executable code."@en ; + sh:property + [ + sh:class tool:BuildConfigurationType ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildConfiguration ; + ] , [ - a owl:Restriction ; - owl:onProperty tool:compilationDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class tool:BuildUtilityType ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildUtility ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildConfiguration ; - owl:onClass tool:BuildConfigurationType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildID ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildUtility ; - owl:onClass tool:BuildUtilityType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildLabel ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildOutputLog ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildLabel ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildProject ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildOutputLog ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildScript ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildProject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildVersion ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildScript ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:compilationDate ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildVersion ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path tool:compilers ; + ] , + [ + sh:path tool:libraries ; ] ; - rdfs:label "BuildInformationType"@en ; - rdfs:comment "A build information type is a grouping of characteristics that describe how a particular version of software was converted from source code to executable code."@en ; + sh:targetClass tool:BuildInformationType ; . tool:BuildUtilityType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "BuildUtilityType"@en ; + rdfs:comment "A build utility type characterizes the tool used to convert from source code to executable code for a particular version of software."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty tool:cpeid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:buildUtilityName ; ] , [ - a owl:Restriction ; - owl:onProperty tool:swid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:cpeid ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildUtilityName ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:swid ; ] ; - rdfs:label "BuildUtilityType"@en ; - rdfs:comment "A build utility type characterizes the tool used to convert from source code to executable code for a particular version of software."@en ; + sh:targetClass tool:BuildUtilityType ; . tool:CompilerType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "CompilerType"@en ; + rdfs:comment "A compiler type is a grouping of characteristics unique to a specific program that translates computer code written in one programming language (the source language) into another language (the target language). Typically a program that translates source code from a high-level programming language to a lower-level language (e.g., assembly language, object code, or machine code) to create an executable program. [based on https://en.wikipedia.org/wiki/Compiler]"@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty tool:compilerInformalDescription ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:cpeid ; ] , [ - a owl:Restriction ; - owl:onProperty tool:cpeid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:swid ; ] , [ - a owl:Restriction ; - owl:onProperty tool:swid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:compilerInformalDescription ; ] ; - rdfs:label "CompilerType"@en ; - rdfs:comment "A compiler type is a grouping of characteristics unique to a specific program that translates computer code written in one programming language (the source language) into another language (the target language). Typically a program that translates source code from a high-level programming language to a lower-level language (e.g., assembly language, object code, or machine code) to create an executable program. [based on https://en.wikipedia.org/wiki/Compiler]"@en ; + sh:targetClass tool:CompilerType ; . tool:ConfigurationSettingType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "ConfigurationSettingType"@en ; + rdfs:comment "A configuration setting type is a grouping of characteristics unique to a particular parameter or initial setting for the use of a tool, application, or other cyber object."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty tool:itemDescription ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:itemName ; ] , [ - a owl:Restriction ; - owl:onProperty tool:itemType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:itemValue ; ] , [ - a owl:Restriction ; - owl:onProperty tool:itemName ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:itemDescription ; ] , [ - a owl:Restriction ; - owl:onProperty tool:itemValue ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:itemType ; ] ; - rdfs:label "ConfigurationSettingType"@en ; - rdfs:comment "A configuration setting type is a grouping of characteristics unique to a particular parameter or initial setting for the use of a tool, application, or other cyber object."@en ; + sh:targetClass tool:ConfigurationSettingType ; . tool:DefensiveTool - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf tool:Tool ; rdfs:label "DefensiveTool"@en ; rdfs:comment "A defensive tool is an artifact of hardware and/or software utilized to accomplish a task or purpose of guarding."@en ; + sh:targetClass tool:DefensiveTool ; . tool:DependencyType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "DependencyType"@en ; + rdfs:comment "A dependency type is a grouping of characteristics unique to something that a tool or other software relies on to function as intended."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty tool:dependencyDescription ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:dependencyType ; ] , [ - a owl:Restriction ; - owl:onProperty tool:dependencyType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:dependencyDescription ; ] ; - rdfs:label "DependencyType"@en ; - rdfs:comment "A dependency type is a grouping of characteristics unique to something that a tool or other software relies on to function as intended."@en ; + sh:targetClass tool:DependencyType ; . tool:LibraryType - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "LibraryType"@en ; + rdfs:comment "A library type is a grouping of characteristics unique to a collection of resources incorporated into the build of a software."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty tool:libraryName ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:libraryName ; ] , [ - a owl:Restriction ; - owl:onProperty tool:libraryVersion ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:libraryVersion ; ] ; - rdfs:label "LibraryType"@en ; - rdfs:comment "A library type is a grouping of characteristics unique to a collection of resources incorporated into the build of a software."@en ; + sh:targetClass tool:LibraryType ; . tool:MaliciousTool - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf tool:Tool ; rdfs:label "MaliciousTool"@en ; rdfs:comment "A malicious tool is an artifact of hardware and/or software utilized to accomplish a malevolent task or purpose."@en ; + sh:targetClass tool:MaliciousTool ; . tool:Tool - a owl:Class ; - rdfs:subClassOf - , - [ - a owl:Restriction ; - owl:onProperty tool:creator ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:UcoObject ; + rdfs:label "Tool"@en ; + rdfs:comment "A tool is an element of hardware and/or software utilized to carry out a particular function."@en ; + sh:property + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:creator ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:servicePack ; ] , [ - a owl:Restriction ; - owl:onProperty tool:servicePack ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:toolType ; ] , [ - a owl:Restriction ; - owl:onProperty tool:toolType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:path tool:version ; ] , [ - a owl:Restriction ; - owl:onProperty tool:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:path tool:references ; ] ; - rdfs:label "Tool"@en ; - rdfs:comment "A tool is an element of hardware and/or software utilized to carry out a particular function."@en ; + sh:targetClass tool:Tool ; . tool:ToolConfigurationTypeFacet - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf core:Facet ; rdfs:label "ToolConfigurationTypeFacet"@en ; rdfs:comment "A tool configuration type facet is a grouping of characteristics unique to the instantial settings and setup of a tool."@en ; + sh:property + [ + sh:path tool:dependencies ; + ] , + [ + sh:path tool:usageContextAssumptions ; + ] + ; + sh:targetClass tool:ToolConfigurationTypeFacet ; . tool:buildConfiguration diff --git a/uco-types/types-da.ttl b/uco-types/types-da.ttl deleted file mode 100644 index ffc34c48..00000000 --- a/uco-types/types-da.ttl +++ /dev/null @@ -1,34 +0,0 @@ -# baseURI: https://unifiedcyberontology.org/ontology/uco/types-da - -@base . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix types: . -@prefix xsd: . - - - a owl:Ontology ; - rdfs:label "types domain assertions"@en ; - . - -types:entry - rdfs:domain types:Dictionary ; - . - -types:hashMethod - rdfs:domain types:Hash ; - . - -types:hashValue - rdfs:domain types:Hash ; - . - -types:key - rdfs:domain types:ControlledDictionaryEntry ; - . - -types:value - rdfs:domain types:ControlledDictionaryEntry ; - . - diff --git a/uco-types/types.ttl b/uco-types/types.ttl index f6f2c70b..62974863 100644 --- a/uco-types/types.ttl +++ b/uco-types/types.ttl @@ -6,6 +6,7 @@ @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . @prefix types: . @prefix vocabulary: . @prefix xsd: . @@ -20,85 +21,103 @@ . types:ControlledDictionary - a owl:Class ; - rdfs:subClassOf [ - a owl:Restriction ; - owl:onProperty types:entry ; - owl:onClass types:ControlledDictionaryEntry ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "ControlledDictionary"@en ; rdfs:comment "A controlled dictionary is a list of (term/key, value) pairs where each term/key exists no more than once and is constrained to an explicitly defined set of values."@en ; + sh:property [ + sh:class types:ControlledDictionaryEntry ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path types:entry ; + ] ; + sh:targetClass types:ControlledDictionary ; . types:ControlledDictionaryEntry - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "ControlledDictionaryEntry"@en ; + rdfs:comment "A controlled dictionary entry is a single (term/key, value) pair where the term/key is constrained to an explicitly defined set of values."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty types:key ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path types:value ; ] , [ - a owl:Restriction ; - owl:onProperty types:value ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path types:key ; ] ; - rdfs:label "ControlledDictionaryEntry"@en ; - rdfs:comment "A controlled dictionary entry is a single (term/key, value) pair where the term/key is constrained to an explicitly defined set of values."@en ; + sh:targetClass types:ControlledDictionaryEntry ; . types:Dictionary - a owl:Class ; - rdfs:subClassOf [ - a owl:Restriction ; - owl:onProperty types:entry ; - owl:onClass types:DictionaryEntry ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - ] ; + a + owl:Class , + sh:NodeShape + ; rdfs:label "Dictionary"@en ; rdfs:comment "A dictionary is list of (term/key, value) pairs with each term/key existing no more than once."@en ; + sh:property [ + sh:class types:DictionaryEntry ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path types:entry ; + ] ; + sh:targetClass types:Dictionary ; . types:DictionaryEntry - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + rdfs:label "DictionaryEntry"@en ; + rdfs:comment "A dictionary entry is a single (term/key, value) pair."@en ; + sh:property [ - a owl:Restriction ; - owl:onProperty types:key ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path types:key ; ] , [ - a owl:Restriction ; - owl:onProperty types:value ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path types:value ; ] ; - rdfs:label "DictionaryEntry"@en ; - rdfs:comment "A dictionary entry is a single (term/key, value) pair."@en ; + sh:targetClass types:DictionaryEntry ; . types:Hash - a owl:Class ; - rdfs:subClassOf + a + owl:Class , + sh:NodeShape + ; + 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 [ - a owl:Restriction ; - owl:onProperty types:hashMethod ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:hexBinary ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path types:hashValue ; ] , [ - a owl:Restriction ; - owl:onProperty types:hashValue ; - owl:onDataRange xsd:hexBinary ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:path types:hashMethod ; ] ; - 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:targetClass types:Hash ; . types:Identifier diff --git a/uco-victim/victim.ttl b/uco-victim/victim.ttl index 37d09d64..ff22890f 100644 --- a/uco-victim/victim.ttl +++ b/uco-victim/victim.ttl @@ -6,6 +6,8 @@ @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix role: . +@prefix sh: . @prefix victim: . @prefix xs: . @@ -19,16 +21,24 @@ . victim:Victim - a owl:Class ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf role:NeutralRole ; rdfs:label "Victim"@en ; rdfs:comment "A victim is a role played by a person or organization that is/was the target of some malicious action."@en ; + sh:targetClass victim:Victim ; . victim:VictimTargeting - a owl:Class ; + a + owl:Class , + sh:NodeShape + ; rdfs:subClassOf victim:Victim ; rdfs:label "VictimTargeting"@en ; rdfs:comment "A victim targeting is a grouping of characteristics unique to people or organizations that are the target of some malicious activity."@en ; + sh:targetClass victim:VictimTargeting ; . diff --git a/uco-vocabulary/vocabulary.ttl b/uco-vocabulary/vocabulary.ttl index 83f6e472..fc149530 100644 --- a/uco-vocabulary/vocabulary.ttl +++ b/uco-vocabulary/vocabulary.ttl @@ -4,8 +4,9 @@ @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . @prefix vocabulary: . -@prefix xsd: . +@prefix xs: . a owl:Ontology ; From 7e0c1a46ac8f7c1a299fe4792ba719a55a2e80c7 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 28 Jun 2021 16:14:13 -0400 Subject: [PATCH 46/94] Use Python venv to build virtual environment for CI References: * [CASE AC-195] Use Python venv instead of virtualenv to build virtual environments for CI * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- .github/workflows/ci.yml | 4 ---- tests/Makefile | 3 +-- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 424d4025..91599093 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,10 +31,6 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - - name: Install Python virtualenv for Github runner - run: | - python -m pip install --upgrade pip - pip install virtualenv - name: Start from clean state run: make clean - name: Run tests diff --git a/tests/Makefile b/tests/Makefile index d961742a..a2272090 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -24,8 +24,7 @@ all: .venv.done.log: \ requirements.txt rm -rf venv - $(PYTHON3) -m virtualenv \ - --python=$(PYTHON3) \ + $(PYTHON3) -m venv \ venv source venv/bin/activate \ && pip install \ From fceec579bf462d8780219ab6b042a4502d2e72da Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 26 Jul 2021 20:24:24 -0400 Subject: [PATCH 47/94] Regenerate validation files from clean build The prior tracked build of these files used a monolithic UCO file that had an sh: prefix defined. This was not intentional. Behaviors of this test are preserved according to this Git development branch, Feature-CP-23-offline-testing. SHACL has not yet entered this branch's history. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- tests/examples/location_PASS_validation.ttl | 6 +++--- tests/examples/location_XFAIL_validation.ttl | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/examples/location_PASS_validation.ttl b/tests/examples/location_PASS_validation.ttl index 9b8084b8..ad5d1106 100644 --- a/tests/examples/location_PASS_validation.ttl +++ b/tests/examples/location_PASS_validation.ttl @@ -1,6 +1,6 @@ -@prefix sh: . +@prefix ns1: . @prefix xsd: . -[] a sh:ValidationReport ; - sh:conforms true . +[] a ns1:ValidationReport ; + ns1:conforms true . diff --git a/tests/examples/location_XFAIL_validation.ttl b/tests/examples/location_XFAIL_validation.ttl index 9b8084b8..ad5d1106 100644 --- a/tests/examples/location_XFAIL_validation.ttl +++ b/tests/examples/location_XFAIL_validation.ttl @@ -1,6 +1,6 @@ -@prefix sh: . +@prefix ns1: . @prefix xsd: . -[] a sh:ValidationReport ; - sh:conforms true . +[] a ns1:ValidationReport ; + ns1:conforms true . From 888b4d0f2e9c866fe19e27545e43e68211fa0e48 Mon Sep 17 00:00:00 2001 From: Trevor Bobka Date: Mon, 28 Jun 2021 14:34:00 -0400 Subject: [PATCH 48/94] Add two action files to test property shape inheritance AJN: Trevor had emailed these to me June 28th, but then some email miscommunication left them languishing in inboxes. A follow-on patch will add these to CI. (cherry picked from commit 253599bee8c50cbc41f4e676c6b14b6094aeaefc) --- tests/examples/action_inheritance_PASS.json | 42 +++++++++++++++++++ tests/examples/action_inheritance_XFAIL.json | 43 ++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 tests/examples/action_inheritance_PASS.json create mode 100644 tests/examples/action_inheritance_XFAIL.json diff --git a/tests/examples/action_inheritance_PASS.json b/tests/examples/action_inheritance_PASS.json new file mode 100644 index 00000000..24dea2dc --- /dev/null +++ b/tests/examples/action_inheritance_PASS.json @@ -0,0 +1,42 @@ +{ + "@context": { + "acme": "http://example.org/ontology/acme/core/", + "core": "https://unifiedcyberontology.org/ontology/uco/core#", + "kb": "http://example.org/kb/", + "action": "https://unifiedcyberontology.org/ontology/uco/action#", + "xsd": "http://www.w3.org/2001/XMLSchema#" + }, + "@graph": [ + { + "@id": "kb:action1", + "@type": "action:Action", + "core:name": "Open File", + "action:actionStatus": "Pending" + }, + { + "@id": "kb:action2", + "@type": "action:Action", + "core:name": "Modify File", + "action:actionStatus": "Pending" + }, + { + "@id": "kb:action3", + "@type": "action:Action", + "core:name": "Save File", + "action:actionStatus": "Pending" + }, + { + "@id": "kb:action-lifecycle1", + "@type": "action:ActionLifecycle", + "core:name": "File Update", + "action:phase": { + "@type": "action:ArrayOfAction", + "action:action": [ + "kb:action1", + "kb:action2", + "kb:action3" + ] + } + } + ] +} diff --git a/tests/examples/action_inheritance_XFAIL.json b/tests/examples/action_inheritance_XFAIL.json new file mode 100644 index 00000000..8e8299e6 --- /dev/null +++ b/tests/examples/action_inheritance_XFAIL.json @@ -0,0 +1,43 @@ +{ + "@context": { + "acme": "http://example.org/ontology/acme/core/", + "core": "https://unifiedcyberontology.org/ontology/uco/core#", + "kb": "http://example.org/kb/", + "action": "https://unifiedcyberontology.org/ontology/uco/action#", + "xsd": "http://www.w3.org/2001/XMLSchema#" + }, + "@graph": [ + { + "@id": "kb:action1", + "@type": "action:Action", + "core:name": "Open File", + "action:actionStatus": "Pending" + }, + { + "@id": "kb:action2", + "@type": "action:Action", + "core:name": "Modify File", + "action:actionStatus": "Pending" + }, + { + "@id": "kb:action3", + "@type": "action:Action", + "core:name": "Save File", + "action:actionStatus": "Pending" + }, + { + "@id": "kb:action-lifecycle1", + "@type": "action:ActionLifecycle", + "core:name": "File Update", + "action:actionStatus": "Pending", + "action:phase": { + "@type": "action:ArrayOfAction", + "action:action": [ + "kb:action1", + "kb:action2", + "kb:action3" + ] + } + } + ] +} From 3722838a5ba9830506cb6b153dedabfb859401b2 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 12 Jul 2021 16:01:23 -0400 Subject: [PATCH 49/94] Move mostly-consistent code into loading function This cherry-pick also fixes a variable typo of cosmetic grade, and applies an expected/computed name scheme. Signed-off-by: Alex Nelson (cherry picked from commit 06b5a4196c010f9fb07eb555c195a769147b4c65) --- tests/examples/test_validation.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py index 81ed27ed..0fbc318f 100644 --- a/tests/examples/test_validation.py +++ b/tests/examples/test_validation.py @@ -26,26 +26,25 @@ nsdict = {"sh": "http://www.w3.org/ns/shacl#"} -def load_validation_graph(filename): +def load_validation_graph( + filename : str, + expected_conformance : bool +) -> rdflib.Graph: g = rdflib.Graph() g.parse(filename, format="turtle") g.namespace_manager.bind("sh", "http://www.w3.org/ns/shacl#") - return g - -def test_location_PASS_validation(): - g = load_validation_graph("location_PASS_validation.ttl") query = rdflib.plugins.sparql.prepareQuery(query_text, initNs=nsdict) - conforms = None + computed_conformance = None for result in g.query(query): (l_conforms,) = result - conforms = bool(l_conforms) - assert conforms + computed_conformance = bool(l_conforms) + assert expected_conformance == computed_conformance + return g + +def test_location_PASS_validation(): + g = load_validation_graph("location_PASS_validation.ttl", True) + assert isinstance(g, rdflib.Graph) def test_location_XFAIL_validation(): - g = load_validation_graph("location_XFAIL_validation.ttl") - query = rdflib.plugins.sparql.prepareQuery(query_text, initNs=nsdict) - conforms = None - for result in g.query(query): - (l_conforms,) = result - conforms = bool(l_conforms) - assert conforms == False + g = load_validation_graph("location_XFAIL_validation.ttl", False) + assert isinstance(g, rdflib.Graph) From 53f72b88a30db3922cd85fd25fd5dd6117bca5ab Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 12 Jul 2021 16:20:20 -0400 Subject: [PATCH 50/94] Use wildcard recipes for generating validation files Signed-off-by: Alex Nelson (cherry picked from commit 97d31170b1e8b764d0e302c6d57884664e48969e) --- tests/examples/Makefile | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/examples/Makefile b/tests/examples/Makefile index f165edb5..4218d38e 100644 --- a/tests/examples/Makefile +++ b/tests/examples/Makefile @@ -21,8 +21,12 @@ all: \ location_PASS_validation.ttl \ location_XFAIL_validation.ttl -location_PASS_validation.ttl: \ - location_PASS.json \ +.PRECIOUS: \ + %_PASS_validation.ttl \ + %_XFAIL_validation.ttl + +%_PASS_validation.ttl: \ + %_PASS.json \ $(tests_srcdir)/.venv.done.log \ $(tests_srcdir)/uco_monolithic.ttl source $(tests_srcdir)/venv/bin/activate \ @@ -45,8 +49,8 @@ location_PASS_validation.ttl: \ # Note that should another issue cause an exit status of 1, pytest will # fail because the result validation-graph file would not have expected # characteristics. -location_XFAIL_validation.ttl: \ - location_XFAIL.json \ +%_XFAIL_validation.ttl: \ + %_XFAIL.json \ $(tests_srcdir)/.venv.done.log \ $(tests_srcdir)/uco_monolithic.ttl source $(tests_srcdir)/venv/bin/activate \ From aa3515c26c8f7805cabe9423edf769bca7fc4920 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 12 Jul 2021 16:22:42 -0400 Subject: [PATCH 51/94] Add action_inheritance files to unit tests, recording validation This cherry-pick re-computes the validation files to match the behavior of the location XFAIL file in this branch (Feature-CP-23-offline-testing). The expected behavior will not be met until this test is introduced to the SHACL implementation. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson (cherry picked from commit 9a9d2144667c12542cdf1d6a55f43ea247dbf19d) --- tests/examples/Makefile | 4 ++++ tests/examples/action_inheritance_PASS_validation.ttl | 6 ++++++ tests/examples/action_inheritance_XFAIL_validation.ttl | 6 ++++++ tests/examples/test_validation.py | 8 ++++++++ 4 files changed, 24 insertions(+) create mode 100644 tests/examples/action_inheritance_PASS_validation.ttl create mode 100644 tests/examples/action_inheritance_XFAIL_validation.ttl diff --git a/tests/examples/Makefile b/tests/examples/Makefile index 4218d38e..555fd31f 100644 --- a/tests/examples/Makefile +++ b/tests/examples/Makefile @@ -18,6 +18,8 @@ top_srcdir := $(shell cd ../.. ; pwd) tests_srcdir := $(top_srcdir)/tests all: \ + action_inheritance_PASS_validation.ttl \ + action_inheritance_XFAIL_validation.ttl \ location_PASS_validation.ttl \ location_XFAIL_validation.ttl @@ -66,6 +68,8 @@ all: \ mv _$@ $@ check: \ + action_inheritance_PASS_validation.ttl \ + action_inheritance_XFAIL_validation.ttl \ location_PASS_validation.ttl \ location_XFAIL_validation.ttl source $(tests_srcdir)/venv/bin/activate \ diff --git a/tests/examples/action_inheritance_PASS_validation.ttl b/tests/examples/action_inheritance_PASS_validation.ttl new file mode 100644 index 00000000..ad5d1106 --- /dev/null +++ b/tests/examples/action_inheritance_PASS_validation.ttl @@ -0,0 +1,6 @@ +@prefix ns1: . +@prefix xsd: . + +[] a ns1:ValidationReport ; + ns1:conforms true . + diff --git a/tests/examples/action_inheritance_XFAIL_validation.ttl b/tests/examples/action_inheritance_XFAIL_validation.ttl new file mode 100644 index 00000000..ad5d1106 --- /dev/null +++ b/tests/examples/action_inheritance_XFAIL_validation.ttl @@ -0,0 +1,6 @@ +@prefix ns1: . +@prefix xsd: . + +[] a ns1:ValidationReport ; + ns1:conforms true . + diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py index 0fbc318f..bdcc41a6 100644 --- a/tests/examples/test_validation.py +++ b/tests/examples/test_validation.py @@ -41,6 +41,14 @@ def load_validation_graph( assert expected_conformance == computed_conformance return g +def test_action_inheritance_PASS_validation(): + g = load_validation_graph("action_inheritance_PASS_validation.ttl", True) + assert isinstance(g, rdflib.Graph) + +def test_action_inheritance_XFAIL_validation(): + g = load_validation_graph("action_inheritance_XFAIL_validation.ttl", False) + assert isinstance(g, rdflib.Graph) + def test_location_PASS_validation(): g = load_validation_graph("location_PASS_validation.ttl", True) assert isinstance(g, rdflib.Graph) From 4fe2578ce3bfa7420ce27aa689732c6ef1e355c5 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 19 Jul 2021 17:56:11 -0400 Subject: [PATCH 52/94] Pass ontological subclass relationships through extra pyshacl argument `rdfs:subClassOf` statements are not recognized when included in the graph passed to `pyshacl`'s flag `--shacl`. They *are* recognized when passed via the `--ont-graph` flag; see pyshacl issue 14. Hence, to get subclass awareness (as would apply to, e.g., all Facet subclasses in UCO), the monolithic UCO file must be passed to `pyshacl` in two of its flags. This patch is still expected to fail CI, as the tests still need to be introduced to the SHACL implementation. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes * [OC-159] pyshacl sh:class constraints seem to not recognize subclassing * [pySHACL 14] https://github.com/RDFLib/pySHACL/issues/14 (cherry picked from commit 1f1230721c24151f6f65f0486966898e860d3b67) --- tests/examples/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/examples/Makefile b/tests/examples/Makefile index 555fd31f..7b779add 100644 --- a/tests/examples/Makefile +++ b/tests/examples/Makefile @@ -36,6 +36,8 @@ all: \ --data-file-format json-ld \ --format turtle \ --inference none \ + --ont-file-format turtle \ + --ont-graph $(tests_srcdir)/uco_monolithic.ttl \ --shacl $(tests_srcdir)/uco_monolithic.ttl \ --shacl-file-format turtle \ --output _$@ \ @@ -60,6 +62,8 @@ all: \ --data-file-format json-ld \ --format turtle \ --inference none \ + --ont-file-format turtle \ + --ont-graph $(tests_srcdir)/uco_monolithic.ttl \ --shacl $(tests_srcdir)/uco_monolithic.ttl \ --shacl-file-format turtle \ --output _$@ \ From fce6f7a624a5e7cb37a1ddbdd91416a50e4aa325 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 26 Jul 2021 22:15:37 -0400 Subject: [PATCH 53/94] Refine expected failure state detection The set of expected validation failure triggering properties was drawn from a prior development state of the Feature-CP-23 branch, ending at commit: acd57a6ba202c1e2669512b95a96e3f74e205bc1 (This branch has been archived at Feature-CP-23-v6.) With the validation.ttl files checked out from that state, pytest passes, though the CI will not reflect this because this branch needs to be brought to the Feature-CP-23 branch. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes * [Feature-CP-23-v6] https://github.com/ajnelson-nist/UCO/tree/archive/Feature-CP-23-v6 Signed-off-by: Alex Nelson --- tests/examples/test_validation.py | 105 +++++++++++++++++++++++++----- 1 file changed, 89 insertions(+), 16 deletions(-) diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py index bdcc41a6..a76c7cee 100644 --- a/tests/examples/test_validation.py +++ b/tests/examples/test_validation.py @@ -11,20 +11,28 @@ # # We would appreciate acknowledgement if the software is used. +""" +Tests in this file confirm that the JSON-LD files with "PASS" in the +name to pass SHACL validation, and JSON-LD files with "XFAIL" in the +name not only to fail SHACL validation, but also to report a set of +properties used in their JSON-LD that triggered SHACL validation errors. + +This test was written to be called with the pytest framework, expecting +the only functions to be called to be named "test_*". +""" + +import logging +import typing + import pytest import rdflib.plugins.sparql -query_text = """\ -SELECT ?lConforms -WHERE { - ?nReport - a sh:ValidationReport ; - sh:conforms ?lConforms ; - . -} -""" +NS_SH = rdflib.SH +NS_UCO_ACTION = rdflib.Namespace("https://unifiedcyberontology.org/ontology/uco/action#") +NS_UCO_CORE = rdflib.Namespace("https://unifiedcyberontology.org/ontology/uco/core#") +NS_UCO_LOCATION = rdflib.Namespace("https://unifiedcyberontology.org/ontology/uco/location#") -nsdict = {"sh": "http://www.w3.org/ns/shacl#"} +NSDICT = {"sh": NS_SH} def load_validation_graph( filename : str, @@ -32,8 +40,18 @@ def load_validation_graph( ) -> rdflib.Graph: g = rdflib.Graph() g.parse(filename, format="turtle") - g.namespace_manager.bind("sh", "http://www.w3.org/ns/shacl#") - query = rdflib.plugins.sparql.prepareQuery(query_text, initNs=nsdict) + g.namespace_manager.bind("sh", NS_SH) + + query = rdflib.plugins.sparql.prepareQuery("""\ +SELECT ?lConforms +WHERE { + ?nReport + a sh:ValidationReport ; + sh:conforms ?lConforms ; + . +} +""", initNs=NSDICT) + computed_conformance = None for result in g.query(query): (l_conforms,) = result @@ -41,18 +59,73 @@ def load_validation_graph( assert expected_conformance == computed_conformance return g +def confirm_validation_errors( + filename : str, + expected_error_iris : typing.Set[str] +): + g = load_validation_graph(filename, False) + + computed_error_iris = set() + + query = rdflib.plugins.sparql.prepareQuery("""\ +SELECT DISTINCT ?nResultPath +WHERE { + ?nReport + a sh:ValidationReport ; + sh:result ?nValidationResult ; + . + + ?nValidationResult + a sh:ValidationResult ; + sh:resultPath ?nResultPath ; + . +} +""", initNs=NSDICT) + + for result in g.query(query): + (n_result_path,) = result + computed_error_iris.add(str(n_result_path)) + + try: + assert expected_error_iris == computed_error_iris + except: + logging.error("Please review %s and its associated .json file to identify the ground truth validation error mismatch pertaining to data properties noted in this function.", filename) + raise + def test_action_inheritance_PASS_validation(): + """ + Confirm the PASS instance data passes validation. + """ g = load_validation_graph("action_inheritance_PASS_validation.ttl", True) assert isinstance(g, rdflib.Graph) def test_action_inheritance_XFAIL_validation(): - g = load_validation_graph("action_inheritance_XFAIL_validation.ttl", False) - assert isinstance(g, rdflib.Graph) + """ + Confirm the XFAIL instance data fails validation based on an expected set of properties not conforming to shape constraints. + """ + confirm_validation_errors( + "action_inheritance_XFAIL_validation.ttl", + { + str(NS_UCO_ACTION.action), + str(NS_UCO_ACTION.actionStatus) + } + ) def test_location_PASS_validation(): + """ + Confirm the PASS instance data passes validation. + """ g = load_validation_graph("location_PASS_validation.ttl", True) assert isinstance(g, rdflib.Graph) def test_location_XFAIL_validation(): - g = load_validation_graph("location_XFAIL_validation.ttl", False) - assert isinstance(g, rdflib.Graph) + """ + Confirm the XFAIL instance data fails validation based on an expected set of properties not conforming to shape constraints. + """ + confirm_validation_errors( + "location_XFAIL_validation.ttl", + { + str(NS_UCO_CORE.hasFacet), + str(NS_UCO_LOCATION.postalCode) + } + ) From c14d756d50fc396ce200232e7c6ea6f0a15ab8a0 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 19 Jul 2021 17:57:43 -0400 Subject: [PATCH 54/94] Address example errors reported by pyshacl The two `*_PASS.json` files had errors corrected, reported by the -v6 implementation of the SHACL conversion branch. `action_inheritance_XFAIL.json` just had a sort applied in its context dictionary, otherwise with no effect. No changes occurred in the `*_validation.ttl` files. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes * [Feature-CP-23-v6] https://github.com/ajnelson-nist/UCO/tree/archive/Feature-CP-23-v6 Signed-off-by: Alex Nelson (cherry picked from commit 1b64af230c03e701834a43e852987c5a2ec7565a) --- tests/examples/action_inheritance_PASS.json | 30 +++++++++++++++----- tests/examples/action_inheritance_XFAIL.json | 2 +- tests/examples/location_PASS.json | 5 +++- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/tests/examples/action_inheritance_PASS.json b/tests/examples/action_inheritance_PASS.json index 24dea2dc..b5ceba71 100644 --- a/tests/examples/action_inheritance_PASS.json +++ b/tests/examples/action_inheritance_PASS.json @@ -1,9 +1,10 @@ { "@context": { "acme": "http://example.org/ontology/acme/core/", + "action": "https://unifiedcyberontology.org/ontology/uco/action#", "core": "https://unifiedcyberontology.org/ontology/uco/core#", "kb": "http://example.org/kb/", - "action": "https://unifiedcyberontology.org/ontology/uco/action#", + "vocabulary": "https://unifiedcyberontology.org/ontology/uco/vocabulary#", "xsd": "http://www.w3.org/2001/XMLSchema#" }, "@graph": [ @@ -11,19 +12,28 @@ "@id": "kb:action1", "@type": "action:Action", "core:name": "Open File", - "action:actionStatus": "Pending" + "action:actionStatus": { + "@type": "vocabulary:ActionStatusTypeVocab", + "@value": "Pending" + } }, { "@id": "kb:action2", "@type": "action:Action", "core:name": "Modify File", - "action:actionStatus": "Pending" + "action:actionStatus": { + "@type": "vocabulary:ActionStatusTypeVocab", + "@value": "Pending" + } }, { "@id": "kb:action3", "@type": "action:Action", "core:name": "Save File", - "action:actionStatus": "Pending" + "action:actionStatus": { + "@type": "vocabulary:ActionStatusTypeVocab", + "@value": "Pending" + } }, { "@id": "kb:action-lifecycle1", @@ -32,9 +42,15 @@ "action:phase": { "@type": "action:ArrayOfAction", "action:action": [ - "kb:action1", - "kb:action2", - "kb:action3" + { + "@id": "kb:action1" + }, + { + "@id": "kb:action2" + }, + { + "@id": "kb:action3" + } ] } } diff --git a/tests/examples/action_inheritance_XFAIL.json b/tests/examples/action_inheritance_XFAIL.json index 8e8299e6..b87c2563 100644 --- a/tests/examples/action_inheritance_XFAIL.json +++ b/tests/examples/action_inheritance_XFAIL.json @@ -1,9 +1,9 @@ { "@context": { "acme": "http://example.org/ontology/acme/core/", + "action": "https://unifiedcyberontology.org/ontology/uco/action#", "core": "https://unifiedcyberontology.org/ontology/uco/core#", "kb": "http://example.org/kb/", - "action": "https://unifiedcyberontology.org/ontology/uco/action#", "xsd": "http://www.w3.org/2001/XMLSchema#" }, "@graph": [ diff --git a/tests/examples/location_PASS.json b/tests/examples/location_PASS.json index 517e66ab..1b7a7d40 100644 --- a/tests/examples/location_PASS.json +++ b/tests/examples/location_PASS.json @@ -20,7 +20,10 @@ "location:street": "20341 Whitworth Institute 405 N. Whitworth" }, { - "@type": "acme:InternalLocationFacet", + "@type": [ + "acme:InternalLocationFacet", + "core:Facet" + ], "acme:floor": 3, "acme:roomNumber": 345 } From 8b58e0331aedaf35fae1be2b07b3d19625cb5dea Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 27 Jul 2021 15:01:47 -0400 Subject: [PATCH 55/94] Encode XPASS of one of the attempted failure inductions References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- tests/examples/test_validation.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py index a76c7cee..a47009c2 100644 --- a/tests/examples/test_validation.py +++ b/tests/examples/test_validation.py @@ -129,3 +129,16 @@ def test_location_XFAIL_validation(): str(NS_UCO_LOCATION.postalCode) } ) + +@pytest.mark.xfail(strict=True) +def test_location_XFAIL_validation_XPASS_wrong_concept_name(): + """ + Report the XFAIL instance data XPASSes one of the induced errors - the non-existent concept core:descriptionButWrongName is not reported as an error. + Should a SHACL mechanism later be identified to detect this error, this test can be retired, adding NS_UCO_CORE.descriptionButWrongName to the expected IRI set in test_location_XFAIL_validation(). + """ + confirm_validation_errors( + "location_XFAIL_validation.ttl", + { + str(NS_UCO_CORE.descriptionButWrongName) + } + ) From e4e6c1d6c150c6950cf7bf69b4dc51cc0bba37f6 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 29 Jul 2021 02:23:40 -0400 Subject: [PATCH 56/94] Use Java 8 for rdf-toolkit References: * [UCO OC-164] (CP-71) Ontology syntax-check CI does not run with Java 11 Signed-off-by: Alex Nelson --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bebcf362..f1986476 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,10 @@ jobs: steps: - uses: actions/checkout@v2 + - uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '8' - name: Start from clean state run: make clean - name: Run tests From 2be2117acbdc522fdc5be973878d391f6e55eea7 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 26 Jul 2021 10:40:38 -0400 Subject: [PATCH 57/94] Restore comment lost in SHACL conversion The owl:Restriction->sh:PropertyShape conversion tool accidentally erased the comment string added by CP-54. This patch restores the comment added in bb179d8. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes * [OC-86] (CP-54) sizeInBytes needs documenting comments on contextual interpretation Signed-off-by: Alex Nelson (cherry picked from commit acd57a6ba202c1e2669512b95a96e3f74e205bc1) --- uco-observable/observable.ttl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 38023f56..4d68b685 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -2235,7 +2235,7 @@ observable:FileFacet 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 "None" ; + 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:nonNegativeInteger ; sh:path observable:sizeInBytes ; From b9ed62e338a00c847c2a88fd4bcf780fea4a1085 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 26 Jul 2021 20:59:38 -0400 Subject: [PATCH 58/94] Match constraint integer types to SHACL expectations SHACL uses xsd:integer instead of xsd:nonNegativeInteger. This patch applied the following sed script, fix_number_types.sed: ```sed s/maxCount "\([0-9]\+\)"^^xsd:nonNegativeInteger/maxCount "\1"^^xsd:integer/ s/minCount "\([0-9]\+\)"^^xsd:nonNegativeInteger/minCount "\1"^^xsd:integer/ ``` The command used was: gsed --in-place --file fix_number_types.sed uco-*/*.ttl References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- uco-action/action.ttl | 60 +- uco-core/core.ttl | 52 +- uco-identity/identity.ttl | 6 +- uco-location/location.ttl | 26 +- uco-marking/marking.ttl | 18 +- uco-observable/observable.ttl | 1328 ++++++++++++++++----------------- uco-tool/tool.ttl | 70 +- uco-types/types.ttl | 28 +- 8 files changed, 794 insertions(+), 794 deletions(-) diff --git a/uco-action/action.ttl b/uco-action/action.ttl index c99bb365..60eb0db2 100644 --- a/uco-action/action.ttl +++ b/uco-action/action.ttl @@ -41,19 +41,19 @@ action:Action sh:property [ sh:datatype xsd:nonNegativeInteger ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:actionCount ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:actionStatus ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:endTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:startTime ; ] , [ @@ -77,14 +77,14 @@ action:ActionArgumentFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path action:argumentName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path action:value ; ] ; @@ -102,22 +102,22 @@ action:ActionEstimationFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:estimatedCost ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:estimatedEfficacy ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:estimatedImpact ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:objective ; ] ; @@ -135,26 +135,26 @@ action:ActionFrequencyFacet sh:property [ sh:datatype xsd:float ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path action:rate ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path action:scale ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path action:units ; ] , [ sh:datatype vocabulary:TrendVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path action:trend ; ] ; @@ -172,29 +172,29 @@ action:ActionLifecycle sh:property [ sh:class action:ArrayOfAction ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path action:phase ; ] , [ sh:datatype xsd:nonNegativeInteger ; - sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:integer ; sh:path action:actionCount ; ] , [ - sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:integer ; sh:path action:actionStatus ; ] , [ - sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:integer ; sh:path action:endTime ; ] , [ - sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:integer ; sh:path action:error ; ] , [ - sh:maxCount "0"^^xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:integer ; sh:path action:startTime ; ] ; @@ -227,12 +227,12 @@ action:ActionReferencesFacet sh:property [ sh:class core:UcoObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:environment ; ] , [ sh:class core:UcoObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path action:performer ; ] , [ @@ -262,7 +262,7 @@ action:ArrayOfAction rdfs:label "ArrayOfAction"@en ; rdfs:comment "An array of action is an ordered list of references to things that may be done or performed."@en ; sh:property [ - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path action:action ; ] ; sh:targetClass action:ArrayOfAction ; diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 4980df46..65d7554c 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -27,7 +27,7 @@ core:Annotation rdfs:comment "An annotation is an assertion made in relation to one or more objects."@en ; sh:property [ sh:class core:UcoObject ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path core:object ; ] ; sh:targetClass core:Annotation ; @@ -57,7 +57,7 @@ core:AttributedName rdfs:comment "An attributed name is a name of an entity issued by some attributed naming authority."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:namingAuthority ; ] ; sh:targetClass core:AttributedName ; @@ -95,8 +95,8 @@ core:ConfidenceFacet rdfs:comment "A confidence is a grouping of characteristics unique to an asserted level of certainty in the accuracy of some information."@en ; sh:property [ sh:datatype xsd:nonNegativeInteger ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:confidence ; ] ; sh:targetClass core:ConfidenceFacet ; @@ -112,7 +112,7 @@ core:ContextualCompilation rdfs:comment "A contextual compilation is a grouping of things sharing some context (e.g., a set of network connections observed on a given day, all accounts associated with a given person)."@en ; sh:property [ sh:class core:UcoObject ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path core:object ; ] ; sh:targetClass core:ContextualCompilation ; @@ -129,18 +129,18 @@ core:ControlledVocabulary sh:property [ sh:datatype xsd:anyURI ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:constrainingVocabularyReference ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:value ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:constrainingVocabularyName ; ] ; @@ -158,12 +158,12 @@ core:EnclosingCompilation sh:property [ sh:class core:UcoObject ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path core:object ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:description ; ] ; @@ -179,15 +179,15 @@ core:ExternalReference rdfs:comment "Characteristics of a reference to a resource outside of the UCO."@en ; sh:property [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:definingContext ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:externalIdentifier ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:referenceURL ; ] ; @@ -273,24 +273,24 @@ core:Relationship sh:property [ sh:class core:UcoObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:target ; ] , [ sh:class core:UcoObject ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path core:source ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:isDirectional ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:kindOfRelationship ; ] , [ @@ -313,32 +313,32 @@ core:UcoObject sh:property [ sh:class core:ExternalReference ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path core:externalReference ; ] , [ sh:class core:IdentityAbstraction ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:createdBy ; ] , [ sh:datatype xsd:dateTime ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:objectCreatedTime ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:name ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:specVersion ; ] , [ sh:datatype types:Identifier ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:id ; ] , [ diff --git a/uco-identity/identity.ttl b/uco-identity/identity.ttl index eeaf8e66..98229d03 100644 --- a/uco-identity/identity.ttl +++ b/uco-identity/identity.ttl @@ -31,8 +31,8 @@ identity:AddressFacet rdfs:comment "An address facet is a grouping of characteristics unique to an administrative identifier for a geolocation associated with a specific identity."@en ; sh:property [ sh:class location:Location ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path identity:address ; ] ; sh:targetClass identity:AddressFacet ; @@ -59,7 +59,7 @@ identity:BirthInformationFacet rdfs:comment "Birth information is a grouping of characteristics unique to information pertaining to the birth of an entity."@en ; sh:property [ sh:datatype xsd:dateTime ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path identity:birthdate ; ] ; sh:targetClass identity:BirthInformationFacet ; diff --git a/uco-location/location.ttl b/uco-location/location.ttl index b5dfefe7..3ab63e47 100644 --- a/uco-location/location.ttl +++ b/uco-location/location.ttl @@ -27,22 +27,22 @@ location:GPSCoordinatesFacet sh:property [ sh:datatype xsd:double ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:hdop ; ] , [ sh:datatype xsd:double ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:pdop ; ] , [ sh:datatype xsd:double ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:tdop ; ] , [ sh:datatype xsd:double ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:vdop ; ] ; @@ -60,17 +60,17 @@ location:LatLongCoordinatesFacet sh:property [ sh:datatype xsd:decimal ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:altitude ; ] , [ sh:datatype xsd:decimal ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:latitude ; ] , [ sh:datatype xsd:decimal ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:longitude ; ] ; @@ -99,32 +99,32 @@ location:SimpleAddressFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:addressType ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:country ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:locality ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:postalCode ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:region ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path location:street ; ] ; diff --git a/uco-marking/marking.ttl b/uco-marking/marking.ttl index 43647816..cefa054b 100644 --- a/uco-marking/marking.ttl +++ b/uco-marking/marking.ttl @@ -49,8 +49,8 @@ marking:LicenseMarking sh:path marking:definitionType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path marking:license ; ] ; @@ -68,8 +68,8 @@ marking:MarkingDefinition sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path marking:definitionType ; ] , [ @@ -100,7 +100,7 @@ marking:ReleaseToMarking sh:property [ sh:datatype xsd:string ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path marking:authorizedIdentities ; ] , [ @@ -125,8 +125,8 @@ marking:StatementMarking sh:path marking:definitionType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path marking:statement ; ] ; @@ -147,8 +147,8 @@ marking:TermsOfUseMarking sh:path marking:definitionType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path marking:termsOfUse ; ] ; diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 4d68b685..e8c35be9 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -88,16 +88,16 @@ observable:AccountAuthenticationFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:password ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:passwordType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:passwordLastChanged ; ] ; @@ -115,37 +115,37 @@ observable:AccountFacet sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isActive ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:accountIdentifier ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:accountIssuer ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:accountType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:expirationTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:modifiedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:owner ; ] ; @@ -173,17 +173,17 @@ observable:AlternateDataStream sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:size ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:name ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:hashes ; ] ; @@ -233,8 +233,8 @@ observable:ApplicationAccountFacet rdfs:comment "An application account facet is a grouping of characteristics unique to an account within a particular software program designed for end users."@en ; sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:application ; ] ; sh:targetClass observable:ApplicationAccountFacet ; @@ -251,22 +251,22 @@ observable:ApplicationFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:operatingSystem ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:numberOfLaunches ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:applicationIdentifier ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:version ; ] ; @@ -295,17 +295,17 @@ observable:ArchiveFileFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:archiveType ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:comment ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:version ; ] ; @@ -348,22 +348,22 @@ observable:AudioFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:bitRate ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:duration ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:audioType ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:format ; ] ; @@ -392,17 +392,17 @@ observable:AutonomousSystemFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:number ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:asHandle ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:regionalInternetRegistry ; ] ; @@ -441,7 +441,7 @@ observable:BluetoothAddressFacet rdfs:comment "A Bluetooth address facet is a grouping of characteristics unique to a Bluetooth standard conformant identifier assigned to a Bluetooth device to enable routing and management of Bluetooth standards conformant communication to or from that device."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] ; sh:targetClass observable:BluetoothAddressFacet ; @@ -480,29 +480,29 @@ observable:BrowserBookmarkFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:visitCount ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:bookmarkPath ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:accessedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:modifiedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] , [ @@ -534,39 +534,39 @@ observable:BrowserCookieFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:cookieDomain ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isSecure ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:cookieName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:cookiePath ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:accessedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:expirationTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] ; @@ -606,65 +606,65 @@ observable:CalendarEntryFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isPrivate ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:duration ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:eventStatus ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:eventType ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:recurrence ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subject ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:endTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:location ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:modifiedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:owner ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:remindTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:startTime ; ] , [ @@ -685,12 +685,12 @@ observable:CalendarFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:owner ; ] ; @@ -730,12 +730,12 @@ observable:CompressedStreamFacet sh:property [ sh:datatype xsd:double ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:compressionRatio ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:compressionMethod ; ] ; @@ -764,93 +764,93 @@ observable:ComputerSpecificationFacet sh:property [ sh:datatype xsd:dateTime ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:currentSystemDate ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:availableRam ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:totalRam ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:biosManufacturer ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:biosSerialNumber ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:biosVersion ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:cpu ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:cpuFamily ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:gpu ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:gpuFamily ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:hostname ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:processorArchitecture ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:timezoneDST ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:timezoneStandard ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:uptime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:biosDate ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:biosReleaseDate ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:localTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:systemTime ; ] , [ @@ -881,12 +881,12 @@ observable:ContactAddress sh:property [ sh:datatype location:Location ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:geolocationAddress ; ] , [ sh:datatype vocabulary:ContactAddressScopeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactAddressScope ; ] ; @@ -903,48 +903,48 @@ observable:ContactAffiliation sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:organizationDepartment ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:organizationPosition ; ] , [ sh:datatype identity:Organization ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:contactOrganization ; ] , [ sh:datatype observable:ContactAddress ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:organizationLocation ; ] , [ sh:datatype observable:ContactEmail ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactEmail ; ] , [ sh:datatype observable:ContactMessaging ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactMessaging ; ] , [ sh:datatype observable:ContactPhone ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactPhone ; ] , [ sh:datatype observable:ContactProfile ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactProfile ; ] , [ sh:datatype observable:ContactURL ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactURL ; ] ; @@ -961,12 +961,12 @@ observable:ContactEmail sh:property [ sh:datatype observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:emailAddress ; ] , [ sh:datatype vocabulary:ContactEmailScopeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactEmailScope ; ] ; @@ -984,117 +984,117 @@ observable:ContactFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sourceApplication ; ] , [ sh:datatype xsd:dateTime ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path identity:birthdate ; ] , [ sh:datatype xsd:dateTime ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:lastTimeContacted ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:numberTimesContacted ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:displayName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:firstName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:lastName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:middleName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:namePhonetic ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:namePrefix ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:nameSuffix ; ] , [ sh:datatype xsd:string ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactGroup ; ] , [ sh:datatype xsd:string ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactNote ; ] , [ sh:datatype xsd:string ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:nickname ; ] , [ sh:datatype observable:ContactAddress ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactAddress ; ] , [ sh:datatype observable:ContactAffiliation ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactAffiliation ; ] , [ sh:datatype observable:ContactEmail ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactEmail ; ] , [ sh:datatype observable:ContactMessaging ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactMessaging ; ] , [ sh:datatype observable:ContactPhone ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactPhone ; ] , [ sh:datatype observable:ContactProfile ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactProfile ; ] , [ sh:datatype observable:ContactSIP ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactSIP ; ] , [ sh:datatype observable:ContactURL ; - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:contactURL ; ] ; @@ -1123,12 +1123,12 @@ observable:ContactListFacet sh:property [ sh:datatype observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sourceApplication ; ] , [ sh:datatype observable:ObservableObject ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path observable:contact ; ] ; @@ -1145,12 +1145,12 @@ observable:ContactMessaging sh:property [ sh:datatype observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactAddress ; ] , [ sh:datatype observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactMessagingPlatform ; ] ; @@ -1167,12 +1167,12 @@ observable:ContactPhone sh:property [ sh:datatype observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactPhoneNumber ; ] , [ sh:datatype vocabulary:ContactPhoneScopeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactPhoneScope ; ] ; @@ -1189,12 +1189,12 @@ observable:ContactProfile sh:property [ sh:datatype observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactProfilePlatform ; ] , [ sh:datatype observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profile ; ] ; @@ -1211,12 +1211,12 @@ observable:ContactSIP sh:property [ sh:datatype observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sipAddress ; ] , [ sh:datatype vocabulary:ContactSIPScopeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactSIPScope ; ] ; @@ -1233,12 +1233,12 @@ observable:ContactURL sh:property [ sh:datatype observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:url ; ] , [ sh:datatype vocabulary:ContactURLScopeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactURLScope ; ] ; @@ -1267,46 +1267,46 @@ observable:ContentDataFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:dataPayloadReferenceURL ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isEncrypted ; ] , [ sh:datatype xsd:double ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:entropy ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sizeInBytes ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:dataPayload ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:magicNumber ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mimeClass ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mimeType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:byteOrder ; ] , [ @@ -1382,17 +1382,17 @@ observable:DataRangeFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:rangeOffset ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:rangeSize ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:rangeOffsetType ; ] ; @@ -1432,21 +1432,21 @@ observable:DeviceFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:manufacturer ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:model ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:serialNumber ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:deviceType ; ] ; @@ -1475,20 +1475,20 @@ observable:DigitalAccountFacet sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isDisabled ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:displayName ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:firstLoginTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:lastLoginTime ; ] , [ @@ -1520,13 +1520,13 @@ observable:DigitalAddressFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:displayName ; ] ; @@ -1555,27 +1555,27 @@ observable:DigitalSignatureInfoFacet sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:signatureExists ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:signatureVerified ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:signatureDescription ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:certificateIssuer ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:certificateSubject ; ] ; @@ -1615,16 +1615,16 @@ observable:DiskFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:diskSize ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:freeSpace ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:diskType ; ] , [ @@ -1656,45 +1656,45 @@ observable:DiskPartitionFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:partitionLength ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:partitionOffset ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:spaceLeft ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:spaceUsed ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:totalSpace ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mountPoint ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:partitionID ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:diskPartitionType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] ; @@ -1723,13 +1723,13 @@ observable:DomainNameFacet sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isTLD ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:value ; ] ; @@ -1752,7 +1752,7 @@ observable:EXIFFacet rdfs:label "EXIFFacet"@en ; rdfs:comment "An EXIF (exchangeable image file format) facet is a grouping of characteristics unique to the formats for images, sound, and ancillary tags used by digital cameras (including smartphones), scanners and other systems handling image and sound files recorded by digital cameras conformant to JEIDA/JEITA/CIPA specifications. [based on https://en.wikipedia.org/wiki/Exif]"@en ; sh:property [ - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path observable:exifData ; ] ; sh:targetClass observable:EXIFFacet ; @@ -1779,8 +1779,8 @@ observable:EmailAccountFacet rdfs:comment "An email account facet is a grouping of characteristics unique to an arrangement with an entity to enable and control the provision of electronic mail (email) capabilities or services."@en ; sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:emailAddress ; ] ; sh:targetClass observable:EmailAccountFacet ; @@ -1808,13 +1808,13 @@ observable:EmailAddressFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:displayName ; ] ; @@ -1843,105 +1843,105 @@ observable:EmailMessageFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:bodyRaw ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:from ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:headerRaw ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:inReplyTo ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sender ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:xOriginatingIP ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:isMimeEncoded ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:isMultipart ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isRead ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:body ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contentDisposition ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contentType ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:messageID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:priority ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subject ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:xMailer ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:modifiedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:otherHeaders ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:receivedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sentTime ; ] , [ @@ -1979,7 +1979,7 @@ observable:EncodedStreamFacet rdfs:comment "An encoded stream facet is a grouping of characteristics unique to the conversion of a body of data content from one form to another form."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:encodingMethod ; ] ; sh:targetClass observable:EncodedStreamFacet ; @@ -1995,11 +1995,11 @@ observable:EncryptedStreamFacet rdfs:comment "An encrypted stream facet is a grouping of characteristics unique to the conversion of a body of data content from one form to another obfuscated form in such a way that reversing the conversion to obtain the original data form can only be accomplished through possession and use of a specific key."@en ; sh:property [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:encryptionMethod ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:encryptionMode ; ] , [ @@ -2022,13 +2022,13 @@ observable:EnvironmentVariable sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:name ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:value ; ] ; @@ -2057,37 +2057,37 @@ observable:EventFacet sh:property [ sh:class observable:ObservableAction ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:cyberAction ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:computerName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:eventID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:eventText ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:eventType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] ; @@ -2116,45 +2116,45 @@ observable:ExtInodeFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extFileType ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extFlags ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extHardLinkCount ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extInodeID ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extPermissions ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extSGID ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extSUID ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extDeletionTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extInodeChangeTime ; ] ; @@ -2171,29 +2171,29 @@ observable:ExtractedString sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:length ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:englishTranslation ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:stringValue ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:byteStringValue ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:encoding ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:language ; ] ; @@ -2237,37 +2237,37 @@ observable:FileFacet [ 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:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sizeInBytes ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:allocationStatus ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extension ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:accessedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:fileSystemType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:metadataChangeTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:modifiedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] , [ @@ -2293,7 +2293,7 @@ observable:FilePermissionsFacet rdfs:comment "A file permissions facet is a grouping of characteristics unique to the access rights (e.g., view, change, navigate, execute) of a file on a file system."@en ; sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:owner ; ] ; sh:targetClass observable:FilePermissionsFacet ; @@ -2321,11 +2321,11 @@ observable:FileSystemFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:clusterSize ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:fileSystemType ; ] ; @@ -2428,16 +2428,16 @@ observable:GeoLocationEntryFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:location ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] ; @@ -2466,12 +2466,12 @@ observable:GeoLocationLogFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] ; @@ -2500,16 +2500,16 @@ observable:GeoLocationTrackFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:endTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:startTime ; ] , [ @@ -2529,17 +2529,17 @@ observable:GlobalFlagType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:abbreviation ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:destination ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:symbolicName ; ] , [ @@ -2571,33 +2571,33 @@ observable:HTTPConnectionFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:httpMessageBodyData ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:httpMesageBodyLength ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:requestMethod ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:requestValue ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:requestVersion ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:httpRequestHeader ; ] ; @@ -2662,12 +2662,12 @@ observable:IComHandlerActionType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:comClassID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:comData ; ] ; @@ -2684,17 +2684,17 @@ observable:IExecActionType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:execArguments ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:execProgramPath ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:execWorkingDirectory ; ] , [ @@ -2740,13 +2740,13 @@ observable:IPAddressFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:displayName ; ] ; @@ -2785,8 +2785,8 @@ observable:IPv4AddressFacet rdfs:comment "An IPv4 (Internet Protocol version 4) address facet is a grouping of characteristics unique to an IPv4 standards conformant identifier assigned to a device to enable routing and management of IPv4 standards conformant communication to or from that device."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] ; sh:targetClass observable:IPv4AddressFacet ; @@ -2813,8 +2813,8 @@ observable:IPv6AddressFacet rdfs:comment "An IPv6 (Internet Protocol version 6) address facet is a grouping of characteristics unique to an IPv6 standards conformant identifier assigned to a device to enable routing and management of IPv6 standards conformant communication to or from that device."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] ; sh:targetClass observable:IPv6AddressFacet ; @@ -2830,12 +2830,12 @@ observable:IShowMessageActionType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:showMessageBody ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:showMessageTitle ; ] ; @@ -2863,7 +2863,7 @@ observable:ImageFacet rdfs:comment "An image facet is a grouping of characteristics unique to a complete copy of a hard disk, memory, or other digital media."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:imageType ; ] ; sh:targetClass observable:ImageFacet ; @@ -2891,13 +2891,13 @@ observable:InstantMessagingAddressFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:displayName ; ] ; @@ -2935,7 +2935,7 @@ observable:LibraryFacet rdfs:label "LibraryFacet"@en ; rdfs:comment "A library facet is a grouping of characteristics unique to a suite of data and programming code that is used to develop software programs and applications. [based on https://www.techopedia.com/definition/3828/software-library]"@en ; sh:property [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:libraryType ; ] ; sh:targetClass observable:LibraryFacet ; @@ -2962,8 +2962,8 @@ observable:MACAddressFacet rdfs:comment "A MAC address facet is a grouping of characteristics unique to a media access control standards conformant identifier assigned to a network interface to enable routing and management of communications at the data link layer of a network segment."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] ; sh:targetClass observable:MACAddressFacet ; @@ -3005,35 +3005,35 @@ observable:MemoryFacet sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:isInjected ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:isMapped ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:isProtected ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:isVolatile ; ] , [ sh:datatype vocabulary:MemoryBlockTypeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:blockType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:regionSize ; ] , [ @@ -3068,36 +3068,36 @@ observable:MessageFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:from ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:messageID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:messageText ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:messageType ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sessionID ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sentTime ; ] ; @@ -3126,12 +3126,12 @@ observable:MessageThreadFacet sh:property [ sh:class observable:ObservableObject ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path observable:message ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:visibility ; ] , [ @@ -3152,57 +3152,57 @@ observable:MftRecordFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mftFileID ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mftFileNameLength ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mftFlags ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mftParentID ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:ntfsHardLinkCount ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:ntfsOwnerID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:ntfsOwnerSID ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mftFileNameAccessedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mftFileNameCreatedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mftFileNameModifiedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mftFileNameRecordChangeTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mftRecordChangeTime ; ] ; @@ -3219,22 +3219,22 @@ observable:MimePartType sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:bodyRaw ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:body ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contentDisposition ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contentType ; ] ; @@ -3263,17 +3263,17 @@ observable:MobileAccountFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:IMSI ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:MSISDN ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:MSISDNType ; ] ; @@ -3302,47 +3302,47 @@ observable:MobileDeviceFacet sh:property [ sh:datatype xsd:dateTime ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:clockSetting ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:storageCapacityInBytes ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:ESN ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:IMEI ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:bluetoothDeviceName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:keypadUnlockCode ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mockLocationsAllowed ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:network ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:phoneActivationTime ; ] , [ @@ -3373,8 +3373,8 @@ observable:MutexFacet rdfs:comment "A mutex facet is a grouping of characteristics unique to a mechanism that enforces limits on access to a resource when there are many threads of execution. A mutex is designed to enforce a mutual exclusion concurrency control policy, and with a variety of possible methods there exists multiple unique implementations for different applications. [based on https://en.wikipedia.org/wiki/Lock_(computer_science)]"@en ; sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:isNamed ; ] ; sh:targetClass observable:MutexFacet ; @@ -3402,12 +3402,12 @@ observable:NTFSFileFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:entryID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sid ; ] , [ @@ -3461,29 +3461,29 @@ observable:NetworkConnectionFacet sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isActive ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:destinationPort ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sourcePort ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:endTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:protocols ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:startTime ; ] , [ @@ -3529,36 +3529,36 @@ observable:NetworkFlowFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:dstPayload ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:srcPayload ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:dstBytes ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:dstPackets ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:srcBytes ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:srcPackets ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:ipfix ; ] ; @@ -3587,20 +3587,20 @@ observable:NetworkInterfaceFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:macAddress ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:adapterName ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:dhcpLeaseExpires ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:dhcpLeaseObtained ; ] , [ @@ -3847,21 +3847,21 @@ observable:NoteFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:text ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:modifiedTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] ; @@ -3907,11 +3907,11 @@ observable:ObservableObject sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:hasChanged ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:state ; ] ; @@ -3953,8 +3953,8 @@ observable:Observation rdfs:comment "An observation is a temporal perception of an observable."@en ; sh:property [ sh:hasValue "observe" ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:name ; ] ; sh:targetClass observable:Observation ; @@ -3981,16 +3981,16 @@ observable:OnlineServiceFacet rdfs:comment "An online service facet is a grouping of characteristics unique to a particular provision mechanism of information access, distribution or manipulation over the Internet."@en-US ; sh:property [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:name ; ] , [ - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:inetLocation ; ] , [ - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:location ; ] ; @@ -4019,24 +4019,24 @@ observable:OperatingSystemFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:manufacturer ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:version ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:bitness ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:environmentVariables ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:installDate ; ] ; @@ -4065,21 +4065,21 @@ observable:PDFFileFacet sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isOptimized ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:pdfId1 ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:version ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:documentInformationDictionary ; ] , [ @@ -4149,8 +4149,8 @@ observable:PhoneAccountFacet rdfs:comment "A phone account facet is a grouping of characteristics unique to an arrangement with an entity to enable and control the provision of a telephony capability or service."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:phoneNumber ; ] ; sh:targetClass observable:PhoneAccountFacet ; @@ -4178,36 +4178,36 @@ observable:PhoneCallFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:from ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:to ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:duration ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:callType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:endTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:startTime ; ] ; @@ -4258,54 +4258,54 @@ observable:ProcessFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:binary ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:creatorUser ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:parent ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isHidden ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:exitStatus ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:pid ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:currentWorkingDirectory ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:status ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:environmentVariables ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:exitTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] , [ @@ -4336,51 +4336,51 @@ observable:ProfileFacet rdfs:comment "A profile facet is a grouping of characteristics unique to an explicit digital representation of identity and characteristics of the owner of a single user account associated with an online service or application. [based on https://en.wikipedia.org/wiki/User_profile]"@en-US ; sh:property [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path core:name ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactAddress ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactEmail ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactMessaging ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactPhone ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactURL ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:displayName ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profileAccount ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profileCreated ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profileIdentity ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profileService ; ] , [ - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:profileLanguage ; ] ; @@ -4400,8 +4400,8 @@ observable:PropertiesEnumeratedEffectFacet rdfs:comment "A properties enumerated effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a characteristic of the observable object is enumerated. An example of this would be startup parameters for a process."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:properties ; ] ; sh:targetClass observable:PropertiesEnumeratedEffectFacet ; @@ -4421,12 +4421,12 @@ observable:PropertyReadEffectFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:propertyName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:value ; ] ; @@ -4455,32 +4455,32 @@ observable:RasterPictureFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:camera ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:bitsPerPixel ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:pictureHeight ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:pictureWidth ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:imageCompressionMethod ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:pictureType ; ] ; @@ -4580,42 +4580,42 @@ observable:SIMCardFacet sh:property [ sh:class identity:Identity ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:carrier ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:storageCapacityInBytes ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:ICCID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:IMSI ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:PIN ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:PUK ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:SIMForm ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:SIMType ; ] ; @@ -4658,13 +4658,13 @@ observable:SIPAddressFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:displayName ; ] ; @@ -4692,7 +4692,7 @@ observable:SMSMessageFacet rdfs:comment "A SMS message facet is a grouping of characteristics unique to a message conformant to the short message service (SMS) communication protocol standards."@en ; sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isRead ; ] ; sh:targetClass observable:SMSMessageFacet ; @@ -4720,17 +4720,17 @@ observable:SQLiteBlobFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:columnName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:rowCondition ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:tableName ; ] , [ @@ -4775,8 +4775,8 @@ observable:SendControlCodeEffectFacet rdfs:comment "A send control code effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a control code, or other control-oriented communication signal, is sent to the observable object. An example of this would be an action sending a control code changing the running state of a process."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:controlCode ; ] ; sh:targetClass observable:SendControlCodeEffectFacet ; @@ -4848,27 +4848,27 @@ observable:SoftwareFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:cpeid ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:language ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:manufacturer ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:swid ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:version ; ] ; @@ -4889,13 +4889,13 @@ observable:StateChangeEffectFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:newObject ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:oldObject ; ] ; @@ -4923,8 +4923,8 @@ observable:SymbolicLinkFacet rdfs:comment "A symbolic link facet is a grouping of characteristics unique to a file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. [based on https://en.wikipedia.org/wiki/Symbolic_link]"@en ; sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:targetFile ; ] ; sh:targetClass observable:SymbolicLinkFacet ; @@ -4970,32 +4970,32 @@ observable:TaskActionType sh:property [ sh:class observable:IComHandlerActionType ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:iComHandlerAction ; ] , [ sh:class observable:IExecActionType ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:iExecAction ; ] , [ sh:class observable:IShowMessageActionType ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:iShowMessageAction ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:iEmailAction ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:actionID ; ] , [ sh:datatype vocabulary:TaskActionTypeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:actionType ; ] ; @@ -5023,40 +5023,40 @@ observable:TriggerType sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isEnabled ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:triggerDelay ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:triggerMaxRunTime ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:triggerSessionChangeType ; ] , [ sh:datatype vocabulary:TriggerFrequencyVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:triggerFrequency ; ] , [ sh:datatype vocabulary:TriggerTypeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:triggerType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:triggerBeginTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:triggerEndTime ; ] ; @@ -5084,68 +5084,68 @@ observable:TwitterProfileFacet rdfs:comment "A twitter profile facet is a grouping of characteristics unique to an explicit digital representation of identity and characteristics of the owner of a single Twitter user account. [based on https://en.wikipedia.org/wiki/User_profile]" ; sh:property [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:twitterId ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:favoritesCount ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:followersCount ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:friendsCount ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:listedCount ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profileBackgroundLocation ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profileBannerLocation ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profileImageLocation ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profileIsProtected ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:profileIsVerified ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:statusesCount ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:twitterHandle ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:userLocationString ; ] , [ - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:profileBackgroundHash ; ] , [ - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:profileBannerHash ; ] , [ - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:profileImageHash ; ] ; @@ -5174,12 +5174,12 @@ observable:UNIXAccountFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:gid ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:shell ; ] ; @@ -5249,12 +5249,12 @@ observable:UNIXVolumeFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mountPoint ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:options ; ] ; @@ -5283,48 +5283,48 @@ observable:URLFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:host ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:userName ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:port ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:fullValue ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:fragment ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:password ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:path ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:query ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:scheme ; ] ; @@ -5351,47 +5351,47 @@ observable:URLHistoryEntry rdfs:comment "A URL history entry is a grouping of characteristics unique to the properties of a single URL history entry for a particular browser."@en-US ; sh:property [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:browserUserProfile ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:expirationTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:firstVisit ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:hostname ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:lastVisit ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:manuallyEnteredCount ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:pageTitle ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:url ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:visitCount ; ] , [ - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:keywordSearchTerm ; ] , [ - sh:minCount "0"^^xsd:nonNegativeInteger ; + sh:minCount "0"^^xsd:integer ; sh:path observable:referrerUrl ; ] ; @@ -5408,11 +5408,11 @@ observable:URLHistoryFacet rdfs:comment "A URL history facet is a grouping of characteristics unique to the stored URL history for a particular web browser"@en-US ; sh:property [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:browserInformation ; ] , [ - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path observable:urlHistoryEntry ; ] ; @@ -5440,27 +5440,27 @@ observable:URLVisitFacet 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 [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:browserInformation ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:fromURLVisit ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:url ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:urlTransitionType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:visitDuration ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:visitTime ; ] ; @@ -5489,22 +5489,22 @@ observable:UserAccountFacet sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:canEscalatePrivs ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isPrivileged ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isServiceAccount ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:homeDirectory ; ] ; @@ -5533,25 +5533,25 @@ observable:UserSessionFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:effectiveUser ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:effectiveGroup ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:effectiveGroupID ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:loginTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:logoutTime ; ] ; @@ -5571,8 +5571,8 @@ observable:ValuesEnumeratedEffectFacet rdfs:comment "A values enumerated effect facet is a grouping of characteristics unique to the effects of actions upon observable objects where a value of the observable object is enumerated. An example of this would be the values of a registry key."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:values ; ] ; sh:targetClass observable:ValuesEnumeratedEffectFacet ; @@ -5600,12 +5600,12 @@ observable:VolumeFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sectorSize ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:volumeID ; ] ; @@ -5645,73 +5645,73 @@ observable:WhoIsFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:domainName ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:ipAddress ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:registrantContactInfo ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:serverName ; ] , [ sh:class observable:WhoisRegistrarInfoType ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:registrarInfo ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:domainID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:remarks ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sponsoringRegistrar ; ] , [ sh:datatype vocabulary:RegionalRegistryTypeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:regionalInternetRegistry ; ] , [ sh:datatype vocabulary:WhoisDNSSECTypeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:dnssec ; ] , [ sh:datatype vocabulary:WhoisStatusTypeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:status ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:creationDate ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:expirationDate ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:lookupDate ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:updatedDate ; ] , [ @@ -5734,7 +5734,7 @@ 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 observable:WhoisContactTypeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:whoisContactType ; ] ; sh:targetClass observable:WhoisContactFacet ; @@ -5750,41 +5750,41 @@ observable:WhoisRegistrarInfoType sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:contactPhoneNumber ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:emailAddress ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:referralURL ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:whoisServer ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:registrarGUID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:registrarID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:registrarName ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:geolocationAddress ; ] ; @@ -5812,7 +5812,7 @@ observable:WifiAddressFacet rdfs:comment "A Wi-Fi address facet is a grouping of characteristics unique to a media access control (MAC) standards conformant identifier assigned to a device network interface to enable routing and management of IEEE 802.11 standards-conformant communications to and from that device."@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:addressValue ; ] ; sh:targetClass observable:WifiAddressFacet ; @@ -5887,8 +5887,8 @@ observable:WindowsActiveDirectoryAccountFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:objectGUID ; ] , [ @@ -5920,40 +5920,40 @@ observable:WindowsComputerSpecificationFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:windowsDirectory ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:windowsSystemDirectory ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:windowsTempDirectory ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:msProductID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:msProductName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:netBIOSName ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:registeredOrganization ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:registeredOwner ; ] , [ @@ -6065,35 +6065,35 @@ observable:WindowsPEBinaryFileFacet sh:property [ sh:class observable:WindowsPEOptionalHeader ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:optionalHeader ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:numberOfSections ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:numberOfSymbols ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:sizeOfOptionalHeader ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:impHash ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:peType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:timeDateStamp ; ] , [ @@ -6143,7 +6143,7 @@ observable:WindowsPEFileHeader rdfs:label "WindowsPEFileHeader"@en ; rdfs:comment "A Windows PE file header is a grouping of characteristics unique to the 'header' of a Windows PE (Portable Executable) file, consisting of a collection of metadata about the overall nature and structure of the file."@en ; sh:property [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:timeDateStamp ; ] ; sh:targetClass observable:WindowsPEFileHeader ; @@ -6258,18 +6258,18 @@ observable:WindowsPESection sh:property [ sh:datatype xsd:float ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:entropy ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:size ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:name ; ] , [ @@ -6301,30 +6301,30 @@ observable:WindowsPrefetchFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:volume ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:timesExecuted ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:applicationFileName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:prefetchHash ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:firstRun ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:lastRun ; ] , [ @@ -6359,31 +6359,31 @@ observable:WindowsProcessFacet sh:property [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:aslrEnabled ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:depEnabled ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:ownerSID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:priority ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:windowTitle ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:startupInfo ; ] ; @@ -6411,7 +6411,7 @@ observable:WindowsRegistryHiveFacet rdfs:comment "A Windows registry hive facet is a grouping of characteristics unique to a particular logical group of keys, subkeys, and values in a Windows registry (a hierarchical database that stores low-level settings for the Microsoft Windows operating system and for applications that opt to use the registry). [based on https://en.wikipedia.org/wiki/Windows_Registry]"@en ; sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:hiveType ; ] ; sh:targetClass observable:WindowsRegistryHiveFacet ; @@ -6439,22 +6439,22 @@ observable:WindowsRegistryKeyFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:creator ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:numberOfSubkeys ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:key ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:modifiedTime ; ] , [ @@ -6474,17 +6474,17 @@ observable:WindowsRegistryValue sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path core:name ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:data ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:dataType ; ] ; @@ -6513,35 +6513,35 @@ observable:WindowsServiceFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path observable:serviceName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:displayName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:groupName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:startCommandLine ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:serviceStatus ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:serviceType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:startType ; ] , [ @@ -6672,84 +6672,84 @@ observable:WindowsTaskFacet sh:property [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:account ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:workItemData ; ] , [ sh:class observable:ObservableObject ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:workingDirectory ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:exitCode ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:maxRunTime ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:accountLogonType ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:accountRunLevel ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:imageName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:parameters ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:taskComment ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:taskCreator ; ] , [ sh:datatype vocabulary:TaskPriorityVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:priority ; ] , [ sh:datatype vocabulary:TaskStatusVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:status ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:mostRecentRunTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:nextRunTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:observableCreatedTime ; ] , [ @@ -6787,25 +6787,25 @@ observable:WindowsThreadFacet sh:property [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:priority ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:context ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:securityAttributes ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:creationTime ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:runningStatus ; ] , [ @@ -6838,17 +6838,17 @@ observable:WindowsVolumeFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:driveLetter ; ] , [ sh:datatype vocabulary:WindowsDriveTypeVocab ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:driveType ; ] , [ sh:datatype vocabulary:WindowsVolumeAttributeVocab ; - sh:maxCount "4"^^xsd:nonNegativeInteger ; + sh:maxCount "4"^^xsd:integer ; sh:path observable:windowsVolumeAttributes ; ] ; @@ -6888,12 +6888,12 @@ observable:WirelessNetworkConnectionFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:baseStation ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:ssid ; ] ; @@ -6922,77 +6922,77 @@ observable:X509CertificateFacet sh:property [ sh:class observable:X509V3ExtensionsFacet ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:x509v3extensions ; ] , [ sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:isSelfSigned ; ] , [ sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subjectPublicKeyExponent ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:issuer ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:serialNumber ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:signature ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:signatureAlgorithm ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subject ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subjectPublicKeyAlgorithm ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subjectPublicKeyModulus ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:version ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:issuerHash ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subjectHash ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:thumbprintHash ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:validityNotAfter ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:validityNotBefore ; ] ; @@ -7021,80 +7021,80 @@ observable:X509V3ExtensionsFacet sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:authorityKeyIdentifier ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:basicConstraints ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:certificatePolicies ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:crlDistributionPoints ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:extendedKeyUsage ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:inhibitAnyPolicy ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:issuerAlternativeName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:keyUsage ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:nameConstraints ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:policyConstraints ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:policyMappings ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subjectAlternativeName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subjectDirectoryAttributes ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:subjectKeyIdentifier ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:privateKeyUsagePeriodNotAfter ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path observable:privateKeyUsagePeriodNotBefore ; ] ; diff --git a/uco-tool/tool.ttl b/uco-tool/tool.ttl index 5914c575..d2a7a760 100644 --- a/uco-tool/tool.ttl +++ b/uco-tool/tool.ttl @@ -37,7 +37,7 @@ tool:BuildConfigurationType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:configurationSettingDescription ; ] , [ @@ -57,7 +57,7 @@ tool:BuildFacet rdfs:comment "A build facet is a grouping of characteristics unique to a particular version of a software."@en ; sh:property [ sh:class tool:BuildInformationType ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:buildInformation ; ] ; sh:targetClass tool:BuildFacet ; @@ -73,46 +73,46 @@ tool:BuildInformationType sh:property [ sh:class tool:BuildConfigurationType ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:buildConfiguration ; ] , [ sh:class tool:BuildUtilityType ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:buildUtility ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:buildID ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:buildLabel ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:buildOutputLog ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:buildProject ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:buildScript ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:buildVersion ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:compilationDate ; ] , [ @@ -135,18 +135,18 @@ tool:BuildUtilityType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path tool:buildUtilityName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:cpeid ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:swid ; ] ; @@ -163,16 +163,16 @@ tool:CompilerType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:cpeid ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:swid ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:compilerInformalDescription ; ] ; @@ -189,24 +189,24 @@ tool:ConfigurationSettingType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path tool:itemName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path tool:itemValue ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:itemDescription ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:itemType ; ] ; @@ -234,12 +234,12 @@ tool:DependencyType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:dependencyType ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path tool:dependencyDescription ; ] ; @@ -256,14 +256,14 @@ tool:LibraryType sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path tool:libraryName ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path tool:libraryVersion ; ] ; @@ -292,22 +292,22 @@ tool:Tool sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:creator ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:servicePack ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:toolType ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path tool:version ; ] , [ diff --git a/uco-types/types.ttl b/uco-types/types.ttl index 62974863..1f6d84dd 100644 --- a/uco-types/types.ttl +++ b/uco-types/types.ttl @@ -29,7 +29,7 @@ types:ControlledDictionary rdfs:comment "A controlled dictionary is a list of (term/key, value) pairs where each term/key exists no more than once and is constrained to an explicitly defined set of values."@en ; sh:property [ sh:class types:ControlledDictionaryEntry ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path types:entry ; ] ; sh:targetClass types:ControlledDictionary ; @@ -45,13 +45,13 @@ types:ControlledDictionaryEntry sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path types:value ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path types:key ; ] ; @@ -67,7 +67,7 @@ types:Dictionary rdfs:comment "A dictionary is list of (term/key, value) pairs with each term/key existing no more than once."@en ; sh:property [ sh:class types:DictionaryEntry ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:minCount "1"^^xsd:integer ; sh:path types:entry ; ] ; sh:targetClass types:Dictionary ; @@ -83,14 +83,14 @@ types:DictionaryEntry sh:property [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path types:key ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path types:value ; ] ; @@ -107,13 +107,13 @@ types:Hash sh:property [ sh:datatype xsd:hexBinary ; - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path types:hashValue ; ] , [ - sh:maxCount "1"^^xsd:nonNegativeInteger ; - sh:minCount "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:path types:hashMethod ; ] ; From 5b2954df3e148e8a4f44743675f7b2b82b22d0d2 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 26 Jul 2021 21:14:12 -0400 Subject: [PATCH 59/94] Manually apply xsd prefix The explicit binding of "xsd:" stems from CASE AC-154. rdflib has been found to assign prefix "xs:" in an ontology file if the ontology had no XML Schema Datatype references (despite several attempts to force the binding), and this ends up overriding "xsd:" prefixes in any combined graph files. All instances of the "xs:" prefix were identified with grep. Note one instance was found on a count constraint, not a prefix. References: * [CASE AC-154] XML Schema datatype prefix needs to be explicit in all examples * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- uco-master/uco.ttl | 2 +- uco-pattern/pattern.ttl | 4 ++-- uco-role/role.ttl | 2 +- uco-time/time.ttl | 2 +- uco-victim/victim.ttl | 2 +- uco-vocabulary/vocabulary.ttl | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/uco-master/uco.ttl b/uco-master/uco.ttl index 92366d80..1229f2d8 100644 --- a/uco-master/uco.ttl +++ b/uco-master/uco.ttl @@ -28,7 +28,7 @@ @prefix rdfs: . @prefix sh: . @prefix types: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; diff --git a/uco-pattern/pattern.ttl b/uco-pattern/pattern.ttl index 96e6ca10..2ddf737a 100644 --- a/uco-pattern/pattern.ttl +++ b/uco-pattern/pattern.ttl @@ -8,7 +8,7 @@ @prefix rdf: . @prefix rdfs: . @prefix sh: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; @@ -26,7 +26,7 @@ pattern:LogicalPattern rdfs:comment "A logical pattern is a grouping of characteristics unique to an informational pattern expressed via a structured pattern expression following the rules of logic."@en ; sh:property [ sh:datatype pattern:PatternExpression ; - sh:maxCount "1"^^xs:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; sh:path pattern:patternExpression ; ] ; sh:targetClass pattern:LogicalPattern ; diff --git a/uco-role/role.ttl b/uco-role/role.ttl index b9db2738..92d3147d 100644 --- a/uco-role/role.ttl +++ b/uco-role/role.ttl @@ -8,7 +8,7 @@ @prefix rdfs: . @prefix role: . @prefix sh: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; diff --git a/uco-time/time.ttl b/uco-time/time.ttl index 428b3a9d..43353e54 100644 --- a/uco-time/time.ttl +++ b/uco-time/time.ttl @@ -7,7 +7,7 @@ @prefix rdfs: . @prefix sh: . @prefix time: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; diff --git a/uco-victim/victim.ttl b/uco-victim/victim.ttl index ff22890f..84b85b1b 100644 --- a/uco-victim/victim.ttl +++ b/uco-victim/victim.ttl @@ -9,7 +9,7 @@ @prefix role: . @prefix sh: . @prefix victim: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; diff --git a/uco-vocabulary/vocabulary.ttl b/uco-vocabulary/vocabulary.ttl index fc149530..cf9273da 100644 --- a/uco-vocabulary/vocabulary.ttl +++ b/uco-vocabulary/vocabulary.ttl @@ -6,7 +6,7 @@ @prefix rdfs: . @prefix sh: . @prefix vocabulary: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; From 6bae3866fd390c67eb037b84c372cebd45d11586 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 27 Jul 2021 15:12:37 -0400 Subject: [PATCH 60/94] Regenerate Make-managed files This patch logs the state of getting CI tests to pass, which still falls short of CI passing. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes --- .../action_inheritance_PASS_validation.ttl | 6 +++--- .../action_inheritance_XFAIL_validation.ttl | 15 ++++++++++--- tests/examples/location_PASS_validation.ttl | 6 +++--- tests/examples/location_XFAIL_validation.ttl | 21 ++++++++++++++++--- 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/tests/examples/action_inheritance_PASS_validation.ttl b/tests/examples/action_inheritance_PASS_validation.ttl index ad5d1106..9b8084b8 100644 --- a/tests/examples/action_inheritance_PASS_validation.ttl +++ b/tests/examples/action_inheritance_PASS_validation.ttl @@ -1,6 +1,6 @@ -@prefix ns1: . +@prefix sh: . @prefix xsd: . -[] a ns1:ValidationReport ; - ns1:conforms true . +[] a sh:ValidationReport ; + sh:conforms true . diff --git a/tests/examples/action_inheritance_XFAIL_validation.ttl b/tests/examples/action_inheritance_XFAIL_validation.ttl index ad5d1106..5c39cab5 100644 --- a/tests/examples/action_inheritance_XFAIL_validation.ttl +++ b/tests/examples/action_inheritance_XFAIL_validation.ttl @@ -1,6 +1,15 @@ -@prefix ns1: . +@prefix action: . +@prefix sh: . @prefix xsd: . -[] a ns1:ValidationReport ; - ns1:conforms true . +[] a sh:ValidationReport ; + sh:conforms false ; + sh:result [ a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "More than 0 values on kb:action-lifecycle1->action:actionStatus" ; + sh:resultPath action:actionStatus ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:MaxCountConstraintComponent ; + sh:sourceShape [ sh:maxCount 0 ; + sh:path action:actionStatus ] ] . diff --git a/tests/examples/location_PASS_validation.ttl b/tests/examples/location_PASS_validation.ttl index ad5d1106..9b8084b8 100644 --- a/tests/examples/location_PASS_validation.ttl +++ b/tests/examples/location_PASS_validation.ttl @@ -1,6 +1,6 @@ -@prefix ns1: . +@prefix sh: . @prefix xsd: . -[] a ns1:ValidationReport ; - ns1:conforms true . +[] a sh:ValidationReport ; + sh:conforms true . diff --git a/tests/examples/location_XFAIL_validation.ttl b/tests/examples/location_XFAIL_validation.ttl index ad5d1106..9aea6b13 100644 --- a/tests/examples/location_XFAIL_validation.ttl +++ b/tests/examples/location_XFAIL_validation.ttl @@ -1,6 +1,21 @@ -@prefix ns1: . +@prefix location: . +@prefix sh: . @prefix xsd: . -[] a ns1:ValidationReport ; - ns1:conforms true . +[] a sh:ValidationReport ; + sh:conforms false ; + sh:result [ a sh:ValidationResult ; + sh:focusNode [ a location:SimpleAddressFacet ; + location:locality "Seattle" ; + location:postalCode 98052 ; + location:region "WA" ; + location:street "20341 Whitworth Institute 405 N. Whitworth" ] ; + sh:resultMessage "Value is not Literal with datatype xsd:string" ; + sh:resultPath location:postalCode ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceShape [ sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:path location:postalCode ] ; + sh:value 98052 ] . From 341577640a058c0ec92ff735eb915391e8d4ed8a Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Mon, 28 Jun 2021 12:58:27 -0400 Subject: [PATCH 61/94] Added property restriction to observable:ProfileFacet (CP-7) Added observable:profileWebsite as a property restriction (property shape) on observable:ProfileFacet. This fix is in continuation of implementing the changes mentioned within CP-7. AJN: This cherry-pick ended up being a manual re-write of the original patch Trevor authored. Sorting confused cherry-pick pretty thoroughly. References: * [OC-26] (CP-7) Create new Profile facet * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Acked-by: Trevor Bobka (cherry picked from commit f70b15b284c67bf5838ee141e110d1e7661d8c4d) --- uco-observable/observable.ttl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index e8c35be9..b79beef6 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -4382,6 +4382,10 @@ observable:ProfileFacet [ sh:minCount "0"^^xsd:integer ; sh:path observable:profileLanguage ; + ] , + [ + sh:minCount "0"^^xsd:integer ; + sh:path observable:profileWebsite ; ] ; sh:targetClass observable:ProfileFacet ; From 335678fcff3b59d5c07909cc09adfec26d4b11ee Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Mon, 28 Jun 2021 13:28:23 -0400 Subject: [PATCH 62/94] Added cardinality restraint for observable:profileWebsite AJN: This cherry-pick ended up being a manual re-write of the original patch Trevor authored. Sorting confused cherry-pick pretty thoroughly. References: * [OC-26] (CP-7) Create new Profile facet * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes (cherry picked from commit c39b34ab9cd03c97699eca74987c97265e42894f) --- uco-observable/observable.ttl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index b79beef6..1733b143 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -4380,12 +4380,12 @@ observable:ProfileFacet sh:path observable:profileService ; ] , [ - sh:minCount "0"^^xsd:integer ; - sh:path observable:profileLanguage ; + sh:maxCount "1"^^xsd:integer ; + sh:path observable:profileWebsite ; ] , [ sh:minCount "0"^^xsd:integer ; - sh:path observable:profileWebsite ; + sh:path observable:profileLanguage ; ] ; sh:targetClass observable:ProfileFacet ; From 0ed64559f7e20d73d3f8da6f213565810a8e73b2 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Mon, 28 Jun 2021 13:40:45 -0400 Subject: [PATCH 63/94] Fixed property restriction typo in observable:ContactMessaging In accordance with CP-5, 'observable:ContactMessaging' should have the property restriction 'observable:messagingAddress' instead of 'observable:contactAddress'. This commit fixes that typo and wil remove 'observable:messagingAddress' as a potential orphan property. AJN: This cherry-pick ended up being a manual re-write of the original patch Trevor authored. Sorting confused cherry-pick pretty thoroughly. References: * [OC-24] (CP-5) Refactor and improve contacts * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Acked-by: Trevor Bobka (cherry picked from commit a4029291457ac47e1d81ad9c5d36201f84597c9d) --- uco-observable/observable.ttl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 1733b143..6e3b4135 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -1146,12 +1146,12 @@ observable:ContactMessaging [ sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:contactAddress ; + sh:path observable:contactMessagingPlatform ; ] , [ sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:contactMessagingPlatform ; + sh:path observable:messagingAddress ; ] ; sh:targetClass observable:ContactMessaging ; From 861e2874abfa7f2fe171076d184b597f1154c9aa Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 19 Jul 2021 16:05:40 -0400 Subject: [PATCH 64/94] Add script to assign triple-object type checking An issue was found in the test data, where nodes were incorrectly spelled as RDF literals instead of resource references. Unfortunately, the current state of the SHACL implementation did not identify this typing error. The rdfs:range defined on the properties needs to be carried into sh:PropertyShape constraints. Note that there are eight datatype properties that do not have sh:datatype constraints generated, because they are currently implemented in UCO as blank nodes. Not having a name, they can't be referenced in multiple locations. Some of the blank nodes touch on tickets in UCO's backlog, such as Bug OC-12 (which touches on other matters). Some raise issues of hierarchies of RDF-literals, such as the constrained core:confidence range. For at least these reasons, sh:datatype annotations for properties with blank ranges will be left for a future version of UCO to address. Here is a transcript of the script's run, listing the just-described datatype properties: WARNING:populate_node_kind.py:n_node_shape = https://unifiedcyberontology.org/ontology/uco/core#ConfidenceFacet. WARNING:populate_node_kind.py:n_path = https://unifiedcyberontology.org/ontology/uco/core#confidence. WARNING:populate_node_kind.py:1 datatype properties with blank nodes as ranges found, and will not receive sh:datatype constraints. WARNING:populate_node_kind.py:n_node_shape = https://unifiedcyberontology.org/ontology/uco/observable#ContactSIP. WARNING:populate_node_kind.py:n_path = https://unifiedcyberontology.org/ontology/uco/observable#contactSIPScope. WARNING:populate_node_kind.py:n_node_shape = https://unifiedcyberontology.org/ontology/uco/observable#ContactEmail. WARNING:populate_node_kind.py:n_path = https://unifiedcyberontology.org/ontology/uco/observable#contactEmailScope. WARNING:populate_node_kind.py:n_node_shape = https://unifiedcyberontology.org/ontology/uco/observable#URLVisitFacet. WARNING:populate_node_kind.py:n_path = https://unifiedcyberontology.org/ontology/uco/observable#urlTransitionType. WARNING:populate_node_kind.py:n_node_shape = https://unifiedcyberontology.org/ontology/uco/observable#WhoisContactFacet. WARNING:populate_node_kind.py:n_path = https://unifiedcyberontology.org/ontology/uco/observable#whoisContactType. WARNING:populate_node_kind.py:n_node_shape = https://unifiedcyberontology.org/ontology/uco/observable#ContactPhone. WARNING:populate_node_kind.py:n_path = https://unifiedcyberontology.org/ontology/uco/observable#contactPhoneScope. WARNING:populate_node_kind.py:n_node_shape = https://unifiedcyberontology.org/ontology/uco/observable#ContactAddress. WARNING:populate_node_kind.py:n_path = https://unifiedcyberontology.org/ontology/uco/observable#contactAddressScope. WARNING:populate_node_kind.py:n_node_shape = https://unifiedcyberontology.org/ontology/uco/observable#ContactURL. WARNING:populate_node_kind.py:n_path = https://unifiedcyberontology.org/ontology/uco/observable#contactURLScope. WARNING:populate_node_kind.py:7 datatype properties with blank nodes as ranges found, and will not receive sh:datatype constraints. No analagous issues were found for `rdfs:ObjectProperty`s. The above transcripts still apply after the cherry-pick from the -v6 tree. References: * [OC-12] UCO's idea of "Open vocabulary" does not agree with its implementation with owl:oneOf * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes * [Feature-CP-23-v6] https://github.com/ajnelson-nist/UCO/tree/archive/Feature-CP-23-v6 Signed-off-by: Alex Nelson (cherry picked from commit 8e38bbc9f795809c66d0a9ac808e35e7dcbab144) --- src/populate_node_kind.py | 286 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 286 insertions(+) create mode 100644 src/populate_node_kind.py diff --git a/src/populate_node_kind.py b/src/populate_node_kind.py new file mode 100644 index 00000000..a31ba279 --- /dev/null +++ b/src/populate_node_kind.py @@ -0,0 +1,286 @@ +#!/usr/bin/make -f + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +""" +The purpose of this program is to build definition statements in a SHACL ontology, such that sh:PropertyShapes record the rdfs:range defined on the property definition. + +The program's current intent is as a single-purpose utility. Usage: +1. Be in a Python environment that has rdflib installed. (This could be done by enabling the virtual environment under ../tests/venv.) +2. Run this program. It will **overwrite** all ontology files matching the pattern ../uco-*/*.ttl. +3. Re-run 'make check' from the root directory, to re-normalize ontology files. + +The outline of this program is: +1. Load all ontology files into dictionary of graphs, keyed by relpath from top_srcdir. +2. Store all property-defining rdf:type and rdfs:range triples from all loaded ontologies into a "properties" graph. +3. For each ontology (by relpath): + 3.1 CONSTRUCT triples for each PropertyShape, based on property being ObjectProperty or DatatypeProperty. + 3.1.1 DatatypeProperty -> sh:nodeKind = sh:Literal + 3.1.2 DatatypeProperty -> sh:datatype = (rdfs:range of property, if an IRI[1]) + 3.1.3 ObjectProperty -> sh:nodeKind = sh:BlankNodeOrIRI + 3.1.4 ObjectProperty -> sh:class = (rdfs:range of property, if an IRI[1]) + [1] If a property's rdfs:range is a blank node, currently this script does NOT generate a sh:datatype or sh:class constraint, due to needing to address ontology design issues. +""" + +__version__ = "0.1.0" + +import argparse +import logging +import os +import pathlib +import typing + +import rdflib.plugins.sparql + +_logger = logging.getLogger(os.path.basename(__file__)) + +NS_OWL = rdflib.OWL +NS_RDF = rdflib.RDF +NS_RDFS = rdflib.RDFS +NS_SH = rdflib.SH + +def main(): + argument_parser = argparse.ArgumentParser() + argument_parser.add_argument("--debug", action="store_true") + argument_parser.add_argument("--dry-run", action="store_true", help="Count updates, but do not overwrite ontology files.") + args = argument_parser.parse_args() + + logging.basicConfig(level=logging.DEBUG if args.debug else logging.INFO) + + # 0. Self-orient. + top_srcdir = pathlib.Path(os.path.dirname(__file__)) / ".." + + # Sanity check. + assert (top_srcdir / ".git").exists(), "Hard-coded top_srcdir discovery is no longer correct." + + # 1. Load all ontology files into dictionary of graphs. + + # The extra filtering step loop to keep from picking up CI files. Path.glob returns dot files, unlike shell's glob. + # The uco.ttl file is also skipped because the Python output removes supplementary prefix statements. + ontology_filepaths : typing.List[pathlib.Path] = [] + for x in top_srcdir.glob("uco-*/*.ttl"): + if ".check-" in str(x): + continue + if "uco.ttl" in str(x): + continue + ontology_filepaths.append(x) + assert len(ontology_filepaths) > 0, "Hard-coded relative paths to ontology files is no longer correct." + + filepath_to_graph : typing.Dict[pathlib.Path, rdflib.Graph] = dict() + + for ontology_filepath in sorted(ontology_filepaths): + _logger.debug("Loading %s...", ontology_filepath) + filepath_to_graph[ontology_filepath] = rdflib.Graph() + ontology_filepath_str = str(ontology_filepath) + filepath_to_graph[ontology_filepath].parse(ontology_filepath_str, format=rdflib.util.guess_format(ontology_filepath_str)) + _logger.debug("Loaded.") + + # Build global nsdict. + nsdict = dict() + for ontology_filepath in sorted(filepath_to_graph.keys()): + tmp_nsdict = {k:v for (k,v) in filepath_to_graph[ontology_filepath].namespace_manager.namespaces()} + for key in tmp_nsdict: + if key in nsdict: + try: + assert nsdict[key] == tmp_nsdict[key] + except: + _logger.error("ontology_filepath = %s.", ontology_filepath) + _logger.error("key = %r.", key) + _logger.error("nsdict[key] = %r.", nsdict[key]) + _logger.error("tmp_nsdict[key] = %r.", tmp_nsdict[key]) + raise + nsdict[key] = tmp_nsdict[key] + + # 2. Store all property-defining rdf:type and rdfs:range triples from all loaded ontologies into a "properties" graph. + + properties_graph = rdflib.Graph() + _logger.debug("Building properties graph...") + for ontology_filepath in sorted(filepath_to_graph.keys()): + for n_type_value in [NS_OWL.DatatypeProperty, NS_OWL.ObjectProperty]: + for triple_0 in filepath_to_graph[ontology_filepath].triples(( + None, + NS_RDF.type, + n_type_value + )): + properties_graph.add(triple_0) + for triple_1 in filepath_to_graph[ontology_filepath].triples(( + triple_0[0], + NS_RDFS.range, + None + )): + properties_graph.add(triple_1) + _logger.debug("Built.") + + #3. For each ontology (by relpath): + # 3.1 CONSTRUCT triples for each PropertyShape, based on property being ObjectProperty or DatatypeProperty. + + # 3.1.0.1 DatatypeProperty, rdfs:range a bnode -> Warn. + select_datatype_range_bnode_query = rdflib.plugins.sparql.prepareQuery("""\ +SELECT ?nNodeShape ?nPath +WHERE { + ?nNodeShape + a sh:NodeShape ; + sh:property ?nPropertyShape ; + . + + ?nPropertyShape + sh:path ?nPath ; + . + + ?nPath + a owl:DatatypeProperty ; + rdfs:range ?nRange ; + . + + FILTER isBlank(?nRange) +} +""", initNs=nsdict) + + # 3.1.0.2 ObjectProperty, rdfs:range a bnode -> Warn. + select_object_range_bnode_query = rdflib.plugins.sparql.prepareQuery("""\ +SELECT ?nNodeShape ?nPath +WHERE { + ?nNodeShape + a sh:NodeShape ; + sh:property ?nPropertyShape ; + . + + ?nPropertyShape + sh:path ?nPath ; + . + + ?nPath + a owl:ObjectProperty ; + rdfs:range ?nRange ; + . + + FILTER isBlank(?nRange) +} +""", initNs=nsdict) + + # 3.1.1 DatatypeProperty -> sh:nodeKind = sh:Literal + # 3.1.2 DatatypeProperty -> sh:datatype = (rdfs:range of property) + construct_datatype_property_query = rdflib.plugins.sparql.prepareQuery("""\ +CONSTRUCT { + ?nPropertyShape + sh:datatype ?nRange ; + sh:nodeKind sh:Literal ; + . +} +WHERE { + ?nNodeShape + a sh:NodeShape ; + sh:property ?nPropertyShape ; + . + + ?nPropertyShape + sh:path ?nPath ; + . + + ?nPath + a owl:DatatypeProperty ; + . + + OPTIONAL { + ?nPath + rdfs:range ?nRange ; + . + + FILTER isIRI(?nRange) + } +} +""", initNs=nsdict) + + # 3.1.3 ObjectProperty -> sh:nodeKind = sh:BlankNodeOrIRI + # 3.1.4 ObjectProperty -> sh:class = (rdfs:range of property) (NOT performed currently) + construct_object_property_query = rdflib.plugins.sparql.prepareQuery("""\ +CONSTRUCT { + ?nPropertyShape + sh:class ?nRange ; + sh:nodeKind sh:BlankNodeOrIRI ; + . +} +WHERE { + ?nNodeShape + a sh:NodeShape ; + sh:property ?nPropertyShape ; + . + + ?nPropertyShape + sh:path ?nPath ; + . + + ?nPath + a owl:ObjectProperty ; + . + + OPTIONAL { + ?nPath + rdfs:range ?nRange ; + . + FILTER isIRI(?nRange) + } +} +""", initNs=nsdict) + + for ontology_filepath in sorted(filepath_to_graph.keys()): + _logger.debug("Augmenting %s...", ontology_filepath) + + _logger.debug("len(base_graph) = %d.", len(filepath_to_graph[ontology_filepath])) + + base_and_properties_graph = properties_graph + filepath_to_graph[ontology_filepath] + _logger.debug("len(base_and_properties_graph) = %d.", len(base_and_properties_graph)) + + constructed_graph = rdflib.Graph() + + _logger.debug("Finding datatype properties with blank nodes as ranges ...") + num_found = 0 + for result in base_and_properties_graph.query(select_datatype_range_bnode_query): + (n_node_shape, n_path) = result + _logger.warning("n_node_shape = %s.", n_node_shape) + _logger.warning("n_path = %s.", n_path) + num_found += 1 + if num_found == 0: + _logger.debug("None found.") + else: + _logger.warning("%d datatype properties with blank nodes as ranges found, and will not receive sh:datatype constraints.", num_found) + + _logger.debug("Finding object properties with blank nodes as ranges ...") + num_found = 0 + for result in base_and_properties_graph.query(select_object_range_bnode_query): + (n_node_shape, n_path) = result + _logger.error("n_node_shape = %s.", n_node_shape) + _logger.error("n_path = %s.", n_path) + num_found += 1 + if num_found == 0: + _logger.debug("None found.") + else: + _logger.error("%d object properties with blank nodes as ranges found, and will not receive sh:class constraints.", num_found) + + for result in base_and_properties_graph.query(construct_datatype_property_query): + constructed_graph.add(result) + _logger.debug("len(constructed_graph (+d)) = %d.", len(constructed_graph)) + + for result in base_and_properties_graph.query(construct_object_property_query): + constructed_graph.add(result) + _logger.debug("len(constructed_graph (+o)) = %d.", len(constructed_graph)) + + filepath_to_graph[ontology_filepath] += constructed_graph + _logger.debug("len(base_graph) = %d.", len(filepath_to_graph[ontology_filepath])) + + if not args.dry_run: + filepath_to_graph[ontology_filepath].serialize(str(ontology_filepath), format="turtle") + + _logger.debug("Augmented.") + +if __name__ == "__main__": + main() From 29c01ef0d55ff3881f39d412e5a4962ebce4a4bf Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 27 Jul 2021 16:46:33 -0400 Subject: [PATCH 65/94] Normalize ontology files after adding type constraints This causes a significant degree of line churn due to the PropertyShape nodes getting lexicographically-lower properties. With this patch, CI based on known induced errors in example data passes. A further manual fix is to be applied, and another CI component based on property shapes related by subclasses is to be added. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- uco-action/action.ttl | 77 +- uco-core/core.ttl | 89 +- uco-identity/identity.ttl | 10 + uco-location/location.ttl | 13 + uco-marking/marking.ttl | 40 +- uco-observable/observable.ttl | 2195 ++++++++++++++++++++++++--------- uco-pattern/pattern.ttl | 1 + uco-role/role.ttl | 2 +- uco-time/time.ttl | 3 +- uco-tool/tool.ttl | 88 +- uco-types/types.ttl | 19 +- uco-victim/victim.ttl | 2 +- uco-vocabulary/vocabulary.ttl | 3 +- 13 files changed, 1886 insertions(+), 656 deletions(-) diff --git a/uco-action/action.ttl b/uco-action/action.ttl index 60eb0db2..4aadfec1 100644 --- a/uco-action/action.ttl +++ b/uco-action/action.ttl @@ -40,27 +40,38 @@ action:Action rdfs:comment "An action is something that may be done or performed."@en ; sh:property [ - sh:datatype xsd:nonNegativeInteger ; - sh:maxCount "1"^^xsd:integer ; - sh:path action:actionCount ; + sh:class action:Action ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:subaction ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path action:actionStatus ; + sh:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:error ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:endTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:startTime ; ] , [ - sh:path action:error ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:actionCount ; ] , [ - sh:path action:subaction ; + sh:datatype vocabulary:ActionStatusTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:actionStatus ; ] ; sh:targetClass action:Action ; @@ -79,12 +90,14 @@ action:ActionArgumentFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:argumentName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:value ; ] ; @@ -103,21 +116,25 @@ action:ActionEstimationFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:estimatedCost ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:estimatedEfficacy ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:estimatedImpact ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:objective ; ] ; @@ -137,24 +154,28 @@ action:ActionFrequencyFacet sh:datatype xsd:float ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:rate ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:scale ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:units ; ] , [ sh:datatype vocabulary:TrendVocab ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path action:trend ; ] ; @@ -174,28 +195,38 @@ action:ActionLifecycle sh:class action:ArrayOfAction ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path action:phase ; ] , [ - sh:datatype xsd:nonNegativeInteger ; + sh:class core:UcoObject ; sh:maxCount "0"^^xsd:integer ; - sh:path action:actionCount ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:error ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "0"^^xsd:integer ; - sh:path action:actionStatus ; + sh:nodeKind sh:Literal ; + sh:path action:endTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "0"^^xsd:integer ; - sh:path action:endTime ; + sh:nodeKind sh:Literal ; + sh:path action:startTime ; ] , [ + sh:datatype xsd:nonNegativeInteger ; sh:maxCount "0"^^xsd:integer ; - sh:path action:error ; + sh:nodeKind sh:Literal ; + sh:path action:actionCount ; ] , [ + sh:datatype vocabulary:ActionStatusTypeVocab ; sh:maxCount "0"^^xsd:integer ; - sh:path action:startTime ; + sh:nodeKind sh:Literal ; + sh:path action:actionStatus ; ] ; sh:targetClass action:ActionLifecycle ; @@ -228,27 +259,39 @@ action:ActionReferencesFacet [ sh:class core:UcoObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path action:environment ; ] , [ sh:class core:UcoObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path action:performer ; ] , [ + sh:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path action:instrument ; ] , [ - sh:path action:location ; - ] , - [ + sh:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path action:object ; ] , [ + sh:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path action:participant ; ] , [ + sh:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path action:result ; + ] , + [ + sh:class location:Location ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:location ; ] ; sh:targetClass action:ActionReferencesFacet ; @@ -262,7 +305,9 @@ action:ArrayOfAction rdfs:label "ArrayOfAction"@en ; rdfs:comment "An array of action is an ordered list of references to things that may be done or performed."@en ; sh:property [ + sh:class action:Action ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path action:action ; ] ; sh:targetClass action:ArrayOfAction ; diff --git a/uco-core/core.ttl b/uco-core/core.ttl index 65d7554c..1d8e8fbc 100644 --- a/uco-core/core.ttl +++ b/uco-core/core.ttl @@ -28,6 +28,7 @@ core:Annotation sh:property [ sh:class core:UcoObject ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path core:object ; ] ; sh:targetClass core:Annotation ; @@ -42,6 +43,8 @@ core:Assertion rdfs:label "Assertion"@en ; rdfs:comment "An assertion is a statement declared to be true."@en ; sh:property [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path core:statement ; ] ; sh:targetClass core:Assertion ; @@ -58,6 +61,7 @@ core:AttributedName sh:property [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:namingAuthority ; ] ; sh:targetClass core:AttributedName ; @@ -97,6 +101,7 @@ core:ConfidenceFacet sh:datatype xsd:nonNegativeInteger ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:confidence ; ] ; sh:targetClass core:ConfidenceFacet ; @@ -113,6 +118,7 @@ core:ContextualCompilation sh:property [ sh:class core:UcoObject ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path core:object ; ] ; sh:targetClass core:ContextualCompilation ; @@ -130,17 +136,20 @@ core:ControlledVocabulary [ sh:datatype xsd:anyURI ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:constrainingVocabularyReference ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:value ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:constrainingVocabularyName ; ] ; @@ -159,11 +168,13 @@ core:EnclosingCompilation [ sh:class core:UcoObject ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path core:object ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:description ; ] ; @@ -179,16 +190,22 @@ core:ExternalReference rdfs:comment "Characteristics of a reference to a resource outside of the UCO."@en ; sh:property [ + sh:datatype xsd:anyURI ; sh:maxCount "1"^^xsd:integer ; - sh:path core:definingContext ; + sh:nodeKind sh:Literal ; + sh:path core:referenceURL ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path core:externalIdentifier ; + sh:nodeKind sh:Literal ; + sh:path core:definingContext ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path core:referenceURL ; + sh:nodeKind sh:Literal ; + sh:path core:externalIdentifier ; ] ; sh:targetClass core:ExternalReference ; @@ -213,6 +230,8 @@ core:Grouping rdfs:label "Grouping"@en ; rdfs:comment "A grouping is a compilation of referenced UCO content with a shared context."@en ; sh:property [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path core:context ; ] ; sh:targetClass core:Grouping ; @@ -275,29 +294,37 @@ core:Relationship sh:class core:UcoObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path core:target ; ] , [ sh:class core:UcoObject ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path core:source ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:isDirectional ; ] , [ - sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; - sh:path core:kindOfRelationship ; - ] , - [ + sh:datatype xsd:dateTime ; + sh:nodeKind sh:Literal ; sh:path core:endTime ; ] , [ + sh:datatype xsd:dateTime ; + sh:nodeKind sh:Literal ; sh:path core:startTime ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:kindOfRelationship ; ] ; sh:targetClass core:Relationship ; @@ -314,50 +341,68 @@ core:UcoObject [ sh:class core:ExternalReference ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path core:externalReference ; ] , + [ + sh:class core:Facet ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:hasFacet ; + ] , [ sh:class core:IdentityAbstraction ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path core:createdBy ; ] , + [ + sh:class core:MarkingDefinitionAbstraction ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:objectMarking ; + ] , [ sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:objectCreatedTime ; ] , + [ + sh:datatype xsd:dateTime ; + sh:nodeKind sh:Literal ; + sh:path core:modifiedTime ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:name ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:specVersion ; ] , [ - sh:datatype types:Identifier ; - sh:maxCount "1"^^xsd:integer ; - sh:path core:id ; - ] , - [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path core:description ; ] , [ - sh:path core:hasFacet ; - ] , - [ - sh:path core:modifiedTime ; - ] , - [ - sh:path core:objectMarking ; - ] , - [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path core:tag ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path core:type ; + ] , + [ + sh:datatype types:Identifier ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:id ; ] ; sh:targetClass core:UcoObject ; diff --git a/uco-identity/identity.ttl b/uco-identity/identity.ttl index 98229d03..fdabe212 100644 --- a/uco-identity/identity.ttl +++ b/uco-identity/identity.ttl @@ -33,6 +33,7 @@ identity:AddressFacet sh:class location:Location ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path identity:address ; ] ; sh:targetClass identity:AddressFacet ; @@ -60,6 +61,7 @@ identity:BirthInformationFacet sh:property [ sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path identity:birthdate ; ] ; sh:targetClass identity:BirthInformationFacet ; @@ -240,15 +242,23 @@ identity:SimpleNameFacet rdfs:comment "A simple name facet is a grouping of characteristics unique to the personal name (e.g., Dr. John Smith Jr.) held by an identity."@en ; sh:property [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path identity:familyName ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path identity:givenName ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path identity:honorificPrefix ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path identity:honorificSuffix ; ] ; diff --git a/uco-location/location.ttl b/uco-location/location.ttl index 3ab63e47..9348f66a 100644 --- a/uco-location/location.ttl +++ b/uco-location/location.ttl @@ -28,21 +28,25 @@ location:GPSCoordinatesFacet [ sh:datatype xsd:double ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:hdop ; ] , [ sh:datatype xsd:double ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:pdop ; ] , [ sh:datatype xsd:double ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:tdop ; ] , [ sh:datatype xsd:double ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:vdop ; ] ; @@ -61,16 +65,19 @@ location:LatLongCoordinatesFacet [ sh:datatype xsd:decimal ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:altitude ; ] , [ sh:datatype xsd:decimal ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:latitude ; ] , [ sh:datatype xsd:decimal ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:longitude ; ] ; @@ -100,31 +107,37 @@ location:SimpleAddressFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:addressType ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:country ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:locality ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:postalCode ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:region ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path location:street ; ] ; diff --git a/uco-marking/marking.ttl b/uco-marking/marking.ttl index cefa054b..9bc85eea 100644 --- a/uco-marking/marking.ttl +++ b/uco-marking/marking.ttl @@ -26,10 +26,14 @@ marking:GranularMarking rdfs:comment "A granular marking is a grouping of characteristics unique to specification of marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) that apply to particular portions of a particular UCO object."@en ; sh:property [ - sh:path marking:contentSelectors ; + sh:class marking:MarkingDefinition ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path marking:marking ; ] , [ - sh:path marking:marking ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path marking:contentSelectors ; ] ; sh:targetClass marking:GranularMarking ; @@ -45,12 +49,16 @@ marking:LicenseMarking rdfs:comment "A license marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of license restrictions that apply to the data."@en-US ; sh:property [ + sh:datatype xsd:string ; sh:hasValue "license" ; + sh:nodeKind sh:Literal ; sh:path marking:definitionType ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path marking:license ; ] ; @@ -66,14 +74,17 @@ marking:MarkingDefinition rdfs:label "MarkingDefinition"@en ; rdfs:comment "A marking definition is a grouping of characteristics unique to the expression of a specific data marking conveying restrictions, permissions, and other guidance for how marked data can be used and shared."@en ; sh:property + [ + sh:class marking:MarkingModel ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path marking:definition ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path marking:definitionType ; - ] , - [ - sh:path marking:definition ; ] ; sh:targetClass marking:MarkingDefinition ; @@ -100,12 +111,15 @@ marking:ReleaseToMarking sh:property [ sh:datatype xsd:string ; - sh:minCount "1"^^xsd:integer ; - sh:path marking:authorizedIdentities ; - ] , - [ sh:hasValue "release-to" ; + sh:nodeKind sh:Literal ; sh:path marking:definitionType ; + ] , + [ + sh:datatype xsd:string ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path marking:authorizedIdentities ; ] ; sh:targetClass marking:ReleaseToMarking ; @@ -121,12 +135,16 @@ marking:StatementMarking rdfs:comment "A statement marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of a textual marking statement, (e.g., copyright) whose semantic meaning should apply to the associated content. Statement markings are generally not machine-readable. An example of this would be a simple marking to apply copyright information, such as 'Copyright 2014 Acme Inc.'."@en ; sh:property [ + sh:datatype xsd:string ; sh:hasValue "statement" ; + sh:nodeKind sh:Literal ; sh:path marking:definitionType ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path marking:statement ; ] ; @@ -143,12 +161,16 @@ marking:TermsOfUseMarking rdfs:comment "A terms of use marking is a grouping of characteristics unique to the expression of data marking definitions (restrictions, permissions, and other guidance for how data can be used and shared) to convey details of a textual statement specifying the Terms of Use (that is, the conditions under which the content may be shared, applied, or otherwise used) of the marked content. An example of this would be used to communicate a simple statement, such as 'Acme Inc. is not responsible for the content of this file'."@en ; sh:property [ + sh:datatype xsd:string ; sh:hasValue "terms-of-use" ; + sh:nodeKind sh:Literal ; sh:path marking:definitionType ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path marking:termsOfUse ; ] ; diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 6e3b4135..29af9d82 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -87,18 +87,22 @@ observable:AccountAuthenticationFacet rdfs:comment "An account authentication facet is a grouping of characteristics unique to the mechanism of accessing an account."@en ; sh:property [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:password ; + sh:nodeKind sh:Literal ; + sh:path observable:passwordLastChanged ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:passwordType ; + sh:nodeKind sh:Literal ; + sh:path observable:password ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:passwordLastChanged ; + sh:nodeKind sh:Literal ; + sh:path observable:passwordType ; ] ; sh:targetClass observable:AccountAuthenticationFacet ; @@ -114,39 +118,56 @@ observable:AccountFacet 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 [ - sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:isActive ; - ] , - [ - sh:datatype xsd:string ; + sh:class core:UcoObject ; sh:maxCount "1"^^xsd:integer ; - sh:minCount "1"^^xsd:integer ; - sh:path observable:accountIdentifier ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:accountIssuer ; ] , [ + sh:class + core:UcoObject , + observable:ObservableObject + ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:accountIssuer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:owner ; ] , [ + sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:accountType ; + sh:nodeKind sh:Literal ; + sh:path observable:isActive ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:expirationTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:modifiedTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:observableCreatedTime ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:owner ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:accountIdentifier ; + ] , + [ + sh:datatype vocabulary:AccountTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:accountType ; ] ; sh:targetClass observable:AccountFacet ; @@ -171,20 +192,24 @@ observable:AlternateDataStream rdfs:label "AlternateDataStream"@en ; rdfs:comment "An alternate data stream is data content stored within an NTFS file that is independent of the standard content stream of the file and is hidden from access by default NTFS file viewing mechanisms."@en ; sh:property + [ + sh:class types:Hash ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:hashes ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:size ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:name ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:hashes ; ] ; sh:targetClass observable:AlternateDataStream ; @@ -235,6 +260,7 @@ observable:ApplicationAccountFacet sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] ; sh:targetClass observable:ApplicationAccountFacet ; @@ -252,21 +278,25 @@ observable:ApplicationFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:operatingSystem ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:numberOfLaunches ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:applicationIdentifier ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:version ; ] ; @@ -296,16 +326,19 @@ observable:ArchiveFileFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:archiveType ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:comment ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:version ; ] ; @@ -321,6 +354,8 @@ observable:AttachmentFacet rdfs:label "AttachmentFacet"@en ; rdfs:comment "An attachment facet is a grouping of characteristics unique to the inclusion of an associated object as part of a message."@en ; sh:property [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:url ; ] ; sh:targetClass observable:AttachmentFacet ; @@ -349,21 +384,25 @@ observable:AudioFacet [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:bitRate ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:duration ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:audioType ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:format ; ] ; @@ -394,15 +433,19 @@ observable:AutonomousSystemFacet sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:number ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:asHandle ; ] , [ + sh:datatype vocabulary:RegionalRegistryTypeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:regionalInternetRegistry ; ] ; @@ -442,6 +485,7 @@ observable:BluetoothAddressFacet sh:property [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] ; sh:targetClass observable:BluetoothAddressFacet ; @@ -481,32 +525,43 @@ observable:BrowserBookmarkFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , [ - sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:visitCount ; - ] , - [ - sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:bookmarkPath ; + sh:datatype xsd:anyURI ; + sh:nodeKind sh:Literal ; + sh:path observable:urlTargeted ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:accessedTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:modifiedTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:observableCreatedTime ; ] , [ - sh:path observable:urlTargeted ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:visitCount ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:bookmarkPath ; ] ; sh:targetClass observable:BrowserBookmarkFacet ; @@ -535,39 +590,50 @@ observable:BrowserCookieFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:cookieDomain ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isSecure ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:cookieName ; + sh:nodeKind sh:Literal ; + sh:path observable:accessedTime ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:cookiePath ; + sh:nodeKind sh:Literal ; + sh:path observable:expirationTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:accessedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:expirationTime ; + sh:nodeKind sh:Literal ; + sh:path observable:cookieName ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:observableCreatedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:cookiePath ; ] ; sh:targetClass observable:BrowserCookieFacet ; @@ -605,70 +671,96 @@ observable:CalendarEntryFacet rdfs:comment "A calendar entry facet is a grouping of characteristics unique to an appointment, meeting, or event within a collection of appointments, meetings, and events."@en ; sh:property [ - sh:class observable:ObservableObject ; + sh:class + core:UcoObject , + observable:ObservableObject + ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:application ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:owner ; ] , [ - sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:isPrivate ; + sh:class identity:Identity ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:attendant ; ] , [ - sh:datatype xsd:integer ; + sh:class location:Location ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:duration ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:location ; ] , [ - sh:datatype xsd:string ; + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:eventStatus ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:eventType ; + sh:nodeKind sh:Literal ; + sh:path observable:isPrivate ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:recurrence ; + sh:nodeKind sh:Literal ; + sh:path observable:endTime ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:subject ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:endTime ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:location ; + sh:nodeKind sh:Literal ; + sh:path observable:remindTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:modifiedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:startTime ; ] , [ + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:observableCreatedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:duration ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:owner ; + sh:nodeKind sh:Literal ; + sh:path observable:eventStatus ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:remindTime ; + sh:nodeKind sh:Literal ; + sh:path observable:eventType ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:startTime ; + sh:nodeKind sh:Literal ; + sh:path observable:recurrence ; ] , [ - sh:path observable:attendant ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:subject ; ] ; sh:targetClass observable:CalendarEntryFacet ; @@ -684,14 +776,19 @@ observable:CalendarFacet rdfs:comment "A calendar facet is a grouping of characteristics unique to a collection of appointments, meetings, and events."@en ; sh:property [ - sh:class observable:ObservableObject ; + sh:class + core:UcoObject , + observable:ObservableObject + ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:application ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:owner ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:owner ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] ; sh:targetClass observable:CalendarFacet ; @@ -731,11 +828,13 @@ observable:CompressedStreamFacet [ sh:datatype xsd:double ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:compressionRatio ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:compressionMethod ; ] ; @@ -762,99 +861,124 @@ observable:ComputerSpecificationFacet rdfs:label "ComputerSpecificationFacet"@en ; rdfs:comment "A computer specificaiton facet is a grouping of characteristics unique to the hardware and software of a programmable electronic device that can store, retrieve, and process data. [based on merriam-webster.com/dictionary/computer]"@en ; sh:property + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:networkInterface ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:biosDate ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:biosReleaseDate ; + ] , [ sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:currentSystemDate ; ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:localTime ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:systemTime ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:availableRam ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:totalRam ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:biosManufacturer ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:biosSerialNumber ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:biosVersion ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:cpu ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:cpuFamily ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:gpu ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:gpuFamily ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:hostname ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:processorArchitecture ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:timezoneDST ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:timezoneStandard ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:uptime ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:biosDate ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:biosReleaseDate ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:localTime ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:systemTime ; - ] , - [ - sh:path observable:networkInterface ; ] ; sh:targetClass observable:ComputerSpecificationFacet ; @@ -880,13 +1004,16 @@ observable:ContactAddress rdfs:comment "A contact address is a grouping of characteristics unique to a geolocation address of a contact entity."@en ; sh:property [ + sh:class location:Location ; sh:datatype location:Location ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:geolocationAddress ; ] , [ sh:datatype vocabulary:ContactAddressScopeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactAddressScope ; ] ; @@ -902,50 +1029,66 @@ observable:ContactAffiliation rdfs:comment "A contact affiliation is a grouping of characteristics unique to details of an organizational affiliation for a single contact entity."@en ; sh:property [ - sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:organizationDepartment ; - ] , - [ - sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:organizationPosition ; - ] , - [ + sh:class identity:Organization ; sh:datatype identity:Organization ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactOrganization ; ] , [ + sh:class observable:ContactAddress ; sh:datatype observable:ContactAddress ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:organizationLocation ; ] , [ + sh:class observable:ContactEmail ; sh:datatype observable:ContactEmail ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactEmail ; ] , [ + sh:class observable:ContactMessaging ; sh:datatype observable:ContactMessaging ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactMessaging ; ] , [ + sh:class observable:ContactPhone ; sh:datatype observable:ContactPhone ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactPhone ; ] , [ + sh:class observable:ContactProfile ; sh:datatype observable:ContactProfile ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactProfile ; ] , [ + sh:class observable:ContactURL ; sh:datatype observable:ContactURL ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactURL ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:organizationDepartment ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:organizationPosition ; ] ; sh:targetClass observable:ContactAffiliation ; @@ -960,13 +1103,16 @@ observable:ContactEmail rdfs:comment "A contact email is a grouping of characteristics unique to details for contacting a contact entity by email."@en ; sh:property [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:emailAddress ; ] , [ sh:datatype vocabulary:ContactEmailScopeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactEmailScope ; ] ; @@ -982,120 +1128,151 @@ observable:ContactFacet rdfs:label "ContactFacet"@en ; rdfs:comment "A contact facet is a grouping of characteristics unique to a set of identification and communication related details for a single entity."@en ; sh:property + [ + sh:class observable:ContactAddress ; + sh:datatype observable:ContactAddress ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactAddress ; + ] , + [ + sh:class observable:ContactAffiliation ; + sh:datatype observable:ContactAffiliation ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactAffiliation ; + ] , + [ + sh:class observable:ContactEmail ; + sh:datatype observable:ContactEmail ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactEmail ; + ] , + [ + sh:class observable:ContactMessaging ; + sh:datatype observable:ContactMessaging ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactMessaging ; + ] , + [ + sh:class observable:ContactPhone ; + sh:datatype observable:ContactPhone ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactPhone ; + ] , + [ + sh:class observable:ContactProfile ; + sh:datatype observable:ContactProfile ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactProfile ; + ] , + [ + sh:class observable:ContactSIP ; + sh:datatype observable:ContactSIP ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactSIP ; + ] , + [ + sh:class observable:ContactURL ; + sh:datatype observable:ContactURL ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactURL ; + ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:sourceApplication ; ] , [ sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path identity:birthdate ; ] , [ sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:lastTimeContacted ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:numberTimesContacted ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:displayName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:firstName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:lastName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:middleName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:namePhonetic ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:namePrefix ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:nameSuffix ; ] , [ sh:datatype xsd:string ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactGroup ; ] , [ sh:datatype xsd:string ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactNote ; ] , [ sh:datatype xsd:string ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:nickname ; - ] , - [ - sh:datatype observable:ContactAddress ; - sh:minCount "0"^^xsd:integer ; - sh:path observable:contactAddress ; - ] , - [ - sh:datatype observable:ContactAffiliation ; - sh:minCount "0"^^xsd:integer ; - sh:path observable:contactAffiliation ; - ] , - [ - sh:datatype observable:ContactEmail ; - sh:minCount "0"^^xsd:integer ; - sh:path observable:contactEmail ; - ] , - [ - sh:datatype observable:ContactMessaging ; - sh:minCount "0"^^xsd:integer ; - sh:path observable:contactMessaging ; - ] , - [ - sh:datatype observable:ContactPhone ; - sh:minCount "0"^^xsd:integer ; - sh:path observable:contactPhone ; - ] , - [ - sh:datatype observable:ContactProfile ; - sh:minCount "0"^^xsd:integer ; - sh:path observable:contactProfile ; - ] , - [ - sh:datatype observable:ContactSIP ; - sh:minCount "0"^^xsd:integer ; - sh:path observable:contactSIP ; - ] , - [ - sh:datatype observable:ContactURL ; - sh:minCount "0"^^xsd:integer ; - sh:path observable:contactURL ; ] ; sh:targetClass observable:ContactFacet ; @@ -1122,13 +1299,17 @@ observable:ContactListFacet rdfs:comment "A contact list facet is a grouping of characteristics unique to a set of multiple individual contacts such as that found in a digital address book."@en ; sh:property [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:sourceApplication ; ] , [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contact ; ] ; @@ -1144,13 +1325,17 @@ observable:ContactMessaging rdfs:comment "A contact messaging is a grouping of characteristics unique to details for contacting a contact entity by digital messaging."@en ; sh:property [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactMessagingPlatform ; ] , [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:messagingAddress ; ] ; @@ -1166,13 +1351,16 @@ observable:ContactPhone rdfs:comment "A contact phone is a grouping of characteristics unique to details for contacting a contact entity by telephone."@en ; sh:property [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactPhoneNumber ; ] , [ sh:datatype vocabulary:ContactPhoneScopeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactPhoneScope ; ] ; @@ -1188,13 +1376,17 @@ observable:ContactProfile rdfs:comment "A contact profile is a grouping of characteristics unique to details for contacting a contact entity by online service."@en ; sh:property [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactProfilePlatform ; ] , [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:profile ; ] ; @@ -1210,13 +1402,16 @@ observable:ContactSIP 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 [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:sipAddress ; ] , [ sh:datatype vocabulary:ContactSIPScopeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactSIPScope ; ] ; @@ -1232,13 +1427,16 @@ observable:ContactURL 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 [ + sh:class observable:ObservableObject ; sh:datatype observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:url ; ] , [ sh:datatype vocabulary:ContactURLScopeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contactURLScope ; ] ; @@ -1268,49 +1466,61 @@ observable:ContentDataFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:dataPayloadReferenceURL ; ] , + [ + sh:class types:Hash ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:hash ; + ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isEncrypted ; ] , [ sh:datatype xsd:double ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:entropy ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:sizeInBytes ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:dataPayload ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:magicNumber ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:mimeClass ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:mimeType ; ] , [ + sh:datatype vocabulary:EndiannessTypeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:byteOrder ; - ] , - [ - sh:path observable:hash ; ] ; sh:targetClass observable:ContentDataFacet ; @@ -1383,16 +1593,19 @@ observable:DataRangeFacet [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:rangeOffset ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:rangeSize ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:rangeOffsetType ; ] ; @@ -1433,21 +1646,26 @@ observable:DeviceFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:manufacturer ; + sh:nodeKind sh:Literal ; + sh:path observable:deviceType ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:model ; + sh:nodeKind sh:Literal ; + sh:path observable:manufacturer ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:serialNumber ; + sh:nodeKind sh:Literal ; + sh:path observable:model ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:deviceType ; + sh:nodeKind sh:Literal ; + sh:path observable:serialNumber ; ] ; sh:targetClass observable:DeviceFacet ; @@ -1476,22 +1694,30 @@ observable:DigitalAccountFacet [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isDisabled ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:displayName ; + sh:nodeKind sh:Literal ; + sh:path observable:firstLoginTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:firstLoginTime ; + sh:nodeKind sh:Literal ; + sh:path observable:lastLoginTime ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:lastLoginTime ; + sh:nodeKind sh:Literal ; + sh:path observable:displayName ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:accountLogin ; ] ; @@ -1522,11 +1748,13 @@ observable:DigitalAddressFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:displayName ; ] ; @@ -1553,30 +1781,37 @@ observable:DigitalSignatureInfoFacet rdfs:label "DigitalSignatureInfoFacet"@en ; rdfs:comment "A digital signature info facet is a grouping of characteristics unique to a value calculated via a mathematical scheme for demonstrating the authenticity of an electronic message or document."@en ; sh:property + [ + sh:class core:UcoObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:certificateSubject ; + ] , + [ + sh:class identity:Identity ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:certificateIssuer ; + ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:signatureExists ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:signatureVerified ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:signatureDescription ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:certificateIssuer ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:certificateSubject ; ] ; sh:targetClass observable:DigitalSignatureInfoFacet ; @@ -1613,22 +1848,28 @@ observable:DiskFacet rdfs:label "DiskFacet"@en ; rdfs:comment "A disk facet is a grouping of characteristics unique to a storage mechanism where data is recorded by various electronic, magnetic, optical, or mechanical changes to a surface layer of one or more rotating disks."@en ; sh:property + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:partition ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:diskSize ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:freeSpace ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:diskType ; - ] , - [ - sh:path observable:partition ; ] ; sh:targetClass observable:DiskFacet ; @@ -1654,48 +1895,59 @@ observable:DiskPartitionFacet rdfs:label "DiskPartitionFacet"@en ; rdfs:comment "A disk partition facet is a grouping of characteristics unique to a particular managed region on a storage mechanism."@en ; sh:property + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:partitionLength ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:partitionOffset ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:spaceLeft ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:spaceUsed ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:totalSpace ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mountPoint ; + sh:nodeKind sh:Literal ; + sh:path observable:diskPartitionType ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:partitionID ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:diskPartitionType ; + sh:nodeKind sh:Literal ; + sh:path observable:mountPoint ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:observableCreatedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:partitionID ; ] ; sh:targetClass observable:DiskPartitionFacet ; @@ -1724,12 +1976,14 @@ observable:DomainNameFacet [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isTLD ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:value ; ] ; @@ -1752,7 +2006,9 @@ observable:EXIFFacet rdfs:label "EXIFFacet"@en ; rdfs:comment "An EXIF (exchangeable image file format) facet is a grouping of characteristics unique to the formats for images, sound, and ancillary tags used by digital cameras (including smartphones), scanners and other systems handling image and sound files recorded by digital cameras conformant to JEIDA/JEITA/CIPA specifications. [based on https://en.wikipedia.org/wiki/Exif]"@en ; sh:property [ + sh:class types:ControlledDictionary ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:exifData ; ] ; sh:targetClass observable:EXIFFacet ; @@ -1781,6 +2037,7 @@ observable:EmailAccountFacet sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:emailAddress ; ] ; sh:targetClass observable:EmailAccountFacet ; @@ -1810,11 +2067,13 @@ observable:EmailAddressFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:displayName ; ] ; @@ -1841,129 +2100,168 @@ observable:EmailMessageFacet rdfs:label "EmailMessageFacet"@en ; rdfs:comment "An email message facet is a grouping of characteristics unique to a message that is an instance of an electronic mail correspondence conformant to the internet message format described in RFC 5322 and related RFCs."@en ; sh:property + [ + sh:class observable:MimePartType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:bodyMultipart ; + ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:bodyRaw ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:from ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:headerRaw ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:inReplyTo ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:sender ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:xOriginatingIP ; ] , + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:bcc ; + ] , + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:cc ; + ] , + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:references ; + ] , + [ + sh:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:otherHeaders ; + ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isMimeEncoded ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isMultipart ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isRead ; ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:receivedTime ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sentTime ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:body ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contentDisposition ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contentType ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:messageID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:priority ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:subject ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:xMailer ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:modifiedTime ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:otherHeaders ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:receivedTime ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:sentTime ; - ] , - [ - sh:path observable:bcc ; - ] , - [ - sh:path observable:bodyMultipart ; - ] , - [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:categories ; ] , [ - sh:path observable:cc ; - ] , - [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:labels ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:receivedLines ; - ] , - [ - sh:path observable:references ; ] ; sh:targetClass observable:EmailMessageFacet ; @@ -1980,6 +2278,7 @@ observable:EncodedStreamFacet sh:property [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:encodingMethod ; ] ; sh:targetClass observable:EncodedStreamFacet ; @@ -1995,17 +2294,25 @@ observable:EncryptedStreamFacet rdfs:comment "An encrypted stream facet is a grouping of characteristics unique to the conversion of a body of data content from one form to another obfuscated form in such a way that reversing the conversion to obtain the original data form can only be accomplished through possession and use of a specific key."@en ; sh:property [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:encryptionMethod ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:encryptionMode ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:encryptionIV ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:encryptionKey ; ] ; @@ -2024,11 +2331,13 @@ observable:EnvironmentVariable sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:name ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:value ; ] ; @@ -2058,37 +2367,45 @@ observable:EventFacet [ sh:class observable:ObservableAction ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:cyberAction ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:computerName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:eventID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:eventText ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:eventType ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:observableCreatedTime ; ] ; sh:targetClass observable:EventFacet ; @@ -2114,48 +2431,59 @@ observable:ExtInodeFacet rdfs:label "ExtInodeFacet"@en ; rdfs:comment "An extInode facet is a grouping of characteristics unique to a file system object (file, directory, etc.) conformant to the extended file system (EXT or related derivations) specification."@en ; sh:property + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extDeletionTime ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extInodeChangeTime ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:extFileType ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:extFlags ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:extHardLinkCount ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:extInodeID ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:extPermissions ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:extSGID ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:extSUID ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:extDeletionTime ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:extInodeChangeTime ; ] ; sh:targetClass observable:ExtInodeFacet ; @@ -2172,29 +2500,37 @@ observable:ExtractedString [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:length ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:englishTranslation ; + sh:nodeKind sh:Literal ; + sh:path observable:encoding ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:stringValue ; + sh:nodeKind sh:Literal ; + sh:path observable:englishTranslation ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:byteStringValue ; + sh:nodeKind sh:Literal ; + sh:path observable:language ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:encoding ; + sh:nodeKind sh:Literal ; + sh:path observable:stringValue ; ] , [ sh:maxCount "1"^^xsd:integer ; - sh:path observable:language ; + sh:nodeKind sh:Literal ; + sh:path observable:byteStringValue ; ] ; sh:targetClass observable:ExtractedString ; @@ -2209,6 +2545,8 @@ observable:ExtractedStringsFacet rdfs:label "ExtractedStringsFacet"@en ; rdfs:comment "An extracted strings facet is a grouping of characteristics unique to one or more sequences of characters pulled from an observable object."@en ; sh:property [ + sh:class observable:ExtractedString ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:strings ; ] ; sh:targetClass observable:ExtractedStringsFacet ; @@ -2238,46 +2576,65 @@ observable:FileFacet 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:string ; + sh:datatype xsd:boolean ; + sh:nodeKind sh:Literal ; + sh:path observable:isDirectory ; + ] , + [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:allocationStatus ; + sh:nodeKind sh:Literal ; + sh:path observable:accessedTime ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:extension ; + sh:nodeKind sh:Literal ; + sh:path observable:metadataChangeTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:accessedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:fileSystemType ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:metadataChangeTime ; + sh:nodeKind sh:Literal ; + sh:path observable:allocationStatus ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:modifiedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:extension ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:observableCreatedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:fileSystemType ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:fileName ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:filePath ; - ] , - [ - sh:path observable:isDirectory ; ] ; sh:targetClass observable:FileFacet ; @@ -2292,8 +2649,12 @@ observable:FilePermissionsFacet rdfs:label "FilePermissionsFacet"@en ; rdfs:comment "A file permissions facet is a grouping of characteristics unique to the access rights (e.g., view, change, navigate, execute) of a file on a file system."@en ; sh:property [ - sh:class observable:ObservableObject ; + sh:class + core:UcoObject , + observable:ObservableObject + ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:owner ; ] ; sh:targetClass observable:FilePermissionsFacet ; @@ -2322,10 +2683,13 @@ observable:FileSystemFacet [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:clusterSize ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:fileSystemType ; ] ; @@ -2375,9 +2739,13 @@ observable:FragmentFacet rdfs:comment "A fragment facet is a grouping of characteristics unique to an individual piece of the content of a file."@en ; sh:property [ + sh:datatype xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:fragmentIndex ; ] , [ + sh:datatype xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:totalFragments ; ] ; @@ -2427,17 +2795,22 @@ observable:GeoLocationEntryFacet rdfs:comment "A geolocation entry facet is a grouping of characteristics unique to a single application-specific geolocation entry."@en ; sh:property [ - sh:class observable:ObservableObject ; + sh:class location:Location ; sh:maxCount "1"^^xsd:integer ; - sh:minCount "1"^^xsd:integer ; - sh:path observable:application ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:location ; ] , [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:location ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:observableCreatedTime ; ] ; @@ -2468,10 +2841,13 @@ observable:GeoLocationLogFacet sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:observableCreatedTime ; ] ; @@ -2502,18 +2878,25 @@ observable:GeoLocationTrackFacet sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:geoLocationEntry ; + ] , + [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:endTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:startTime ; - ] , - [ - sh:path observable:geoLocationEntry ; ] ; sh:targetClass observable:GeoLocationTrackFacet ; @@ -2527,23 +2910,28 @@ observable:GlobalFlagType rdfs:label "GlobalFlagType"@en ; rdfs:comment 'A global flag type is a grouping of characteristics unique to the Windows systemwide global variable named NtGlobalFlag that enables various internal debugging, tracing, and validation support in the operating system. [based on "Windows Global Flags, Chapter 3: System Mechanisms of Windows Internals by Solomon, Russinovich, and Ionescu]'@en ; sh:property + [ + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:hexadecimalValue ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:abbreviation ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:destination ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:symbolicName ; - ] , - [ - sh:path observable:hexadecimalValue ; ] ; sh:targetClass observable:GlobalFlagType ; @@ -2572,33 +2960,40 @@ observable:HTTPConnectionFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:httpMessageBodyData ; ] , + [ + sh:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:httpRequestHeader ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:httpMesageBodyLength ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:requestMethod ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:requestValue ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:requestVersion ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:httpRequestHeader ; ] ; sh:targetClass observable:HTTPConnectionFacet ; @@ -2643,9 +3038,13 @@ observable:ICMPConnectionFacet rdfs:comment "An ICMP connection facet is a grouping of characteristics unique to portions of a network connection that are conformant to the Internet Control Message Protocol (ICMP) standard."@en ; sh:property [ + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; sh:path observable:icmpCode ; ] , [ + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; sh:path observable:icmpType ; ] ; @@ -2663,11 +3062,13 @@ observable:IComHandlerActionType [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:comClassID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:comData ; ] ; @@ -2682,23 +3083,28 @@ observable:IExecActionType rdfs:label "IExecActionType"@en ; rdfs:comment "An IExec action type is a grouping of characteristics unique to an action that executes a command-line operation on a Windows operating system. [based on https://docs.microsoft.com/en-us/windows/win32/api/taskschd/nn-taskschd-iexecaction?redirectedfrom=MSDN]"@en ; sh:property + [ + sh:class types:Hash ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:execProgramHashes ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:execArguments ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:execProgramPath ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:execWorkingDirectory ; - ] , - [ - sh:path observable:execProgramHashes ; ] ; sh:targetClass observable:IExecActionType ; @@ -2742,11 +3148,13 @@ observable:IPAddressFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:displayName ; ] ; @@ -2787,6 +3195,7 @@ observable:IPv4AddressFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] ; sh:targetClass observable:IPv4AddressFacet ; @@ -2815,6 +3224,7 @@ observable:IPv6AddressFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] ; sh:targetClass observable:IPv6AddressFacet ; @@ -2831,11 +3241,13 @@ observable:IShowMessageActionType [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:showMessageBody ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:showMessageTitle ; ] ; @@ -2864,6 +3276,7 @@ observable:ImageFacet sh:property [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:imageType ; ] ; sh:targetClass observable:ImageFacet ; @@ -2893,11 +3306,13 @@ observable:InstantMessagingAddressFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:displayName ; ] ; @@ -2935,7 +3350,9 @@ observable:LibraryFacet rdfs:label "LibraryFacet"@en ; rdfs:comment "A library facet is a grouping of characteristics unique to a suite of data and programming code that is used to develop software programs and applications. [based on https://www.techopedia.com/definition/3828/software-library]"@en ; sh:property [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:libraryType ; ] ; sh:targetClass observable:LibraryFacet ; @@ -2964,6 +3381,7 @@ observable:MACAddressFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] ; sh:targetClass observable:MACAddressFacet ; @@ -3007,40 +3425,51 @@ observable:MemoryFacet sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isInjected ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isMapped ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isProtected ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isVolatile ; ] , [ - sh:datatype vocabulary:MemoryBlockTypeVocab ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:blockType ; + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:regionEndAddress ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:regionSize ; + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:regionStartAddress ; ] , [ - sh:path observable:regionEndAddress ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:regionSize ; ] , [ - sh:path observable:regionStartAddress ; + sh:datatype vocabulary:MemoryBlockTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:blockType ; ] ; sh:targetClass observable:MemoryFacet ; @@ -3069,36 +3498,44 @@ observable:MessageFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:from ; ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sentTime ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:messageID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:messageText ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:messageType ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:sessionID ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:sentTime ; ] ; sh:targetClass observable:MessageFacet ; @@ -3127,15 +3564,19 @@ observable:MessageThreadFacet [ sh:class observable:ObservableObject ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:message ; ] , + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:participant ; + ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:visibility ; - ] , - [ - sh:path observable:participant ; ] ; sh:targetClass observable:MessageThreadFacet ; @@ -3151,59 +3592,76 @@ observable:MftRecordFacet rdfs:comment "An MFT record facet is a grouping of characteristics unique to the details of a single file as managed in an NTFS (new technology filesystem) master file table (which is a collection of information about all files on an NTFS filesystem). [based on https://docs.microsoft.com/en-us/windows/win32/devnotes/master-file-table]"@en ; sh:property [ - sh:datatype xsd:integer ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mftFileID ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameAccessedTime ; ] , [ - sh:datatype xsd:integer ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mftFileNameLength ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameCreatedTime ; ] , [ - sh:datatype xsd:integer ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mftFlags ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameModifiedTime ; ] , [ - sh:datatype xsd:integer ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mftParentID ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameRecordChangeTime ; ] , [ - sh:datatype xsd:integer ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:ntfsHardLinkCount ; + sh:nodeKind sh:Literal ; + sh:path observable:mftRecordChangeTime ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:ntfsOwnerID ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileID ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:ntfsOwnerSID ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameLength ; ] , [ + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mftFileNameAccessedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFlags ; ] , [ + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mftFileNameCreatedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:mftParentID ; ] , [ + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mftFileNameModifiedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:ntfsHardLinkCount ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mftFileNameRecordChangeTime ; + sh:nodeKind sh:Literal ; + sh:path observable:ntfsOwnerID ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mftRecordChangeTime ; + sh:nodeKind sh:Literal ; + sh:path observable:ntfsOwnerSID ; ] ; sh:targetClass observable:MftRecordFacet ; @@ -3220,21 +3678,25 @@ observable:MimePartType [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:bodyRaw ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:body ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contentDisposition ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:contentType ; ] ; @@ -3264,16 +3726,19 @@ observable:MobileAccountFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:IMSI ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:MSISDN ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:MSISDNType ; ] ; @@ -3300,52 +3765,69 @@ observable:MobileDeviceFacet rdfs:label "MobileDeviceFacet"@en ; rdfs:comment "A mobile device facet is a grouping of characteristics unique to a portable computing device. [based on https://www.lexico.com/definition/mobile_device]"@en ; sh:property + [ + sh:datatype + xsd:boolean , + xsd:string + ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mockLocationsAllowed ; + ] , [ sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:clockSetting ; ] , + [ + sh:datatype + xsd:dateTime , + xsd:string + ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:phoneActivationTime ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:storageCapacityInBytes ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:ESN ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:IMEI ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:bluetoothDeviceName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:keypadUnlockCode ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:mockLocationsAllowed ; - ] , - [ - sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:network ; ] , [ sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:phoneActivationTime ; - ] , - [ + sh:nodeKind sh:Literal ; sh:path observable:MSISDN ; ] ; @@ -3375,6 +3857,7 @@ observable:MutexFacet sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isNamed ; ] ; sh:targetClass observable:MutexFacet ; @@ -3400,18 +3883,22 @@ observable:NTFSFileFacet rdfs:label "NTFSFileFacet"@en ; rdfs:comment "An NTFS file facet is a grouping of characteristics unique to a file on an NTFS (new technology filesystem) file system."@en ; sh:property + [ + sh:class observable:AlternateDataStream ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:alternateDataStreams ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:entryID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:sid ; - ] , - [ - sh:path observable:alternateDataStreams ; ] ; sh:targetClass observable:NTFSFileFacet ; @@ -3460,37 +3947,50 @@ observable:NetworkConnectionFacet rdfs:comment "A network connection facet is a grouping of characteristics unique to a connection (complete or attempted) accross a 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 [ - sh:datatype xsd:boolean ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:isActive ; + sh:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:src ; ] , [ - sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:destinationPort ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:dst ; ] , [ - sh:datatype xsd:integer ; + sh:class types:ControlledDictionary ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:sourcePort ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:protocols ; ] , [ + sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:endTime ; + sh:nodeKind sh:Literal ; + sh:path observable:isActive ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:protocols ; + sh:nodeKind sh:Literal ; + sh:path observable:endTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:startTime ; ] , [ - sh:path observable:dst ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:destinationPort ; ] , [ - sh:path observable:src ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sourcePort ; ] ; sh:targetClass observable:NetworkConnectionFacet ; @@ -3530,36 +4030,44 @@ observable:NetworkFlowFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:dstPayload ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:srcPayload ; ] , + [ + sh:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:ipfix ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:dstBytes ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:dstPackets ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:srcBytes ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:srcPackets ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:ipfix ; ] ; sh:targetClass observable:NetworkFlowFacet ; @@ -3588,29 +4096,41 @@ observable:NetworkInterfaceFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:macAddress ; ] , [ - sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:adapterName ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:dhcpServer ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:dhcpLeaseExpires ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:ip ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:dhcpLeaseObtained ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:ipGateway ; ] , [ - sh:path observable:dhcpServer ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:dhcpLeaseExpires ; ] , [ - sh:path observable:ip ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:dhcpLeaseObtained ; ] , [ - sh:path observable:ipGateway ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:adapterName ; ] ; sh:targetClass observable:NetworkInterfaceFacet ; @@ -3849,20 +4369,26 @@ observable:NoteFacet sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:text ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:modifiedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:observableCreatedTime ; + sh:nodeKind sh:Literal ; + sh:path observable:text ; ] ; sh:targetClass observable:NoteFacet ; @@ -3908,10 +4434,13 @@ observable:ObservableObject [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:hasChanged ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:state ; ] ; @@ -3952,9 +4481,11 @@ observable:Observation rdfs:label "Observation"@en ; rdfs:comment "An observation is a temporal perception of an observable."@en ; sh:property [ + sh:datatype xsd:string ; sh:hasValue "observe" ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:name ; ] ; sh:targetClass observable:Observation ; @@ -3981,17 +4512,23 @@ observable:OnlineServiceFacet rdfs:comment "An online service facet is a grouping of characteristics unique to a particular provision mechanism of information access, distribution or manipulation over the Internet."@en-US ; sh:property [ - sh:maxCount "1"^^xsd:integer ; - sh:minCount "1"^^xsd:integer ; - sh:path core:name ; + sh:class location:Location ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:location ; ] , [ + sh:class observable:ObservableObject ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:inetLocation ; ] , [ - sh:minCount "0"^^xsd:integer ; - sh:path observable:location ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:name ; ] ; sh:targetClass observable:OnlineServiceFacet ; @@ -4018,26 +4555,34 @@ observable:OperatingSystemFacet rdfs:comment "An operating system facet is a grouping of characteristics unique to the software that manages computer hardware, software resources, and provides common services for computer programs. [based on https://en.wikipedia.org/wiki/Operating_system]"@en ; sh:property [ - sh:datatype xsd:string ; + sh:class types:Dictionary ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:manufacturer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:environmentVariables ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:version ; + sh:nodeKind sh:Literal ; + sh:path observable:installDate ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:bitness ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:environmentVariables ; + sh:nodeKind sh:Literal ; + sh:path observable:manufacturer ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:installDate ; + sh:nodeKind sh:Literal ; + sh:path observable:version ; ] ; sh:targetClass observable:OperatingSystemFacet ; @@ -4063,26 +4608,33 @@ observable:PDFFileFacet rdfs:label "PDFFileFacet"@en ; rdfs:comment "A PDF file facet is a grouping of characteristics unique to a PDF (Portable Document Format) file."@en ; sh:property + [ + sh:class types:ControlledDictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:documentInformationDictionary ; + ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isOptimized ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:pdfId1 ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:version ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:documentInformationDictionary ; - ] , - [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:pdfId0 ; ] ; @@ -4112,6 +4664,8 @@ observable:PathRelationFacet rdfs:label "PathRelationFacet"@en ; rdfs:comment "A path relation facet is a grouping of characteristics unique to the location of one object within another containing object."@en ; sh:property [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:path ; ] ; sh:targetClass observable:PathRelationFacet ; @@ -4151,6 +4705,7 @@ observable:PhoneAccountFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:phoneNumber ; ] ; sh:targetClass observable:PhoneAccountFacet ; @@ -4180,35 +4735,44 @@ observable:PhoneCallFacet sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:from ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:to ; ] , [ - sh:datatype xsd:integer ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:duration ; + sh:nodeKind sh:Literal ; + sh:path observable:endTime ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:callType ; + sh:nodeKind sh:Literal ; + sh:path observable:startTime ; ] , [ + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:endTime ; + sh:nodeKind sh:Literal ; + sh:path observable:duration ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:startTime ; + sh:nodeKind sh:Literal ; + sh:path observable:callType ; ] ; sh:targetClass observable:PhoneCallFacet ; @@ -4259,57 +4823,76 @@ observable:ProcessFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:binary ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:creatorUser ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:parent ; ] , + [ + sh:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:environmentVariables ; + ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isHidden ; ] , [ - sh:datatype xsd:integer ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:exitStatus ; + sh:nodeKind sh:Literal ; + sh:path observable:exitTime ; ] , [ - sh:datatype xsd:integer ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:pid ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:currentWorkingDirectory ; + sh:nodeKind sh:Literal ; + sh:path observable:exitStatus ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:status ; + sh:nodeKind sh:Literal ; + sh:path observable:pid ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:environmentVariables ; + sh:nodeKind sh:Literal ; + sh:path observable:currentWorkingDirectory ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:exitTime ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path observable:arguments ; ] , [ + sh:datatype + xsd:string , + vocabulary:WhoisStatusTypeVocab + ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:observableCreatedTime ; - ] , - [ - sh:path observable:arguments ; + sh:nodeKind sh:Literal ; + sh:path observable:status ; ] ; sh:targetClass observable:ProcessFacet ; @@ -4336,55 +4919,81 @@ observable:ProfileFacet rdfs:comment "A profile facet is a grouping of characteristics unique to an explicit digital representation of identity and characteristics of the owner of a single user account associated with an online service or application. [based on https://en.wikipedia.org/wiki/User_profile]"@en-US ; sh:property [ + sh:class identity:Identity ; sh:maxCount "1"^^xsd:integer ; - sh:path core:name ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileIdentity ; ] , [ + sh:class observable:ContactAddress ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactAddress ; ] , [ + sh:class observable:ContactEmail ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactEmail ; ] , [ + sh:class observable:ContactMessaging ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactMessaging ; ] , [ + sh:class observable:ContactPhone ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactPhone ; ] , [ + sh:class observable:ContactURL ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactURL ; ] , [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:displayName ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileAccount ; ] , [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileAccount ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileService ; ] , [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileCreated ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileWebsite ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileIdentity ; + sh:nodeKind sh:Literal ; + sh:path observable:profileCreated ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileService ; + sh:nodeKind sh:Literal ; + sh:path core:name ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileWebsite ; + sh:nodeKind sh:Literal ; + sh:path observable:displayName ; ] , [ + sh:datatype xsd:string ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:profileLanguage ; ] ; @@ -4406,6 +5015,7 @@ observable:PropertiesEnumeratedEffectFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:properties ; ] ; sh:targetClass observable:PropertiesEnumeratedEffectFacet ; @@ -4426,11 +5036,13 @@ observable:PropertyReadEffectFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:propertyName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:value ; ] ; @@ -4460,31 +5072,37 @@ observable:RasterPictureFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:camera ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:bitsPerPixel ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:pictureHeight ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:pictureWidth ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:imageCompressionMethod ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:pictureType ; ] ; @@ -4585,41 +5203,49 @@ observable:SIMCardFacet [ sh:class identity:Identity ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:carrier ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:storageCapacityInBytes ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:ICCID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:IMSI ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:PIN ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:PUK ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:SIMForm ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:SIMType ; ] ; @@ -4664,11 +5290,13 @@ observable:SIPAddressFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:displayName ; ] ; @@ -4697,6 +5325,7 @@ observable:SMSMessageFacet sh:property [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isRead ; ] ; sh:targetClass observable:SMSMessageFacet ; @@ -4722,23 +5351,28 @@ observable:SQLiteBlobFacet rdfs:label "SQLiteBlobFacet"@en ; rdfs:comment "An SQLite blob facet is a grouping of characteristics unique to a blob (binary large object) of data within an SQLite database. [based on https://en.wikipedia.org/wiki/SQLite]"@en ; sh:property + [ + sh:datatype xsd:positiveInteger ; + sh:nodeKind sh:Literal ; + sh:path observable:rowIndex ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:columnName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:rowCondition ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:tableName ; - ] , - [ - sh:path observable:rowIndex ; ] ; sh:targetClass observable:SQLiteBlobFacet ; @@ -4781,6 +5415,7 @@ observable:SendControlCodeEffectFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:controlCode ; ] ; sh:targetClass observable:SendControlCodeEffectFacet ; @@ -4853,26 +5488,31 @@ observable:SoftwareFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:cpeid ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:language ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:manufacturer ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:swid ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:version ; ] ; @@ -4895,11 +5535,13 @@ observable:StateChangeEffectFacet sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:newObject ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:oldObject ; ] ; @@ -4929,6 +5571,7 @@ observable:SymbolicLinkFacet sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:targetFile ; ] ; sh:targetClass observable:SymbolicLinkFacet ; @@ -4955,10 +5598,13 @@ observable:TCPConnectionFacet rdfs:comment "A TCP connection facet is a grouping of characteristics unique to portions of a network connection that are conformant to the Transmission Control Protocl (TCP) standard."@en ; sh:property [ - sh:path observable:destinationFlags ; + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:sourceFlags ; ] , [ - sh:path observable:sourceFlags ; + sh:nodeKind sh:Literal ; + sh:path observable:destinationFlags ; ] ; sh:targetClass observable:TCPConnectionFacet ; @@ -4975,31 +5621,37 @@ observable:TaskActionType [ sh:class observable:IComHandlerActionType ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:iComHandlerAction ; ] , [ sh:class observable:IExecActionType ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:iExecAction ; ] , [ sh:class observable:IShowMessageActionType ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:iShowMessageAction ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:iEmailAction ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:actionID ; ] , [ sh:datatype vocabulary:TaskActionTypeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:actionType ; ] ; @@ -5028,40 +5680,50 @@ observable:TriggerType [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isEnabled ; ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerBeginTime ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerEndTime ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:triggerDelay ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:triggerMaxRunTime ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:triggerSessionChangeType ; ] , [ sh:datatype vocabulary:TriggerFrequencyVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:triggerFrequency ; ] , [ sh:datatype vocabulary:TriggerTypeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:triggerType ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:triggerBeginTime ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:triggerEndTime ; ] ; sh:targetClass observable:TriggerType ; @@ -5088,69 +5750,99 @@ observable:TwitterProfileFacet rdfs:comment "A twitter profile facet is a grouping of characteristics unique to an explicit digital representation of identity and characteristics of the owner of a single Twitter user account. [based on https://en.wikipedia.org/wiki/User_profile]" ; sh:property [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:minCount "1"^^xsd:integer ; - sh:path observable:twitterId ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileBackgroundLocation ; ] , [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:favoritesCount ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileBannerLocation ; ] , [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:followersCount ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileImageLocation ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:friendsCount ; + sh:class types:Hash ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileBackgroundHash ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:listedCount ; + sh:class types:Hash ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileBannerHash ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileBackgroundLocation ; + sh:class types:Hash ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileImageHash ; ] , [ + sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileBannerLocation ; + sh:nodeKind sh:Literal ; + sh:path observable:profileIsProtected ; ] , [ + sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileImageLocation ; + sh:nodeKind sh:Literal ; + sh:path observable:profileIsVerified ; ] , [ + sh:datatype xsd:nonNegativeInteger ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileIsProtected ; + sh:nodeKind sh:Literal ; + sh:path observable:favoritesCount ; ] , [ + sh:datatype xsd:nonNegativeInteger ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:profileIsVerified ; + sh:nodeKind sh:Literal ; + sh:path observable:followersCount ; ] , [ + sh:datatype xsd:nonNegativeInteger ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:statusesCount ; + sh:nodeKind sh:Literal ; + sh:path observable:friendsCount ; ] , [ + sh:datatype xsd:nonNegativeInteger ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:twitterHandle ; + sh:nodeKind sh:Literal ; + sh:path observable:statusesCount ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:userLocationString ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:twitterId ; ] , [ - sh:minCount "0"^^xsd:integer ; - sh:path observable:profileBackgroundHash ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:twitterHandle ; ] , [ - sh:minCount "0"^^xsd:integer ; - sh:path observable:profileBannerHash ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:userLocationString ; ] , [ - sh:minCount "0"^^xsd:integer ; - sh:path observable:profileImageHash ; + sh:maxCount "1"^^xsd:integer ; + sh:path observable:listedCount ; ] ; sh:targetClass observable:TwitterProfileFacet ; @@ -5179,11 +5871,13 @@ observable:UNIXAccountFacet [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:gid ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:shell ; ] ; @@ -5233,9 +5927,13 @@ observable:UNIXProcessFacet rdfs:comment "A UNIX process facet is a grouping of characteristics unique to an instance of a computer program executed on a UNIX operating system."@en ; sh:property [ + sh:datatype xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:openFileDescriptor ; ] , [ + sh:datatype xsd:nonNegativeInteger ; + sh:nodeKind sh:Literal ; sh:path observable:ruid ; ] ; @@ -5254,11 +5952,13 @@ observable:UNIXVolumeFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:mountPoint ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:options ; ] ; @@ -5288,47 +5988,56 @@ observable:URLFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:host ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:userName ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:port ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:fullValue ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:fragment ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:password ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:path ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:query ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:scheme ; ] ; @@ -5355,48 +6064,70 @@ observable:URLHistoryEntry rdfs:comment "A URL history entry is a grouping of characteristics unique to the properties of a single URL history entry for a particular browser."@en-US ; sh:property [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:browserUserProfile ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:url ; + ] , + [ + sh:class observable:ObservableObject ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:referrerUrl ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:expirationTime ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:firstVisit ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:hostname ; + sh:nodeKind sh:Literal ; + sh:path observable:lastVisit ; ] , [ + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:lastVisit ; + sh:nodeKind sh:Literal ; + sh:path observable:visitCount ; ] , [ + sh:datatype xsd:nonNegativeInteger ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:manuallyEnteredCount ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:pageTitle ; + sh:nodeKind sh:Literal ; + sh:path observable:browserUserProfile ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:url ; + sh:nodeKind sh:Literal ; + sh:path observable:hostname ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:visitCount ; + sh:nodeKind sh:Literal ; + sh:path observable:pageTitle ; ] , [ + sh:datatype xsd:string ; sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:keywordSearchTerm ; - ] , - [ - sh:minCount "0"^^xsd:integer ; - sh:path observable:referrerUrl ; ] ; sh:targetClass observable:URLHistoryEntry ; @@ -5412,11 +6143,15 @@ observable:URLHistoryFacet rdfs:comment "A URL history facet is a grouping of characteristics unique to the stored URL history for a particular web browser"@en-US ; sh:property [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:browserInformation ; ] , [ + sh:class observable:URLHistoryEntry ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:urlHistoryEntry ; ] ; @@ -5444,28 +6179,39 @@ observable:URLVisitFacet 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 [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:browserInformation ; ] , [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:fromURLVisit ; ] , [ + sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:url ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:urlTransitionType ; + sh:nodeKind sh:Literal ; + sh:path observable:visitTime ; ] , [ + sh:datatype xsd:duration ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:visitDuration ; ] , [ sh:maxCount "1"^^xsd:integer ; - sh:path observable:visitTime ; + sh:nodeKind sh:Literal ; + sh:path observable:urlTransitionType ; ] ; sh:targetClass observable:URLVisitFacet ; @@ -5494,21 +6240,25 @@ observable:UserAccountFacet [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:canEscalatePrivs ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isPrivileged ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isServiceAccount ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:homeDirectory ; ] ; @@ -5538,25 +6288,32 @@ observable:UserSessionFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:effectiveUser ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:effectiveGroup ; + sh:nodeKind sh:Literal ; + sh:path observable:loginTime ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:effectiveGroupID ; + sh:nodeKind sh:Literal ; + sh:path observable:logoutTime ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:loginTime ; + sh:nodeKind sh:Literal ; + sh:path observable:effectiveGroup ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:logoutTime ; + sh:nodeKind sh:Literal ; + sh:path observable:effectiveGroupID ; ] ; sh:targetClass observable:UserSessionFacet ; @@ -5577,6 +6334,7 @@ observable:ValuesEnumeratedEffectFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:values ; ] ; sh:targetClass observable:ValuesEnumeratedEffectFacet ; @@ -5605,11 +6363,13 @@ observable:VolumeFacet [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:sectorSize ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:volumeID ; ] ; @@ -5650,79 +6410,102 @@ observable:WhoIsFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:domainName ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:ipAddress ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:registrantContactInfo ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:serverName ; ] , + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:nameServer ; + ] , [ sh:class observable:WhoisRegistrarInfoType ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:registrarInfo ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:domainID ; + sh:nodeKind sh:Literal ; + sh:path observable:creationDate ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:remarks ; + sh:nodeKind sh:Literal ; + sh:path observable:expirationDate ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:sponsoringRegistrar ; + sh:nodeKind sh:Literal ; + sh:path observable:lookupDate ; ] , [ - sh:datatype vocabulary:RegionalRegistryTypeVocab ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:regionalInternetRegistry ; + sh:nodeKind sh:Literal ; + sh:path observable:updatedDate ; ] , [ - sh:datatype vocabulary:WhoisDNSSECTypeVocab ; + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:dnssec ; + sh:nodeKind sh:Literal ; + sh:path observable:domainID ; ] , [ - sh:datatype vocabulary:WhoisStatusTypeVocab ; + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:status ; + sh:nodeKind sh:Literal ; + sh:path observable:remarks ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:creationDate ; + sh:nodeKind sh:Literal ; + sh:path observable:sponsoringRegistrar ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:expirationDate ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path observable:registrantIDs ; ] , [ + sh:datatype vocabulary:RegionalRegistryTypeVocab ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:lookupDate ; + sh:nodeKind sh:Literal ; + sh:path observable:regionalInternetRegistry ; ] , [ + sh:datatype vocabulary:WhoisDNSSECTypeVocab ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:updatedDate ; - ] , - [ - sh:path observable:nameServer ; + sh:nodeKind sh:Literal ; + sh:path observable:dnssec ; ] , [ - sh:path observable:registrantIDs ; + sh:datatype vocabulary:WhoisStatusTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:status ; ] ; sh:targetClass observable:WhoIsFacet ; @@ -5739,6 +6522,7 @@ observable:WhoisContactFacet sh:property [ sh:datatype observable:WhoisContactTypeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:whoisContactType ; ] ; sh:targetClass observable:WhoisContactFacet ; @@ -5752,44 +6536,53 @@ observable:WhoisRegistrarInfoType rdfs:label "WhoisRegistrarInfoType"@en ; rdfs:comment "A Whois registrar info type is a grouping of characteristics unique to registrar-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:class location:Location ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:geolocationAddress ; + ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:contactPhoneNumber ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:emailAddress ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:referralURL ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:whoisServer ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:registrarGUID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:registrarID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:registrarName ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:geolocationAddress ; ] ; sh:targetClass observable:WhoisRegistrarInfoType ; @@ -5817,6 +6610,7 @@ observable:WifiAddressFacet sh:property [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] ; sh:targetClass observable:WifiAddressFacet ; @@ -5864,6 +6658,8 @@ observable:WindowsAccountFacet rdfs:label "WindowsAccountFacet"@en ; rdfs:comment "A Windows account facet is a grouping of characteristics unique to a user account on a Windows operating system."@en ; sh:property [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:groups ; ] ; sh:targetClass observable:WindowsAccountFacet ; @@ -5893,9 +6689,12 @@ observable:WindowsActiveDirectoryAccountFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:objectGUID ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:activeDirectoryGroups ; ] ; @@ -5922,49 +6721,63 @@ observable:WindowsComputerSpecificationFacet rdfs:label "WindowsComputerSpecificationFacet"@en ; rdfs:comment "A Windows computer specification facet is a grouping of characteristics unique to the hardware and software of a programmable electronic device that can store, retrieve, and process data running a Microsoft Windows operating system. [based on merriam-webster.com/dictionary/computer]"@en ; sh:property + [ + sh:class identity:Identity ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:registeredOrganization ; + ] , + [ + sh:class identity:Identity ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:registeredOwner ; + ] , + [ + sh:class observable:GlobalFlagType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:globalFlagList ; + ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:windowsDirectory ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:windowsSystemDirectory ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:windowsTempDirectory ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:msProductID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:msProductName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:netBIOSName ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:registeredOrganization ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:registeredOwner ; - ] , - [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:domain ; - ] , - [ - sh:path observable:globalFlagList ; ] ; sh:targetClass observable:WindowsComputerSpecificationFacet ; @@ -6070,50 +6883,69 @@ observable:WindowsPEBinaryFileFacet [ sh:class observable:WindowsPEOptionalHeader ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:optionalHeader ; ] , + [ + sh:class observable:WindowsPESection ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:sections ; + ] , + [ + sh:class types:Hash ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:fileHeaderHashes ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:timeDateStamp ; + ] , + [ + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:pointerToSymbolTable ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:numberOfSections ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:numberOfSymbols ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:sizeOfOptionalHeader ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:impHash ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:peType ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:timeDateStamp ; - ] , - [ - sh:path observable:characteristics ; - ] , - [ - sh:path observable:fileHeaderHashes ; - ] , - [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:machine ; ] , [ - sh:path observable:pointerToSymbolTable ; - ] , - [ - sh:path observable:sections ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:characteristics ; ] ; sh:targetClass observable:WindowsPEBinaryFileFacet ; @@ -6147,7 +6979,9 @@ observable:WindowsPEFileHeader rdfs:label "WindowsPEFileHeader"@en ; rdfs:comment "A Windows PE file header is a grouping of characteristics unique to the 'header' of a Windows PE (Portable Executable) file, consisting of a collection of metadata about the overall nature and structure of the file."@en ; sh:property [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:timeDateStamp ; ] ; sh:targetClass observable:WindowsPEFileHeader ; @@ -6162,91 +6996,149 @@ observable:WindowsPEOptionalHeader rdfs:comment "A Windows PE optional header is a grouping of characteristics unique to the 'optional header' of a Windows PE (Portable Executable) file, consisting of a collection of metadata about the executable code structure of the file."@en ; sh:property [ + sh:datatype xsd:byte ; + sh:nodeKind sh:Literal ; + sh:path observable:majorLinkerVersion ; + ] , + [ + sh:datatype xsd:byte ; + sh:nodeKind sh:Literal ; + sh:path observable:minorLinkerVersion ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; sh:path observable:addressOfEntryPoint ; ] , [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; sh:path observable:baseOfCode ; ] , [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; sh:path observable:checksum ; ] , [ - sh:path observable:dllCharacteristics ; - ] , - [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; sh:path observable:fileAlignment ; ] , [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; sh:path observable:imageBase ; ] , [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; sh:path observable:loaderFlags ; ] , [ - sh:path observable:magic ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:numberOfRVAAndSizes ; ] , [ - sh:path observable:majorImageVersion ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sectionAlignment ; ] , [ - sh:path observable:majorLinkerVersion ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfCode ; ] , [ - sh:path observable:majorOSVersion ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfHeaders ; ] , [ - sh:path observable:majorSubsystemVersion ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfHeapCommit ; ] , [ - sh:path observable:minorImageVersion ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfHeapReserve ; ] , [ - sh:path observable:minorLinkerVersion ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfImage ; ] , [ - sh:path observable:minorOSVersion ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfInitializedData ; ] , [ - sh:path observable:minorSubsystemVersion ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfStackCommit ; ] , [ - sh:path observable:numberOfRVAAndSizes ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfStackReserve ; ] , [ - sh:path observable:sectionAlignment ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfUninitializedData ; ] , [ - sh:path observable:sizeOfCode ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:win32VersionValue ; ] , [ - sh:path observable:sizeOfHeaders ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:dllCharacteristics ; ] , [ - sh:path observable:sizeOfHeapCommit ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:magic ; ] , [ - sh:path observable:sizeOfHeapReserve ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:majorImageVersion ; ] , [ - sh:path observable:sizeOfImage ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:majorOSVersion ; ] , [ - sh:path observable:sizeOfInitializedData ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:majorSubsystemVersion ; ] , [ - sh:path observable:sizeOfStackCommit ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:minorImageVersion ; ] , [ - sh:path observable:sizeOfStackReserve ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:minorOSVersion ; ] , [ - sh:path observable:sizeOfUninitializedData ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:minorSubsystemVersion ; ] , [ + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; sh:path observable:subsystem ; - ] , - [ - sh:path observable:win32VersionValue ; ] ; sh:targetClass observable:WindowsPEOptionalHeader ; @@ -6261,23 +7153,31 @@ observable:WindowsPESection rdfs:comment "A Windows PE section is a grouping of characteristics unique to a specific default or custom-defined region of a Windows PE (Portable Executable) file, consisting of an individual portion of the actual executable content of the file delineated according to unique purpose and memory protection requirements."@en ; sh:property [ - sh:datatype xsd:float ; + sh:class types:Hash ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:hashes ; + ] , + [ + sh:datatype + xsd:double , + xsd:float + ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:entropy ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:size ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:name ; - ] , - [ - sh:path observable:hashes ; ] ; sh:targetClass observable:WindowsPESection ; @@ -6306,36 +7206,48 @@ observable:WindowsPrefetchFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:volume ; ] , [ - sh:datatype xsd:integer ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:timesExecuted ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:accessedDirectory ; ] , [ - sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:applicationFileName ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:accessedFile ; ] , [ - sh:datatype xsd:string ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:prefetchHash ; + sh:nodeKind sh:Literal ; + sh:path observable:firstRun ; ] , [ + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:firstRun ; + sh:nodeKind sh:Literal ; + sh:path observable:lastRun ; ] , [ + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:lastRun ; + sh:nodeKind sh:Literal ; + sh:path observable:timesExecuted ; ] , [ - sh:path observable:accessedDirectory ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:applicationFileName ; ] , [ - sh:path observable:accessedFile ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:prefetchHash ; ] ; sh:targetClass observable:WindowsPrefetchFacet ; @@ -6361,34 +7273,41 @@ observable:WindowsProcessFacet rdfs:label "WindowsProcessFacet"@en ; rdfs:comment "A Windows process facet is a grouping of characteristics unique to a program running on a Windows operating system."@en ; sh:property + [ + sh:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:startupInfo ; + ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:aslrEnabled ; ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:depEnabled ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:ownerSID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:priority ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:windowTitle ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:startupInfo ; ] ; sh:targetClass observable:WindowsProcessFacet ; @@ -6416,6 +7335,7 @@ observable:WindowsRegistryHiveFacet sh:property [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:hiveType ; ] ; sh:targetClass observable:WindowsRegistryHiveFacet ; @@ -6444,25 +7364,32 @@ observable:WindowsRegistryKeyFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:creator ; ] , + [ + sh:class observable:WindowsRegistryValue ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:registryValues ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:numberOfSubkeys ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:key ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:modifiedTime ; - ] , - [ - sh:path observable:registryValues ; ] ; sh:targetClass observable:WindowsRegistryKeyFacet ; @@ -6480,15 +7407,19 @@ observable:WindowsRegistryValue sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path core:name ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:data ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:dataType ; ] ; @@ -6519,36 +7450,48 @@ observable:WindowsServiceFacet sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:serviceName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:displayName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:groupName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:startCommandLine ; + sh:nodeKind sh:Literal ; + sh:path observable:serviceStatus ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:serviceStatus ; + sh:nodeKind sh:Literal ; + sh:path observable:serviceType ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:serviceType ; + sh:nodeKind sh:Literal ; + sh:path observable:startCommandLine ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:startType ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path observable:descriptions ; ] ; @@ -6677,93 +7620,125 @@ observable:WindowsTaskFacet [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:account ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:application ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:workItemData ; ] , [ sh:class observable:ObservableObject ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:workingDirectory ; ] , + [ + sh:class observable:TaskActionType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:actionList ; + ] , + [ + sh:class observable:TriggerType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:triggerList ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mostRecentRunTime ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:nextRunTime ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:exitCode ; ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:maxRunTime ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:accountLogonType ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:accountRunLevel ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:imageName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:parameters ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:taskComment ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:taskCreator ; ] , [ - sh:datatype vocabulary:TaskPriorityVocab ; + sh:datatype + xsd:string , + vocabulary:TaskPriorityVocab + ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:priority ; ] , [ - sh:datatype vocabulary:TaskStatusVocab ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:status ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:mostRecentRunTime ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:nextRunTime ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:observableCreatedTime ; - ] , - [ - sh:path observable:actionList ; - ] , - [ + sh:datatype vocabulary:TaskFlagVocab ; + sh:nodeKind sh:Literal ; sh:path observable:flags ; ] , [ - sh:path observable:triggerList ; + sh:datatype + vocabulary:TaskStatusVocab , + vocabulary:WhoisStatusTypeVocab + ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:status ; ] ; sh:targetClass observable:WindowsTaskFacet ; @@ -6790,42 +7765,62 @@ observable:WindowsThreadFacet rdfs:comment "A Windows thread facet is a grouping os characteristics unique to a single thread of execution within a Windows process."@en ; sh:property [ - sh:datatype xsd:integer ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:priority ; + sh:nodeKind sh:Literal ; + sh:path observable:creationTime ; ] , [ - sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:context ; + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:parameterAddress ; ] , [ - sh:datatype xsd:string ; - sh:maxCount "1"^^xsd:integer ; - sh:path observable:securityAttributes ; + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:startAddress ; ] , [ + sh:datatype + xsd:integer , + xsd:string + ; sh:maxCount "1"^^xsd:integer ; - sh:path observable:creationTime ; + sh:nodeKind sh:Literal ; + sh:path observable:priority ; ] , [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:runningStatus ; + sh:datatype xsd:nonNegativeInteger ; + sh:nodeKind sh:Literal ; + sh:path observable:stackSize ; ] , [ - sh:path observable:creationFlags ; + sh:datatype xsd:nonNegativeInteger ; + sh:nodeKind sh:Literal ; + sh:path observable:threadID ; ] , [ - sh:path observable:parameterAddress ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:context ; ] , [ - sh:path observable:stackSize ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:runningStatus ; ] , [ - sh:path observable:startAddress ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:securityAttributes ; ] , [ - sh:path observable:threadID ; + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:creationFlags ; ] ; sh:targetClass observable:WindowsThreadFacet ; @@ -6843,16 +7838,19 @@ observable:WindowsVolumeFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:driveLetter ; ] , [ sh:datatype vocabulary:WindowsDriveTypeVocab ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:driveType ; ] , [ sh:datatype vocabulary:WindowsVolumeAttributeVocab ; sh:maxCount "4"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:windowsVolumeAttributes ; ] ; @@ -6893,11 +7891,13 @@ observable:WirelessNetworkConnectionFacet [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:baseStation ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:ssid ; ] ; @@ -6927,77 +7927,98 @@ observable:X509CertificateFacet [ sh:class observable:X509V3ExtensionsFacet ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:x509v3extensions ; ] , + [ + sh:class types:Hash ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:issuerHash ; + ] , + [ + sh:class types:Hash ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:subjectHash ; + ] , + [ + sh:class types:Hash ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:thumbprintHash ; + ] , [ sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:isSelfSigned ; ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:validityNotAfter ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:validityNotBefore ; + ] , [ sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:subjectPublicKeyExponent ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:issuer ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:serialNumber ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:signature ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:signatureAlgorithm ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:subject ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:subjectPublicKeyAlgorithm ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:subjectPublicKeyModulus ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:version ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:issuerHash ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:subjectHash ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:thumbprintHash ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:validityNotAfter ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:validityNotBefore ; ] ; sh:targetClass observable:X509CertificateFacet ; @@ -7023,83 +8044,101 @@ observable:X509V3ExtensionsFacet rdfs:label "X509V3ExtensionsFacet"@en ; rdfs:comment "An X.509 v3 certificate extensions facet is a grouping of characteristics unique to a public key digital identity certificate conformant to the X.509 v3 PKI (Public Key Infrastructure) standard."@en ; sh:property + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:privateKeyUsagePeriodNotAfter ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:privateKeyUsagePeriodNotBefore ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:authorityKeyIdentifier ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:basicConstraints ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:certificatePolicies ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:crlDistributionPoints ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:extendedKeyUsage ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:inhibitAnyPolicy ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:issuerAlternativeName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:keyUsage ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:nameConstraints ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:policyConstraints ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:policyMappings ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:subjectAlternativeName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:subjectDirectoryAttributes ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path observable:subjectKeyIdentifier ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:privateKeyUsagePeriodNotAfter ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:privateKeyUsagePeriodNotBefore ; ] ; sh:targetClass observable:X509V3ExtensionsFacet ; diff --git a/uco-pattern/pattern.ttl b/uco-pattern/pattern.ttl index 2ddf737a..52db3e36 100644 --- a/uco-pattern/pattern.ttl +++ b/uco-pattern/pattern.ttl @@ -27,6 +27,7 @@ pattern:LogicalPattern sh:property [ sh:datatype pattern:PatternExpression ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path pattern:patternExpression ; ] ; sh:targetClass pattern:LogicalPattern ; diff --git a/uco-role/role.ttl b/uco-role/role.ttl index 92d3147d..b9db2738 100644 --- a/uco-role/role.ttl +++ b/uco-role/role.ttl @@ -8,7 +8,7 @@ @prefix rdfs: . @prefix role: . @prefix sh: . -@prefix xsd: . +@prefix xs: . a owl:Ontology ; diff --git a/uco-time/time.ttl b/uco-time/time.ttl index 43353e54..ead46de8 100644 --- a/uco-time/time.ttl +++ b/uco-time/time.ttl @@ -5,9 +5,8 @@ @prefix owl: . @prefix rdf: . @prefix rdfs: . -@prefix sh: . @prefix time: . -@prefix xsd: . +@prefix xs: . a owl:Ontology ; diff --git a/uco-tool/tool.ttl b/uco-tool/tool.ttl index d2a7a760..dd56e7de 100644 --- a/uco-tool/tool.ttl +++ b/uco-tool/tool.ttl @@ -35,13 +35,16 @@ tool:BuildConfigurationType rdfs:label "BuildConfigurationType"@en ; rdfs:comment "A build configuration type is a characterization of how a particular version of software can or should be built."@en ; sh:property + [ + sh:class tool:ConfigurationSettingType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path tool:configurationSettings ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:configurationSettingDescription ; - ] , - [ - sh:path tool:configurationSettings ; ] ; sh:targetClass tool:BuildConfigurationType ; @@ -58,6 +61,7 @@ tool:BuildFacet sh:property [ sh:class tool:BuildInformationType ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path tool:buildInformation ; ] ; sh:targetClass tool:BuildFacet ; @@ -74,52 +78,66 @@ tool:BuildInformationType [ sh:class tool:BuildConfigurationType ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path tool:buildConfiguration ; ] , [ sh:class tool:BuildUtilityType ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path tool:buildUtility ; ] , + [ + sh:class tool:CompilerType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path tool:compilers ; + ] , + [ + sh:class tool:LibraryType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path tool:libraries ; + ] , + [ + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:compilationDate ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:buildID ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:buildLabel ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:buildOutputLog ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:buildProject ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:buildScript ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:buildVersion ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path tool:compilationDate ; - ] , - [ - sh:path tool:compilers ; - ] , - [ - sh:path tool:libraries ; ] ; sh:targetClass tool:BuildInformationType ; @@ -137,16 +155,19 @@ tool:BuildUtilityType sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:buildUtilityName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:cpeid ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:swid ; ] ; @@ -164,16 +185,20 @@ tool:CompilerType [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path tool:cpeid ; + sh:nodeKind sh:Literal ; + sh:path tool:compilerInformalDescription ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path tool:swid ; + sh:nodeKind sh:Literal ; + sh:path tool:cpeid ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path tool:compilerInformalDescription ; + sh:nodeKind sh:Literal ; + sh:path tool:swid ; ] ; sh:targetClass tool:CompilerType ; @@ -191,22 +216,26 @@ tool:ConfigurationSettingType sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:itemName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:itemValue ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:itemDescription ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:itemType ; ] ; @@ -235,12 +264,15 @@ tool:DependencyType [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:path tool:dependencyType ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:dependencyDescription ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; - sh:minCount "1"^^xsd:integer ; - sh:path tool:dependencyDescription ; + sh:nodeKind sh:Literal ; + sh:path tool:dependencyType ; ] ; sh:targetClass tool:DependencyType ; @@ -258,12 +290,14 @@ tool:LibraryType sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:libraryName ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:libraryVersion ; ] ; @@ -290,28 +324,34 @@ tool:Tool rdfs:label "Tool"@en ; rdfs:comment "A tool is an element of hardware and/or software utilized to carry out a particular function."@en ; sh:property + [ + sh:datatype xsd:anyURI ; + sh:nodeKind sh:Literal ; + sh:path tool:references ; + ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:creator ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:servicePack ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:toolType ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path tool:version ; - ] , - [ - sh:path tool:references ; ] ; sh:targetClass tool:Tool ; @@ -327,9 +367,13 @@ tool:ToolConfigurationTypeFacet rdfs:comment "A tool configuration type facet is a grouping of characteristics unique to the instantial settings and setup of a tool."@en ; sh:property [ + sh:class tool:DependencyType ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path tool:dependencies ; ] , [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; sh:path tool:usageContextAssumptions ; ] ; diff --git a/uco-types/types.ttl b/uco-types/types.ttl index 1f6d84dd..f6918477 100644 --- a/uco-types/types.ttl +++ b/uco-types/types.ttl @@ -28,8 +28,12 @@ types:ControlledDictionary rdfs:label "ControlledDictionary"@en ; rdfs:comment "A controlled dictionary is a list of (term/key, value) pairs where each term/key exists no more than once and is constrained to an explicitly defined set of values."@en ; sh:property [ - sh:class types:ControlledDictionaryEntry ; + sh:class + types:ControlledDictionaryEntry , + types:DictionaryEntry + ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path types:entry ; ] ; sh:targetClass types:ControlledDictionary ; @@ -47,12 +51,15 @@ types:ControlledDictionaryEntry sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; - sh:path types:value ; + sh:nodeKind sh:Literal ; + sh:path types:key ; ] , [ + sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; - sh:path types:key ; + sh:nodeKind sh:Literal ; + sh:path types:value ; ] ; sh:targetClass types:ControlledDictionaryEntry ; @@ -68,6 +75,7 @@ types:Dictionary sh:property [ sh:class types:DictionaryEntry ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; sh:path types:entry ; ] ; sh:targetClass types:Dictionary ; @@ -85,12 +93,14 @@ types:DictionaryEntry sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path types:key ; ] , [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path types:value ; ] ; @@ -109,11 +119,14 @@ types:Hash sh:datatype xsd:hexBinary ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path types:hashValue ; ] , [ + sh:datatype vocabulary:HashNameVocab ; sh:maxCount "1"^^xsd:integer ; sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; sh:path types:hashMethod ; ] ; diff --git a/uco-victim/victim.ttl b/uco-victim/victim.ttl index 84b85b1b..ff22890f 100644 --- a/uco-victim/victim.ttl +++ b/uco-victim/victim.ttl @@ -9,7 +9,7 @@ @prefix role: . @prefix sh: . @prefix victim: . -@prefix xsd: . +@prefix xs: . a owl:Ontology ; diff --git a/uco-vocabulary/vocabulary.ttl b/uco-vocabulary/vocabulary.ttl index cf9273da..22a5ac6f 100644 --- a/uco-vocabulary/vocabulary.ttl +++ b/uco-vocabulary/vocabulary.ttl @@ -4,9 +4,8 @@ @prefix owl: . @prefix rdf: . @prefix rdfs: . -@prefix sh: . @prefix vocabulary: . -@prefix xsd: . +@prefix xs: . a owl:Ontology ; From 683d88b945e282dc56c8bbb7ddd8bdfe7b0d9438 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 19 Jul 2021 17:54:17 -0400 Subject: [PATCH 66/94] Manually apply xsd prefix The explicit binding of "xsd:" stems from CASE AC-154. rdflib and the `populate_node_kind.py` script were found to assign prefix "xs:" in an ontology file if the ontology had no XML Schema Datatype references (despite several attempts to force the binding), and this ended up overriding "xsd:" prefixes in the monolothic UCO file. References: * [CASE AC-154] XML Schema datatype prefix needs to be explicit in all examples * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes (cherry picked from commit a51ae48a1e9991e49153154873190c4e11f4c1b1) --- uco-role/role.ttl | 2 +- uco-time/time.ttl | 2 +- uco-victim/victim.ttl | 2 +- uco-vocabulary/vocabulary.ttl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/uco-role/role.ttl b/uco-role/role.ttl index b9db2738..92d3147d 100644 --- a/uco-role/role.ttl +++ b/uco-role/role.ttl @@ -8,7 +8,7 @@ @prefix rdfs: . @prefix role: . @prefix sh: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; diff --git a/uco-time/time.ttl b/uco-time/time.ttl index ead46de8..2bf62d8f 100644 --- a/uco-time/time.ttl +++ b/uco-time/time.ttl @@ -6,7 +6,7 @@ @prefix rdf: . @prefix rdfs: . @prefix time: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; diff --git a/uco-victim/victim.ttl b/uco-victim/victim.ttl index ff22890f..84b85b1b 100644 --- a/uco-victim/victim.ttl +++ b/uco-victim/victim.ttl @@ -9,7 +9,7 @@ @prefix role: . @prefix sh: . @prefix victim: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; diff --git a/uco-vocabulary/vocabulary.ttl b/uco-vocabulary/vocabulary.ttl index 22a5ac6f..83f6e472 100644 --- a/uco-vocabulary/vocabulary.ttl +++ b/uco-vocabulary/vocabulary.ttl @@ -5,7 +5,7 @@ @prefix rdf: . @prefix rdfs: . @prefix vocabulary: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; From bd7fa1c83b28a187be4edf4981939620ecc9765c Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Wed, 28 Jul 2021 13:41:34 -0400 Subject: [PATCH 67/94] Regenerate Make-managed files Note that one undesired effect of logging validation reports from pyshacl is that blank nodes referred to in multiple points in the validation graph are recorded with the blank node prefix `_:`. This will remain true as long as the ontology's `sh:PropertyShape`s are blank nodes. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- .../action_inheritance_XFAIL_validation.ttl | 112 +++++++++++++++++- tests/examples/location_XFAIL_validation.ttl | 27 +++++ 2 files changed, 137 insertions(+), 2 deletions(-) diff --git a/tests/examples/action_inheritance_XFAIL_validation.ttl b/tests/examples/action_inheritance_XFAIL_validation.ttl index 5c39cab5..227ace7a 100644 --- a/tests/examples/action_inheritance_XFAIL_validation.ttl +++ b/tests/examples/action_inheritance_XFAIL_validation.ttl @@ -1,15 +1,123 @@ @prefix action: . @prefix sh: . +@prefix vocabulary: . @prefix xsd: . [] a sh:ValidationReport ; sh:conforms false ; sh:result [ a sh:ValidationResult ; + sh:focusNode _:N970196d81ff64097bd30c4f202d9e292 ; + sh:resultMessage "Value is not of Node Kind sh:BlankNodeOrIRI" ; + sh:resultPath action:action ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b30 ; + sh:value "kb:action3" ], + [ a sh:ValidationResult ; + sh:focusNode _:N970196d81ff64097bd30c4f202d9e292 ; + sh:resultMessage "Value does not have class action:Action" ; + sh:resultPath action:action ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:ClassConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b30 ; + sh:value "kb:action1" ], + [ a sh:ValidationResult ; + sh:focusNode _:N970196d81ff64097bd30c4f202d9e292 ; + sh:resultMessage "Value does not have class action:Action" ; + sh:resultPath action:action ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:ClassConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b30 ; + sh:value "kb:action3" ], + [ a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value is not Literal with datatype vocabulary:ActionStatusTypeVocab" ; + sh:resultPath action:actionStatus ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b6 ; + sh:value "Pending" ], + [ a sh:ValidationResult ; sh:focusNode ; sh:resultMessage "More than 0 values on kb:action-lifecycle1->action:actionStatus" ; sh:resultPath action:actionStatus ; sh:resultSeverity sh:Violation ; sh:sourceConstraintComponent sh:MaxCountConstraintComponent ; - sh:sourceShape [ sh:maxCount 0 ; - sh:path action:actionStatus ] ] . + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b22 ], + [ a sh:ValidationResult ; + sh:focusNode _:N970196d81ff64097bd30c4f202d9e292 ; + sh:resultMessage "Value is not of Node Kind sh:BlankNodeOrIRI" ; + sh:resultPath action:action ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b30 ; + sh:value "kb:action2" ], + [ a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value is not Literal with datatype vocabulary:ActionStatusTypeVocab" ; + sh:resultPath action:actionStatus ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b22 ; + sh:value "Pending" ], + [ a sh:ValidationResult ; + sh:focusNode _:N970196d81ff64097bd30c4f202d9e292 ; + sh:resultMessage "Value is not of Node Kind sh:BlankNodeOrIRI" ; + sh:resultPath action:action ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:NodeKindConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b30 ; + sh:value "kb:action1" ], + [ a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value is not Literal with datatype vocabulary:ActionStatusTypeVocab" ; + sh:resultPath action:actionStatus ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b6 ; + sh:value "Pending" ], + [ a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value is not Literal with datatype vocabulary:ActionStatusTypeVocab" ; + sh:resultPath action:actionStatus ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b6 ; + sh:value "Pending" ], + [ a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value is not Literal with datatype vocabulary:ActionStatusTypeVocab" ; + sh:resultPath action:actionStatus ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b6 ; + sh:value "Pending" ], + [ a sh:ValidationResult ; + sh:focusNode _:N970196d81ff64097bd30c4f202d9e292 ; + sh:resultMessage "Value does not have class action:Action" ; + sh:resultPath action:action ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:ClassConstraintComponent ; + sh:sourceShape _:n2de63136fe57446790f1cbc9cd83ac14b30 ; + sh:value "kb:action2" ] . + +_:n2de63136fe57446790f1cbc9cd83ac14b22 sh:datatype vocabulary:ActionStatusTypeVocab ; + sh:maxCount 0 ; + sh:nodeKind sh:Literal ; + sh:path action:actionStatus . + +_:n2de63136fe57446790f1cbc9cd83ac14b6 sh:datatype vocabulary:ActionStatusTypeVocab ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:path action:actionStatus . + +_:N970196d81ff64097bd30c4f202d9e292 a action:ArrayOfAction ; + action:action "kb:action1", + "kb:action2", + "kb:action3" . + +_:n2de63136fe57446790f1cbc9cd83ac14b30 sh:class action:Action ; + sh:minCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:action . diff --git a/tests/examples/location_XFAIL_validation.ttl b/tests/examples/location_XFAIL_validation.ttl index 9aea6b13..e780d771 100644 --- a/tests/examples/location_XFAIL_validation.ttl +++ b/tests/examples/location_XFAIL_validation.ttl @@ -1,10 +1,32 @@ +@prefix core: . @prefix location: . +@prefix ns1: . @prefix sh: . @prefix xsd: . [] a sh:ValidationReport ; sh:conforms false ; sh:result [ a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value does not have class core:Facet" ; + sh:resultPath core:hasFacet ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:ClassConstraintComponent ; + sh:sourceShape _:n6057bf06e71546a1b8dbdbfa86ecb544b52 ; + sh:value [ a ns1:InternalLocationFacet ; + ns1:floor 3 ; + ns1:roomNumber "345" ] ], + [ a sh:ValidationResult ; + sh:focusNode ; + sh:resultMessage "Value does not have class core:Facet" ; + sh:resultPath core:hasFacet ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:ClassConstraintComponent ; + sh:sourceShape _:n6057bf06e71546a1b8dbdbfa86ecb544b52 ; + sh:value [ a location:LatLongCoordinates ; + location:latitude 48.860346 ; + location:longitude 2.331199 ] ], + [ a sh:ValidationResult ; sh:focusNode [ a location:SimpleAddressFacet ; location:locality "Seattle" ; location:postalCode 98052 ; @@ -16,6 +38,11 @@ sh:sourceConstraintComponent sh:DatatypeConstraintComponent ; sh:sourceShape [ sh:datatype xsd:string ; sh:maxCount 1 ; + sh:nodeKind sh:Literal ; sh:path location:postalCode ] ; sh:value 98052 ] . +_:n6057bf06e71546a1b8dbdbfa86ecb544b52 sh:class core:Facet ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:hasFacet . + From da528b9431b734c67430ef4c7a5b647007d94ae9 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 12 Jul 2021 14:05:15 -0400 Subject: [PATCH 68/94] Add property shape inheritance review to CI Inline documentation has been added for Makefile recipes that might appear verbose. The package requirements no longer note pyshacl, as the imported project lists pyshacl as a dependency. wheel was added as part of the baseline venv upgrade, not originally appreciated as needed in CASE AC-195. This patch will intentionally fail CI, as a demonstration of the inheritance report finding errant property shapes. EDITED 2021-07-28: Since initial implementation, the SHIR code base has been updated to drop the test for property shapes being copied to subclasses, based on OC-159. One test on sh:NodeKind expansion is understood to be needed for feature symmetry's sake, but is left for a future release (tracked in ONT-459). References: * [CASE AC-195] Use Python venv instead of virtualenv to build virtual environments for CI * [CASE ONT-459] The SHIR code base needs a test for sh:NodeKind expansion * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes * [OC-158] UCO needs a mechanism to review inherited SHACL PropertyShapes * [OC-159] pyshacl sh:class constraints seem to not recognize subclassing (cherry picked from commit 49a6d46e449223df6da00277a6903d235d6e8276) --- .gitignore | 1 + .gitmodules | 3 +++ Makefile | 18 +++++++++++++-- .../CASE-Utility-SHACL-Inheritance-Reviewer | 1 + tests/.gitignore | 1 + tests/Makefile | 23 ++++++++++++++++++- tests/requirements.txt | 2 -- 7 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 .gitmodules create mode 160000 dependencies/CASE-Utility-SHACL-Inheritance-Reviewer diff --git a/.gitignore b/.gitignore index 82ed6519..d8d84865 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.jar .*.ttl +.git_submodule_init.done.log .lib.done.log diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..380849cf --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "dependencies/CASE-Utility-SHACL-Inheritance-Reviewer"] + path = dependencies/CASE-Utility-SHACL-Inheritance-Reviewer + url = https://github.com/casework/CASE-Utility-SHACL-Inheritance-Reviewer.git diff --git a/Makefile b/Makefile index dddb398d..10477a76 100644 --- a/Makefile +++ b/Makefile @@ -31,13 +31,25 @@ all-%: \ --directory $< \ --file $$PWD/src/review.mk +# This recipe guarantees that 'git submodule init' and 'git submodule update' have run at least once. +# The recipe avoids running 'git submodule update' more than once, in case a user is testing with the submodule at a different commit than what UCO tracks. +.git_submodule_init.done.log: \ + .gitmodules + # CASE-Utility-SHACL-Inheritance-Reviewer + test -r dependencies/CASE-Utility-SHACL-Inheritance-Reviewer/README.md \ + || (git submodule init dependencies/CASE-Utility-SHACL-Inheritance-Reviewer && git submodule update dependencies/CASE-Utility-SHACL-Inheritance-Reviewer) + @test -r dependencies/CASE-Utility-SHACL-Inheritance-Reviewer/README.md \ + || (echo "ERROR:Makefile:CASE-Utility-SHACL-Inheritance-Reviewer submodule README.md file not found, even though that submodule is initialized." >&2 ; exit 2) + touch $@ + .lib.done.log: $(MAKE) \ --directory lib touch $@ check: \ - $(check_directories) + $(check_directories) \ + .git_submodule_init.done.log $(MAKE) \ --directory tests \ check @@ -53,7 +65,9 @@ check-%: \ clean: \ $(clean_directories) \ clean-tests - @rm -f .lib.done.log + @rm -f \ + .git_submodule_init.done.log \ + .lib.done.log clean-%: \ % diff --git a/dependencies/CASE-Utility-SHACL-Inheritance-Reviewer b/dependencies/CASE-Utility-SHACL-Inheritance-Reviewer new file mode 160000 index 00000000..194c6152 --- /dev/null +++ b/dependencies/CASE-Utility-SHACL-Inheritance-Reviewer @@ -0,0 +1 @@ +Subproject commit 194c61523f98dfa8ae4338837737158d2636373f diff --git a/tests/.gitignore b/tests/.gitignore index e12ae364..a7ff74f4 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -1,4 +1,5 @@ .venv.done.log _* +inheritance_review.ttl uco_monolithic.ttl venv diff --git a/tests/Makefile b/tests/Makefile index a2272090..f0caea52 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -21,7 +21,11 @@ uco_turtle_files := $(shell /bin/ls $(top_srcdir)/uco-*/*.ttl) all: +# The two CASE-Utility... files are to trigger rebuilds based on command-line interface changes or version increments. .venv.done.log: \ + $(top_srcdir)/.git_submodule_init.done.log \ + $(top_srcdir)/dependencies/CASE-Utility-SHACL-Inheritance-Reviewer/case_shacl_inheritance_reviewer/__init__.py \ + $(top_srcdir)/dependencies/CASE-Utility-SHACL-Inheritance-Reviewer/setup.cfg \ requirements.txt rm -rf venv $(PYTHON3) -m venv \ @@ -30,13 +34,18 @@ all: && pip install \ --upgrade \ pip \ - setuptools + setuptools \ + wheel + source venv/bin/activate \ + && pip install \ + $(top_srcdir)/dependencies/CASE-Utility-SHACL-Inheritance-Reviewer source venv/bin/activate \ && pip install \ --requirement requirements.txt touch $@ check: \ + inheritance_review.ttl \ uco_monolithic.ttl $(MAKE) \ --directory examples \ @@ -52,6 +61,18 @@ clean: @rm -rf \ venv +inheritance_review.ttl: \ + $(uco_turtle_files) \ + .venv.done.log + rm -f _$@ + source venv/bin/activate \ + && case_shacl_inheritance_reviewer \ + --strict \ + _$@ \ + $(uco_turtle_files) \ + || (cat _$@ && exit 1) + mv _$@ $@ + uco_monolithic.ttl: \ $(top_srcdir)/.lib.done.log \ $(uco_turtle_files) \ diff --git a/tests/requirements.txt b/tests/requirements.txt index 63aa49dd..e079f8a6 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,3 +1 @@ -pyshacl pytest -requests From 99db91557b5ae4ab8f03624896cf0feb82ff12ff Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 20 Jul 2021 14:55:00 -0400 Subject: [PATCH 69/94] Fix concept name This will trigger a CI failure, to be resolved in the next patch. AJN: This cherry-pick ended up being a manual re-write of the original patch. Sorting confused cherry-pick pretty thoroughly. References: * [OC-160] (CP-69) Fix several typos within observable.ttl prior to SHACL release (cherry picked from commit 6ae144f5004d3addf661d915f39ad7c1bd86a098) --- uco-observable/observable.ttl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 29af9d82..5b68e7ef 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -479,7 +479,7 @@ observable:BluetoothAddressFacet owl:Class , sh:NodeShape ; - rdfs:subClassOf core:MACAddressFacet ; + rdfs:subClassOf observable:MACAddressFacet ; rdfs:label "BluetoothAddressFacet"@en ; rdfs:comment "A Bluetooth address facet is a grouping of characteristics unique to a Bluetooth standard conformant identifier assigned to a Bluetooth device to enable routing and management of Bluetooth standards conformant communication to or from that device."@en ; sh:property [ @@ -6604,7 +6604,7 @@ observable:WifiAddressFacet owl:Class , sh:NodeShape ; - rdfs:subClassOf core:MACAddressFacet ; + rdfs:subClassOf observable:MACAddressFacet ; rdfs:label "WifiAddressFacet"@en ; rdfs:comment "A Wi-Fi address facet is a grouping of characteristics unique to a media access control (MAC) standards conformant identifier assigned to a device network interface to enable routing and management of IEEE 802.11 standards-conformant communications to and from that device."@en ; sh:property [ From 33af58720bb8cdc4173824592dc1bcc02b36a05c Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 20 Jul 2021 14:56:08 -0400 Subject: [PATCH 70/94] Fix inherited PropertyShapes AJN: This cherry-pick ended up being a manual re-write of the original patch. Sorting confused cherry-pick pretty thoroughly. References: * [OC-160] (CP-69) Fix several typos within observable.ttl prior to SHACL release Signed-off-by: Alex Nelson (cherry picked from commit 94265898890205e21c3a55d0bfb8a21916f1d5be) --- uco-observable/observable.ttl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 5b68e7ef..f21b9e21 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -485,6 +485,7 @@ observable:BluetoothAddressFacet sh:property [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] ; @@ -6610,6 +6611,7 @@ observable:WifiAddressFacet sh:property [ sh:datatype xsd:string ; sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; sh:path observable:addressValue ; ] ; From 8288fdb051afd5d43cd286bfc3bc929d4bb6df45 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 20 Jul 2021 15:08:05 -0400 Subject: [PATCH 71/94] Fix IRI AJN: This cherry-pick ended up being a manual re-write of the original patch. Sorting confused cherry-pick pretty thoroughly. AJN: The original patch triggered a CI failure, but that no longer applies, now that sh:PropertyShapes are not being copied. References: * [OC-160] (CP-69) Fix several typos within observable.ttl prior to SHACL release (cherry picked from commit 95c864a95fdf7d3c1de6bf8717aabfd00f2e41d6) --- uco-observable/observable.ttl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index f21b9e21..826d7a81 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -5554,7 +5554,7 @@ observable:SymbolicLink owl:Class , sh:NodeShape ; - rdfs:subClassOf ; + rdfs:subClassOf observable:FileSystemObject ; rdfs:label "SymbolicLink"@en ; rdfs:comment "A symbolic link is a file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. [based on https://en.wikipedia.org/wiki/Symbolic_link]"@en ; sh:targetClass observable:SymbolicLink ; From dd9e5aae49a0a1ea878bc0fdf086ba8f9a42dead Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 20 Jul 2021 16:01:38 -0400 Subject: [PATCH 72/94] Fix concept name AJN: This cherry-pick ended up being a manual re-write of the original patch. Sorting confused cherry-pick pretty thoroughly. AJN: The original patch triggered a CI failure, but that no longer applies, now that sh:PropertyShapes are not being copied. References: * [OC-160] (CP-69) Fix several typos within observable.ttl prior to SHACL release (cherry picked from commit cd4c0b0280fbc40c4e5652d9755285663fbcf4a3) --- uco-observable/observable.ttl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 826d7a81..cb084f67 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -2060,7 +2060,7 @@ observable:EmailAddressFacet owl:Class , sh:NodeShape ; - rdfs:subClassOf core:DigitalAddressFacet ; + rdfs:subClassOf observable:DigitalAddressFacet ; rdfs:label "EmailAddressFacet"@en ; rdfs:comment "An email address facet is a grouping of characteristics unique to an identifier for an electronic mailbox to which electronic mail messages (conformant to the Simple Mail Transfer Protocol (SMTP)) are sent from and delivered to."@en ; sh:property @@ -3141,7 +3141,7 @@ observable:IPAddressFacet owl:Class , sh:NodeShape ; - rdfs:subClassOf core:DigitalAddressFacet ; + rdfs:subClassOf observable:DigitalAddressFacet ; rdfs:label "IPAddressFacet"@en ; rdfs:comment "An IP address facet is a grouping of characteristics unique to an Internet Protocol (IP) standards conformant identifier assigned to a device to enable routing and management of IP standards conformant communication to or from that device."@en ; sh:property @@ -3299,7 +3299,7 @@ observable:InstantMessagingAddressFacet owl:Class , sh:NodeShape ; - rdfs:subClassOf core:DigitalAddressFacet ; + rdfs:subClassOf observable:DigitalAddressFacet ; rdfs:label "InstantMessagingAddressFacet"@en ; rdfs:comment "An instant messaging address facet is a grouping of characteristics unique to an identifier assigned to enable routing and management of instant messaging digital communication."@en ; sh:property @@ -3375,7 +3375,7 @@ observable:MACAddressFacet owl:Class , sh:NodeShape ; - rdfs:subClassOf core:DigitalAddressFacet ; + rdfs:subClassOf observable:DigitalAddressFacet ; rdfs:label "MACAddressFacet"@en ; rdfs:comment "A MAC address facet is a grouping of characteristics unique to a media access control standards conformant identifier assigned to a network interface to enable routing and management of communications at the data link layer of a network segment."@en ; sh:property [ @@ -5283,7 +5283,7 @@ observable:SIPAddressFacet owl:Class , sh:NodeShape ; - rdfs:subClassOf core:DigitalAddressFacet ; + rdfs:subClassOf observable:DigitalAddressFacet ; rdfs:label "SIPAddressFacet"@en ; rdfs:comment "A SIP address facet is a grouping of characteristics unique to a Session Initiation Protocol (SIP) standards conformant identifier assigned to a user to enable routing and management of SIP standards conformant communication to or from that user loosely coupled from any particular devices."@en ; sh:property From a78066a2462de109debdc453377fb6271bbeca37 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 20 Jul 2021 16:29:54 -0400 Subject: [PATCH 73/94] Fix concept names AJN: This cherry-pick ended up being a manual re-write of the original patch. Sorting confused cherry-pick pretty thoroughly. AJN: The original patch triggered a CI failure, but that no longer applies, now that sh:PropertyShapes are not being copied. References: * [OC-160] (CP-69) Fix several typos within observable.ttl prior to SHACL release (cherry picked from commit dc225a55300b0f77cdee5f10bab8c580bdea8ce2) --- uco-observable/observable.ttl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index cb084f67..9f4c8d8b 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -3189,7 +3189,7 @@ observable:IPv4AddressFacet owl:Class , sh:NodeShape ; - rdfs:subClassOf core:IPAddressFacet ; + rdfs:subClassOf observable:IPAddressFacet ; rdfs:label "IPv4AddressFacet"@en ; rdfs:comment "An IPv4 (Internet Protocol version 4) address facet is a grouping of characteristics unique to an IPv4 standards conformant identifier assigned to a device to enable routing and management of IPv4 standards conformant communication to or from that device."@en ; sh:property [ @@ -3218,7 +3218,7 @@ observable:IPv6AddressFacet owl:Class , sh:NodeShape ; - rdfs:subClassOf core:IPAddressFacet ; + rdfs:subClassOf observable:IPAddressFacet ; rdfs:label "IPv6AddressFacet"@en ; rdfs:comment "An IPv6 (Internet Protocol version 6) address facet is a grouping of characteristics unique to an IPv6 standards conformant identifier assigned to a device to enable routing and management of IPv6 standards conformant communication to or from that device."@en ; sh:property [ From 04cae37fec716c98f5e65021746b9171c7d0d891 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 29 Jul 2021 02:55:01 -0400 Subject: [PATCH 74/94] Emit validation report on PASS file failing References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes Signed-off-by: Alex Nelson --- tests/examples/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/examples/Makefile b/tests/examples/Makefile index 7b779add..4c357f0f 100644 --- a/tests/examples/Makefile +++ b/tests/examples/Makefile @@ -41,7 +41,8 @@ all: \ --shacl $(tests_srcdir)/uco_monolithic.ttl \ --shacl-file-format turtle \ --output _$@ \ - $< + $< \ + || (cat _$@ ; exit 1) mv _$@ $@ # NOTE - this recipe makes an allowance for a certain failure type From 1c9a716aa07c4a5e2748c171f3670308c6038fab Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 29 Jul 2021 03:09:13 -0400 Subject: [PATCH 75/94] Add test file representing a result-node of an Action Testing a CASE-style example of an action that resulted in a file, a curious error arose claiming the file was not a UcoObject. This UCO test distills the CASE example down to UCO concepts, and attempts an exhaustive listing of subclass combinations for the more general ObservableObject. CI will report a validation error, which I've recorded as the "PASS" validation graph. When the behavior is corrected, the graph can be updated. References: * [OC-68] (CP-23) Convert current property restrictions and domain assertions to SHACL class shapes --- tests/examples/Makefile | 2 + tests/examples/action_result_PASS.json | 103 ++++++++++++++++++ .../action_result_PASS_validation.ttl | 26 +++++ tests/examples/test_validation.py | 7 ++ 4 files changed, 138 insertions(+) create mode 100644 tests/examples/action_result_PASS.json create mode 100644 tests/examples/action_result_PASS_validation.ttl diff --git a/tests/examples/Makefile b/tests/examples/Makefile index 4c357f0f..a2e11727 100644 --- a/tests/examples/Makefile +++ b/tests/examples/Makefile @@ -20,6 +20,7 @@ tests_srcdir := $(top_srcdir)/tests all: \ action_inheritance_PASS_validation.ttl \ action_inheritance_XFAIL_validation.ttl \ + action_result_PASS_validation.ttl \ location_PASS_validation.ttl \ location_XFAIL_validation.ttl @@ -75,6 +76,7 @@ all: \ check: \ action_inheritance_PASS_validation.ttl \ action_inheritance_XFAIL_validation.ttl \ + action_result_PASS_validation.ttl \ location_PASS_validation.ttl \ location_XFAIL_validation.ttl source $(tests_srcdir)/venv/bin/activate \ diff --git a/tests/examples/action_result_PASS.json b/tests/examples/action_result_PASS.json new file mode 100644 index 00000000..13b8380d --- /dev/null +++ b/tests/examples/action_result_PASS.json @@ -0,0 +1,103 @@ +{ + "@context": { + "kb": "http://example.org/kb/", + "action": "https://unifiedcyberontology.org/ontology/uco/action#", + "core": "https://unifiedcyberontology.org/ontology/uco/core#", + "observable": "https://unifiedcyberontology.org/ontology/uco/observable#", + "xsd": "http://www.w3.org/2001/XMLSchema#" + }, + "@graph": [ + { + "@id": "kb:action-1", + "@type": "action:Action", + "rdfs:comment": "This node is some action that has some ObservableObjects as results. By the ontology, the results need to be some UcoObject or subclass of UcoObject. They are serialized here as ObservableObjects, and are redundantly assigned types of some of their superclasses. For completeness-tracking, let the id slug's number be a binary number tracking which superclasses are present, 2^0=core:UcoObject, 2^1=core:Item, 2^2=observable:Observable.", + "core:hasFacet": { + "@type": "action:ActionReferencesFacet", + "action:result": [ + { + "@id": "kb:node-0" + }, + { + "@id": "kb:node-1" + }, + { + "@id": "kb:node-2" + }, + { + "@id": "kb:node-3" + }, + { + "@id": "kb:node-4" + }, + { + "@id": "kb:node-5" + }, + { + "@id": "kb:node-6" + }, + { + "@id": "kb:node-7" + } + ] + } + }, + { + "@id": "kb:node-0", + "@type": "observable:ObservableObject" + }, + { + "@id": "kb:node-1", + "@type": [ + "core:UcoObject", + "observable:ObservableObject" + ] + }, + { + "@id": "kb:node-2", + "@type": [ + "core:Item", + "observable:ObservableObject" + ] + }, + { + "@id": "kb:node-3", + "@type": [ + "core:UcoObject", + "core:Item", + "observable:ObservableObject" + ] + }, + { + "@id": "kb:node-4", + "@type": [ + "observable:Observable", + "observable:ObservableObject" + ] + }, + { + "@id": "kb:node-5", + "@type": [ + "core:UcoObject", + "observable:Observable", + "observable:ObservableObject" + ] + }, + { + "@id": "kb:node-6", + "@type": [ + "core:Item", + "observable:Observable", + "observable:ObservableObject" + ] + }, + { + "@id": "kb:node-7", + "@type": [ + "core:UcoObject", + "core:Item", + "observable:Observable", + "observable:ObservableObject" + ] + } + ] +} diff --git a/tests/examples/action_result_PASS_validation.ttl b/tests/examples/action_result_PASS_validation.ttl new file mode 100644 index 00000000..a2cbde14 --- /dev/null +++ b/tests/examples/action_result_PASS_validation.ttl @@ -0,0 +1,26 @@ +@prefix action: . +@prefix core: . +@prefix sh: . +@prefix xsd: . + +[] a sh:ValidationReport ; + sh:conforms false ; + sh:result [ a sh:ValidationResult ; + sh:focusNode [ a action:ActionReferencesFacet ; + action:result , + , + , + , + , + , + , + ] ; + sh:resultMessage "Value does not have class core:UcoObject" ; + sh:resultPath action:result ; + sh:resultSeverity sh:Violation ; + sh:sourceConstraintComponent sh:ClassConstraintComponent ; + sh:sourceShape [ sh:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:result ] ; + sh:value ] . + diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py index a47009c2..da70c354 100644 --- a/tests/examples/test_validation.py +++ b/tests/examples/test_validation.py @@ -111,6 +111,13 @@ def test_action_inheritance_XFAIL_validation(): } ) +def test_action_result_PASS_validation(): + """ + Confirm the PASS instance data passes validation. + """ + g = load_validation_graph("action_result_PASS_validation.ttl", True) + assert isinstance(g, rdflib.Graph) + def test_location_PASS_validation(): """ Confirm the PASS instance data passes validation. From a5293c026737b9d19c210ce9a006cbc82e63067d Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 12 Aug 2021 13:53:06 -0400 Subject: [PATCH 76/94] Removed erroneous imports for now (as of CP-23) non-existent -da files --- uco-master/uco.ttl | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/uco-master/uco.ttl b/uco-master/uco.ttl index 1229f2d8..f9591749 100644 --- a/uco-master/uco.ttl +++ b/uco-master/uco.ttl @@ -35,25 +35,16 @@ rdfs:label "uco-master"@en ; owl:imports , - , , - , , - , , - , , - , , - , , - , , , , - , , - , ; owl:versionInfo "0.6.0" ; @@ -62,4 +53,3 @@ core:id rdfs:range types:Identifier ; . - From 084686fe841ffbbd1369d669225ab7cda360c7bf Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 12 Aug 2021 13:55:41 -0400 Subject: [PATCH 77/94] Fixed typo in observable:NetworkConnection that was overlooked as part of CP-69 fixes --- uco-observable/observable.ttl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 9f4c8d8b..70ef8180 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -3997,7 +3997,7 @@ observable:NetworkConnectionFacet sh:targetClass observable:NetworkConnectionFacet ; . -observable:NetworkConnetion +observable:NetworkConnection a owl:Class , sh:NodeShape @@ -4005,7 +4005,7 @@ observable:NetworkConnetion rdfs:subClassOf observable:ObservableObject ; rdfs:label "NetworkConnection"@en ; rdfs:comment "A network connection is a connection (completed or attempted) across a digital network (a group of two or more computer systems linked together). [based on https://www.webopedia.com/TERM/N/network.html]"@en ; - sh:targetClass observable:NetworkConnetion ; + sh:targetClass observable:NetworkConnection ; . observable:NetworkFlow @@ -12030,4 +12030,3 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . - From 55fabef1755d17e4f3ee039b0db0d3094d6226e6 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 12 Aug 2021 14:10:31 -0400 Subject: [PATCH 78/94] Remove remaining references to *-da.ttl This does not fix the minor whitespace difference rdf-toolkit reports. That will happen in the next patch. References: * [OC-45] Domain assertion -da.ttl namespaces are imported by uco.ttl, half defeating purpose of separating definitions Signed-off-by: Alex Nelson --- uco-master/uco.ttl | 9 --------- 1 file changed, 9 deletions(-) diff --git a/uco-master/uco.ttl b/uco-master/uco.ttl index f9591749..31c53862 100644 --- a/uco-master/uco.ttl +++ b/uco-master/uco.ttl @@ -1,24 +1,15 @@ # baseURI: https://unifiedcyberontology.org/ontology/uco/uco # imports: https://unifiedcyberontology.org/ontology/uco/action -# imports: https://unifiedcyberontology.org/ontology/uco/action-da # imports: https://unifiedcyberontology.org/ontology/uco/core -# imports: https://unifiedcyberontology.org/ontology/uco/core-da # imports: https://unifiedcyberontology.org/ontology/uco/identity -# imports: https://unifiedcyberontology.org/ontology/uco/identity-da # imports: https://unifiedcyberontology.org/ontology/uco/location -# imports: https://unifiedcyberontology.org/ontology/uco/location-da # imports: https://unifiedcyberontology.org/ontology/uco/marking -# imports: https://unifiedcyberontology.org/ontology/uco/marking-da # imports: https://unifiedcyberontology.org/ontology/uco/observable -# imports: https://unifiedcyberontology.org/ontology/uco/observable-da # imports: https://unifiedcyberontology.org/ontology/uco/pattern -# imports: https://unifiedcyberontology.org/ontology/uco/pattern-da # imports: https://unifiedcyberontology.org/ontology/uco/role # imports: https://unifiedcyberontology.org/ontology/uco/time # imports: https://unifiedcyberontology.org/ontology/uco/tool -# imports: https://unifiedcyberontology.org/ontology/uco/tool-da # imports: https://unifiedcyberontology.org/ontology/uco/types -# imports: https://unifiedcyberontology.org/ontology/uco/types-da # imports: https://unifiedcyberontology.org/ontology/uco/victim @base . From b5221701f19a2f6bceb334a7dff42ae912b58d4f Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 12 Aug 2021 14:12:05 -0400 Subject: [PATCH 79/94] Fix sort order after typo correction This does not fix a minor whitespace difference reported by rdf-toolkit. References: * [OC-160] (CP-69) Fix several typos within observable.ttl prior to SHACL release Signed-off-by: Alex Nelson --- uco-observable/observable.ttl | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 70ef8180..d77c7b56 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -3938,6 +3938,17 @@ observable:NetworkAppliance sh:targetClass observable:NetworkAppliance ; . +observable:NetworkConnection + a + owl:Class , + sh:NodeShape + ; + rdfs:subClassOf observable:ObservableObject ; + rdfs:label "NetworkConnection"@en ; + rdfs:comment "A network connection is a connection (completed or attempted) across a digital network (a group of two or more computer systems linked together). [based on https://www.webopedia.com/TERM/N/network.html]"@en ; + sh:targetClass observable:NetworkConnection ; + . + observable:NetworkConnectionFacet a owl:Class , @@ -3997,17 +4008,6 @@ observable:NetworkConnectionFacet sh:targetClass observable:NetworkConnectionFacet ; . -observable:NetworkConnection - a - owl:Class , - sh:NodeShape - ; - rdfs:subClassOf observable:ObservableObject ; - rdfs:label "NetworkConnection"@en ; - rdfs:comment "A network connection is a connection (completed or attempted) across a digital network (a group of two or more computer systems linked together). [based on https://www.webopedia.com/TERM/N/network.html]"@en ; - sh:targetClass observable:NetworkConnection ; - . - observable:NetworkFlow a owl:Class , From 8079ffb943f58be3160b6ad477b64239dfef50bd Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 12 Aug 2021 14:14:39 -0400 Subject: [PATCH 80/94] Restore whitespace alignment with rdf-toolkit output Signed-off-by: Alex Nelson --- uco-master/uco.ttl | 1 + uco-observable/observable.ttl | 1 + 2 files changed, 2 insertions(+) diff --git a/uco-master/uco.ttl b/uco-master/uco.ttl index 31c53862..20ea933e 100644 --- a/uco-master/uco.ttl +++ b/uco-master/uco.ttl @@ -44,3 +44,4 @@ core:id rdfs:range types:Identifier ; . + diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index d77c7b56..0c9fd020 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -12030,3 +12030,4 @@ observable:xOriginatingIP rdfs:label "xOriginatingIP"@en ; rdfs:range observable:ObservableObject ; . + From 4879f8c3e33a56de4f89dd48a95bc2e008caabc8 Mon Sep 17 00:00:00 2001 From: SeanBarnum Date: Thu, 12 Aug 2021 15:21:11 -0400 Subject: [PATCH 81/94] Updated versionInfo from 0.6.0 to 0.7.0 --- uco-master/uco.ttl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/uco-master/uco.ttl b/uco-master/uco.ttl index 20ea933e..033f7a25 100644 --- a/uco-master/uco.ttl +++ b/uco-master/uco.ttl @@ -38,10 +38,9 @@ , ; - owl:versionInfo "0.6.0" ; + owl:versionInfo "0.7.0" ; . core:id rdfs:range types:Identifier ; . - From 82a4618fa46f65d7761d0d587f00b79ba9f7642a Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Thu, 12 Aug 2021 15:28:14 -0400 Subject: [PATCH 82/94] Restore blank line to align with rdf-toolkit normalization Signed-off-by: Alex Nelson --- uco-master/uco.ttl | 1 + 1 file changed, 1 insertion(+) diff --git a/uco-master/uco.ttl b/uco-master/uco.ttl index 033f7a25..5eeb4b13 100644 --- a/uco-master/uco.ttl +++ b/uco-master/uco.ttl @@ -44,3 +44,4 @@ core:id rdfs:range types:Identifier ; . + From 2472ac8637e9720044cbe8525d126e56b3a418d4 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 14:16:59 -0400 Subject: [PATCH 83/94] Removed xsd:string according to CP-72 Removed 'xsd:string' from two properties within observable:MobileDeviceFacet. The two properties: observable:mockLocationsAllowed and observable:phoneActivationTime had two added values from the SHACL conversion. Acked-by: Trevor Bobka --- uco-observable/observable.ttl | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 0c9fd020..054b61ec 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -3767,10 +3767,7 @@ observable:MobileDeviceFacet rdfs:comment "A mobile device facet is a grouping of characteristics unique to a portable computing device. [based on https://www.lexico.com/definition/mobile_device]"@en ; sh:property [ - sh:datatype - xsd:boolean , - xsd:string - ; + sh:datatype xsd:boolean ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; sh:path observable:mockLocationsAllowed ; @@ -3782,10 +3779,7 @@ observable:MobileDeviceFacet sh:path observable:clockSetting ; ] , [ - sh:datatype - xsd:dateTime , - xsd:string - ; + sh:datatype xsd:dateTime ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; sh:path observable:phoneActivationTime ; From 6eacdd9800a61d50f766dec24ff63ec4f1c2297d Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 14:39:52 -0400 Subject: [PATCH 84/94] Implemented CP-75 Removed 'xsd:float' from the property restriction of observable:entropy on the observable:WindowsPESection class. Acked-by: Trevor Bobka --- uco-observable/observable.ttl | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 0c9fd020..1bfd660d 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -7160,10 +7160,7 @@ observable:WindowsPESection sh:path observable:hashes ; ] , [ - sh:datatype - xsd:double , - xsd:float - ; + sh:datatype xsd:double ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; sh:path observable:entropy ; From a6d8a0605cc24260f11fc1e6128d61ca47a2ff41 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 15:05:11 -0400 Subject: [PATCH 85/94] Implemented CP-76 Removed 'observable:ObservableObject' from the range on observable:owner and each class that called it as a property restriction. Acked-by: Trevor Bobka --- uco-observable/observable.ttl | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 0c9fd020..bd909c7c 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -124,10 +124,7 @@ observable:AccountFacet sh:path observable:accountIssuer ; ] , [ - sh:class - core:UcoObject , - observable:ObservableObject - ; + sh:class core:UcoObject ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:owner ; @@ -672,10 +669,7 @@ observable:CalendarEntryFacet rdfs:comment "A calendar entry facet is a grouping of characteristics unique to an appointment, meeting, or event within a collection of appointments, meetings, and events."@en ; sh:property [ - sh:class - core:UcoObject , - observable:ObservableObject - ; + sh:class core:UcoObject ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:owner ; @@ -777,10 +771,7 @@ observable:CalendarFacet rdfs:comment "A calendar facet is a grouping of characteristics unique to a collection of appointments, meetings, and events."@en ; sh:property [ - sh:class - core:UcoObject , - observable:ObservableObject - ; + sh:class core:UcoObject ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:owner ; @@ -2650,10 +2641,7 @@ observable:FilePermissionsFacet rdfs:label "FilePermissionsFacet"@en ; rdfs:comment "A file permissions facet is a grouping of characteristics unique to the access rights (e.g., view, change, navigate, execute) of a file on a file system."@en ; sh:property [ - sh:class - core:UcoObject , - observable:ObservableObject - ; + sh:class core:UcoObject ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:BlankNodeOrIRI ; sh:path observable:owner ; @@ -10605,10 +10593,7 @@ observable:owner a owl:ObjectProperty ; rdfs:label "owner"@en ; rdfs:comment "Specifies the owner of an Observable Object."@en ; - rdfs:range - core:UcoObject , - observable:ObservableObject - ; + rdfs:range core:UcoObject ; . observable:ownerSID From 4ca9e81c88d5605879be18192ff2d838f9219dfc Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 15:22:22 -0400 Subject: [PATCH 86/94] Implemented CP-73 Extended the range of observable:status to be an owl:unionOf xsd:string, observable:TaskStatusVocab, and observable:WhoisStatusVocab. Also, removed the observable:WhoisStatusVocab datatype as a property restriction for observable:status within observable:ProcessFacet. Acked-by: Trevor Bobka --- uco-observable/observable.ttl | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 0c9fd020..7060a8fa 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -4883,17 +4883,14 @@ observable:ProcessFacet ] , [ sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:path observable:arguments ; + sh:path observable:status ; ] , [ - sh:datatype - xsd:string , - vocabulary:WhoisStatusTypeVocab - ; - sh:maxCount "1"^^xsd:integer ; + sh:datatype xsd:string ; sh:nodeKind sh:Literal ; - sh:path observable:status ; + sh:path observable:arguments ; ] ; sh:targetClass observable:ProcessFacet ; @@ -11526,7 +11523,11 @@ observable:status a owl:DatatypeProperty ; rdfs:label "status"@en ; rdfs:comment "Specifies a list of statuses for a given Whois entry."@en ; - rdfs:range vocabulary:WhoisStatusTypeVocab ; + rdfs:range + xsd:string , + vocabulary:TaskStatusVocab , + vocabulary:WhoisStatusTypeVocab + ; . observable:statusesCount From 91daa63df9c5f1737e0369e04373cbb209827bc7 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 15:58:21 -0400 Subject: [PATCH 87/94] Implemented CP-74 Extended the range of observable:priority to be an owl:unoinOf xsd:integer, xsd:string, and vocabulary:TaskPriorityVocab. Also, removed xsd:string from being a property restriction for observable:priority within observable:WindowsTaskFacet and observable:WindowsThreadFacet. Acked-By: Trevor Bobka --- uco-observable/observable.ttl | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 0c9fd020..76ff453d 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -7720,18 +7720,15 @@ observable:WindowsTaskFacet sh:path observable:taskCreator ; ] , [ - sh:datatype - xsd:string , - vocabulary:TaskPriorityVocab - ; - sh:maxCount "1"^^xsd:integer ; + sh:datatype vocabulary:TaskFlagVocab ; sh:nodeKind sh:Literal ; - sh:path observable:priority ; + sh:path observable:flags ; ] , [ - sh:datatype vocabulary:TaskFlagVocab ; + sh:datatype vocabulary:TaskPriorityVocab ; + sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; - sh:path observable:flags ; + sh:path observable:priority ; ] , [ sh:datatype @@ -7783,10 +7780,7 @@ observable:WindowsThreadFacet sh:path observable:startAddress ; ] , [ - sh:datatype - xsd:integer , - xsd:string - ; + sh:datatype xsd:integer ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; sh:path observable:priority ; @@ -10803,7 +10797,11 @@ observable:priority a owl:DatatypeProperty ; rdfs:label "priority"@en ; rdfs:comment "The priority of the email."@en ; - rdfs:range xsd:string ; + rdfs:range + xsd:integer , + xsd:string , + vocabulary:TaskPriorityVocab + ; . observable:privateKeyUsagePeriodNotAfter From 54ef226a23038a544087d8b7a1a85d74d62f1a8a Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 16:27:18 -0400 Subject: [PATCH 88/94] Implemented CP-77 Extended the range of types:entry to include types:DictionaryEntry and types:ControlledDictionaryEntry. Also, removed types:DictionaryEntry from the property restriction for types:entry within the types:ControlledDictionary class. Acked-by: Trevor Bobka --- uco-types/types.ttl | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/uco-types/types.ttl b/uco-types/types.ttl index f6918477..09577840 100644 --- a/uco-types/types.ttl +++ b/uco-types/types.ttl @@ -28,10 +28,7 @@ types:ControlledDictionary rdfs:label "ControlledDictionary"@en ; rdfs:comment "A controlled dictionary is a list of (term/key, value) pairs where each term/key exists no more than once and is constrained to an explicitly defined set of values."@en ; sh:property [ - sh:class - types:ControlledDictionaryEntry , - types:DictionaryEntry - ; + sh:class types:ControlledDictionaryEntry ; sh:minCount "1"^^xsd:integer ; sh:nodeKind sh:BlankNodeOrIRI ; sh:path types:entry ; @@ -152,7 +149,10 @@ types:entry a owl:ObjectProperty ; rdfs:label "entry"@en ; rdfs:comment "A dictionary entry."@en ; - rdfs:range types:DictionaryEntry ; + rdfs:range + types:ControlledDictionaryEntry , + types:DictionaryEntry + ; . types:hashMethod From 7fceb610c4b4a464c21b0a034b097227400a3f50 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 16:52:31 -0400 Subject: [PATCH 89/94] Implemented CP-78 Added the observable:listedCount property that was excluded in the implementation of CP-7. Also, ensured the proper SHACL constraints were added for the its property restriction within observable:TwitterProfileFacet. Acked-by: Trevor Bobka --- uco-observable/observable.ttl | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 0c9fd020..46281644 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -5798,6 +5798,12 @@ observable:TwitterProfileFacet sh:nodeKind sh:Literal ; sh:path observable:profileIsVerified ; ] , + [ + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:listedCount ; + ] , [ sh:datatype xsd:nonNegativeInteger ; sh:maxCount "1"^^xsd:integer ; @@ -5840,10 +5846,6 @@ observable:TwitterProfileFacet sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; sh:path observable:userLocationString ; - ] , - [ - sh:maxCount "1"^^xsd:integer ; - sh:path observable:listedCount ; ] ; sh:targetClass observable:TwitterProfileFacet ; @@ -10066,6 +10068,13 @@ observable:libraryType rdfs:range xsd:string ; . +observable:listedCount + a owl:DatatypeProperty ; + rdfs:label "listedCount"@en ; + rdfs:comment "Specifies the number of public lists that this profile is associated with."@en ; + rdfs:range xsd:integer ; + . + observable:loaderFlags a owl:DatatypeProperty ; rdfs:label "loaderFlags"@en ; From edbe3af8bd2fbf7b867f114af347069450c4770d Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 17:30:12 -0400 Subject: [PATCH 90/94] Fixed syntax with 'unionOf' implementation --- uco-observable/observable.ttl | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 7060a8fa..0d0e61c5 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -7731,10 +7731,7 @@ observable:WindowsTaskFacet sh:path observable:flags ; ] , [ - sh:datatype - vocabulary:TaskStatusVocab , - vocabulary:WhoisStatusTypeVocab - ; + sh:datatype vocabulary:TaskStatusVocab ; sh:maxCount "1"^^xsd:integer ; sh:nodeKind sh:Literal ; sh:path observable:status ; @@ -11523,11 +11520,14 @@ observable:status a owl:DatatypeProperty ; rdfs:label "status"@en ; rdfs:comment "Specifies a list of statuses for a given Whois entry."@en ; - rdfs:range - xsd:string , - vocabulary:TaskStatusVocab , - vocabulary:WhoisStatusTypeVocab - ; + rdfs:range [ + a rdfs:Datatype ; + owl:unionOf ( + xsd:string + vocabulary:TaskStatusVocab + vocabulary:WhoisStatusTypeVocab + ) ; + ] ; . observable:statusesCount From c08c0603d89915503a71e721d610dbaab0dc58bd Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 17:38:20 -0400 Subject: [PATCH 91/94] Fixed syntax for 'unionOf' implementation --- uco-observable/observable.ttl | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/uco-observable/observable.ttl b/uco-observable/observable.ttl index 76ff453d..bba4ab58 100644 --- a/uco-observable/observable.ttl +++ b/uco-observable/observable.ttl @@ -10797,11 +10797,14 @@ observable:priority a owl:DatatypeProperty ; rdfs:label "priority"@en ; rdfs:comment "The priority of the email."@en ; - rdfs:range - xsd:integer , - xsd:string , - vocabulary:TaskPriorityVocab - ; + rdfs:range [ + a rdfs:Datatype ; + owl:unionOf ( + xsd:integer + xsd:string + vocabulary:TaskPriorityVocab + ) ; + ] ; . observable:privateKeyUsagePeriodNotAfter From ba6ca3319f7432c2cc1d191d45c91335bb7fa54a Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Fri, 13 Aug 2021 17:46:57 -0400 Subject: [PATCH 92/94] Fixed syntax issue with 'unionOf' implementation --- uco-types/types.ttl | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/uco-types/types.ttl b/uco-types/types.ttl index 09577840..bcfa46c7 100644 --- a/uco-types/types.ttl +++ b/uco-types/types.ttl @@ -149,10 +149,13 @@ types:entry a owl:ObjectProperty ; rdfs:label "entry"@en ; rdfs:comment "A dictionary entry."@en ; - rdfs:range - types:ControlledDictionaryEntry , - types:DictionaryEntry - ; + rdfs:range [ + a rdfs:Datatype ; + owl:unionOf ( + types:ControlledDictionaryEntry + types:DictionaryEntry + ) ; + ] ; . types:hashMethod From f63caad95603a2fb032101ae776be1ba778d7d11 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Tue, 17 Aug 2021 09:50:09 -0400 Subject: [PATCH 93/94] Add test for sh:datatype count validity References: * [OC-165] (CP-79) Several classes have multiple sh:datatypes and are invalid by SHACL spec Signed-off-by: Alex Nelson --- tests/Makefile | 4 +++ tests/test_uco_monolithic.py | 60 ++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 tests/test_uco_monolithic.py diff --git a/tests/Makefile b/tests/Makefile index f0caea52..ca25ff10 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -47,6 +47,10 @@ all: check: \ inheritance_review.ttl \ uco_monolithic.ttl + source venv/bin/activate \ + && pytest \ + --ignore examples \ + --log-level=DEBUG $(MAKE) \ --directory examples \ check diff --git a/tests/test_uco_monolithic.py b/tests/test_uco_monolithic.py new file mode 100644 index 00000000..1b70b548 --- /dev/null +++ b/tests/test_uco_monolithic.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +# This software was developed at the National Institute of Standards +# and Technology by employees of the Federal Government in the course +# of their official duties. Pursuant to title 17 Section 105 of the +# United States Code this software is not subject to copyright +# protection and is in the public domain. NIST assumes no +# responsibility whatsoever for its use by other parties, and makes +# no guarantees, expressed or implied, about its quality, +# reliability, or any other characteristic. +# +# We would appreciate acknowledgement if the software is used. + +import os + +import rdflib.plugins.sparql + +def test_max_1_sh_datatype_per_property_shape(): + """ + This enforces the maximum sh:datatype count of 1, as specified here: + + "A shape has at most one value for sh:datatype." + https://www.w3.org/TR/shacl/#DatatypeConstraintComponent + + This is encoded in the SHACL ontology with the statement 'sh:DatatypeConstraintComponent-datatype sh:maxCount 1 .' + """ + expected = set() # This set is intentionally empty. + computed = set() + + graph = rdflib.Graph() + graph.parse(os.path.join(os.path.dirname(__file__), "uco_monolithic.ttl")) + assert len(graph) > 0, "Failed to load uco_monolithic.ttl." + + nsdict = { + "sh": rdflib.SH + } + + query_object = rdflib.plugins.sparql.prepareQuery("""\ +SELECT ?nClass ?nPath ?lConstraintDatatypeTally +WHERE { + { + SELECT ?nClass ?nPath (COUNT(DISTINCT ?nConstraintDatatype) AS ?lConstraintDatatypeTally) + WHERE { + ?nClass + sh:property ?nPropertyShape ; + . + + ?nPropertyShape + sh:datatype ?nConstraintDatatype ; + sh:path ?nPath ; + . + } GROUP BY ?nClass ?nPath + } + + FILTER (?lConstraintDatatypeTally > 1) +} +""", initNs=nsdict) + for result in graph.query(query_object): + computed.add(result) + assert expected == computed From b337559d77bf79693262c74ce1f74eb20229ebb6 Mon Sep 17 00:00:00 2001 From: b0bkaT Date: Wed, 18 Aug 2021 10:40:17 -0400 Subject: [PATCH 94/94] Added the proper focus text for v0.7.0 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fd67935a..abc96e5e 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ Through this approach not only are domain-focused representations defined consis The purpose of this repository is to provide a foundation for broader community involvement in defining what to represent and how. ### Current Release -The current release of UCO is 0.6.0 +The current release of UCO is 0.7.0 -UCO Version 0.6.0 is primarily focused on adding several community needed classes (URLHistory, refactoring Contact, OnlineService, Profile, etc.) and properties, refactoring and cleaning up Address subclass structure, adding specific subclasses of ObservableObject, renaming of non-observable namespace Facet subclasses to include "Facet" at the end, clarifying and normalizing all class definitions to make the ontology more robust and complete, and cleanup of several minor issues and bugs. +UCO Version 0.7.0 is primarily focused on 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. Future versions of UCO will not only expand and refine the ontology itself but will also provide more complete and formalized documentation.