diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..379d3575 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,41 @@ +# 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 + - uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '8' + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - 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..d8d84865 --- /dev/null +++ b/.gitignore @@ -0,0 +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 new file mode 100644 index 00000000..10477a76 --- /dev/null +++ b/Makefile @@ -0,0 +1,82 @@ +#!/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 := $(shell find uco-* -type d -maxdepth 0 | sort) + +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 + +# 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) \ + .git_submodule_init.done.log + $(MAKE) \ + --directory tests \ + check + +check-%: \ + % \ + .lib.done.log + $(MAKE) \ + --directory $< \ + --file $$PWD/src/review.mk \ + check + +clean: \ + $(clean_directories) \ + clean-tests + @rm -f \ + .git_submodule_init.done.log \ + .lib.done.log + +clean-%: \ + % + @$(MAKE) \ + --directory $< \ + --file $$PWD/src/review.mk \ + clean + +clean-tests: + @$(MAKE) \ + --directory tests \ + clean 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. 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/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/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() diff --git a/src/review.mk b/src/review.mk new file mode 100644 index 00000000..e66921c0 --- /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 := $(shell find $(srcdir_without_ucohyphen)*.ttl -type f | sort) +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) diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 00000000..a7ff74f4 --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1,5 @@ +.venv.done.log +_* +inheritance_review.ttl +uco_monolithic.ttl +venv diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 00000000..ca25ff10 --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,97 @@ +#!/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: + +# 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 \ + venv + source venv/bin/activate \ + && pip install \ + --upgrade \ + pip \ + 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 + source venv/bin/activate \ + && pytest \ + --ignore examples \ + --log-level=DEBUG + $(MAKE) \ + --directory examples \ + check + +clean: + @$(MAKE) \ + --directory examples \ + clean + @rm -f \ + .venv.done.log \ + uco_monolithic.ttl + @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) \ + .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..a2e11727 --- /dev/null +++ b/tests/examples/Makefile @@ -0,0 +1,88 @@ +#!/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: \ + action_inheritance_PASS_validation.ttl \ + action_inheritance_XFAIL_validation.ttl \ + action_result_PASS_validation.ttl \ + location_PASS_validation.ttl \ + location_XFAIL_validation.ttl + +.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 \ + && pyshacl \ + --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 _$@ \ + $< \ + || (cat _$@ ; exit 1) + 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. +%_XFAIL_validation.ttl: \ + %_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 \ + --ont-file-format turtle \ + --ont-graph $(tests_srcdir)/uco_monolithic.ttl \ + --shacl $(tests_srcdir)/uco_monolithic.ttl \ + --shacl-file-format turtle \ + --output _$@ \ + $< \ + ; rc=$$? ; test 0 -eq $$rc -o 1 -eq $$rc + mv _$@ $@ + +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 \ + && 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/action_inheritance_PASS.json b/tests/examples/action_inheritance_PASS.json new file mode 100644 index 00000000..b5ceba71 --- /dev/null +++ b/tests/examples/action_inheritance_PASS.json @@ -0,0 +1,58 @@ +{ + "@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/", + "vocabulary": "https://unifiedcyberontology.org/ontology/uco/vocabulary#", + "xsd": "http://www.w3.org/2001/XMLSchema#" + }, + "@graph": [ + { + "@id": "kb:action1", + "@type": "action:Action", + "core:name": "Open File", + "action:actionStatus": { + "@type": "vocabulary:ActionStatusTypeVocab", + "@value": "Pending" + } + }, + { + "@id": "kb:action2", + "@type": "action:Action", + "core:name": "Modify File", + "action:actionStatus": { + "@type": "vocabulary:ActionStatusTypeVocab", + "@value": "Pending" + } + }, + { + "@id": "kb:action3", + "@type": "action:Action", + "core:name": "Save File", + "action:actionStatus": { + "@type": "vocabulary:ActionStatusTypeVocab", + "@value": "Pending" + } + }, + { + "@id": "kb:action-lifecycle1", + "@type": "action:ActionLifecycle", + "core:name": "File Update", + "action:phase": { + "@type": "action:ArrayOfAction", + "action:action": [ + { + "@id": "kb:action1" + }, + { + "@id": "kb:action2" + }, + { + "@id": "kb:action3" + } + ] + } + } + ] +} diff --git a/tests/examples/action_inheritance_PASS_validation.ttl b/tests/examples/action_inheritance_PASS_validation.ttl new file mode 100644 index 00000000..9b8084b8 --- /dev/null +++ b/tests/examples/action_inheritance_PASS_validation.ttl @@ -0,0 +1,6 @@ +@prefix sh: . +@prefix xsd: . + +[] a sh:ValidationReport ; + sh:conforms true . + diff --git a/tests/examples/action_inheritance_XFAIL.json b/tests/examples/action_inheritance_XFAIL.json new file mode 100644 index 00000000..b87c2563 --- /dev/null +++ b/tests/examples/action_inheritance_XFAIL.json @@ -0,0 +1,43 @@ +{ + "@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/", + "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" + ] + } + } + ] +} diff --git a/tests/examples/action_inheritance_XFAIL_validation.ttl b/tests/examples/action_inheritance_XFAIL_validation.ttl new file mode 100644 index 00000000..227ace7a --- /dev/null +++ b/tests/examples/action_inheritance_XFAIL_validation.ttl @@ -0,0 +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 _: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/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/location_PASS.json b/tests/examples/location_PASS.json new file mode 100644 index 00000000..1b7a7d40 --- /dev/null +++ b/tests/examples/location_PASS.json @@ -0,0 +1,58 @@ +{ + "@context": { + "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#", + "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:SimpleAddressFacet", + "location:locality": "Seattle", + "location:region": "WA", + "location:postalCode": "98052", + "location:street": "20341 Whitworth Institute 405 N. Whitworth" + }, + { + "@type": [ + "acme:InternalLocationFacet", + "core:Facet" + ], + "acme:floor": 3, + "acme:roomNumber": 345 + } + ] + }, + { + "@id": "kb:location2", + "@type": "location:Location", + "core:description": "Second of two locations in example.", + "core:hasFacet": [ + { + "@type": "location:SimpleAddressFacet", + "location:locality": "Paris", + "location:country": "France", + "location:postalCode": "F-75002", + "location:street": "38 Bad Guy Headquarters st." + }, + { + "@type": "location:LatLongCoordinatesFacet", + "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..9b8084b8 --- /dev/null +++ b/tests/examples/location_PASS_validation.ttl @@ -0,0 +1,6 @@ +@prefix sh: . +@prefix xsd: . + +[] a sh:ValidationReport ; + sh:conforms true . + diff --git a/tests/examples/location_XFAIL.json b/tests/examples/location_XFAIL.json new file mode 100644 index 00000000..56d8fff6 --- /dev/null +++ b/tests/examples/location_XFAIL.json @@ -0,0 +1,55 @@ +{ + "@context": { + "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#", + "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:SimpleAddressFacet", + "location:locality": "Seattle", + "location:region": "WA", + "location:postalCode": 98052, + "location:street": "20341 Whitworth Institute 405 N. Whitworth" + }, + { + "@type": "acme:InternalLocationFacet", + "acme:floor": 3, + "acme:roomNumber": "345" + } + ] + }, + { + "@id": "kb:location2", + "@type": "location:Location", + "core:descriptionButWrongName": "Second of two locations in example.", + "core:hasFacet": [ + { + "@type": "location:SimpleAddressFacet", + "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..e780d771 --- /dev/null +++ b/tests/examples/location_XFAIL_validation.ttl @@ -0,0 +1,48 @@ +@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 ; + 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:nodeKind sh:Literal ; + sh:path location:postalCode ] ; + sh:value 98052 ] . + +_:n6057bf06e71546a1b8dbdbfa86ecb544b52 sh:class core:Facet ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:hasFacet . + diff --git a/tests/examples/test_validation.py b/tests/examples/test_validation.py new file mode 100644 index 00000000..da70c354 --- /dev/null +++ b/tests/examples/test_validation.py @@ -0,0 +1,151 @@ +#!/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. + +""" +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 + +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": NS_SH} + +def load_validation_graph( + filename : str, + expected_conformance : bool +) -> rdflib.Graph: + g = rdflib.Graph() + g.parse(filename, format="turtle") + 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 + computed_conformance = bool(l_conforms) + 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(): + """ + 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_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. + """ + g = load_validation_graph("location_PASS_validation.ttl", True) + assert isinstance(g, rdflib.Graph) + +def test_location_XFAIL_validation(): + """ + 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) + } + ) + +@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) + } + ) diff --git a/tests/requirements.txt b/tests/requirements.txt new file mode 100644 index 00000000..e079f8a6 --- /dev/null +++ b/tests/requirements.txt @@ -0,0 +1 @@ +pytest 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() 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 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..4aadfec1 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,286 @@ . 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:class action:Action ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:subaction ; + ] , + [ + sh:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:error ; + ] , [ - a owl:Restriction ; - owl:onProperty action:actionStatus ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty action:endTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:startTime ; ] , [ - a owl:Restriction ; - owl:onProperty action:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:actionCount ; ] , [ - a owl:Restriction ; - owl:onProperty action:actionCount ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:nonNegativeInteger ; + sh:datatype vocabulary:ActionStatusTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:actionStatus ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:phase ; ] , [ - a owl:Restriction ; - owl:onProperty action:endTime ; - owl:maxCardinality "0"^^xsd:nonNegativeInteger ; + sh:class core:UcoObject ; + sh:maxCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:error ; ] , [ - a owl:Restriction ; - owl:onProperty action:error ; - owl:maxCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty action:startTime ; - owl:maxCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:startTime ; ] , [ - a owl:Restriction ; - owl:onProperty action:actionCount ; - owl:maxQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:nonNegativeInteger ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:actionCount ; ] , [ - a owl:Restriction ; - owl:onProperty action:phase ; - owl:onClass action:ArrayOfAction ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype vocabulary:ActionStatusTypeVocab ; + sh:maxCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path action:actionStatus ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:performer ; ] , [ - a owl:Restriction ; - owl:onProperty action:performer ; - owl:onClass ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:instrument ; + ] , + [ + 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 ; ] ; - 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:class action:Action ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path action:action ; + ] ; + sh:targetClass action:ArrayOfAction ; . action:action @@ -266,14 +352,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 +387,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 +415,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 +444,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 73c6b056..00000000 --- a/uco-core/core-da.ttl +++ /dev/null @@ -1,131 +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:role - rdfs:domain core:RelatedIdentity ; - . - -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 4a738100..1d8e8fbc 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,259 +18,394 @@ . 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:datatype xsd:string ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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 ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:anyURI ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:referenceURL ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:definingContext ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:externalIdentifier ; ] ; - 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:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path core:context ; + ] ; + sh:targetClass core:Grouping ; + . + +core:IdentityAbstraction + 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 , + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:target ; + ] , [ - a owl:Restriction ; - owl:onProperty core:kindOfRelationship ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class core:UcoObject ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:source ; ] , [ - a owl:Restriction ; - owl:onProperty core:source ; - owl:onClass core:UcoObject ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:isDirectional ; ] , [ - a owl:Restriction ; - owl:onProperty core:target ; - owl:onClass core:UcoObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:nodeKind sh:Literal ; + sh:path core:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty core:isDirectional ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + 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 ; ] ; - 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 [ - a owl:Restriction ; - owl:onProperty core:createdBy ; - owl:onClass ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class core:ExternalReference ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:externalReference ; ] , [ - a owl:Restriction ; - owl:onProperty core:objectCreatedTime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; + sh:class core:Facet ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:hasFacet ; ] , [ - a owl:Restriction ; - owl:onProperty core:name ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class core:IdentityAbstraction ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:createdBy ; ] , [ - a owl:Restriction ; - owl:onProperty core:specVersion ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class core:MarkingDefinitionAbstraction ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path core:objectMarking ; ] , [ - a owl:Restriction ; - owl:onProperty core:externalReference ; - owl:onClass core:ExternalReference ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:objectCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty core:id ; - owl:onDataRange ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + 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 xsd:string ; + sh:nodeKind sh:Literal ; + sh:path core:description ; + ] , + [ + 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 ; ] ; - 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 @@ -314,7 +448,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 @@ -363,7 +497,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 @@ -404,10 +538,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 ; . @@ -422,7 +553,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 @@ -432,13 +563,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 ; @@ -449,7 +573,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 ; . @@ -495,11 +619,3 @@ core:value rdfs:range xsd:string ; . - - a owl:Class ; - . - - - a owl:Class ; - . - 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 a8d93424..fdabe212 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,265 @@ . 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path identity:birthdate ; + ] ; + sh:targetClass identity:BirthInformationFacet ; . -identity:CountriesOfResidenceFacet - a owl:Class ; +identity:CountryOfResidenceFacet + a + owl:Class , + sh:NodeShape + ; 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 ; + 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: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 ; + ] + ; + 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..9348f66a 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,131 @@ . 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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 0e3738e0..9bc85eea 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,163 @@ . 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:class marking:MarkingDefinition ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path marking:marking ; + ] , + [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path marking:contentSelectors ; + ] + ; + 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:datatype xsd:string ; + sh:hasValue "license" ; + sh:nodeKind sh:Literal ; + sh:path marking:definitionType ; ] , [ - a owl:Restriction ; - owl:onProperty marking:definitionType ; - owl:hasValue "license" ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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: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: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:hasValue "release-to" ; + sh:nodeKind sh:Literal ; + sh:path marking:definitionType ; ] , [ - a owl:Restriction ; - owl:onProperty marking:authorizedIdentities ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path marking:authorizedIdentities ; ] ; - 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:datatype xsd:string ; + sh:hasValue "statement" ; + sh:nodeKind sh:Literal ; + sh:path marking:definitionType ; ] , [ - a owl:Restriction ; - owl:onProperty marking:definitionType ; - owl:hasValue "statement" ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:datatype xsd:string ; + sh:hasValue "terms-of-use" ; + sh:nodeKind sh:Literal ; + sh:path marking:definitionType ; ] , [ - a owl:Restriction ; - owl:onProperty marking:definitionType ; - owl:hasValue "terms-of-use" ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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..5eeb4b13 100644 --- a/uco-master/uco.ttl +++ b/uco-master/uco.ttl @@ -1,34 +1,24 @@ # 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 . -@prefix : . +@prefix core: . @prefix owl: . @prefix rdf: . @prefix rdfs: . -@prefix uco: . -@prefix xml: . -@prefix xs: . +@prefix sh: . +@prefix types: . @prefix xsd: . @@ -36,31 +26,22 @@ rdfs:label "uco-master"@en ; owl:imports , - , , - , , - , , - , , - , , - , , - , , , , - , , - , ; - owl:versionInfo "0.6.0" ; + owl:versionInfo "0.7.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 3716f45b..00000000 --- a/uco-observable/observable-da.ttl +++ /dev/null @@ -1,2057 +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:NTFSFileSystemFacet ; - . - -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:contactInfo - rdfs:domain observable:WhoIsFacet ; - . - -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: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:NTFSFileSystemFacet ; - . - -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:pictureWidth - rdfs:domain observable:RasterPictureFacet ; - . - -observable:picturetype - 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:regionSize - rdfs:domain observable:MemoryFacet ; - . - -observable:regionStartAddress - rdfs:domain observable:MemoryFacet ; - . - -observable:region_end_address - rdfs:domain observable:MemoryFacet ; - . - -observable:regionalInternetRegistry - rdfs:domain observable:WhoIsFacet ; - . - -observable:registeredOrganization - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -observable:registeredOwner - rdfs:domain observable:WindowsComputerSpecificationFacet ; - . - -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:displayName - rdfs:domain observable:ContactFacet ; - . - -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:NTFSFileSystemFacet ; - . - -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 9b898a2e..a34698b8 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,1952 @@ . 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:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:passwordLastChanged ; ] , [ - a owl:Restriction ; - owl:onProperty observable:password ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:password ; ] , [ - a owl:Restriction ; - owl:onProperty observable:passwordType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:passwordType ; ] ; - 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:class core:UcoObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:accountIssuer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:accountType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class core:UcoObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:owner ; ] , [ - a owl:Restriction ; - owl:onProperty observable:expirationTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isActive ; ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:expirationTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:owner ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isActive ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:accountIdentifier ; ] , [ - a owl:Restriction ; - owl:onProperty observable:accountIdentifier ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype vocabulary:AccountTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:accountType ; ] ; - 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:class types:Hash ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:hashes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:size ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:size ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:name ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:asHandle ; ] , [ - a owl:Restriction ; - owl:onProperty observable:number ; - owl:onDataRange xsd:integer ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype vocabulary:RegionalRegistryTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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 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 [ + 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: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 [ - a owl:Restriction ; - owl:onProperty observable:accessedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:anyURI ; + sh:nodeKind sh:Literal ; + sh:path observable:urlTargeted ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:accessedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:visitCount ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:bookmarkPath ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + 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 ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:expirationTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:cookieDomain ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isSecure ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:accessedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cookieDomain ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:expirationTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isSecure ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cookieName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:cookieName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cookiePath ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:cookiePath ; ] ; - 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 + [ + sh:class core:UcoObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:owner ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:endTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class identity:Identity ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:attendant ; ] , [ - a owl:Restriction ; - owl:onProperty observable:location ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class location:Location ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:location ; ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isPrivate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:owner ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:remindTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:remindTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isPrivate ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:startTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:duration ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:duration ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventStatus ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:eventStatus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:eventType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:recurrence ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:recurrence ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:subject ; ] ; - 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 core:UcoObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:owner ; ] , [ - a owl:Restriction ; - owl:onProperty observable:owner ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:networkInterface ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:biosDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:biosDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:biosReleaseDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:biosReleaseDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:localTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:currentSystemDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:systemTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:localTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:currentSystemDate ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:systemTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:availableRam ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:availableRam ; ] , [ - a owl:Restriction ; - owl:onProperty observable:totalRam ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:totalRam ; ] , [ - a owl:Restriction ; - owl:onProperty observable:biosManufacturer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:biosManufacturer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:biosSerialNumber ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:biosSerialNumber ; ] , [ - a owl:Restriction ; - owl:onProperty observable:biosVersion ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:biosVersion ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cpu ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:cpu ; ] , [ - a owl:Restriction ; - owl:onProperty observable:cpuFamily ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:cpuFamily ; ] , [ - a owl:Restriction ; - owl:onProperty observable:gpu ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:gpu ; ] , [ - a owl:Restriction ; - owl:onProperty observable:gpuFamily ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:gpuFamily ; ] , [ - a owl:Restriction ; - owl:onProperty observable:hostname ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:hostname ; ] , [ - a owl:Restriction ; - owl:onProperty observable:processorArchitecture ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:processorArchitecture ; ] , [ - a owl:Restriction ; - owl:onProperty observable:timezoneDST ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:timezoneDST ; ] , [ - a owl:Restriction ; - owl:onProperty observable:timezoneStandard ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:timezoneStandard ; ] , [ - a owl:Restriction ; - owl:onProperty observable:uptime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:uptime ; ] ; - 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: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: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 ; + ] + ; + 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:observable:organizationDepartment ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + 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 ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observable:organizationPosition ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class observable:ContactAddress ; + sh:datatype observable:ContactAddress ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:organizationLocation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observable:organizationLocation ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactAddress ; + sh:class observable:ContactEmail ; + sh:datatype observable:ContactEmail ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactEmail ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observable:contactEmail ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactEmail ; + sh:class observable:ContactMessaging ; + sh:datatype observable:ContactMessaging ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactMessaging ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observable:contactMessaging ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactMessaging ; + sh:class observable:ContactPhone ; + sh:datatype observable:ContactPhone ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactPhone ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observable:contactPhone ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactPhone ; + sh:class observable:ContactProfile ; + sh:datatype observable:ContactProfile ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactProfile ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observable:contactProfile ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactProfile ; + sh:class observable:ContactURL ; + sh:datatype observable:ContactURL ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactURL ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observable:contactURL ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactURL ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:organizationDepartment ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactOrganization ; - owl:onDataRange identity:Organization ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:organizationPosition ; ] ; - 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: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: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 ; + ] + ; + 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:ContactAddress ; + sh:datatype observable:ContactAddress ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactAddress ; ] , [ - a owl:Restriction ; - owl:onProperty identity:birthdate ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; + sh:class observable:ContactAffiliation ; + sh:datatype observable:ContactAffiliation ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactAffiliation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastTimeContacted ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:dateTime ; + sh:class observable:ContactEmail ; + sh:datatype observable:ContactEmail ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactEmail ; ] , [ - a owl:Restriction ; - owl:onProperty observable:numberTimesContacted ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:class observable:ContactMessaging ; + sh:datatype observable:ContactMessaging ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactMessaging ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class observable:ContactPhone ; + sh:datatype observable:ContactPhone ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactPhone ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class observable:ContactProfile ; + sh:datatype observable:ContactProfile ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactProfile ; ] , [ - a owl:Restriction ; - owl:onProperty observable:firstName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class observable:ContactSIP ; + sh:datatype observable:ContactSIP ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactSIP ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class observable:ContactURL ; + sh:datatype observable:ContactURL ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactURL ; ] , [ - a owl:Restriction ; - owl:onProperty observable:middleName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:sourceApplication ; ] , [ - a owl:Restriction ; - owl:onProperty observable:namePhonetic ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path identity:birthdate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:namePrefix ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:lastTimeContacted ; ] , [ - a owl:Restriction ; - owl:onProperty observable:nameSuffix ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:numberTimesContacted ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactGroup ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:contactID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactNote ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:displayName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:nickname ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:firstName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactAddress ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactAddress ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:lastName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactAffiliation ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactAffiliation ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:middleName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactEmail ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactEmail ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:namePhonetic ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactMessaging ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactMessaging ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:namePrefix ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactPhone ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactPhone ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:nameSuffix ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactProfile ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactProfile ; + sh:datatype xsd:string ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:contactGroup ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactSIP ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactSIP ; + sh:datatype xsd:string ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:contactNote ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactURL ; - owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ContactURL ; + sh:datatype xsd:string ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:nickname ; ] ; - 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:observable:sourceApplication ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:class observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:sourceApplication ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contact ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:class observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:observable:contactAddress ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:class observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactMessagingPlatform ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observable:contactMessagingPlatform ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:class observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:messagingAddress ; ] ; - 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: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: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 ; + ] + ; + 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:class observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactProfilePlatform ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profile ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange observable:ObservableObject ; + sh:class observable:ObservableObject ; + sh:datatype observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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: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: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 ; + ] + ; + sh:targetClass observable:ContactSIP ; . observable:ContactURL - a owl:Class ; - rdfs:subClassOf - [ - a owl:Restriction ; - owl:onProperty observable: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: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 ; + ] + ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:byteOrder ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:dataPayloadReferenceURL ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dataPayloadReferenceURL ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Hash ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:hash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isEncrypted ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isEncrypted ; ] , [ - a owl:Restriction ; - owl:onProperty observable:entropy ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:double ; + sh:datatype xsd:double ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:entropy ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sizeInBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeInBytes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dataPayload ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:dataPayload ; ] , [ - a owl:Restriction ; - owl:onProperty observable:magicNumber ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:magicNumber ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mimeClass ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mimeClass ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mimeType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + 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 ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:deviceType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:manufacturer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:manufacturer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:model ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:model ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serialNumber ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:serialNumber ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isDisabled ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:firstLoginTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:firstLoginTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastLoginTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:lastLoginTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isDisabled ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:displayName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:class core:UcoObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:certificateSubject ; ] , [ - a owl:Restriction ; - owl:onProperty observable:certificateSubject ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class identity:Identity ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:certificateIssuer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signatureDescription ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:signatureExists ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signatureExists ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:signatureVerified ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signatureVerified ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:signatureDescription ; ] ; - 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:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:partition ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:diskType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:diskSize ; ] , [ - a owl:Restriction ; - owl:onProperty observable:diskSize ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:freeSpace ; ] , [ - a owl:Restriction ; - owl:onProperty observable:freeSpace ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:diskType ; ] ; - 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: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 [ - a owl:Restriction ; - owl:onProperty observable:diskPartitionType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:partitionLength ; ] , [ - a owl:Restriction ; - owl:onProperty observable:partitionID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:diskPartitionType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:totalSpace ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mountPoint ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mountPoint ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:partitionID ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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,750 +1990,1013 @@ 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:class types:ControlledDictionary ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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 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 [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:MimePartType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:bodyMultipart ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:otherHeaders ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:bodyRaw ; ] , [ - a owl:Restriction ; - owl:onProperty observable:receivedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:from ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sentTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:headerRaw ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:inReplyTo ; ] , [ - a owl:Restriction ; - owl:onProperty observable:bodyRaw ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:sender ; ] , [ - a owl:Restriction ; - owl:onProperty observable:from ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:xOriginatingIP ; ] , [ - a owl:Restriction ; - owl:onProperty observable:headerRaw ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:bcc ; ] , [ - a owl:Restriction ; - owl:onProperty observable:inReplyTo ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:cc ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sender ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:references ; ] , [ - a owl:Restriction ; - owl:onProperty observable:xOriginatingIP ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:otherHeaders ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isRead ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isMimeEncoded ; ] , [ - a owl:Restriction ; - owl:onProperty observable:body ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isMultipart ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contentDisposition ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isRead ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contentType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:messageID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:receivedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:priority ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sentTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:body ; ] , [ - a owl:Restriction ; - owl:onProperty observable:xMailer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:contentDisposition ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isMimeEncoded ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:contentType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isMultipart ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + 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:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path observable:categories ; + ] , + [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path observable:labels ; + ] , + [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path observable:receivedLines ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:encryptionMethod ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:encryptionMethod ; ] , [ - a owl:Restriction ; - owl:onProperty observable:encryptionMode ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + 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 ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:computerName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:computerName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventText ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:eventID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:eventType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:eventText ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:eventType ; ] ; - 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:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extDeletionTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extInodeChangeTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extInodeChangeTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extFileType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extFileType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extFlags ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extFlags ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extHardLinkCount ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extHardLinkCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extInodeID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extInodeID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extPermissions ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extPermissions ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extSGID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extSGID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extSUID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extSUID ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:length ; ] , [ - a owl:Restriction ; - owl:onProperty observable:encoding ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:encoding ; ] , [ - a owl:Restriction ; - owl:onProperty observable:language ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:englishTranslation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:length ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:language ; ] , [ - a owl:Restriction ; - owl:onProperty observable:englishTranslation ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:stringValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:stringValue ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:byteStringValue ; ] ; - 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:class observable:ExtractedString ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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 "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 ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:accessedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:nodeKind sh:Literal ; + sh:path observable:isDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:fileSystemType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:accessedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:metadataChangeTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:metadataChangeTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sizeInBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:allocationStatus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:allocationStatus ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extension ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extension ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + 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 ; ] ; - 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 core:UcoObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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: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 ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:clusterSize ; ] , [ - a owl:Restriction ; - owl:onProperty observable:clusterSize ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:datatype xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:fragmentIndex ; + ] , + [ + sh:datatype xsd:integer ; + sh:nodeKind sh:Literal ; + 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 ; - rdfs:subCassOf observable:ObservableObject ; + 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 location:Location ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:location ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:endTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:geoLocationEntry ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:startTime ; ] - ; - 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 + [ + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:hexadecimalValue ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:abbreviation ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:symbolicName ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:httpMessageBodyData ; ] , [ - a owl:Restriction ; - owl:onProperty observable:httpMessageBodyData ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:httpRequestHeader ; ] , [ - a owl:Restriction ; - owl:onProperty observable:httpMesageBodyLength ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:httpMesageBodyLength ; ] , [ - a owl:Restriction ; - owl:onProperty observable:requestVersion ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:requestMethod ; ] , [ - a owl:Restriction ; - owl:onProperty observable:requestMethod ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:requestValue ; ] , [ - a owl:Restriction ; - owl:onProperty observable:requestValue ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:requestVersion ; ] ; - 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 @@ -2376,63 +3007,96 @@ 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:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:icmpCode ; + ] , + [ + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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 + [ + sh:class types:Hash ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:execProgramHashes ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:execArguments ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:execWorkingDirectory ; ] ; - 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 @@ -2450,202 +3114,266 @@ 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 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 [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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 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 [ + 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 ; . 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 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 [ + 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 ; . 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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 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 [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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 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 [ + 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 ; . observable:MSISDN @@ -2663,580 +3391,754 @@ 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 + [ + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isInjected ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:regionSize ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isMapped ; ] , [ - a owl:Restriction ; - owl:onProperty observable:blockType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:MemoryBlockTypeVocab ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isProtected ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isInjected ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isVolatile ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isMapped ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:regionEndAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isProtected ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:regionStartAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isVolatile ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:regionSize ; + ] , + [ + sh:datatype vocabulary:MemoryBlockTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:blockType ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:from ; ] , [ - a owl:Restriction ; - owl:onProperty observable:from ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sentTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:messageID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:messageID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:messageText ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:messageText ; ] , [ - a owl:Restriction ; - owl:onProperty observable:messageType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:messageType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sessionID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sessionID ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:message ; ] , [ - a owl:Restriction ; - owl:onProperty observable:message ; - owl:onClass observable:ObservableObject ; - owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + 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 ; ] ; - 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:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameAccessedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileNameCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileNameModifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameModifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileNameRecordChangeTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameRecordChangeTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftRecordChangeTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mftRecordChangeTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFileNameLength ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFileNameLength ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftFlags ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mftFlags ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mftParentID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mftParentID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ntfsHardLinkCount ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:ntfsHardLinkCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ntfsOwnerID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:ntfsOwnerID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ntfsOwnerSID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:ntfsOwnerSID ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:storageCapacityInBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mockLocationsAllowed ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ESN ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:clockSetting ; ] , [ - a owl:Restriction ; - owl:onProperty observable:IMEI ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:phoneActivationTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:bluetoothDeviceName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:storageCapacityInBytes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:clockSetting ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:ESN ; ] , [ - a owl:Restriction ; - owl:onProperty observable:keypadUnlockCode ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:IMEI ; ] , [ - a owl:Restriction ; - owl:onProperty observable:mockLocationsAllowed ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:bluetoothDeviceName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:network ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:keypadUnlockCode ; ] , [ - a owl:Restriction ; - owl:onProperty observable:phoneActivationTime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:network ; + ] , + [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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: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 - a owl:Class ; - rdfs:subClassOf - , +observable:NTFSFileFacet + 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 + [ + sh:class observable:AlternateDataStream ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:alternateDataStreams ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:entryID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sid ; ] ; - 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 ; + sh:targetClass observable:NTFSFileFacet ; + . + +observable:NTFSFilePermissionsFacet + 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: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 ; - 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:class core:UcoObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:src ; + ] , + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:dst ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:endTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:ControlledDictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:protocols ; ] , [ - a owl:Restriction ; - owl:onProperty observable:protocols ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isActive ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isActive ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:startTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:destinationPort ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:destinationPort ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sourcePort ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sourcePort ; ] ; - 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 ; - . - -observable:NetworkConnetion - a owl:Class ; - 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:NetworkConnectionFacet ; . 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:srcPayload ; ] , [ - a owl:Restriction ; - owl:onProperty observable:srcPayload ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:ipfix ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dstBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:dstBytes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dstPackets ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:dstPackets ; ] , [ - a owl:Restriction ; - owl:onProperty observable:srcBytes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:srcBytes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:srcPackets ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:srcPackets ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:macAddress ; + ] , + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:dhcpServer ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:dhcpLeaseExpires ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:ip ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dhcpLeaseObtained ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:ipGateway ; ] , [ - a owl:Restriction ; - owl:onProperty observable:macAddress ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:dhcpLeaseExpires ; ] , [ - a owl:Restriction ; - owl:onProperty observable:adapterName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:dhcpLeaseObtained ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:adapterName ; ] ; - 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 @@ -3416,235 +4318,310 @@ 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:text ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:text ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:hasChanged ; ] , [ - a owl:Restriction ; - owl:onProperty observable:hasChanged ; - owl:onDataRange xsd:boolean ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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: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 ; . 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 ; - rdfs:subClasOf observable:ObservableObject ; + 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:class location:Location ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:location ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:inetLocation ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:name ; ] ; - 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:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:environmentVariables ; ] , [ - a owl:Restriction ; - owl:onProperty observable:environmentVariables ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:installDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:installDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:bitness ; ] , [ - a owl:Restriction ; - owl:onProperty observable:manufacturer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:manufacturer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:version ; ] ; - 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:class types:ControlledDictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:documentInformationDictionary ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:documentInformationDictionary ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isOptimized ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isOptimized ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:pdfId1 ; ] , [ - a owl:Restriction ; - owl:onProperty observable:pdfId1 ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:version ; ] , [ - a owl:Restriction ; - owl:onProperty observable:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + 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 @@ -3662,354 +4639,454 @@ 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:datatype xsd:string ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:application ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:to ; ] , [ - a owl:Restriction ; - owl:onProperty observable:to ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:endTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:duration ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:startTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:callType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:duration ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:callType ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:binary ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:environmentVariables ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:creatorUser ; ] , [ - a owl:Restriction ; - owl:onProperty observable:exitTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:parent ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:environmentVariables ; ] , [ - a owl:Restriction ; - owl:onProperty observable:binary ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isHidden ; ] , [ - a owl:Restriction ; - owl:onProperty observable:creatorUser ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:exitTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:parent ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isHidden ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:exitStatus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:exitStatus ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:pid ; ] , [ - a owl:Restriction ; - owl:onProperty observable:pid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:currentWorkingDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:currentWorkingDirectory ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:status ; ] , [ - a owl:Restriction ; - owl:onProperty observable:status ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + 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:class identity:Identity ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileIdentity ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactAddress ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ContactAddress ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactEmail ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ContactEmail ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactEmail ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactMessaging ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ContactMessaging ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactMessaging ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactPhone ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ContactPhone ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactPhone ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactURL ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ContactURL ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactURL ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileAccount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileAccount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileService ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileCreated ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileWebsite ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileIdentity ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:profileCreated ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileService ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path core:name ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileLanguage ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + 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 ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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 @@ -4073,74 +5150,86 @@ 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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 @@ -4158,1284 +5247,1691 @@ 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 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 [ - a owl:Restriction ; - owl:onProperty observable:addressValue ; - owl:cardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:positiveInteger ; + sh:nodeKind sh:Literal ; + sh:path observable:rowIndex ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:columnName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:columnName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:rowCondition ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:rowCondition ; ] , [ - a owl:Restriction ; - owl:onProperty observable:tableName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:tableName ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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 ; - rdfs:subClasOf observable:FileSystemObject ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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 ; - rdfs:subClassOf ; + a + owl:Class , + sh:NodeShape + ; + 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 ; . 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:sourceFlags ; + ] , + [ + sh:nodeKind sh:Literal ; + sh:path observable:destinationFlags ; + ] + ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isEnabled ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerEndTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerBeginTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isEnabled ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerEndTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerDelay ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerDelay ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerMaxRunTime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerMaxRunTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerSessionChangeType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerSessionChangeType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerFrequency ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:TriggerFrequencyVocab ; + sh:datatype vocabulary:TriggerFrequencyVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerFrequency ; ] , [ - a owl:Restriction ; - owl:onProperty observable:triggerType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:TriggerTypeVocab ; + sh:datatype vocabulary:TriggerTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:triggerType ; ] ; - 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:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileBackgroundLocation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:favoritesCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileBannerLocation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:followersCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileImageLocation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:friendsCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Hash ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileBackgroundHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:listedCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Hash ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileBannerHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileBackgroundLocation ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Hash ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:profileImageHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileBannerLocation ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:profileIsProtected ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileImageLocation ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:profileIsVerified ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileIsProtected ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:listedCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileIsVerified ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:favoritesCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:statusesCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:followersCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:twitterHandle ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:friendsCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:userLocationString ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:statusesCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileBackgroundHash ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:twitterId ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileBannerHash ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:twitterHandle ; ] , [ - a owl:Restriction ; - owl:onProperty observable:profileImageHash ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:userLocationString ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:datatype xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:openFileDescriptor ; + ] , + [ + sh:datatype xsd:nonNegativeInteger ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:url ; ] , [ - a owl:Restriction ; - owl:onProperty observable:expirationTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:referrerUrl ; ] , [ - a owl:Restriction ; - owl:onProperty observable:firstVisit ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:expirationTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:hostname ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:firstVisit ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastVisit ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:lastVisit ; ] , [ - a owl:Restriction ; - owl:onProperty observable:manuallyEnteredCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:visitCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:pageTitle ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:manuallyEnteredCount ; ] , [ - a owl:Restriction ; - owl:onProperty observable:url ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:browserUserProfile ; ] , [ - a owl:Restriction ; - owl:onProperty observable:visitCount ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:hostname ; ] , [ - a owl:Restriction ; - owl:onProperty observable:keywordSearchTerm ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:pageTitle ; ] , [ - a owl:Restriction ; - owl:onProperty observable:referrerUrl ; - owl:minCardinality "0"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:minCount "0"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:keywordSearchTerm ; ] ; - 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:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:browserInformation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:urlHistoryEntry ; - owl:minCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:URLHistoryEntry ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:browserInformation ; ] , [ - a owl:Restriction ; - owl:onProperty observable:fromURLVisit ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:fromURLVisit ; ] , [ - a owl:Restriction ; - owl:onProperty observable:url ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:url ; ] , [ - a owl:Restriction ; - owl:onProperty observable:urlTransitionType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:visitTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:visitDuration ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:duration ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:visitDuration ; ] , [ - a owl:Restriction ; - owl:onProperty observable:visitTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:urlTransitionType ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:effectiveUser ; ] , [ - a owl:Restriction ; - owl:onProperty observable:logoutTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:loginTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:effectiveUser ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:logoutTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:effectiveGroup ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:effectiveGroup ; ] , [ - a owl:Restriction ; - owl:onProperty observable:effectiveGroupID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:effectiveGroupID ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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: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 ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:creationDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:registrantContactInfo ; ] , [ - a owl:Restriction ; - owl:onProperty observable:expirationDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:serverName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lookupDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:nameServer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:updatedDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:WhoisRegistrarInfoType ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:registrarInfo ; ] , [ - a owl:Restriction ; - owl:onProperty observable:domainName ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:creationDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ipAddress ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:expirationDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrantContactInfo ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:lookupDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serverName ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:updatedDate ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrarInfo ; - owl:onClass observable:WhoisRegistrarInfoType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:domainID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:domainID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:remarks ; ] , [ - a owl:Restriction ; - owl:onProperty observable:remarks ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sponsoringRegistrar ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sponsoringRegistrar ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path observable:registrantIDs ; ] , [ - a owl:Restriction ; - owl:onProperty observable:regionalInternetRegistry ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:RegionalRegistryTypeVocab ; + sh:datatype vocabulary:RegionalRegistryTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:regionalInternetRegistry ; ] , [ - a owl:Restriction ; - owl:onProperty observable:dnssec ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:WhoisDNSSECTypeVocab ; + sh:datatype vocabulary:WhoisDNSSECTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:dnssec ; ] , [ - a owl:Restriction ; - owl:onProperty observable:status ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:WhoisStatusTypeVocab ; + sh:datatype vocabulary:WhoisStatusTypeVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:status ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + 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 location:Location ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:geolocationAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:contactPhoneNumber ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:contactPhoneNumber ; ] , [ - a owl:Restriction ; - owl:onProperty observable:emailAddress ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:emailAddress ; ] , [ - a owl:Restriction ; - owl:onProperty observable:referralURL ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:referralURL ; ] , [ - a owl:Restriction ; - owl:onProperty observable:whoisServer ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:whoisServer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrarGUID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:registrarGUID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrarID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:registrarID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registrarName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:registrarName ; ] ; - 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 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 [ + 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: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:datatype xsd:string ; + sh:nodeKind sh:Literal ; + 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: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 ; + ] + ; + 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 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 ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:registeredOrganization ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:GlobalFlagType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:globalFlagList ; ] , [ - a owl:Restriction ; - owl:onProperty observable:registeredOwner ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:windowsDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:windowsDirectory ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:windowsSystemDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:windowsSystemDirectory ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:windowsTempDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:windowsTempDirectory ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:msProductID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:msProductID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:msProductName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:msProductName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:netBIOSName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:netBIOSName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path observable:domain ; ] ; - 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: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 ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:peType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:numberOfSections ; ] , [ - a owl:Restriction ; - owl:onProperty observable:timeDateStamp ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:numberOfSymbols ; ] , [ - a owl:Restriction ; - owl:onProperty observable:optionalHeader ; - owl:onClass observable:WindowsPEOptionalHeader ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfOptionalHeader ; ] , [ - a owl:Restriction ; - owl:onProperty observable:numberOfSections ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:impHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:numberOfSymbols ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:peType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:sizeOfOptionalHeader ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + sh:path observable:machine ; ] , [ - a owl:Restriction ; - owl:onProperty observable:impHash ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:characteristics ; ] ; - 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 @@ -5459,288 +6955,527 @@ 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:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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: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: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:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:numberOfRVAAndSizes ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sectionAlignment ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfCode ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfHeaders ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfHeapCommit ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfHeapReserve ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfImage ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfInitializedData ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfStackCommit ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfStackReserve ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:sizeOfUninitializedData ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:win32VersionValue ; + ] , + [ + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:dllCharacteristics ; + ] , + [ + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:magic ; + ] , + [ + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:majorImageVersion ; + ] , + [ + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:majorOSVersion ; + ] , + [ + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:majorSubsystemVersion ; + ] , + [ + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:minorImageVersion ; + ] , + [ + sh:datatype xsd:unsignedShort ; + sh:nodeKind sh:Literal ; + sh:path observable:minorOSVersion ; + ] , + [ + 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: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 [ - a owl:Restriction ; - owl:onProperty observable:entropy ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:float ; + sh:class types:Hash ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:hashes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:size ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:double ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:entropy ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + 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 ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:volume ; + ] , + [ + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:accessedDirectory ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:firstRun ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:accessedFile ; ] , [ - a owl:Restriction ; - owl:onProperty observable:lastRun ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:firstRun ; ] , [ - a owl:Restriction ; - owl:onProperty observable:volume ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:lastRun ; ] , [ - a owl:Restriction ; - owl:onProperty observable:timesExecuted ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:timesExecuted ; ] , [ - a owl:Restriction ; - owl:onProperty observable:applicationFileName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:applicationFileName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:prefetchHash ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:prefetchHash ; ] ; - 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:class types:Dictionary ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:startupInfo ; ] , [ - a owl:Restriction ; - owl:onProperty observable:aslrEnabled ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:aslrEnabled ; ] , [ - a owl:Restriction ; - owl:onProperty observable:depEnabled ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:depEnabled ; ] , [ - a owl:Restriction ; - owl:onProperty observable:ownerSID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:ownerSID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:priority ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:priority ; ] , [ - a owl:Restriction ; - owl:onProperty observable:windowTitle ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:windowTitle ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + 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 [ - a owl:Restriction ; - owl:onProperty observable:modifiedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:creator ; ] , [ - a owl:Restriction ; - owl:onProperty observable:creator ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:WindowsRegistryValue ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:registryValues ; ] , [ - a owl:Restriction ; - owl:onProperty observable:numberOfSubkeys ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:modifiedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:key ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + 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 ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:data ; ] , [ - a owl:Restriction ; - owl:onProperty ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:serviceName ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:serviceStatus ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:displayName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serviceType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:groupName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startType ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:serviceStatus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:displayName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:serviceType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:groupName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:startCommandLine ; ] , [ - a owl:Restriction ; - owl:onProperty observable:startCommandLine ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:startType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serviceName ; - owl:onDataRange xsd:string ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + 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 @@ -5832,448 +7567,552 @@ 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: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 ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:mostRecentRunTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:ObservableObject ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:workingDirectory ; ] , [ - a owl:Restriction ; - owl:onProperty observable:nextRunTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:TaskActionType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:actionList ; ] , [ - a owl:Restriction ; - owl:onProperty observable:observableCreatedTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class observable:TriggerType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:triggerList ; ] , [ - a owl:Restriction ; - owl:onProperty observable:account ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:mostRecentRunTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:application ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:nextRunTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:workItemData ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:observableCreatedTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:workingDirectory ; - owl:onClass observable:ObservableObject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:exitCode ; ] , [ - a owl:Restriction ; - owl:onProperty observable:exitCode ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:maxRunTime ; ] , [ - a owl:Restriction ; - owl:onProperty observable:maxRunTime ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:accountLogonType ; ] , [ - a owl:Restriction ; - owl:onProperty observable:accountLogonType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:accountRunLevel ; ] , [ - a owl:Restriction ; - owl:onProperty observable:accountRunLevel ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:imageName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:imageName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:parameters ; ] , [ - a owl:Restriction ; - owl:onProperty observable:parameters ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:taskComment ; ] , [ - a owl:Restriction ; - owl:onProperty observable:taskComment ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:taskCreator ; ] , [ - a owl:Restriction ; - owl:onProperty observable:taskCreator ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype vocabulary:TaskFlagVocab ; + sh:nodeKind sh:Literal ; + sh:path observable:flags ; ] , [ - a owl:Restriction ; - owl:onProperty observable:priority ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:TaskPriorityVocab ; + sh:datatype vocabulary:TaskPriorityVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:priority ; ] , [ - a owl:Restriction ; - owl:onProperty observable:status ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange vocabulary:TaskStatusVocab ; + sh:datatype vocabulary:TaskStatusVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:status ; ] ; - 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:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:creationTime ; + ] , + [ + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:parameterAddress ; + ] , + [ + sh:datatype xsd:hexBinary ; + sh:nodeKind sh:Literal ; + sh:path observable:startAddress ; + ] , [ - a owl:Restriction ; - owl:onProperty observable:creationTime ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:priority ; ] , [ - a owl:Restriction ; - owl:onProperty observable:runningStatus ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:nonNegativeInteger ; + sh:nodeKind sh:Literal ; + sh:path observable:stackSize ; ] , [ - a owl:Restriction ; - owl:onProperty observable:priority ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:nonNegativeInteger ; + sh:nodeKind sh:Literal ; + sh:path observable:threadID ; ] , [ - a owl:Restriction ; - owl:onProperty observable:context ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:context ; ] , [ - a owl:Restriction ; - owl:onProperty observable:securityAttributes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:runningStatus ; + ] , + [ + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:securityAttributes ; + ] , + [ + sh:datatype xsd:unsignedInt ; + sh:nodeKind sh:Literal ; + sh:path observable:creationFlags ; ] ; - 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:x509v3extensions ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectHash ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Hash ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:issuerHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:thumbprintHash ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Hash ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:subjectHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:validityNotAfter ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class types:Hash ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path observable:thumbprintHash ; ] , [ - a owl:Restriction ; - owl:onProperty observable:validityNotBefore ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:boolean ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:isSelfSigned ; ] , [ - a owl:Restriction ; - owl:onProperty observable:x509v3extensions ; - owl:onClass observable:X509V3ExtensionsFacet ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:validityNotAfter ; ] , [ - a owl:Restriction ; - owl:onProperty observable:isSelfSigned ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:boolean ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:validityNotBefore ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectPublicKeyExponent ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:integer ; + sh:datatype xsd:integer ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:subjectPublicKeyExponent ; ] , [ - a owl:Restriction ; - owl:onProperty observable:issuer ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:issuer ; ] , [ - a owl:Restriction ; - owl:onProperty observable:serialNumber ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:serialNumber ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signature ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:signature ; ] , [ - a owl:Restriction ; - owl:onProperty observable:signatureAlgorithm ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:signatureAlgorithm ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:subject ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectPublicKeyAlgorithm ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:subjectPublicKeyAlgorithm ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectPublicKeyModulus ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:subjectPublicKeyModulus ; ] , [ - a owl:Restriction ; - owl:onProperty observable:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:version ; ] ; - 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:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:privateKeyUsagePeriodNotAfter ; ] , [ - a owl:Restriction ; - owl:onProperty observable:privateKeyUsagePeriodNotBefore ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:privateKeyUsagePeriodNotBefore ; ] , [ - a owl:Restriction ; - owl:onProperty observable:authorityKeyIdentifier ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:authorityKeyIdentifier ; ] , [ - a owl:Restriction ; - owl:onProperty observable:basicConstraints ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:basicConstraints ; ] , [ - a owl:Restriction ; - owl:onProperty observable:certificatePolicies ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:certificatePolicies ; ] , [ - a owl:Restriction ; - owl:onProperty observable:crlDistributionPoints ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:crlDistributionPoints ; ] , [ - a owl:Restriction ; - owl:onProperty observable:extendedKeyUsage ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:extendedKeyUsage ; ] , [ - a owl:Restriction ; - owl:onProperty observable:inhibitAnyPolicy ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:inhibitAnyPolicy ; ] , [ - a owl:Restriction ; - owl:onProperty observable:issuerAlternativeName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:issuerAlternativeName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:keyUsage ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:keyUsage ; ] , [ - a owl:Restriction ; - owl:onProperty observable:nameConstraints ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:nameConstraints ; ] , [ - a owl:Restriction ; - owl:onProperty observable:policyConstraints ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:policyConstraints ; ] , [ - a owl:Restriction ; - owl:onProperty observable:policyMappings ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:policyMappings ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectAlternativeName ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:subjectAlternativeName ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectDirectoryAttributes ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:subjectDirectoryAttributes ; ] , [ - a owl:Restriction ; - owl:onProperty observable:subjectKeyIdentifier ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path observable:subjectKeyIdentifier ; ] ; - 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 @@ -6322,7 +8161,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 @@ -6695,13 +8534,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 ; . @@ -6716,7 +8555,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 @@ -7205,7 +9044,7 @@ observable:dnssec observable:documentInformationDictionary a owl:ObjectProperty ; rdfs:label "documentInformationDictionary"@en ; - rdfs:range ; + rdfs:range types:ControlledDictionary ; . observable:domain @@ -7371,7 +9210,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 @@ -7413,7 +9252,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 @@ -7433,7 +9272,7 @@ observable:execWorkingDirectory observable:exifData a owl:ObjectProperty ; rdfs:label "exifData"@en ; - rdfs:range ; + rdfs:range types:ControlledDictionary ; . observable:exitCode @@ -7554,13 +9393,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 ; @@ -7572,7 +9404,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 @@ -7703,7 +9535,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 @@ -7755,14 +9587,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 @@ -7823,7 +9655,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 @@ -7898,7 +9730,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 ; . @@ -7939,7 +9771,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 ; . @@ -7954,7 +9786,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 @@ -8111,7 +9943,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 @@ -8203,6 +10035,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 ; @@ -8221,7 +10060,7 @@ observable:location a owl:ObjectProperty ; rdfs:label "location"@en ; rdfs:comment "An associated location."@en ; - rdfs:range ; + rdfs:range location:Location ; . observable:loginTime @@ -8541,6 +10380,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 +10394,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 ; @@ -8735,20 +10574,14 @@ observable:organizationPosition observable:otherHeaders a owl:ObjectProperty ; rdfs:label "otherHeaders"@en ; - rdfs:range ; + rdfs:range types:Dictionary ; . observable:owner a owl:ObjectProperty ; rdfs:label "owner"@en ; - rdfs:comment - "The owner of the file."@en , - "The owner of this account."@en - ; - rdfs:range - , - observable:ObservableObject - ; + rdfs:comment "Specifies the owner of an Observable Object."@en ; + rdfs:range core:UcoObject ; . observable:ownerSID @@ -8821,10 +10654,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 ; . @@ -8946,7 +10776,14 @@ observable:priority a owl:DatatypeProperty ; rdfs:label "priority"@en ; rdfs:comment "The priority of the email."@en ; - rdfs:range xsd:string ; + rdfs:range [ + a rdfs:Datatype ; + owl:unionOf ( + xsd:integer + xsd:string + vocabulary:TaskPriorityVocab + ) ; + ] ; . observable:privateKeyUsagePeriodNotAfter @@ -8986,7 +10823,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 @@ -9000,7 +10837,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 @@ -9028,7 +10865,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 @@ -9052,6 +10889,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 ; @@ -9066,13 +10910,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 ; @@ -9091,7 +10928,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 @@ -9371,7 +11208,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 ; . @@ -9595,7 +11432,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 @@ -9656,7 +11493,7 @@ observable:startType observable:startupInfo a owl:ObjectProperty ; rdfs:label "startupInfo"@en ; - rdfs:range ; + rdfs:range types:Dictionary ; . observable:state @@ -9669,7 +11506,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 vocabulary:WhoisStatusTypeVocab ; + rdfs:range [ + a rdfs:Datatype ; + owl:unionOf ( + xsd:string + vocabulary:TaskStatusVocab + vocabulary:WhoisStatusTypeVocab + ) ; + ] ; . observable:statusesCount @@ -9722,7 +11566,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 @@ -9819,7 +11663,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..52db3e36 100644 --- a/uco-pattern/pattern.ttl +++ b/uco-pattern/pattern.ttl @@ -2,10 +2,12 @@ # imports: https://unifiedcyberontology.org/ontology/uco/core @base . +@prefix core: . @prefix owl: . @prefix pattern: . @prefix rdf: . @prefix rdfs: . +@prefix sh: . @prefix xsd: . @@ -15,31 +17,41 @@ . 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"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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..92d3147d 100644 --- a/uco-role/role.ttl +++ b/uco-role/role.ttl @@ -2,11 +2,13 @@ # imports: https://unifiedcyberontology.org/ontology/uco/core @base . +@prefix core: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @prefix role: . -@prefix xs: . +@prefix sh: . +@prefix xsd: . a owl:Ontology ; @@ -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-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..dd56e7de 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,367 @@ . 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: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: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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path tool:buildConfiguration ; + ] , [ - a owl:Restriction ; - owl:onProperty tool:compilationDate ; - owl:maxCardinality "1"^^xsd:nonNegativeInteger ; + sh:class tool:BuildUtilityType ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path tool:buildUtility ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildConfiguration ; - owl:onClass tool:BuildConfigurationType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class tool:CompilerType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path tool:compilers ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildUtility ; - owl:onClass tool:BuildUtilityType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:class tool:LibraryType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path tool:libraries ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildID ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:dateTime ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:compilationDate ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildLabel ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:buildID ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildOutputLog ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:buildLabel ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildProject ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:buildOutputLog ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildScript ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:buildProject ; ] , [ - a owl:Restriction ; - owl:onProperty tool:buildVersion ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + 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 ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:compilerInformalDescription ; ] , [ - a owl:Restriction ; - owl:onProperty tool:cpeid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:cpeid ; ] , [ - a owl:Restriction ; - owl:onProperty tool:swid ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:swid ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:dependencyDescription ; ] , [ - a owl:Restriction ; - owl:onProperty tool:dependencyType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:dependencyType ; ] ; - 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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: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 ; ] , [ - a owl:Restriction ; - owl:onProperty tool:servicePack ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:servicePack ; ] , [ - a owl:Restriction ; - owl:onProperty tool:toolType ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:toolType ; ] , [ - a owl:Restriction ; - owl:onProperty tool:version ; - owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ; - owl:onDataRange xsd:string ; + sh:datatype xsd:string ; + sh:maxCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path tool:version ; ] ; - 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:class tool:DependencyType ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:path tool:dependencies ; + ] , + [ + sh:datatype xsd:string ; + sh:nodeKind sh:Literal ; + 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..bcfa46c7 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,113 @@ . 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path types:value ; ] ; - 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:integer ; + sh:nodeKind sh:BlankNodeOrIRI ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + sh:path types:hashValue ; ] , [ - a owl:Restriction ; - owl:onProperty types:hashValue ; - owl:onDataRange xsd:hexBinary ; - owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; + sh:datatype vocabulary:HashNameVocab ; + sh:maxCount "1"^^xsd:integer ; + sh:minCount "1"^^xsd:integer ; + sh:nodeKind sh:Literal ; + 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 @@ -120,7 +149,13 @@ types:entry a owl:ObjectProperty ; rdfs:label "entry"@en ; rdfs:comment "A dictionary entry."@en ; - rdfs:range types:DictionaryEntry ; + rdfs:range [ + a rdfs:Datatype ; + owl:unionOf ( + types:ControlledDictionaryEntry + types:DictionaryEntry + ) ; + ] ; . types:hashMethod diff --git a/uco-victim/victim.ttl b/uco-victim/victim.ttl index 37d09d64..84b85b1b 100644 --- a/uco-victim/victim.ttl +++ b/uco-victim/victim.ttl @@ -6,8 +6,10 @@ @prefix owl: . @prefix rdf: . @prefix rdfs: . +@prefix role: . +@prefix sh: . @prefix victim: . -@prefix xs: . +@prefix xsd: . a owl:Ontology ; @@ -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 ; .