diff --git a/.gitignore b/.gitignore index 2bf72dd..241dd7a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ build dist *.pyc *.egg-info -.* \ No newline at end of file +.* +__pycache__ +!.github \ No newline at end of file diff --git a/README.md b/README.md index 57466bb..327ba7b 100644 --- a/README.md +++ b/README.md @@ -6,61 +6,15 @@ This repository is itself structured as a _Reproducible Every-Place Research Obj Make commands issued in the top-level directory are used to obtain the Docker image and run the demos. -## Obtain the Docker image for this REPRO - -Use the `make pull-image` command to pull the Docker image from Docker hub: -``` -trace-model$ make pull-image -docker pull cirss/trace-model:latest -latest: Pulling from cirss/trace-model -d19f32bd9e41: Pull complete -f9e098bd9304: Pull complete -bd67e18a393a: Pull complete -a999842c6b8b: Pull complete -5879f0773d6f: Pull complete -d735389eb5d9: Pull complete -de60b39ca69a: Pull complete -ac79dbfddb45: Pull complete -633a376f999c: Pull complete -4c1f583c231d: Pull complete -40499f468cf6: Pull complete -438476b07eca: Pull complete -66c6f2f0117d: Pull complete -Digest: sha256:013dc3261b141fc79d7bbc5e9cede4376951917f29fa282feebe68b23eaa6666 -Status: Downloaded newer image for cirss/trace-model:latest -docker.io/cirss/trace-model:latest -``` - -Alternatively, build the image locally using the `make build-image` command: -``` -/trace-model$ make build-image -docker build -t cirss/trace-model:latest . -Sending build context to Docker daemon 292.1MB -Step 1/12 : FROM cirss/repro-parent:latest -latest: Pulling from cirss/repro-parent -Digest: sha256:9b589a67c0e43ebaa6a99b7a64fc9ceaf3935ae99550366d323701425dbc2418 -Status: Downloaded newer image for cirss/repro-parent:latest - ---> 7fe3395196d6 -Step 2/12 : COPY exports /repro/exports - ---> 5493da08ada1 -Step 3/12 : ADD ${REPRO_DIST}/boot-setup /repro/dist/ -Downloading 1.315kB - ---> a84c9e2d5371 -Step 4/12 : RUN bash /repro/dist/boot-setup - ---> Running in 6b41b98cbc46 -Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB] -Hit:2 http://archive.ubuntu.com/ubuntu jammy InRelease -Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB] -. -. -. -Step 12/12 : CMD /bin/bash -il - ---> Running in 0253e7b96eae -Removing intermediate container 0253e7b96eae - ---> d183e074b43e -Successfully built d183e074b43e -Successfully tagged cirss/trace-model:latest -``` +## Setup the environment + +First pull the parent image from Docker Hub using the `make pull-parent` command and build this REPRO's Docker image using the `make build-image` command (or the shorthand `image`). + +Then start the REPRO in interactive mode using the `make start-repro` command (or the shorthand `make start`). + +Next, install the related Python packages using the `pip install .` command. + +Finally, exit the REPRO using the `exit` command. ## Run and confirm the reproducibility of the demonstration @@ -68,50 +22,121 @@ The demonstration and its products are stored in the `demo` directory tree: ``` trace-model$ tree demo demo -├── 01-minimal -│   ├── Makefile -│   ├── run.sh -│   └── run.txt -├── 02-type-a -│   ├── Makefile -│   ├── run.sh -│   └── run.txt -├── common -│   ├── trace-vocab.jsonld -│   ├── tro -│   │   ├── tro-01-from-minimal-trs.jsonld -│   │   └── tro-02-from-type-a-trs.jsonld -│   ├── trs -│   │   ├── trs-01-minimal.jsonld -│   │   └── trs-02-type-a.jsonld -│   └── trs-queries.sh +├── 01-trov-vocab +│ ├── Makefile +│ ├── products +│ │ ├── img.gv +│ │ ├── img.svg +│ │ └── report_subclass.html +│ ├── run.sh +│ ├── run.txt +│ └── templates.geist +├── 02-tro-examples +│ ├── 01-two-artifacts-no-trp +│ │ ├── Makefile +│ │ ├── run.sh +│ │ ├── run.txt +│ │ ├── tro +│ │ │ ├── file1 +. +. (additional output removed for brevity) +. +│ ├── 05-validate-tro-declaration +│ │ ├── Makefile +│ │ ├── data +│ │ │ ├── mappings.json +│ │ │ ├── tro.schema.ttl +│ │ │ ├── tro1.jsonld +│ │ │ ├── tro2.jsonld +│ │ │ ├── tro3.jsonld +│ │ │ ├── tro4.jsonld +│ │ │ └── tro5.jsonld +│ │ ├── products +│ │ │ ├── tro1.gv +│ │ │ ├── tro1.png +│ │ │ ├── tro2.gv +│ │ │ ├── tro2.png +│ │ │ ├── tro3.gv +│ │ │ ├── tro3.png +│ │ │ ├── tro4.gv +│ │ │ ├── tro4.png +│ │ │ ├── tro5.gv +│ │ │ └── tro5.png +│ │ ├── run.sh +│ │ └── run.txt +│ ├── Makefile +│ └── common +│ ├── certificate +│ │ ├── cacert.pem +│ │ └── tsa.crt +│ └── tro +│ ├── file1 +│ ├── file2 +│ └── tro.jsonld └── Makefile ``` +Below gives a brief description of these demonstrations: +- __01-trov-vocab__: query the _Transparent Research Object Vocabulary_ (__TROV__) and visualize the subclass relationship (check [report](https://transparency-certified.github.io/trace-model/demo/01-trov-vocab/products/report_subclass.html)). +- __02-tro-examples__: query three _Transparent Research Objects_ (__TROs__), _01-two-artifacts-no-trp_, _02-three-artifacts-one-trp_, and _03-skope-lbda-processing_ (check [TRO report](https://transparency-certified.github.io/trace-model/demo/02-tro-examples/03-skope-lbda-processing/products/report.html)). +- __03-trace-explorations__: + - _01-gpg-runtime_ and _02-gpg-api_ demonstrate how a key pair can be generated and used to sign and verify a TRO declaration. + - _03-tro-fingerprint-state_ demonstrates how a fingerprint of a given state can be computed. + - _04-timestamp_ demonstrates how a trusted timestamp can be created and applied to a TRO. + - _05-validate-tro-declaration_ demonstrates how a TRO declaration can be validated through 5 examples. + - _06-json2jsonld_ demonstrates how to convert JSON into JSON-LD to enable a light version of TROV. + To establish that the demonstrations can be reproduced, first use the `make clean-demo` command to delete the files produced by the demo: ``` trace-model$ make clean-demo -20221008.054458.104 A MESG Connect to Blazegraph at http://localhost:9999. - -------- Cleaning example 01-minimal/ ---------------- +------- Cleaning example 01-trov-vocab/ ---------------- removed './run.txt' +removed './products/img.gv' +removed './products/img.svg' +removed './products/report_subclass.html' +rmdir: removing directory, './products' -------- Cleaning example 02-type-a/ ---------------- +------- Cleaning example 02-tro-examples/ ---------------- + +------- Cleaning example 01-two-artifacts-no-trp/ ---------------- +removed './run.txt' +. +. (additional output removed for brevity) +. +------- Cleaning example 05-validate-tro-declaration/ ---------------- removed './run.txt' +removed './products/tro1.gv' +removed './products/tro1.png' +removed './products/tro2.gv' +removed './products/tro2.png' +removed './products/tro3.gv' +removed './products/tro3.png' +removed './products/tro4.gv' +removed './products/tro4.png' +removed './products/tro5.gv' +removed './products/tro5.png' +rmdir: removing directory, './products' ``` Confirm with `git status` that version-controlled files have been deleted locally: ``` trace-model$ git status -On branch master -Your branch is up to date with 'origin/master'. +On branch idcc24 +Your branch is up to date with 'origin/idcc24'. Changes not staged for commit: (use "git add/rm ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) - - deleted: demo/01-minimal/run.txt - deleted: demo/02-type-a/run.txt + (use "git restore ..." to discard changes in working directory) + deleted: demo/01-trov-vocab/products/img.gv + deleted: demo/01-trov-vocab/products/img.svg + deleted: demo/01-trov-vocab/products/report_subclass.html + deleted: demo/01-trov-vocab/run.txt + deleted: demo/02-tro-examples/01-two-artifacts-no-trp/run.txt + . + . (additional output removed for brevity) + . + deleted: demo/03-trace-explorations/05-validate-tro-declaration/products/tro5.png + deleted: demo/03-trace-explorations/05-validate-tro-declaration/run.txt no changes added to commit (use "git add" and/or "git commit -a") ``` @@ -119,21 +144,25 @@ no changes added to commit (use "git add" and/or "git commit -a") Now run the demonstration with the `make run-demo` command: ``` trace-model$ make run-demo -20221008.051511.921 A MESG Connect to Blazegraph at http://localhost:9999. +---------- Running example 01-trov-vocab/ ------------- ----------- Running example 01-minimal/ ------------- +---------- Running example 02-tro-examples/ ------------- ----------- Running example 02-type-a/ ------------- +---------- Running example 01-two-artifacts-no-trp/ ------------- +. +. (additional output removed for brevity) +. +---------- Running example 05-validate-tro-declaration/ ------------- ``` Finally, use `git status` to confirm that the demostration products have been restored: ``` trace-model$ git status -On branch master -Your branch is up to date with 'origin/master'. +On branch idcc24 +Your branch is up to date with 'origin/idcc24'. -no changes added to commit (use "git add" and/or "git commit -a") +nothing to commit, working tree clean ``` ## Running a single example @@ -143,106 +172,105 @@ An individual example within the demonstration can be run by starting an interac First start the REPRO in interactive mode using the `make start-repro` command (or the shorthand `make start`). ``` trace-model$ make start-repro -20221010.074008.007 A MESG Connect to Blazegraph at http://localhost:9999. repro@a6c7a4e443a8:/mnt/trace-model$ ``` Set the working directory to a particular example directory: ``` -repro@a6c7a4e443a8:/mnt/trace-model$ cd demo/02-type-a/ -repro@a6c7a4e443a8:/mnt/trace-model/demo/02-type-a$ +repro@a6c7a4e443a8:/mnt/trace-model$ cd demo/01-trov-vocab/ +repro@a6c7a4e443a8:/mnt/trace-model/demo/01-trov-vocab$ -repro@a6c7a4e443a8:/mnt/trace-model/demo/02-type-a$ pwd -/mnt/trace-model/demo/02-type-a +repro@a6c7a4e443a8:/mnt/trace-model/demo/01-trov-vocab$ pwd +/mnt/trace-model/demo/01-trov-vocab ``` Type `make` to run the example: ``` -repro@a6c7a4e443a8:/mnt/trace-model/demo/02-type-a$ make +repro@a6c7a4e443a8:/mnt/trace-model/demo/01-trov-vocab$ make bash run.sh > run.txt ``` Use the `tree` command to list the files associated with the example, including the temporary files in the `tmp` subdirectory: ``` -repro@a6c7a4e443a8:/mnt/trace-model/demo/02-type-a$ tree +repro@a6c7a4e443a8:/mnt/trace-model/demo/01-trov-vocab$ tree . |-- Makefile |-- products +| |-- img.gv +| |-- img.svg +| `-- report_subclass.html |-- run.sh |-- run.txt +|-- templates.geist `-- tmp - |-- export_tro_ntriples.sh - |-- export_tro_ntriples.txt - |-- import_tro_jsonld.sh - |-- import_tro_jsonld.txt - |-- query_policies.sh - |-- query_policies.txt - |-- query_tro_policies.sh - |-- query_tro_policies.txt - |-- query_trs_policies.sh - `-- query_trs_policies.txt + |-- query subclass vocab.sh + |-- query subclass vocab.txt + |-- load trov vocabulary without inferences.sh + `-- load trov vocabulary without inferences.txt -2 directories, 13 files -repro@a6c7a4e443a8:/mnt +2 directories, 11 files ``` -The `make clean` command deletes the temporary files and the example output file, `run.txt`: +The `make clean` command deletes the temporary files, the example output file, `run.txt`, and the products folder: ``` -repro@a6c7a4e443a8:/mnt/trace-model/demo/02-type-a$ make clean +repro@a6c7a4e443a8:/mnt/trace-model/demo/01-trov-vocab$ make clean if [[ -f ./"run.txt" ]] ; then \ rm -v ./"run.txt" ; \ fi removed './run.txt' -if [[ -d ./"tmp" ]] ; then \ - rm -vf ./"tmp"/* ; \ - rmdir -v ./"tmp" ; \ +if [[ -d ./"tmp" ]] ; then \ + rm -vf ./"tmp"/* ; \ + rmdir -v ./"tmp" ; \ fi -removed './tmp/export_tro_ntriples.sh' -removed './tmp/export_tro_ntriples.txt' -removed './tmp/import_tro_jsonld.sh' -removed './tmp/import_tro_jsonld.txt' -removed './tmp/query_policies.sh' -removed './tmp/query_policies.txt' -removed './tmp/query_tro_policies.sh' -removed './tmp/query_tro_policies.txt' -removed './tmp/query_trs_policies.sh' -removed './tmp/query_trs_policies.txt' +removed './tmp/query subclass vocab.sh' +removed './tmp/query subclass vocab.txt' +removed './tmp/load trov vocabulary without inferences.sh' +removed './tmp/load trov vocabulary without inferences.txt' rmdir: removing directory, './tmp' if [[ -d ./"products" ]] ; then \ rm -vf ./"products"/* ; \ rmdir -v ./"products" ; \ fi +removed './products/img.gv' +removed './products/img.svg' +removed './products/report_subclass.html' rmdir: removing directory, './products' -repro@a6c7a4e443a8:/mnt/trace-model/demo/02-type-a$ tree +repro@a6c7a4e443a8:/mnt/trace-model/demo/01-trov-vocab$ tree . |-- Makefile -`-- run.sh +|-- run.sh +`-- templates.geist + +0 directories, 3 files ``` -Confirm that `run.txt` is the only version-controlled file associated with this example that has been deleted: +Confirm that the `run.txt` file and the `products` folder are the version-controlled files associated with this example that has been deleted: ``` -repro@a6c7a4e443a8:/mnt/trace-model/demo/02-type-a$ git status . -On branch master -Your branch is up to date with 'origin/master'. +repro@a6c7a4e443a8:/mnt/trace-model/demo/01-trov-vocab$ git status . +On branch idcc24 +Your branch is up to date with 'origin/idcc24'. Changes not staged for commit: (use "git add/rm ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) - deleted: run.txt + deleted: products/img.gv + deleted: products/img.svg + deleted: products/report_subclass.html + deleted: run.txt no changes added to commit (use "git add" and/or "git commit -a") ``` -Re-run the and confirm the `run.txt` file was restored: +Re-run this example and confirm the `run.txt` file and the `products` folder were restored: ``` -repro@a6c7a4e443a8:/mnt/trace-model/demo/02-type-a$ make +repro@a6c7a4e443a8:/mnt/trace-model/demo/01-trov-vocab$ make bash run.sh > run.txt -repro@a6c7a4e443a8:/mnt/trace-model/demo/02-type-a$ git status . -On branch master -Your branch is up to date with 'origin/master'. +repro@a6c7a4e443a8:/mnt/trace-model/demo/01-trov-vocab$ git status . +On branch idcc24 +Your branch is up to date with 'origin/idcc24'. nothing to commit, working tree clean diff --git a/demo/01-trov-examples/01-two-artifacts-no-trp/run.txt b/demo/01-trov-examples/01-two-artifacts-no-trp/run.txt deleted file mode 100644 index 95ad208..0000000 --- a/demo/01-trov-examples/01-two-artifacts-no-trp/run.txt +++ /dev/null @@ -1,240 +0,0 @@ -================================================ bash cell | import trov vocabulary ================================================ - -# Destroy the dataset -geist destroy --dataset kb --quiet - -# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES -geist create --dataset kb --inputformat json-ld --inputfile /mnt/trace-model/exports/trace-vocab.jsonld --infer owl - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - . - "A set of loci describing the location of one or more artifacts" . - "ArtifactArrangement" . - . - . - "Base class for collections of one or more artifacts." . - "ArtifactCollection" . - . - . - "A set of artifacts described by a TRO." . - "ArtifactComposition" . - . - . - . - "The location of a specific artifact." . - "ArtifactLocus" . - . - . - . - "The capability to prevent Internet access during a TRP." . - "CanProvideInternetIsolation" . - . - . - . - . - . - "Unique fingerprint of a particular artifact composition" . - "CompositionFingerprint" . - . - . - "The policy of always preeventing Internet access during a TRP." . - "EnforcesInternetIsolation" . - . - . - . - . - . - . - "TRO composition includes all input data employed in creating the TRO." . - "IncludesAllInputData" . - . - . - . - . - "A research artifact described by a TRO." . - "ResearchArtifact" . - . - . - "An attribute of a TRS, TRP, or TRO." . - "TREAttribute" . - . - . - "An attribute of a particular TRO." . - "TROAttribute" . - . - . - . - . - "A property of a particular TRS." . - "An attribute of a TRS." . - "TRSAttribute" . - . - . - . - "A policy always enforced by a particular TRS." . - "TRSCapability" . - . - . - . - . - "A policy always enforced by a particular TRS." . - "TRSPolicy" . - . - . - . - . - . - "A timestamping authority trusted by a TRS." . - "TimeStampingAuthority" . - . - . - . - "A set of research artifacts produced by a TRP and signed by the performing TRS." . - "TransparentResearchObject" . - . - . - . - "Common base class for TRSs, TRPs, and TROs." . - "TrustedResearchElement" . - . - . - . - "A set of research operations performed by a TRS." . - "An execution of a research process" . - "TrustedResearchPerformance" . - . - . - . - "A system certified to perform TRPs and assemble TROs." . - "TrustedResearchSystem" . - . - . - . - . - . - "hasArrangement" . - . - . - . - . - . - . - "hasArtifact" . - . - . - . - . - . - . - . - "hasComposition" . - . - . - . - . - . - . - . - . - "hasFingerprint" . - . - . - . - . - . - . - . - "hasLocus" . - . - . - . - . - . - . - "hasLocus" . - . - . - . - . - . - . - . - . - "wasAssembledBy" . - . - . - . - . - . - . - . - . - "wasTimestampedBy" . - . - . - . - . - . -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================ bash cell | import tro declaration ================================================ - -# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES -geist load --dataset kb --inputformat json-ld --inputfile tro/tro.jsonld - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov-example - -# Destroy the dataset -geist destroy --dataset kb - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - . - . - . - "file1" . - . - . - . - "file2" . - . - . - . - . - . - . - "text/plain" . - "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" . - . - . - "text/plain" . - "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" . - . - . - . - . - . - . - . - "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" . - . - "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies" . - . - . - . - . - . - . - "TRS that enforces no policies" . - . - "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" . - . - . - "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" . -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/run.txt b/demo/01-trov-examples/02-three-artifacts-one-trp/run.txt deleted file mode 100644 index 4f31f87..0000000 --- a/demo/01-trov-examples/02-three-artifacts-one-trp/run.txt +++ /dev/null @@ -1,280 +0,0 @@ -================================================ bash cell | import trov vocabulary ================================================ - -# Destroy the dataset -geist destroy --dataset kb --quiet - -# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES -geist create --dataset kb --inputformat json-ld --inputfile /mnt/trace-model/exports/trace-vocab.jsonld --infer owl - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - . - "A set of loci describing the location of one or more artifacts" . - "ArtifactArrangement" . - . - . - "Base class for collections of one or more artifacts." . - "ArtifactCollection" . - . - . - "A set of artifacts described by a TRO." . - "ArtifactComposition" . - . - . - . - "The location of a specific artifact." . - "ArtifactLocus" . - . - . - . - "The capability to prevent Internet access during a TRP." . - "CanProvideInternetIsolation" . - . - . - . - . - . - "Unique fingerprint of a particular artifact composition" . - "CompositionFingerprint" . - . - . - "The policy of always preeventing Internet access during a TRP." . - "EnforcesInternetIsolation" . - . - . - . - . - . - . - "TRO composition includes all input data employed in creating the TRO." . - "IncludesAllInputData" . - . - . - . - . - "A research artifact described by a TRO." . - "ResearchArtifact" . - . - . - "An attribute of a TRS, TRP, or TRO." . - "TREAttribute" . - . - . - "An attribute of a particular TRO." . - "TROAttribute" . - . - . - . - . - "A property of a particular TRS." . - "An attribute of a TRS." . - "TRSAttribute" . - . - . - . - "A policy always enforced by a particular TRS." . - "TRSCapability" . - . - . - . - . - "A policy always enforced by a particular TRS." . - "TRSPolicy" . - . - . - . - . - . - "A timestamping authority trusted by a TRS." . - "TimeStampingAuthority" . - . - . - . - "A set of research artifacts produced by a TRP and signed by the performing TRS." . - "TransparentResearchObject" . - . - . - . - "Common base class for TRSs, TRPs, and TROs." . - "TrustedResearchElement" . - . - . - . - "A set of research operations performed by a TRS." . - "An execution of a research process" . - "TrustedResearchPerformance" . - . - . - . - "A system certified to perform TRPs and assemble TROs." . - "TrustedResearchSystem" . - . - . - . - . - . - "hasArrangement" . - . - . - . - . - . - . - "hasArtifact" . - . - . - . - . - . - . - . - "hasComposition" . - . - . - . - . - . - . - . - . - "hasFingerprint" . - . - . - . - . - . - . - . - "hasLocus" . - . - . - . - . - . - . - "hasLocus" . - . - . - . - . - . - . - . - . - "wasAssembledBy" . - . - . - . - . - . - . - . - . - "wasTimestampedBy" . - . - . - . - . - . -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================ bash cell | import tro declaration ================================================ - -# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES -geist load --dataset kb --inputformat json-ld --inputfile tro/tro.jsonld - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov-example - -# Destroy the dataset -geist destroy --dataset kb - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - . - . - . - "file1" . - . - . - . - "file2" . - . - "Initial arrangement" . - . - . - . - . - . - . - "file2" . - . - . - . - "file3" . - . - "Final arrangement" . - . - . - . - . - . - "text/plain" . - "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" . - . - . - "text/plain" . - "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" . - . - . - "text/plain" . - "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" . - . - . - . - . - . - . - . - . - "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" . - . - . - . - . - "A composition of two files in a single arrangement endorsed by a TRS that enforced Interent isolation" . - . - . - . - . - . - . - . - . - . - . - . - . - "Workflow execution" . - . - . - "2023-05-05T01:40:00Z" . - . - . - "2023-05-05T01:30:00Z" . - . - . - . - . - "TRS that can provide Internet isolation" . - . - . - "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" . - . - . - "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" . -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_file/arrangement.svg b/demo/01-trov-examples/03-skope-lbda-processing/report_file/arrangement.svg deleted file mode 100644 index 3188850..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_file/arrangement.svg +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - -arrangement - - - -arrangement/1 - -arrangement/1 - - - -composition/1/artifact/1 - -composition/1/artifact/1 - - - -arrangement/1->composition/1/artifact/1 - - - - - -arrangement/2 - -arrangement/2 - - - -arrangement/2->composition/1/artifact/1 - - - - - -composition/1/artifact/2 - -composition/1/artifact/2 - - - -arrangement/2->composition/1/artifact/2 - - - - - -arrangement/3 - -arrangement/3 - - - -arrangement/3->composition/1/artifact/1 - - - - - -composition/1/artifact/3 - -composition/1/artifact/3 - - - -arrangement/3->composition/1/artifact/3 - - - - - -composition/1/artifact/4 - -composition/1/artifact/4 - - - -arrangement/3->composition/1/artifact/4 - - - - - -composition/1/artifact/5 - -composition/1/artifact/5 - - - -arrangement/3->composition/1/artifact/5 - - - - - -composition/1/artifact/6 - -composition/1/artifact/6 - - - -arrangement/3->composition/1/artifact/6 - - - - - -arrangement/4 - -arrangement/4 - - - -arrangement/4->composition/1/artifact/3 - - - - - -arrangement/4->composition/1/artifact/4 - - - - - -arrangement/4->composition/1/artifact/5 - - - - - -arrangement/4->composition/1/artifact/6 - - - - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_file/overall_tro_graph.html b/demo/01-trov-examples/03-skope-lbda-processing/report_file/overall_tro_graph.html deleted file mode 100644 index 7ebcd4f..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_file/overall_tro_graph.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - Overall TRO Graph - - -

Overall TRO Graph

- - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_file/report.html b/demo/01-trov-examples/03-skope-lbda-processing/report_file/report.html deleted file mode 100644 index b82475e..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_file/report.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - TRO Report - - -

TRO Report

-

This report shows the TRO of downloading LBDA dataset from NOAA website and preparing for use by researchers employing the SKOPE application. -

1. The TRO was assembled by what TRS?

- - - - -
trotrs
<tro><trs>
- -

2. What capabilities does the TRS have?

- - - - - -
trscapability_idcapability_type
<trs><trs/capability/1><trov:CanRecordInternetAccess>
<trs><trs/capability/2><trov:CanProvideInternetIsolation>
- -

3. What TRPs does the TRO have? What arrangements are accessed and contributed to per TRP accordingly?

- -

4. What artifacts are included in each arrangement?

- -

5. What are the type, comment, mimeType, and sha256 of each artifact? Which composition does it belong to?

- - - - - - - - - -
artifacttypecommentmimeTypesha256composition
<composition/1/artifact/1><trov:DataArtifact>"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset""application/x-netcdf""b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78"<composition/1>
<composition/1/artifact/2><trov:ComputationalNotebookArtifact>"Initial state of Jupyter notebook for processing the LBDA dataset""text/plain""8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6"<composition/1>
<composition/1/artifact/3><trov:ComputationalNotebookArtifact>"Final state of Jupyter notebook for processing the LBDA dataset""text/plain""8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf"<composition/1>
<composition/1/artifact/4><trov:HTMLArtifact>"HTML rendering of final state of the Jupyter notebook""text/html""870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0"<composition/1>
<composition/1/artifact/5><trov:ImageArtifact>"Graphical rendering of the histogram of dataset values""image/png""cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf"<composition/1>
<composition/1/artifact/6><trov:DataArtifact>"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server""image/tiff""e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d"<composition/1>
- -

6. Overall graph

- Zoom in the graph - - - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_file/tro.svg b/demo/01-trov-examples/03-skope-lbda-processing/report_file/tro.svg deleted file mode 100644 index 8b4f0ad..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_file/tro.svg +++ /dev/null @@ -1,1679 +0,0 @@ - - - - - - - - - -<arrangement/1> - -<arrangement/1> - - - -<trov:WebResourceArtifactArrangement> - -<trov:WebResourceArtifactArrangement> - - - -<arrangement/1>-><trov:WebResourceArtifactArrangement> - - -rdf:type - - - -"Arrangement decscribing location of LBDA NetCDF file on NOAA web server" - -"Arrangement decscribing location of LBDA NetCDF file on NOAA web server" - - - -<arrangement/1>->"Arrangement decscribing location of LBDA NetCDF file on NOAA web server" - - -rdfs:comment - - - -<arrangement/1/locus/1> - -<arrangement/1/locus/1> - - - -<arrangement/1>-><arrangement/1/locus/1> - - -trov:hasLocus - - - -<trov:ArtifactLocus> - -<trov:ArtifactLocus> - - - -<arrangement/1/locus/1>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/1> - -<composition/1/artifact/1> - - - -<arrangement/1/locus/1>-><composition/1/artifact/1> - - -trov:hasArtifact - - - -"https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" - -"https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" - - - -<arrangement/1/locus/1>->"https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" - - -trov:hasLocation - - - -<trov:DataArtifact> - -<trov:DataArtifact> - - - -<composition/1/artifact/1>-><trov:DataArtifact> - - -rdf:type - - - -"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset" - -"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset" - - - -<composition/1/artifact/1>->"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset" - - -rdfs:comment - - - -"application/x-netcdf" - -"application/x-netcdf" - - - -<composition/1/artifact/1>->"application/x-netcdf" - - -trov:mimeType - - - -"b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" - -"b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" - - - -<composition/1/artifact/1>->"b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" - - -trov:sha256 - - - -<arrangement/2> - -<arrangement/2> - - - -<trov:LocalFilesystemArtifactArrangement> - -<trov:LocalFilesystemArtifactArrangement> - - - -<arrangement/2>-><trov:LocalFilesystemArtifactArrangement> - - -rdf:type - - - -"Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook" - -"Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook" - - - -<arrangement/2>->"Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook" - - -rdfs:comment - - - -<arrangement/2/locus/1> - -<arrangement/2/locus/1> - - - -<arrangement/2>-><arrangement/2/locus/1> - - -trov:hasLocus - - - -<arrangement/2/locus/2> - -<arrangement/2/locus/2> - - - -<arrangement/2>-><arrangement/2/locus/2> - - -trov:hasLocus - - - -<arrangement/2/locus/1>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/2/locus/1>-><composition/1/artifact/1> - - -trov:hasArtifact - - - -"data/lbda-v2_kddm_pmdi_2017.nc" - -"data/lbda-v2_kddm_pmdi_2017.nc" - - - -<arrangement/2/locus/1>->"data/lbda-v2_kddm_pmdi_2017.nc" - - -trov:hasLocation - - - -<arrangement/2/locus/2>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/2> - -<composition/1/artifact/2> - - - -<arrangement/2/locus/2>-><composition/1/artifact/2> - - -trov:hasArtifact - - - -"analysis.ipynb" - -"analysis.ipynb" - - - -<arrangement/2/locus/2>->"analysis.ipynb" - - -trov:hasLocation - - - -<trov:ComputationalNotebookArtifact> - -<trov:ComputationalNotebookArtifact> - - - -<composition/1/artifact/2>-><trov:ComputationalNotebookArtifact> - - -rdf:type - - - -"Initial state of Jupyter notebook for processing the LBDA dataset" - -"Initial state of Jupyter notebook for processing the LBDA dataset" - - - -<composition/1/artifact/2>->"Initial state of Jupyter notebook for processing the LBDA dataset" - - -rdfs:comment - - - -"text/plain" - -"text/plain" - - - -<composition/1/artifact/2>->"text/plain" - - -trov:mimeType - - - -"8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" - -"8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" - - - -<composition/1/artifact/2>->"8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" - - -trov:sha256 - - - -<arrangement/3> - -<arrangement/3> - - - -<arrangement/3>-><trov:LocalFilesystemArtifactArrangement> - - -rdf:type - - - -"Arrangement on fileserver managed by TRS after running Jupyter notebook" - -"Arrangement on fileserver managed by TRS after running Jupyter notebook" - - - -<arrangement/3>->"Arrangement on fileserver managed by TRS after running Jupyter notebook" - - -rdfs:comment - - - -<arrangement/3/locus/1> - -<arrangement/3/locus/1> - - - -<arrangement/3>-><arrangement/3/locus/1> - - -trov:hasLocus - - - -<arrangement/3/locus/2> - -<arrangement/3/locus/2> - - - -<arrangement/3>-><arrangement/3/locus/2> - - -trov:hasLocus - - - -<arrangement/3/locus/3> - -<arrangement/3/locus/3> - - - -<arrangement/3>-><arrangement/3/locus/3> - - -trov:hasLocus - - - -<arrangement/3/locus/4> - -<arrangement/3/locus/4> - - - -<arrangement/3>-><arrangement/3/locus/4> - - -trov:hasLocus - - - -<arrangement/3/locus/5> - -<arrangement/3/locus/5> - - - -<arrangement/3>-><arrangement/3/locus/5> - - -trov:hasLocus - - - -<arrangement/3/locus/1>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/3/locus/1>-><composition/1/artifact/1> - - -trov:hasArtifact - - - -<arrangement/3/locus/1>->"data/lbda-v2_kddm_pmdi_2017.nc" - - -trov:hasLocation - - - -<arrangement/3/locus/2>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/3/locus/2>->"analysis.ipynb" - - -trov:hasLocation - - - -<composition/1/artifact/3> - -<composition/1/artifact/3> - - - -<arrangement/3/locus/2>-><composition/1/artifact/3> - - -trov:hasArtifact - - - -<arrangement/3/locus/3>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/4> - -<composition/1/artifact/4> - - - -<arrangement/3/locus/3>-><composition/1/artifact/4> - - -trov:hasArtifact - - - -"output/analysis.html" - -"output/analysis.html" - - - -<arrangement/3/locus/3>->"output/analysis.html" - - -trov:hasLocation - - - -<arrangement/3/locus/4>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/5> - -<composition/1/artifact/5> - - - -<arrangement/3/locus/4>-><composition/1/artifact/5> - - -trov:hasArtifact - - - -"output/histogram.png" - -"output/histogram.png" - - - -<arrangement/3/locus/4>->"output/histogram.png" - - -trov:hasLocation - - - -<arrangement/3/locus/5>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/6> - -<composition/1/artifact/6> - - - -<arrangement/3/locus/5>-><composition/1/artifact/6> - - -trov:hasArtifact - - - -"lbda-v2_kddm_pmdi_2017.tiff" - -"lbda-v2_kddm_pmdi_2017.tiff" - - - -<arrangement/3/locus/5>->"lbda-v2_kddm_pmdi_2017.tiff" - - -trov:hasLocation - - - -"output/lbda-v2_kddm_pmdi_2017.tiff" - -"output/lbda-v2_kddm_pmdi_2017.tiff" - - - -<arrangement/3/locus/5>->"output/lbda-v2_kddm_pmdi_2017.tiff" - - -trov:hasLocation - - - -<composition/1/artifact/3>-><trov:ComputationalNotebookArtifact> - - -rdf:type - - - -<composition/1/artifact/3>->"text/plain" - - -trov:mimeType - - - -"Final state of Jupyter notebook for processing the LBDA dataset" - -"Final state of Jupyter notebook for processing the LBDA dataset" - - - -<composition/1/artifact/3>->"Final state of Jupyter notebook for processing the LBDA dataset" - - -rdfs:comment - - - -"8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" - -"8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" - - - -<composition/1/artifact/3>->"8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" - - -trov:sha256 - - - -<trov:HTMLArtifact> - -<trov:HTMLArtifact> - - - -<composition/1/artifact/4>-><trov:HTMLArtifact> - - -rdf:type - - - -"HTML rendering of final state of the Jupyter notebook" - -"HTML rendering of final state of the Jupyter notebook" - - - -<composition/1/artifact/4>->"HTML rendering of final state of the Jupyter notebook" - - -rdfs:comment - - - -"text/html" - -"text/html" - - - -<composition/1/artifact/4>->"text/html" - - -trov:mimeType - - - -"870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" - -"870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" - - - -<composition/1/artifact/4>->"870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" - - -trov:sha256 - - - -<trov:ImageArtifact> - -<trov:ImageArtifact> - - - -<composition/1/artifact/5>-><trov:ImageArtifact> - - -rdf:type - - - -"Graphical rendering of the histogram of dataset values" - -"Graphical rendering of the histogram of dataset values" - - - -<composition/1/artifact/5>->"Graphical rendering of the histogram of dataset values" - - -rdfs:comment - - - -"image/png" - -"image/png" - - - -<composition/1/artifact/5>->"image/png" - - -trov:mimeType - - - -"cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" - -"cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" - - - -<composition/1/artifact/5>->"cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" - - -trov:sha256 - - - -<composition/1/artifact/6>-><trov:DataArtifact> - - -rdf:type - - - -"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server" - -"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server" - - - -<composition/1/artifact/6>->"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server" - - -rdfs:comment - - - -"image/tiff" - -"image/tiff" - - - -<composition/1/artifact/6>->"image/tiff" - - -trov:mimeType - - - -"e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" - -"e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" - - - -<composition/1/artifact/6>->"e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" - - -trov:sha256 - - - -<arrangement/4> - -<arrangement/4> - - - -<arrangement/4>-><arrangement/3/locus/5> - - -trov:hasLocus - - - -<trov:ZipArtifactArrangement> - -<trov:ZipArtifactArrangement> - - - -<arrangement/4>-><trov:ZipArtifactArrangement> - - -rdf:type - - - -"Arrangement of final products packaged in a Zip file" - -"Arrangement of final products packaged in a Zip file" - - - -<arrangement/4>->"Arrangement of final products packaged in a Zip file" - - -rdfs:comment - - - -<arrangement/4/locus/1> - -<arrangement/4/locus/1> - - - -<arrangement/4>-><arrangement/4/locus/1> - - -trov:hasLocus - - - -<arrangement/4/locus/2> - -<arrangement/4/locus/2> - - - -<arrangement/4>-><arrangement/4/locus/2> - - -trov:hasLocus - - - -<arrangement/4/locus/3> - -<arrangement/4/locus/3> - - - -<arrangement/4>-><arrangement/4/locus/3> - - -trov:hasLocus - - - -<arrangement/4/locus/1>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/4/locus/1>->"analysis.ipynb" - - -trov:hasLocation - - - -<arrangement/4/locus/1>-><composition/1/artifact/3> - - -trov:hasArtifact - - - -<arrangement/4/locus/2>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/4/locus/2>-><composition/1/artifact/4> - - -trov:hasArtifact - - - -"analysis.html" - -"analysis.html" - - - -<arrangement/4/locus/2>->"analysis.html" - - -trov:hasLocation - - - -<arrangement/4/locus/3>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/4/locus/3>-><composition/1/artifact/5> - - -trov:hasArtifact - - - -"histogram.png" - -"histogram.png" - - - -<arrangement/4/locus/3>->"histogram.png" - - -trov:hasLocation - - - -<composition/1> - -<composition/1> - - - -<composition/1>-><composition/1/artifact/1> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/2> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/3> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/4> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/5> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/6> - - -trov:hasArtifact - - - -<trov:ArtifactComposition> - -<trov:ArtifactComposition> - - - -<composition/1>-><trov:ArtifactComposition> - - -rdf:type - - - -<fingerprint> - -<fingerprint> - - - -<composition/1>-><fingerprint> - - -trov:hasFingerprint - - - -<trov:CompositionFingerprint> - -<trov:CompositionFingerprint> - - - -<fingerprint>-><trov:CompositionFingerprint> - - -rdf:type - - - -"b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2" - -"b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2" - - - -<fingerprint>->"b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2" - - -trov:sha256 - - - -<tro> - -<tro> - - - -<tro>-><arrangement/1> - - -trov:hasArrangement - - - -<tro>-><arrangement/2> - - -trov:hasArrangement - - - -<tro>-><arrangement/3> - - -trov:hasArrangement - - - -<tro>-><arrangement/4> - - -trov:hasArrangement - - - -<tro>-><composition/1> - - -trov:hasComposition - - - -<trov:TransparentResearchObject> - -<trov:TransparentResearchObject> - - - -<tro>-><trov:TransparentResearchObject> - - -rdf:type - - - -"Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application" - -"Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application" - - - -<tro>->"Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application" - - -rdfs:comment - - - -<tro/attribute/1> - -<tro/attribute/1> - - - -<tro>-><tro/attribute/1> - - -trov:hasAttribute - - - -<trp/1> - -<trp/1> - - - -<tro>-><trp/1> - - -trov:hasPerformance - - - -<trp/2> - -<trp/2> - - - -<tro>-><trp/2> - - -trov:hasPerformance - - - -<trp/3> - -<trp/3> - - - -<tro>-><trp/3> - - -trov:hasPerformance - - - -<trs> - -<trs> - - - -<tro>-><trs> - - -trov:wasAssembledBy - - - -<tsa> - -<tsa> - - - -<tro>-><tsa> - - -trov:wasTimestampedBy - - - -<trov:IncludesAllInputData> - -<trov:IncludesAllInputData> - - - -<tro/attribute/1>-><trov:IncludesAllInputData> - - -rdf:type - - - -<trp/1/attribute/1> - -<trp/1/attribute/1> - - - -<tro/attribute/1>-><trp/1/attribute/1> - - -trov:warrantedBy - - - -<trp/2/attribute/1> - -<trp/2/attribute/1> - - - -<tro/attribute/1>-><trp/2/attribute/1> - - -trov:warrantedBy - - - -<trp/3/attribute/1> - -<trp/3/attribute/1> - - - -<tro/attribute/1>-><trp/3/attribute/1> - - -trov:warrantedBy - - - -<trp/1>-><arrangement/1> - - -trov:accessedArrangement - - - -<trp/1>-><arrangement/2> - - -trov:contributedToArrangement - - - -<trp/1>-><trs> - - -trov:wasConductedBy - - - -<trp/1>-><trp/1/attribute/1> - - -trov:hadPerformanceAttribute - - - -<trov:TrustedResearchPerformance> - -<trov:TrustedResearchPerformance> - - - -<trp/1>-><trov:TrustedResearchPerformance> - - -rdf:type - - - -"Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem" - -"Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem" - - - -<trp/1>->"Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem" - - -rdfs:comment - - - -"2023-05-08T01:40:00Z" - -"2023-05-08T01:40:00Z" - - - -<trp/1>->"2023-05-08T01:40:00Z" - - -trov:endedAtTime - - - -"2023-05-08T01:30:00Z" - -"2023-05-08T01:30:00Z" - - - -<trp/1>->"2023-05-08T01:30:00Z" - - -trov:startedAtTime - - - -<trp/2>-><arrangement/2> - - -trov:accessedArrangement - - - -<trp/2>-><arrangement/3> - - -trov:contributedToArrangement - - - -<trp/2>-><trs> - - -trov:wasConductedBy - - - -<trp/2>-><trp/2/attribute/1> - - -trov:hadPerformanceAttribute - - - -<trp/2>-><trov:TrustedResearchPerformance> - - -rdf:type - - - -"Process that ran Jupyter notebook" - -"Process that ran Jupyter notebook" - - - -<trp/2>->"Process that ran Jupyter notebook" - - -rdfs:comment - - - -"2023-05-08T01:50:00Z" - -"2023-05-08T01:50:00Z" - - - -<trp/2>->"2023-05-08T01:50:00Z" - - -trov:endedAtTime - - - -"2023-05-08T01:41:00Z" - -"2023-05-08T01:41:00Z" - - - -<trp/2>->"2023-05-08T01:41:00Z" - - -trov:startedAtTime - - - -<trp/3>-><arrangement/3> - - -trov:accessedArrangement - - - -<trp/3>-><arrangement/4> - - -trov:contributedToArrangement - - - -<trp/3>-><trs> - - -trov:wasConductedBy - - - -<trp/3>-><trp/3/attribute/1> - - -trov:hadPerformanceAttribute - - - -<trp/3>-><trov:TrustedResearchPerformance> - - -rdf:type - - - -"Process that packaged products of the Jupyter notebook execution in a Zip file" - -"Process that packaged products of the Jupyter notebook execution in a Zip file" - - - -<trp/3>->"Process that packaged products of the Jupyter notebook execution in a Zip file" - - -rdfs:comment - - - -"2023-05-08T02:00:00Z" - -"2023-05-08T02:00:00Z" - - - -<trp/3>->"2023-05-08T02:00:00Z" - - -trov:endedAtTime - - - -"2023-05-08T01:51:00Z" - -"2023-05-08T01:51:00Z" - - - -<trp/3>->"2023-05-08T01:51:00Z" - - -trov:startedAtTime - - - -<trs/capability/1> - -<trs/capability/1> - - - -<trs>-><trs/capability/1> - - -trov:hasCapability - - - -<trs/capability/2> - -<trs/capability/2> - - - -<trs>-><trs/capability/2> - - -trov:hasCapability - - - -<trov:TrustedResearchSystem> - -<trov:TrustedResearchSystem> - - - -<trs>-><trov:TrustedResearchSystem> - - -rdf:type - - - -"TRS that can monitor netowrk accesses or provide Internet isolation" - -"TRS that can monitor netowrk accesses or provide Internet isolation" - - - -<trs>->"TRS that can monitor netowrk accesses or provide Internet isolation" - - -rdfs:comment - - - -"-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" - -"-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" - - - -<trs>->"-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" - - -trov:publicKey - - - -<tsa>->"-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" - - -trov:publicKey - - - -<trov:TimeStampingAuthority> - -<trov:TimeStampingAuthority> - - - -<tsa>-><trov:TimeStampingAuthority> - - -rdf:type - - - -<trp/1/attribute/1>-><trs/capability/1> - - -trov:warrantedBy - - - -<trov:InternetAccessRecording> - -<trov:InternetAccessRecording> - - - -<trp/1/attribute/1>-><trov:InternetAccessRecording> - - -rdf:type - - - -<trp/2/attribute/1>-><trs/capability/2> - - -trov:warrantedBy - - - -<trov:InternetIsolation> - -<trov:InternetIsolation> - - - -<trp/2/attribute/1>-><trov:InternetIsolation> - - -rdf:type - - - -<trp/3/attribute/1>-><trs/capability/2> - - -trov:warrantedBy - - - -<trp/3/attribute/1>-><trov:InternetIsolation> - - -rdf:type - - - -<trov:CanRecordInternetAccess> - -<trov:CanRecordInternetAccess> - - - -<trs/capability/1>-><trov:CanRecordInternetAccess> - - -rdf:type - - - -<trov:CanProvideInternetIsolation> - -<trov:CanProvideInternetIsolation> - - - -<trs/capability/2>-><trov:CanProvideInternetIsolation> - - -rdf:type - - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/arrangement.svg b/demo/01-trov-examples/03-skope-lbda-processing/report_inline/arrangement.svg deleted file mode 100644 index 3188850..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/arrangement.svg +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - -arrangement - - - -arrangement/1 - -arrangement/1 - - - -composition/1/artifact/1 - -composition/1/artifact/1 - - - -arrangement/1->composition/1/artifact/1 - - - - - -arrangement/2 - -arrangement/2 - - - -arrangement/2->composition/1/artifact/1 - - - - - -composition/1/artifact/2 - -composition/1/artifact/2 - - - -arrangement/2->composition/1/artifact/2 - - - - - -arrangement/3 - -arrangement/3 - - - -arrangement/3->composition/1/artifact/1 - - - - - -composition/1/artifact/3 - -composition/1/artifact/3 - - - -arrangement/3->composition/1/artifact/3 - - - - - -composition/1/artifact/4 - -composition/1/artifact/4 - - - -arrangement/3->composition/1/artifact/4 - - - - - -composition/1/artifact/5 - -composition/1/artifact/5 - - - -arrangement/3->composition/1/artifact/5 - - - - - -composition/1/artifact/6 - -composition/1/artifact/6 - - - -arrangement/3->composition/1/artifact/6 - - - - - -arrangement/4 - -arrangement/4 - - - -arrangement/4->composition/1/artifact/3 - - - - - -arrangement/4->composition/1/artifact/4 - - - - - -arrangement/4->composition/1/artifact/5 - - - - - -arrangement/4->composition/1/artifact/6 - - - - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/overall_tro_graph.html b/demo/01-trov-examples/03-skope-lbda-processing/report_inline/overall_tro_graph.html deleted file mode 100644 index ab6347d..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/overall_tro_graph.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - Overall TRO Graph - - -

Overall TRO Graph

- - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/report.html b/demo/01-trov-examples/03-skope-lbda-processing/report_inline/report.html deleted file mode 100644 index b82475e..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/report.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - TRO Report - - -

TRO Report

-

This report shows the TRO of downloading LBDA dataset from NOAA website and preparing for use by researchers employing the SKOPE application. -

1. The TRO was assembled by what TRS?

- - - - -
trotrs
<tro><trs>
- -

2. What capabilities does the TRS have?

- - - - - -
trscapability_idcapability_type
<trs><trs/capability/1><trov:CanRecordInternetAccess>
<trs><trs/capability/2><trov:CanProvideInternetIsolation>
- -

3. What TRPs does the TRO have? What arrangements are accessed and contributed to per TRP accordingly?

- -

4. What artifacts are included in each arrangement?

- -

5. What are the type, comment, mimeType, and sha256 of each artifact? Which composition does it belong to?

- - - - - - - - - -
artifacttypecommentmimeTypesha256composition
<composition/1/artifact/1><trov:DataArtifact>"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset""application/x-netcdf""b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78"<composition/1>
<composition/1/artifact/2><trov:ComputationalNotebookArtifact>"Initial state of Jupyter notebook for processing the LBDA dataset""text/plain""8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6"<composition/1>
<composition/1/artifact/3><trov:ComputationalNotebookArtifact>"Final state of Jupyter notebook for processing the LBDA dataset""text/plain""8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf"<composition/1>
<composition/1/artifact/4><trov:HTMLArtifact>"HTML rendering of final state of the Jupyter notebook""text/html""870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0"<composition/1>
<composition/1/artifact/5><trov:ImageArtifact>"Graphical rendering of the histogram of dataset values""image/png""cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf"<composition/1>
<composition/1/artifact/6><trov:DataArtifact>"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server""image/tiff""e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d"<composition/1>
- -

6. Overall graph

- Zoom in the graph - - - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/tro.svg b/demo/01-trov-examples/03-skope-lbda-processing/report_inline/tro.svg deleted file mode 100644 index 8b4f0ad..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/tro.svg +++ /dev/null @@ -1,1679 +0,0 @@ - - - - - - - - - -<arrangement/1> - -<arrangement/1> - - - -<trov:WebResourceArtifactArrangement> - -<trov:WebResourceArtifactArrangement> - - - -<arrangement/1>-><trov:WebResourceArtifactArrangement> - - -rdf:type - - - -"Arrangement decscribing location of LBDA NetCDF file on NOAA web server" - -"Arrangement decscribing location of LBDA NetCDF file on NOAA web server" - - - -<arrangement/1>->"Arrangement decscribing location of LBDA NetCDF file on NOAA web server" - - -rdfs:comment - - - -<arrangement/1/locus/1> - -<arrangement/1/locus/1> - - - -<arrangement/1>-><arrangement/1/locus/1> - - -trov:hasLocus - - - -<trov:ArtifactLocus> - -<trov:ArtifactLocus> - - - -<arrangement/1/locus/1>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/1> - -<composition/1/artifact/1> - - - -<arrangement/1/locus/1>-><composition/1/artifact/1> - - -trov:hasArtifact - - - -"https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" - -"https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" - - - -<arrangement/1/locus/1>->"https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" - - -trov:hasLocation - - - -<trov:DataArtifact> - -<trov:DataArtifact> - - - -<composition/1/artifact/1>-><trov:DataArtifact> - - -rdf:type - - - -"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset" - -"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset" - - - -<composition/1/artifact/1>->"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset" - - -rdfs:comment - - - -"application/x-netcdf" - -"application/x-netcdf" - - - -<composition/1/artifact/1>->"application/x-netcdf" - - -trov:mimeType - - - -"b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" - -"b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" - - - -<composition/1/artifact/1>->"b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" - - -trov:sha256 - - - -<arrangement/2> - -<arrangement/2> - - - -<trov:LocalFilesystemArtifactArrangement> - -<trov:LocalFilesystemArtifactArrangement> - - - -<arrangement/2>-><trov:LocalFilesystemArtifactArrangement> - - -rdf:type - - - -"Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook" - -"Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook" - - - -<arrangement/2>->"Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook" - - -rdfs:comment - - - -<arrangement/2/locus/1> - -<arrangement/2/locus/1> - - - -<arrangement/2>-><arrangement/2/locus/1> - - -trov:hasLocus - - - -<arrangement/2/locus/2> - -<arrangement/2/locus/2> - - - -<arrangement/2>-><arrangement/2/locus/2> - - -trov:hasLocus - - - -<arrangement/2/locus/1>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/2/locus/1>-><composition/1/artifact/1> - - -trov:hasArtifact - - - -"data/lbda-v2_kddm_pmdi_2017.nc" - -"data/lbda-v2_kddm_pmdi_2017.nc" - - - -<arrangement/2/locus/1>->"data/lbda-v2_kddm_pmdi_2017.nc" - - -trov:hasLocation - - - -<arrangement/2/locus/2>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/2> - -<composition/1/artifact/2> - - - -<arrangement/2/locus/2>-><composition/1/artifact/2> - - -trov:hasArtifact - - - -"analysis.ipynb" - -"analysis.ipynb" - - - -<arrangement/2/locus/2>->"analysis.ipynb" - - -trov:hasLocation - - - -<trov:ComputationalNotebookArtifact> - -<trov:ComputationalNotebookArtifact> - - - -<composition/1/artifact/2>-><trov:ComputationalNotebookArtifact> - - -rdf:type - - - -"Initial state of Jupyter notebook for processing the LBDA dataset" - -"Initial state of Jupyter notebook for processing the LBDA dataset" - - - -<composition/1/artifact/2>->"Initial state of Jupyter notebook for processing the LBDA dataset" - - -rdfs:comment - - - -"text/plain" - -"text/plain" - - - -<composition/1/artifact/2>->"text/plain" - - -trov:mimeType - - - -"8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" - -"8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" - - - -<composition/1/artifact/2>->"8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" - - -trov:sha256 - - - -<arrangement/3> - -<arrangement/3> - - - -<arrangement/3>-><trov:LocalFilesystemArtifactArrangement> - - -rdf:type - - - -"Arrangement on fileserver managed by TRS after running Jupyter notebook" - -"Arrangement on fileserver managed by TRS after running Jupyter notebook" - - - -<arrangement/3>->"Arrangement on fileserver managed by TRS after running Jupyter notebook" - - -rdfs:comment - - - -<arrangement/3/locus/1> - -<arrangement/3/locus/1> - - - -<arrangement/3>-><arrangement/3/locus/1> - - -trov:hasLocus - - - -<arrangement/3/locus/2> - -<arrangement/3/locus/2> - - - -<arrangement/3>-><arrangement/3/locus/2> - - -trov:hasLocus - - - -<arrangement/3/locus/3> - -<arrangement/3/locus/3> - - - -<arrangement/3>-><arrangement/3/locus/3> - - -trov:hasLocus - - - -<arrangement/3/locus/4> - -<arrangement/3/locus/4> - - - -<arrangement/3>-><arrangement/3/locus/4> - - -trov:hasLocus - - - -<arrangement/3/locus/5> - -<arrangement/3/locus/5> - - - -<arrangement/3>-><arrangement/3/locus/5> - - -trov:hasLocus - - - -<arrangement/3/locus/1>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/3/locus/1>-><composition/1/artifact/1> - - -trov:hasArtifact - - - -<arrangement/3/locus/1>->"data/lbda-v2_kddm_pmdi_2017.nc" - - -trov:hasLocation - - - -<arrangement/3/locus/2>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/3/locus/2>->"analysis.ipynb" - - -trov:hasLocation - - - -<composition/1/artifact/3> - -<composition/1/artifact/3> - - - -<arrangement/3/locus/2>-><composition/1/artifact/3> - - -trov:hasArtifact - - - -<arrangement/3/locus/3>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/4> - -<composition/1/artifact/4> - - - -<arrangement/3/locus/3>-><composition/1/artifact/4> - - -trov:hasArtifact - - - -"output/analysis.html" - -"output/analysis.html" - - - -<arrangement/3/locus/3>->"output/analysis.html" - - -trov:hasLocation - - - -<arrangement/3/locus/4>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/5> - -<composition/1/artifact/5> - - - -<arrangement/3/locus/4>-><composition/1/artifact/5> - - -trov:hasArtifact - - - -"output/histogram.png" - -"output/histogram.png" - - - -<arrangement/3/locus/4>->"output/histogram.png" - - -trov:hasLocation - - - -<arrangement/3/locus/5>-><trov:ArtifactLocus> - - -rdf:type - - - -<composition/1/artifact/6> - -<composition/1/artifact/6> - - - -<arrangement/3/locus/5>-><composition/1/artifact/6> - - -trov:hasArtifact - - - -"lbda-v2_kddm_pmdi_2017.tiff" - -"lbda-v2_kddm_pmdi_2017.tiff" - - - -<arrangement/3/locus/5>->"lbda-v2_kddm_pmdi_2017.tiff" - - -trov:hasLocation - - - -"output/lbda-v2_kddm_pmdi_2017.tiff" - -"output/lbda-v2_kddm_pmdi_2017.tiff" - - - -<arrangement/3/locus/5>->"output/lbda-v2_kddm_pmdi_2017.tiff" - - -trov:hasLocation - - - -<composition/1/artifact/3>-><trov:ComputationalNotebookArtifact> - - -rdf:type - - - -<composition/1/artifact/3>->"text/plain" - - -trov:mimeType - - - -"Final state of Jupyter notebook for processing the LBDA dataset" - -"Final state of Jupyter notebook for processing the LBDA dataset" - - - -<composition/1/artifact/3>->"Final state of Jupyter notebook for processing the LBDA dataset" - - -rdfs:comment - - - -"8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" - -"8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" - - - -<composition/1/artifact/3>->"8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" - - -trov:sha256 - - - -<trov:HTMLArtifact> - -<trov:HTMLArtifact> - - - -<composition/1/artifact/4>-><trov:HTMLArtifact> - - -rdf:type - - - -"HTML rendering of final state of the Jupyter notebook" - -"HTML rendering of final state of the Jupyter notebook" - - - -<composition/1/artifact/4>->"HTML rendering of final state of the Jupyter notebook" - - -rdfs:comment - - - -"text/html" - -"text/html" - - - -<composition/1/artifact/4>->"text/html" - - -trov:mimeType - - - -"870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" - -"870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" - - - -<composition/1/artifact/4>->"870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" - - -trov:sha256 - - - -<trov:ImageArtifact> - -<trov:ImageArtifact> - - - -<composition/1/artifact/5>-><trov:ImageArtifact> - - -rdf:type - - - -"Graphical rendering of the histogram of dataset values" - -"Graphical rendering of the histogram of dataset values" - - - -<composition/1/artifact/5>->"Graphical rendering of the histogram of dataset values" - - -rdfs:comment - - - -"image/png" - -"image/png" - - - -<composition/1/artifact/5>->"image/png" - - -trov:mimeType - - - -"cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" - -"cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" - - - -<composition/1/artifact/5>->"cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" - - -trov:sha256 - - - -<composition/1/artifact/6>-><trov:DataArtifact> - - -rdf:type - - - -"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server" - -"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server" - - - -<composition/1/artifact/6>->"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server" - - -rdfs:comment - - - -"image/tiff" - -"image/tiff" - - - -<composition/1/artifact/6>->"image/tiff" - - -trov:mimeType - - - -"e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" - -"e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" - - - -<composition/1/artifact/6>->"e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" - - -trov:sha256 - - - -<arrangement/4> - -<arrangement/4> - - - -<arrangement/4>-><arrangement/3/locus/5> - - -trov:hasLocus - - - -<trov:ZipArtifactArrangement> - -<trov:ZipArtifactArrangement> - - - -<arrangement/4>-><trov:ZipArtifactArrangement> - - -rdf:type - - - -"Arrangement of final products packaged in a Zip file" - -"Arrangement of final products packaged in a Zip file" - - - -<arrangement/4>->"Arrangement of final products packaged in a Zip file" - - -rdfs:comment - - - -<arrangement/4/locus/1> - -<arrangement/4/locus/1> - - - -<arrangement/4>-><arrangement/4/locus/1> - - -trov:hasLocus - - - -<arrangement/4/locus/2> - -<arrangement/4/locus/2> - - - -<arrangement/4>-><arrangement/4/locus/2> - - -trov:hasLocus - - - -<arrangement/4/locus/3> - -<arrangement/4/locus/3> - - - -<arrangement/4>-><arrangement/4/locus/3> - - -trov:hasLocus - - - -<arrangement/4/locus/1>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/4/locus/1>->"analysis.ipynb" - - -trov:hasLocation - - - -<arrangement/4/locus/1>-><composition/1/artifact/3> - - -trov:hasArtifact - - - -<arrangement/4/locus/2>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/4/locus/2>-><composition/1/artifact/4> - - -trov:hasArtifact - - - -"analysis.html" - -"analysis.html" - - - -<arrangement/4/locus/2>->"analysis.html" - - -trov:hasLocation - - - -<arrangement/4/locus/3>-><trov:ArtifactLocus> - - -rdf:type - - - -<arrangement/4/locus/3>-><composition/1/artifact/5> - - -trov:hasArtifact - - - -"histogram.png" - -"histogram.png" - - - -<arrangement/4/locus/3>->"histogram.png" - - -trov:hasLocation - - - -<composition/1> - -<composition/1> - - - -<composition/1>-><composition/1/artifact/1> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/2> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/3> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/4> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/5> - - -trov:hasArtifact - - - -<composition/1>-><composition/1/artifact/6> - - -trov:hasArtifact - - - -<trov:ArtifactComposition> - -<trov:ArtifactComposition> - - - -<composition/1>-><trov:ArtifactComposition> - - -rdf:type - - - -<fingerprint> - -<fingerprint> - - - -<composition/1>-><fingerprint> - - -trov:hasFingerprint - - - -<trov:CompositionFingerprint> - -<trov:CompositionFingerprint> - - - -<fingerprint>-><trov:CompositionFingerprint> - - -rdf:type - - - -"b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2" - -"b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2" - - - -<fingerprint>->"b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2" - - -trov:sha256 - - - -<tro> - -<tro> - - - -<tro>-><arrangement/1> - - -trov:hasArrangement - - - -<tro>-><arrangement/2> - - -trov:hasArrangement - - - -<tro>-><arrangement/3> - - -trov:hasArrangement - - - -<tro>-><arrangement/4> - - -trov:hasArrangement - - - -<tro>-><composition/1> - - -trov:hasComposition - - - -<trov:TransparentResearchObject> - -<trov:TransparentResearchObject> - - - -<tro>-><trov:TransparentResearchObject> - - -rdf:type - - - -"Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application" - -"Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application" - - - -<tro>->"Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application" - - -rdfs:comment - - - -<tro/attribute/1> - -<tro/attribute/1> - - - -<tro>-><tro/attribute/1> - - -trov:hasAttribute - - - -<trp/1> - -<trp/1> - - - -<tro>-><trp/1> - - -trov:hasPerformance - - - -<trp/2> - -<trp/2> - - - -<tro>-><trp/2> - - -trov:hasPerformance - - - -<trp/3> - -<trp/3> - - - -<tro>-><trp/3> - - -trov:hasPerformance - - - -<trs> - -<trs> - - - -<tro>-><trs> - - -trov:wasAssembledBy - - - -<tsa> - -<tsa> - - - -<tro>-><tsa> - - -trov:wasTimestampedBy - - - -<trov:IncludesAllInputData> - -<trov:IncludesAllInputData> - - - -<tro/attribute/1>-><trov:IncludesAllInputData> - - -rdf:type - - - -<trp/1/attribute/1> - -<trp/1/attribute/1> - - - -<tro/attribute/1>-><trp/1/attribute/1> - - -trov:warrantedBy - - - -<trp/2/attribute/1> - -<trp/2/attribute/1> - - - -<tro/attribute/1>-><trp/2/attribute/1> - - -trov:warrantedBy - - - -<trp/3/attribute/1> - -<trp/3/attribute/1> - - - -<tro/attribute/1>-><trp/3/attribute/1> - - -trov:warrantedBy - - - -<trp/1>-><arrangement/1> - - -trov:accessedArrangement - - - -<trp/1>-><arrangement/2> - - -trov:contributedToArrangement - - - -<trp/1>-><trs> - - -trov:wasConductedBy - - - -<trp/1>-><trp/1/attribute/1> - - -trov:hadPerformanceAttribute - - - -<trov:TrustedResearchPerformance> - -<trov:TrustedResearchPerformance> - - - -<trp/1>-><trov:TrustedResearchPerformance> - - -rdf:type - - - -"Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem" - -"Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem" - - - -<trp/1>->"Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem" - - -rdfs:comment - - - -"2023-05-08T01:40:00Z" - -"2023-05-08T01:40:00Z" - - - -<trp/1>->"2023-05-08T01:40:00Z" - - -trov:endedAtTime - - - -"2023-05-08T01:30:00Z" - -"2023-05-08T01:30:00Z" - - - -<trp/1>->"2023-05-08T01:30:00Z" - - -trov:startedAtTime - - - -<trp/2>-><arrangement/2> - - -trov:accessedArrangement - - - -<trp/2>-><arrangement/3> - - -trov:contributedToArrangement - - - -<trp/2>-><trs> - - -trov:wasConductedBy - - - -<trp/2>-><trp/2/attribute/1> - - -trov:hadPerformanceAttribute - - - -<trp/2>-><trov:TrustedResearchPerformance> - - -rdf:type - - - -"Process that ran Jupyter notebook" - -"Process that ran Jupyter notebook" - - - -<trp/2>->"Process that ran Jupyter notebook" - - -rdfs:comment - - - -"2023-05-08T01:50:00Z" - -"2023-05-08T01:50:00Z" - - - -<trp/2>->"2023-05-08T01:50:00Z" - - -trov:endedAtTime - - - -"2023-05-08T01:41:00Z" - -"2023-05-08T01:41:00Z" - - - -<trp/2>->"2023-05-08T01:41:00Z" - - -trov:startedAtTime - - - -<trp/3>-><arrangement/3> - - -trov:accessedArrangement - - - -<trp/3>-><arrangement/4> - - -trov:contributedToArrangement - - - -<trp/3>-><trs> - - -trov:wasConductedBy - - - -<trp/3>-><trp/3/attribute/1> - - -trov:hadPerformanceAttribute - - - -<trp/3>-><trov:TrustedResearchPerformance> - - -rdf:type - - - -"Process that packaged products of the Jupyter notebook execution in a Zip file" - -"Process that packaged products of the Jupyter notebook execution in a Zip file" - - - -<trp/3>->"Process that packaged products of the Jupyter notebook execution in a Zip file" - - -rdfs:comment - - - -"2023-05-08T02:00:00Z" - -"2023-05-08T02:00:00Z" - - - -<trp/3>->"2023-05-08T02:00:00Z" - - -trov:endedAtTime - - - -"2023-05-08T01:51:00Z" - -"2023-05-08T01:51:00Z" - - - -<trp/3>->"2023-05-08T01:51:00Z" - - -trov:startedAtTime - - - -<trs/capability/1> - -<trs/capability/1> - - - -<trs>-><trs/capability/1> - - -trov:hasCapability - - - -<trs/capability/2> - -<trs/capability/2> - - - -<trs>-><trs/capability/2> - - -trov:hasCapability - - - -<trov:TrustedResearchSystem> - -<trov:TrustedResearchSystem> - - - -<trs>-><trov:TrustedResearchSystem> - - -rdf:type - - - -"TRS that can monitor netowrk accesses or provide Internet isolation" - -"TRS that can monitor netowrk accesses or provide Internet isolation" - - - -<trs>->"TRS that can monitor netowrk accesses or provide Internet isolation" - - -rdfs:comment - - - -"-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" - -"-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" - - - -<trs>->"-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" - - -trov:publicKey - - - -<tsa>->"-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" - - -trov:publicKey - - - -<trov:TimeStampingAuthority> - -<trov:TimeStampingAuthority> - - - -<tsa>-><trov:TimeStampingAuthority> - - -rdf:type - - - -<trp/1/attribute/1>-><trs/capability/1> - - -trov:warrantedBy - - - -<trov:InternetAccessRecording> - -<trov:InternetAccessRecording> - - - -<trp/1/attribute/1>-><trov:InternetAccessRecording> - - -rdf:type - - - -<trp/2/attribute/1>-><trs/capability/2> - - -trov:warrantedBy - - - -<trov:InternetIsolation> - -<trov:InternetIsolation> - - - -<trp/2/attribute/1>-><trov:InternetIsolation> - - -rdf:type - - - -<trp/3/attribute/1>-><trs/capability/2> - - -trov:warrantedBy - - - -<trp/3/attribute/1>-><trov:InternetIsolation> - - -rdf:type - - - -<trov:CanRecordInternetAccess> - -<trov:CanRecordInternetAccess> - - - -<trs/capability/1>-><trov:CanRecordInternetAccess> - - -rdf:type - - - -<trov:CanProvideInternetIsolation> - -<trov:CanProvideInternetIsolation> - - - -<trs/capability/2>-><trov:CanProvideInternetIsolation> - - -rdf:type - - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/trp.svg b/demo/01-trov-examples/03-skope-lbda-processing/report_inline/trp.svg deleted file mode 100644 index 149853f..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_inline/trp.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - -trp - - - -arrangement/1 - -arrangement/1 - - - -arrangement/2 - -arrangement/2 - - - -arrangement/1->arrangement/2 - - -<trp/1> - - - -arrangement/3 - -arrangement/3 - - - -arrangement/2->arrangement/3 - - -<trp/2> - - - -arrangement/4 - -arrangement/4 - - - -arrangement/3->arrangement/4 - - -<trp/3> - - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_inline_graph2/overall_tro_graph.html b/demo/01-trov-examples/03-skope-lbda-processing/report_inline_graph2/overall_tro_graph.html deleted file mode 100644 index 230019c..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_inline_graph2/overall_tro_graph.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - Overall TRO Graph - - -

Overall TRO Graph

- - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_inline_graph2/tro.svg b/demo/01-trov-examples/03-skope-lbda-processing/report_inline_graph2/tro.svg deleted file mode 100644 index aa2e34d..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/report_inline_graph2/tro.svg +++ /dev/null @@ -1,1678 +0,0 @@ - - - - - - - - - -arrangement/1 - -arrangement/1 - - - -trov:WebResourceArtifactArrangement - -trov:WebResourceArtifactArrangement - - - -arrangement/1->trov:WebResourceArtifactArrangement - - -rdf:type - - - -Arrangement decscribing location of LBDA NetCDF file on NOAA web server - -Arrangement decscribing location of LBDA NetCDF file on NOAA web server - - - -arrangement/1->Arrangement decscribing location of LBDA NetCDF file on NOAA web server - - -rdfs:comment - - - -arrangement/1/locus/1 - -arrangement/1/locus/1 - - - -arrangement/1->arrangement/1/locus/1 - - -trov:hasLocus - - - -trov:ArtifactLocus - -trov:ArtifactLocus - - - -arrangement/1/locus/1->trov:ArtifactLocus - - -rdf:type - - - -composition/1/artifact/1 - -composition/1/artifact/1 - - - -arrangement/1/locus/1->composition/1/artifact/1 - - -trov:hasArtifact - - - -https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc - -https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc - - - -arrangement/1/locus/1->https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc - - -trov:hasLocation - - - -trov:DataArtifact - -trov:DataArtifact - - - -composition/1/artifact/1->trov:DataArtifact - - -rdf:type - - - -NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset - -NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset - - - -composition/1/artifact/1->NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset - - -rdfs:comment - - - -application/x-netcdf - -application/x-netcdf - - - -composition/1/artifact/1->application/x-netcdf - - -trov:mimeType - - - -b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78 - -b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78 - - - -composition/1/artifact/1->b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78 - - -trov:sha256 - - - -arrangement/2 - -arrangement/2 - - - -trov:LocalFilesystemArtifactArrangement - -trov:LocalFilesystemArtifactArrangement - - - -arrangement/2->trov:LocalFilesystemArtifactArrangement - - -rdf:type - - - -Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook - -Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook - - - -arrangement/2->Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook - - -rdfs:comment - - - -arrangement/2/locus/1 - -arrangement/2/locus/1 - - - -arrangement/2->arrangement/2/locus/1 - - -trov:hasLocus - - - -arrangement/2/locus/2 - -arrangement/2/locus/2 - - - -arrangement/2->arrangement/2/locus/2 - - -trov:hasLocus - - - -arrangement/2/locus/1->trov:ArtifactLocus - - -rdf:type - - - -arrangement/2/locus/1->composition/1/artifact/1 - - -trov:hasArtifact - - - -data/lbda-v2_kddm_pmdi_2017.nc - -data/lbda-v2_kddm_pmdi_2017.nc - - - -arrangement/2/locus/1->data/lbda-v2_kddm_pmdi_2017.nc - - -trov:hasLocation - - - -arrangement/2/locus/2->trov:ArtifactLocus - - -rdf:type - - - -composition/1/artifact/2 - -composition/1/artifact/2 - - - -arrangement/2/locus/2->composition/1/artifact/2 - - -trov:hasArtifact - - - -analysis.ipynb - -analysis.ipynb - - - -arrangement/2/locus/2->analysis.ipynb - - -trov:hasLocation - - - -trov:ComputationalNotebookArtifact - -trov:ComputationalNotebookArtifact - - - -composition/1/artifact/2->trov:ComputationalNotebookArtifact - - -rdf:type - - - -Initial state of Jupyter notebook for processing the LBDA dataset - -Initial state of Jupyter notebook for processing the LBDA dataset - - - -composition/1/artifact/2->Initial state of Jupyter notebook for processing the LBDA dataset - - -rdfs:comment - - - -text/plain - -text/plain - - - -composition/1/artifact/2->text/plain - - -trov:mimeType - - - -8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6 - -8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6 - - - -composition/1/artifact/2->8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6 - - -trov:sha256 - - - -arrangement/3 - -arrangement/3 - - - -arrangement/3->trov:LocalFilesystemArtifactArrangement - - -rdf:type - - - -Arrangement on fileserver managed by TRS after running Jupyter notebook - -Arrangement on fileserver managed by TRS after running Jupyter notebook - - - -arrangement/3->Arrangement on fileserver managed by TRS after running Jupyter notebook - - -rdfs:comment - - - -arrangement/3/locus/1 - -arrangement/3/locus/1 - - - -arrangement/3->arrangement/3/locus/1 - - -trov:hasLocus - - - -arrangement/3/locus/2 - -arrangement/3/locus/2 - - - -arrangement/3->arrangement/3/locus/2 - - -trov:hasLocus - - - -arrangement/3/locus/3 - -arrangement/3/locus/3 - - - -arrangement/3->arrangement/3/locus/3 - - -trov:hasLocus - - - -arrangement/3/locus/4 - -arrangement/3/locus/4 - - - -arrangement/3->arrangement/3/locus/4 - - -trov:hasLocus - - - -arrangement/3/locus/5 - -arrangement/3/locus/5 - - - -arrangement/3->arrangement/3/locus/5 - - -trov:hasLocus - - - -arrangement/3/locus/1->trov:ArtifactLocus - - -rdf:type - - - -arrangement/3/locus/1->composition/1/artifact/1 - - -trov:hasArtifact - - - -arrangement/3/locus/1->data/lbda-v2_kddm_pmdi_2017.nc - - -trov:hasLocation - - - -arrangement/3/locus/2->trov:ArtifactLocus - - -rdf:type - - - -arrangement/3/locus/2->analysis.ipynb - - -trov:hasLocation - - - -composition/1/artifact/3 - -composition/1/artifact/3 - - - -arrangement/3/locus/2->composition/1/artifact/3 - - -trov:hasArtifact - - - -arrangement/3/locus/3->trov:ArtifactLocus - - -rdf:type - - - -composition/1/artifact/4 - -composition/1/artifact/4 - - - -arrangement/3/locus/3->composition/1/artifact/4 - - -trov:hasArtifact - - - -output/analysis.html - -output/analysis.html - - - -arrangement/3/locus/3->output/analysis.html - - -trov:hasLocation - - - -arrangement/3/locus/4->trov:ArtifactLocus - - -rdf:type - - - -composition/1/artifact/5 - -composition/1/artifact/5 - - - -arrangement/3/locus/4->composition/1/artifact/5 - - -trov:hasArtifact - - - -output/histogram.png - -output/histogram.png - - - -arrangement/3/locus/4->output/histogram.png - - -trov:hasLocation - - - -arrangement/3/locus/5->trov:ArtifactLocus - - -rdf:type - - - -composition/1/artifact/6 - -composition/1/artifact/6 - - - -arrangement/3/locus/5->composition/1/artifact/6 - - -trov:hasArtifact - - - -lbda-v2_kddm_pmdi_2017.tiff - -lbda-v2_kddm_pmdi_2017.tiff - - - -arrangement/3/locus/5->lbda-v2_kddm_pmdi_2017.tiff - - -trov:hasLocation - - - -output/lbda-v2_kddm_pmdi_2017.tiff - -output/lbda-v2_kddm_pmdi_2017.tiff - - - -arrangement/3/locus/5->output/lbda-v2_kddm_pmdi_2017.tiff - - -trov:hasLocation - - - -composition/1/artifact/3->trov:ComputationalNotebookArtifact - - -rdf:type - - - -composition/1/artifact/3->text/plain - - -trov:mimeType - - - -Final state of Jupyter notebook for processing the LBDA dataset - -Final state of Jupyter notebook for processing the LBDA dataset - - - -composition/1/artifact/3->Final state of Jupyter notebook for processing the LBDA dataset - - -rdfs:comment - - - -8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf - -8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf - - - -composition/1/artifact/3->8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf - - -trov:sha256 - - - -trov:HTMLArtifact - -trov:HTMLArtifact - - - -composition/1/artifact/4->trov:HTMLArtifact - - -rdf:type - - - -HTML rendering of final state of the Jupyter notebook - -HTML rendering of final state of the Jupyter notebook - - - -composition/1/artifact/4->HTML rendering of final state of the Jupyter notebook - - -rdfs:comment - - - -text/html - -text/html - - - -composition/1/artifact/4->text/html - - -trov:mimeType - - - -870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0 - -870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0 - - - -composition/1/artifact/4->870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0 - - -trov:sha256 - - - -trov:ImageArtifact - -trov:ImageArtifact - - - -composition/1/artifact/5->trov:ImageArtifact - - -rdf:type - - - -Graphical rendering of the histogram of dataset values - -Graphical rendering of the histogram of dataset values - - - -composition/1/artifact/5->Graphical rendering of the histogram of dataset values - - -rdfs:comment - - - -image/png - -image/png - - - -composition/1/artifact/5->image/png - - -trov:mimeType - - - -cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf - -cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf - - - -composition/1/artifact/5->cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf - - -trov:sha256 - - - -composition/1/artifact/6->trov:DataArtifact - - -rdf:type - - - -GeoTIFF file containing LBDA data cube ready for staging to SKOPE server - -GeoTIFF file containing LBDA data cube ready for staging to SKOPE server - - - -composition/1/artifact/6->GeoTIFF file containing LBDA data cube ready for staging to SKOPE server - - -rdfs:comment - - - -image/tiff - -image/tiff - - - -composition/1/artifact/6->image/tiff - - -trov:mimeType - - - -e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d - -e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d - - - -composition/1/artifact/6->e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d - - -trov:sha256 - - - -arrangement/4 - -arrangement/4 - - - -arrangement/4->arrangement/3/locus/5 - - -trov:hasLocus - - - -trov:ZipArtifactArrangement - -trov:ZipArtifactArrangement - - - -arrangement/4->trov:ZipArtifactArrangement - - -rdf:type - - - -Arrangement of final products packaged in a Zip file - -Arrangement of final products packaged in a Zip file - - - -arrangement/4->Arrangement of final products packaged in a Zip file - - -rdfs:comment - - - -arrangement/4/locus/1 - -arrangement/4/locus/1 - - - -arrangement/4->arrangement/4/locus/1 - - -trov:hasLocus - - - -arrangement/4/locus/2 - -arrangement/4/locus/2 - - - -arrangement/4->arrangement/4/locus/2 - - -trov:hasLocus - - - -arrangement/4/locus/3 - -arrangement/4/locus/3 - - - -arrangement/4->arrangement/4/locus/3 - - -trov:hasLocus - - - -arrangement/4/locus/1->trov:ArtifactLocus - - -rdf:type - - - -arrangement/4/locus/1->analysis.ipynb - - -trov:hasLocation - - - -arrangement/4/locus/1->composition/1/artifact/3 - - -trov:hasArtifact - - - -arrangement/4/locus/2->trov:ArtifactLocus - - -rdf:type - - - -arrangement/4/locus/2->composition/1/artifact/4 - - -trov:hasArtifact - - - -analysis.html - -analysis.html - - - -arrangement/4/locus/2->analysis.html - - -trov:hasLocation - - - -arrangement/4/locus/3->trov:ArtifactLocus - - -rdf:type - - - -arrangement/4/locus/3->composition/1/artifact/5 - - -trov:hasArtifact - - - -histogram.png - -histogram.png - - - -arrangement/4/locus/3->histogram.png - - -trov:hasLocation - - - -composition/1 - -composition/1 - - - -composition/1->composition/1/artifact/1 - - -trov:hasArtifact - - - -composition/1->composition/1/artifact/2 - - -trov:hasArtifact - - - -composition/1->composition/1/artifact/3 - - -trov:hasArtifact - - - -composition/1->composition/1/artifact/4 - - -trov:hasArtifact - - - -composition/1->composition/1/artifact/5 - - -trov:hasArtifact - - - -composition/1->composition/1/artifact/6 - - -trov:hasArtifact - - - -trov:ArtifactComposition - -trov:ArtifactComposition - - - -composition/1->trov:ArtifactComposition - - -rdf:type - - - -fingerprint - -fingerprint - - - -composition/1->fingerprint - - -trov:hasFingerprint - - - -trov:CompositionFingerprint - -trov:CompositionFingerprint - - - -fingerprint->trov:CompositionFingerprint - - -rdf:type - - - -b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2 - -b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2 - - - -fingerprint->b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2 - - -trov:sha256 - - - -tro - -tro - - - -tro->arrangement/1 - - -trov:hasArrangement - - - -tro->arrangement/2 - - -trov:hasArrangement - - - -tro->arrangement/3 - - -trov:hasArrangement - - - -tro->arrangement/4 - - -trov:hasArrangement - - - -tro->composition/1 - - -trov:hasComposition - - - -trov:TransparentResearchObject - -trov:TransparentResearchObject - - - -tro->trov:TransparentResearchObject - - -rdf:type - - - -Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application - -Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application - - - -tro->Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application - - -rdfs:comment - - - -tro/attribute/1 - -tro/attribute/1 - - - -tro->tro/attribute/1 - - -trov:hasAttribute - - - -trp/1 - -trp/1 - - - -tro->trp/1 - - -trov:hasPerformance - - - -trp/2 - -trp/2 - - - -tro->trp/2 - - -trov:hasPerformance - - - -trp/3 - -trp/3 - - - -tro->trp/3 - - -trov:hasPerformance - - - -trs - -trs - - - -tro->trs - - -trov:wasAssembledBy - - - -tsa - -tsa - - - -tro->tsa - - -trov:wasTimestampedBy - - - -trov:IncludesAllInputData - -trov:IncludesAllInputData - - - -tro/attribute/1->trov:IncludesAllInputData - - -rdf:type - - - -trp/1/attribute/1 - -trp/1/attribute/1 - - - -tro/attribute/1->trp/1/attribute/1 - - -trov:warrantedBy - - - -trp/2/attribute/1 - -trp/2/attribute/1 - - - -tro/attribute/1->trp/2/attribute/1 - - -trov:warrantedBy - - - -trp/3/attribute/1 - -trp/3/attribute/1 - - - -tro/attribute/1->trp/3/attribute/1 - - -trov:warrantedBy - - - -trp/1->arrangement/1 - - -trov:accessedArrangement - - - -trp/1->arrangement/2 - - -trov:contributedToArrangement - - - -trp/1->trs - - -trov:wasConductedBy - - - -trp/1->trp/1/attribute/1 - - -trov:hadPerformanceAttribute - - - -trov:TrustedResearchPerformance - -trov:TrustedResearchPerformance - - - -trp/1->trov:TrustedResearchPerformance - - -rdf:type - - - -Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem - -Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem - - - -trp/1->Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem - - -rdfs:comment - - - -2023-05-08T01:40:00Z - -2023-05-08T01:40:00Z - - - -trp/1->2023-05-08T01:40:00Z - - -trov:endedAtTime - - - -2023-05-08T01:30:00Z - -2023-05-08T01:30:00Z - - - -trp/1->2023-05-08T01:30:00Z - - -trov:startedAtTime - - - -trp/2->arrangement/2 - - -trov:accessedArrangement - - - -trp/2->arrangement/3 - - -trov:contributedToArrangement - - - -trp/2->trs - - -trov:wasConductedBy - - - -trp/2->trp/2/attribute/1 - - -trov:hadPerformanceAttribute - - - -trp/2->trov:TrustedResearchPerformance - - -rdf:type - - - -Process that ran Jupyter notebook - -Process that ran Jupyter notebook - - - -trp/2->Process that ran Jupyter notebook - - -rdfs:comment - - - -2023-05-08T01:50:00Z - -2023-05-08T01:50:00Z - - - -trp/2->2023-05-08T01:50:00Z - - -trov:endedAtTime - - - -2023-05-08T01:41:00Z - -2023-05-08T01:41:00Z - - - -trp/2->2023-05-08T01:41:00Z - - -trov:startedAtTime - - - -trp/3->arrangement/3 - - -trov:accessedArrangement - - - -trp/3->arrangement/4 - - -trov:contributedToArrangement - - - -trp/3->trs - - -trov:wasConductedBy - - - -trp/3->trp/3/attribute/1 - - -trov:hadPerformanceAttribute - - - -trp/3->trov:TrustedResearchPerformance - - -rdf:type - - - -Process that packaged products of the Jupyter notebook execution in a Zip file - -Process that packaged products of the Jupyter notebook execution in a Zip file - - - -trp/3->Process that packaged products of the Jupyter notebook execution in a Zip file - - -rdfs:comment - - - -2023-05-08T02:00:00Z - -2023-05-08T02:00:00Z - - - -trp/3->2023-05-08T02:00:00Z - - -trov:endedAtTime - - - -2023-05-08T01:51:00Z - -2023-05-08T01:51:00Z - - - -trp/3->2023-05-08T01:51:00Z - - -trov:startedAtTime - - - -trs/capability/1 - -trs/capability/1 - - - -trs->trs/capability/1 - - -trov:hasCapability - - - -trs/capability/2 - -trs/capability/2 - - - -trs->trs/capability/2 - - -trov:hasCapability - - - -trov:TrustedResearchSystem - -trov:TrustedResearchSystem - - - -trs->trov:TrustedResearchSystem - - -rdf:type - - - -TRS that can monitor netowrk accesses or provide Internet isolation - -TRS that can monitor netowrk accesses or provide Internet isolation - - - -trs->TRS that can monitor netowrk accesses or provide Internet isolation - - -rdfs:comment - - - ------BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- - - ------BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- - - - -trs->-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- - - - -trov:publicKey - - - -tsa->-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- - - - -trov:publicKey - - - -trov:TimeStampingAuthority - -trov:TimeStampingAuthority - - - -tsa->trov:TimeStampingAuthority - - -rdf:type - - - -trp/1/attribute/1->trs/capability/1 - - -trov:warrantedBy - - - -trov:InternetAccessRecording - -trov:InternetAccessRecording - - - -trp/1/attribute/1->trov:InternetAccessRecording - - -rdf:type - - - -trp/2/attribute/1->trs/capability/2 - - -trov:warrantedBy - - - -trov:InternetIsolation - -trov:InternetIsolation - - - -trp/2/attribute/1->trov:InternetIsolation - - -rdf:type - - - -trp/3/attribute/1->trs/capability/2 - - -trov:warrantedBy - - - -trp/3/attribute/1->trov:InternetIsolation - - -rdf:type - - - -trov:CanRecordInternetAccess - -trov:CanRecordInternetAccess - - - -trs/capability/1->trov:CanRecordInternetAccess - - -rdf:type - - - -trov:CanProvideInternetIsolation - -trov:CanProvideInternetIsolation - - - -trs/capability/2->trov:CanProvideInternetIsolation - - -rdf:type - - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/run.sh b/demo/01-trov-examples/03-skope-lbda-processing/run.sh deleted file mode 100644 index 85445b5..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/run.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env bash - -source ../common/query-tro.sh - -# ------------------------------------------------------------------------------ - -bash_cell tro_report_inline << END_CELL - -geist report --outputroot report_inline << END_TEMPLATE - -{%- use "templates.geist" %} -{%- create %} tro/tro.jsonld {% endcreate %} - -{%- html "overall_tro_graph.html" %} -{%- head "Overall TRO Graph" %} - - -

Overall TRO Graph

- {%- graph dataset="kb", rankdir="LR", mappings="mappings.json" as tro_graph %} - {% img src="tro.svg" %} {{ tro_graph }} {% endimg %} - - -{% endhtml %} - -{%- html "report.html" %} -{%- head "TRO Report" %} - - -

TRO Report

-

This report shows the TRO of downloading LBDA dataset from NOAA website and preparing for use by researchers employing the SKOPE application. -

1. The TRO was assembled by what TRS?

- {%- table mappings="mappings.json" %} - {% query_tro_trs_str %} - {% endtable %} - -

2. What capabilities does the TRS have?

- {%- table mappings="mappings.json" %} - {% query_trs_capability_str %} - {% endtable %} - -

3. What TRPs does the TRO have? What arrangements are accessed and contributed to per TRP accordingly?

- {% img src="trp.svg" %} - {%- gv_graph "trp", "LR" %} - nodesep=0.6 - node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] - {%- map isfilepath=False, mappings="mappings.json" as query_trp_shorten %} {% query_trp_str %} {% endmap %} - {%- set query_trp = query_trp_shorten | json2df %} - {% for _, row in query_trp.iterrows() %} - {% gv_labeled_edge row["in"], row["out"], row["trp"] %} - {% endfor %} - {% gv_end %} - {% endimg %} - -

4. What artifacts are included in each arrangement?

- {% img src="arrangement.svg" %} - {%- gv_graph "arrangement", "LR" %} - nodesep=0.6 - node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] - {%- map isfilepath=False, mappings="mappings.json" as query_arrangement_shorten %} {% query_arrangement_str %} {% endmap %} - {%- set query_arrangement = query_arrangement_shorten | json2df %} - {% for _, row in query_arrangement.iterrows() %} - {% gv_edge row["arrangement"], row["artifact"] %} - {% endfor %} - {% gv_end %} - {% endimg %} - -

5. What are the type, comment, mimeType, and sha256 of each artifact? Which composition does it belong to?

- {%- table mappings="mappings.json" %} - {% query_artifact_str %} - {% endtable %} - -

6. Overall graph

- Zoom in the graph - - - -{% endhtml %} - -{%- destroy %} - -END_TEMPLATE - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell tro_report_file << END_CELL - -geist report --file tro_report --outputroot report_file - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell tro_report_inline_graph2 << END_CELL - -geist report --outputroot report_inline_graph2 << END_TEMPLATE - -{%- use "templates.geist" %} -{%- create %} tro/tro.jsonld {% endcreate %} - -{%- html "overall_tro_graph.html" %} -{%- head "Overall TRO Graph" %} - - -

Overall TRO Graph

- {%- graph2 dataset="kb", rankdir="LR", mappings="mappings.json" as tro_graph %} - {% img src="tro.svg", width="100%" %} {{ tro_graph }} {% endimg %} - - -{% endhtml %} - -END_TEMPLATE - -END_CELL - -# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/01-trov-examples/03-skope-lbda-processing/run.txt b/demo/01-trov-examples/03-skope-lbda-processing/run.txt deleted file mode 100644 index ec4ab71..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/run.txt +++ /dev/null @@ -1,665 +0,0 @@ -================================================ bash cell | import trov vocabulary ================================================ - -# Destroy the dataset -geist destroy --dataset kb --quiet - -# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES -geist create --dataset kb --inputformat json-ld --inputfile /mnt/trace-model/exports/trace-vocab.jsonld --infer owl - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - . - "A set of loci describing the location of one or more artifacts" . - "ArtifactArrangement" . - . - . - "Base class for collections of one or more artifacts." . - "ArtifactCollection" . - . - . - "A set of artifacts described by a TRO." . - "ArtifactComposition" . - . - . - . - "The location of a specific artifact." . - "ArtifactLocus" . - . - . - . - "The capability to prevent Internet access during a TRP." . - "CanProvideInternetIsolation" . - . - . - . - . - . - "Unique fingerprint of a particular artifact composition" . - "CompositionFingerprint" . - . - . - "The policy of always preeventing Internet access during a TRP." . - "EnforcesInternetIsolation" . - . - . - . - . - . - . - "TRO composition includes all input data employed in creating the TRO." . - "IncludesAllInputData" . - . - . - . - . - "A research artifact described by a TRO." . - "ResearchArtifact" . - . - . - "An attribute of a TRS, TRP, or TRO." . - "TREAttribute" . - . - . - "An attribute of a particular TRO." . - "TROAttribute" . - . - . - . - . - "A property of a particular TRS." . - "An attribute of a TRS." . - "TRSAttribute" . - . - . - . - "A policy always enforced by a particular TRS." . - "TRSCapability" . - . - . - . - . - "A policy always enforced by a particular TRS." . - "TRSPolicy" . - . - . - . - . - . - "A timestamping authority trusted by a TRS." . - "TimeStampingAuthority" . - . - . - . - "A set of research artifacts produced by a TRP and signed by the performing TRS." . - "TransparentResearchObject" . - . - . - . - "Common base class for TRSs, TRPs, and TROs." . - "TrustedResearchElement" . - . - . - . - "A set of research operations performed by a TRS." . - "An execution of a research process" . - "TrustedResearchPerformance" . - . - . - . - "A system certified to perform TRPs and assemble TROs." . - "TrustedResearchSystem" . - . - . - . - . - . - "hasArrangement" . - . - . - . - . - . - . - "hasArtifact" . - . - . - . - . - . - . - . - "hasComposition" . - . - . - . - . - . - . - . - . - "hasFingerprint" . - . - . - . - . - . - . - . - "hasLocus" . - . - . - . - . - . - . - "hasLocus" . - . - . - . - . - . - . - . - . - "wasAssembledBy" . - . - . - . - . - . - . - . - . - "wasTimestampedBy" . - . - . - . - . - . -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================ bash cell | import tro declaration ================================================ - -# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES -geist load --dataset kb --inputformat json-ld --inputfile tro/tro.jsonld - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov-example - -# Destroy the dataset -geist destroy --dataset kb - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - . - . - . - "https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" . - . - "Arrangement decscribing location of LBDA NetCDF file on NOAA web server" . - . - . - . - . - . - "data/lbda-v2_kddm_pmdi_2017.nc" . - . - . - . - "analysis.ipynb" . - . - "Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook" . - . - . - . - . - . - . - "data/lbda-v2_kddm_pmdi_2017.nc" . - . - . - . - "analysis.ipynb" . - . - . - . - "output/analysis.html" . - . - . - . - "output/histogram.png" . - . - . - . - "lbda-v2_kddm_pmdi_2017.tiff" . - "output/lbda-v2_kddm_pmdi_2017.tiff" . - . - "Arrangement on fileserver managed by TRS after running Jupyter notebook" . - . - . - . - . - . - . - . - . - . - "analysis.ipynb" . - . - . - . - "analysis.html" . - . - . - . - "histogram.png" . - . - "Arrangement of final products packaged in a Zip file" . - . - . - . - . - . - . - "NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset" . - . - "application/x-netcdf" . - "b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" . - . - "Initial state of Jupyter notebook for processing the LBDA dataset" . - . - "text/plain" . - "8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" . - . - "Final state of Jupyter notebook for processing the LBDA dataset" . - . - "text/plain" . - "8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" . - . - "HTML rendering of final state of the Jupyter notebook" . - . - "text/html" . - "870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" . - . - "Graphical rendering of the histogram of dataset values" . - . - "image/png" . - "cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" . - . - "GeoTIFF file containing LBDA data cube ready for staging to SKOPE server" . - . - "image/tiff" . - "e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" . - . - . - . - . - . - . - . - . - . - . - . - "b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2" . - . - . - . - . - . - . - "Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application" . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - "Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem" . - . - . - . - "2023-05-08T01:40:00Z" . - . - "2023-05-08T01:30:00Z" . - . - . - . - . - . - "Process that ran Jupyter notebook" . - . - . - . - "2023-05-08T01:50:00Z" . - . - "2023-05-08T01:41:00Z" . - . - . - . - . - . - "Process that packaged products of the Jupyter notebook execution in a Zip file" . - . - . - . - "2023-05-08T02:00:00Z" . - . - "2023-05-08T01:51:00Z" . - . - . - . - . - . - . - "TRS that can monitor netowrk accesses or provide Internet isolation" . - . - . - . - "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" . - . - . - "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" . -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================== bash cell | tro_report_inline =================================================== - -geist report --outputroot report_inline << END_TEMPLATE - -{%- use "templates.geist" %} -{%- create %} tro/tro.jsonld {% endcreate %} - -{%- html "overall_tro_graph.html" %} -{%- head "Overall TRO Graph" %} - - -

Overall TRO Graph

- {%- graph dataset="kb", rankdir="LR", mappings="mappings.json" as tro_graph %} - {% img src="tro.svg" %} {{ tro_graph }} {% endimg %} - - -{% endhtml %} - -{%- html "report.html" %} -{%- head "TRO Report" %} - - -

TRO Report

-

This report shows the TRO of downloading LBDA dataset from NOAA website and preparing for use by researchers employing the SKOPE application. -

1. The TRO was assembled by what TRS?

- {%- table mappings="mappings.json" %} - {% query_tro_trs_str %} - {% endtable %} - -

2. What capabilities does the TRS have?

- {%- table mappings="mappings.json" %} - {% query_trs_capability_str %} - {% endtable %} - -

3. What TRPs does the TRO have? What arrangements are accessed and contributed to per TRP accordingly?

- {% img src="trp.svg" %} - {%- gv_graph "trp", "LR" %} - nodesep=0.6 - node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] - {%- map isfilepath=False, mappings="mappings.json" as query_trp_shorten %} {% query_trp_str %} {% endmap %} - {%- set query_trp = query_trp_shorten | json2df %} - {% for _, row in query_trp.iterrows() %} - {% gv_labeled_edge row["in"], row["out"], row["trp"] %} - {% endfor %} - {% gv_end %} - {% endimg %} - -

4. What artifacts are included in each arrangement?

- {% img src="arrangement.svg" %} - {%- gv_graph "arrangement", "LR" %} - nodesep=0.6 - node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] - {%- map isfilepath=False, mappings="mappings.json" as query_arrangement_shorten %} {% query_arrangement_str %} {% endmap %} - {%- set query_arrangement = query_arrangement_shorten | json2df %} - {% for _, row in query_arrangement.iterrows() %} - {% gv_edge row["arrangement"], row["artifact"] %} - {% endfor %} - {% gv_end %} - {% endimg %} - -

5. What are the type, comment, mimeType, and sha256 of each artifact? Which composition does it belong to?

- {%- table mappings="mappings.json" %} - {% query_artifact_str %} - {% endtable %} - -

6. Overall graph

- Zoom in the graph - - - -{% endhtml %} - -{%- destroy %} - -END_TEMPLATE - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - - - - - - - - - Overall TRO Graph - - -

Overall TRO Graph

- - - - - - - - - - - TRO Report - - -

TRO Report

-

This report shows the TRO of downloading LBDA dataset from NOAA website and preparing for use by researchers employing the SKOPE application. -

1. The TRO was assembled by what TRS?

- - - - -
trotrs
<tro><trs>
- -

2. What capabilities does the TRS have?

- - - - - -
trscapability_idcapability_type
<trs><trs/capability/1><trov:CanRecordInternetAccess>
<trs><trs/capability/2><trov:CanProvideInternetIsolation>
- -

3. What TRPs does the TRO have? What arrangements are accessed and contributed to per TRP accordingly?

- -

4. What artifacts are included in each arrangement?

- -

5. What are the type, comment, mimeType, and sha256 of each artifact? Which composition does it belong to?

- - - - - - - - - -
artifacttypecommentmimeTypesha256composition
<composition/1/artifact/1><trov:DataArtifact>"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset""application/x-netcdf""b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78"<composition/1>
<composition/1/artifact/2><trov:ComputationalNotebookArtifact>"Initial state of Jupyter notebook for processing the LBDA dataset""text/plain""8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6"<composition/1>
<composition/1/artifact/3><trov:ComputationalNotebookArtifact>"Final state of Jupyter notebook for processing the LBDA dataset""text/plain""8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf"<composition/1>
<composition/1/artifact/4><trov:HTMLArtifact>"HTML rendering of final state of the Jupyter notebook""text/html""870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0"<composition/1>
<composition/1/artifact/5><trov:ImageArtifact>"Graphical rendering of the histogram of dataset values""image/png""cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf"<composition/1>
<composition/1/artifact/6><trov:DataArtifact>"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server""image/tiff""e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d"<composition/1>
- -

6. Overall graph

- Zoom in the graph - - - - - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=================================================== bash cell | tro_report_file ==================================================== - -geist report --file tro_report --outputroot report_file - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - - - - - - - - - Overall TRO Graph - - -

Overall TRO Graph

- - - - - - - - - - - TRO Report - - -

TRO Report

-

This report shows the TRO of downloading LBDA dataset from NOAA website and preparing for use by researchers employing the SKOPE application. -

1. The TRO was assembled by what TRS?

- - - - -
trotrs
<tro><trs>
- -

2. What capabilities does the TRS have?

- - - - - -
trscapability_idcapability_type
<trs><trs/capability/1><trov:CanRecordInternetAccess>
<trs><trs/capability/2><trov:CanProvideInternetIsolation>
- -

3. What TRPs does the TRO have? What arrangements are accessed and contributed to per TRP accordingly?

- -

4. What artifacts are included in each arrangement?

- -

5. What are the type, comment, mimeType, and sha256 of each artifact? Which composition does it belong to?

- - - - - - - - - -
artifacttypecommentmimeTypesha256composition
<composition/1/artifact/1><trov:DataArtifact>"NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset""application/x-netcdf""b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78"<composition/1>
<composition/1/artifact/2><trov:ComputationalNotebookArtifact>"Initial state of Jupyter notebook for processing the LBDA dataset""text/plain""8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6"<composition/1>
<composition/1/artifact/3><trov:ComputationalNotebookArtifact>"Final state of Jupyter notebook for processing the LBDA dataset""text/plain""8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf"<composition/1>
<composition/1/artifact/4><trov:HTMLArtifact>"HTML rendering of final state of the Jupyter notebook""text/html""870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0"<composition/1>
<composition/1/artifact/5><trov:ImageArtifact>"Graphical rendering of the histogram of dataset values""image/png""cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf"<composition/1>
<composition/1/artifact/6><trov:DataArtifact>"GeoTIFF file containing LBDA data cube ready for staging to SKOPE server""image/tiff""e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d"<composition/1>
- -

6. Overall graph

- Zoom in the graph - - - - - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=============================================== bash cell | tro_report_inline_graph2 =============================================== - -geist report --outputroot report_inline_graph2 << END_TEMPLATE - -{%- use "templates.geist" %} -{%- create %} tro/tro.jsonld {% endcreate %} - -{%- html "overall_tro_graph.html" %} -{%- head "Overall TRO Graph" %} - - -

Overall TRO Graph

- {%- graph2 dataset="kb", rankdir="LR", mappings="mappings.json" as tro_graph %} - {% img src="tro.svg", width="100%" %} {{ tro_graph }} {% endimg %} - - -{% endhtml %} - -END_TEMPLATE - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - - - - - - - - - Overall TRO Graph - - -

Overall TRO Graph

- - - - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/01-trov-examples/03-skope-lbda-processing/templates.geist b/demo/01-trov-examples/03-skope-lbda-processing/templates.geist deleted file mode 100644 index b07b577..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/templates.geist +++ /dev/null @@ -1,109 +0,0 @@ -{% template head title %} - - - - - {{ title }} - -{% endtemplate %} - -{% template gv_graph name direction %} - digraph {{ name }} { - rankdir={{ direction }} -{% endtemplate %} - -{% template gv_title title %} - fontname=Courier; fontsize=12; labelloc=t - label="{{ title }}" -{% endtemplate %} - -{% template gv_end %} - } -{% endtemplate %} - -{% template gv_labeled_node nodeID nodeLabel %} - "{{ nodeID }}" [label="{{ nodeLabel }}"] -{% endtemplate %} - -{% template gv_edge tail head %} - {{ tail }} -> {{ head }} -{% endtemplate %} - -{% template gv_labeled_edge tail head label %} - {{ tail }} -> {{ head }} [label="{{ label }}"] -{% endtemplate %} - -{% template query_tro_trs_str %} - {%- query isfilepath=False as query_tro_trs_str%} - SELECT DISTINCT ?tro ?trs - WHERE { - ?tro rdf:type trov:TransparentResearchObject . - ?tro trov:wasAssembledBy ?trs . - ?trs rdf:type trov:TrustedResearchSystem . - } - ORDER BY ?tro ?trs - {% endquery %} - {{ query_tro_trs_str }} -{% endtemplate %} - -{% template query_trs_capability_str %} - {%- query isfilepath=False as query_trs_capability_str %} - SELECT DISTINCT ?trs ?capability_id ?capability_type - WHERE { - ?trs rdf:type trov:TrustedResearchSystem . - ?trs trov:hasCapability ?capability_id . - ?capability_id rdf:type ?capability_type . - } - ORDER BY ?trs ?capability_id ?capability_type - {% endquery %} - {{ query_trs_capability_str }} -{% endtemplate %} - -{% template query_trp_str %} - {%- query isfilepath=False as query_trp_str %} - SELECT DISTINCT ?trp ?in ?out - WHERE { - ?trp rdf:type trov:TrustedResearchPerformance . - ?trp trov:accessedArrangement ?in . - ?trp trov:contributedToArrangement ?out . - } - ORDER BY ?trp ?in ?out - {% endquery %} - {{ query_trp_str }} -{% endtemplate %} - -{% template query_arrangement_str %} - {%- query isfilepath=False as query_arrangement_str %} - SELECT DISTINCT ?arrangement ?artifact - WHERE { - ?tro rdf:type trov:TransparentResearchObject . - ?tro trov:hasArrangement ?arrangement . - ?arrangement trov:hasLocus ?locus . - ?locus trov:hasArtifact ?artifact . - } - ORDER BY ?arrangement ?artifact - {% endquery %} - {{ query_arrangement_str }} -{% endtemplate %} - -{% template query_artifact_str %} - {%- query isfilepath=False as query_artifact_str %} - SELECT DISTINCT ?artifact ?type ?comment ?mimeType ?sha256 ?composition - WHERE { - ?composition rdf:type trov:ArtifactComposition . - ?composition trov:hasArtifact ?artifact . - ?artifact rdf:type ?type . - ?artifact rdfs:comment ?comment . - ?artifact trov:mimeType ?mimeType . - ?artifact trov:sha256 ?sha256 . - } - ORDER BY ?artifact - {% endquery %} - {{ query_artifact_str }} -{% endtemplate %} \ No newline at end of file diff --git a/demo/01-trov-examples/03-skope-lbda-processing/tro_report b/demo/01-trov-examples/03-skope-lbda-processing/tro_report deleted file mode 100644 index 71233d6..0000000 --- a/demo/01-trov-examples/03-skope-lbda-processing/tro_report +++ /dev/null @@ -1,69 +0,0 @@ -{%- use "templates.geist" %} -{%- create %} tro/tro.jsonld {% endcreate %} - -{%- html "overall_tro_graph.html" %} -{%- head "Overall TRO Graph" %} - - -

Overall TRO Graph

- {%- graph dataset="kb", rankdir="LR", mappings="mappings.json" as tro_graph %} - {% img src="tro.svg" %} {{ tro_graph }} {% endimg %} - - -{% endhtml %} - -{%- html "report.html" %} -{%- head "TRO Report" %} - - -

TRO Report

-

This report shows the TRO of downloading LBDA dataset from NOAA website and preparing for use by researchers employing the SKOPE application. -

1. The TRO was assembled by what TRS?

- {%- table mappings="mappings.json" %} - {% query_tro_trs_str %} - {% endtable %} - -

2. What capabilities does the TRS have?

- {%- table mappings="mappings.json" %} - {% query_trs_capability_str %} - {% endtable %} - -

3. What TRPs does the TRO have? What arrangements are accessed and contributed to per TRP accordingly?

- {% img src="trp.svg" %} - {%- gv_graph "trp", "LR" %} - nodesep=0.6 - node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] - {%- map isfilepath=False, mappings="mappings.json" as query_trp_shorten %} {% query_trp_str %} {% endmap %} - {%- set query_trp = query_trp_shorten | json2df %} - {% for _, row in query_trp.iterrows() %} - {% gv_labeled_edge row["in"], row["out"], row["trp"] %} - {% endfor %} - {% gv_end %} - {% endimg %} - -

4. What artifacts are included in each arrangement?

- {% img src="arrangement.svg" %} - {%- gv_graph "arrangement", "LR" %} - nodesep=0.6 - node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] - {%- map isfilepath=False, mappings="mappings.json" as query_arrangement_shorten %} {% query_arrangement_str %} {% endmap %} - {%- set query_arrangement = query_arrangement_shorten | json2df %} - {% for _, row in query_arrangement.iterrows() %} - {% gv_edge row["arrangement"], row["artifact"] %} - {% endfor %} - {% gv_end %} - {% endimg %} - -

5. What are the type, comment, mimeType, and sha256 of each artifact? Which composition does it belong to?

- {%- table mappings="mappings.json" %} - {% query_artifact_str %} - {% endtable %} - -

6. Overall graph

- Zoom in the graph - - - -{% endhtml %} - -{%- destroy %} \ No newline at end of file diff --git a/demo/01-trov-examples/common/query-tro.sh b/demo/01-trov-examples/common/query-tro.sh deleted file mode 100644 index 8165623..0000000 --- a/demo/01-trov-examples/common/query-tro.sh +++ /dev/null @@ -1,37 +0,0 @@ - - -TRACE_VOCAB=$REPRO_MNT/exports/trace-vocab.jsonld -TRO_DECLARATION=tro/tro.jsonld -TRS_CERTIFICATE=trs/trs.jsonld - -# ------------------------------------------------------------------------------ - -bash_cell 'import trov vocabulary' << END_CELL - -# Destroy the dataset -geist destroy --dataset kb --quiet - -# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES -geist create --dataset kb --inputformat json-ld --inputfile ${TRACE_VOCAB} --infer owl - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'import tro declaration' << END_CELL - -# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES -geist load --dataset kb --inputformat json-ld --inputfile ${TRO_DECLARATION} - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov-example - -# Destroy the dataset -geist destroy --dataset kb - -END_CELL - -# ------------------------------------------------------------------------------ diff --git a/demo/01-trov-examples/01-two-artifacts-no-trp/Makefile b/demo/01-trov-vocab/Makefile similarity index 100% rename from demo/01-trov-examples/01-two-artifacts-no-trp/Makefile rename to demo/01-trov-vocab/Makefile diff --git a/demo/01-trov-vocab/products/img.gv b/demo/01-trov-vocab/products/img.gv new file mode 100644 index 0000000..8158aa4 --- /dev/null +++ b/demo/01-trov-vocab/products/img.gv @@ -0,0 +1,26 @@ + + digraph subclass_vocab_graph { + rankdir=LR + fontname=Courier; fontsize=12; labelloc=t + label="Subclass Vocab Graph" + node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] + + ArtifactComposition -> ArtifactCollection + ArtifactLocus -> ArtifactCollection + TROAttribute -> TREAttribute + TRPAttribute -> TREAttribute + TRSAttribute -> TREAttribute + IncludesAllInputData -> TROAttribute + InternetAccessRecording -> TRPAttribute + InternetIsolation -> TRPAttribute + TRSCapability -> TRSAttribute + CanProvideInternetIsolation -> TRSCapability + TRSPolicy -> TRSCapability + EnforcesInternetIsolation -> TRSPolicy + TimeStampingAuthority -> TransparentResearchElement + TransparentResearchObject -> TransparentResearchElement + TransparentResearchPerformance -> TransparentResearchElement + TransparentResearchSystem -> TransparentResearchElement + ArtifactArrangement -> TransparentResearchObject + + } \ No newline at end of file diff --git a/demo/01-trov-vocab/products/img.svg b/demo/01-trov-vocab/products/img.svg new file mode 100644 index 0000000..806f298 --- /dev/null +++ b/demo/01-trov-vocab/products/img.svg @@ -0,0 +1,236 @@ + + + + + + +subclass_vocab_graph + +Subclass Vocab Graph + + +ArtifactComposition + +ArtifactComposition + + + +ArtifactCollection + +ArtifactCollection + + + +ArtifactComposition->ArtifactCollection + + + + + +ArtifactLocus + +ArtifactLocus + + + +ArtifactLocus->ArtifactCollection + + + + + +TROAttribute + +TROAttribute + + + +TREAttribute + +TREAttribute + + + +TROAttribute->TREAttribute + + + + + +TRPAttribute + +TRPAttribute + + + +TRPAttribute->TREAttribute + + + + + +TRSAttribute + +TRSAttribute + + + +TRSAttribute->TREAttribute + + + + + +IncludesAllInputData + +IncludesAllInputData + + + +IncludesAllInputData->TROAttribute + + + + + +InternetAccessRecording + +InternetAccessRecording + + + +InternetAccessRecording->TRPAttribute + + + + + +InternetIsolation + +InternetIsolation + + + +InternetIsolation->TRPAttribute + + + + + +TRSCapability + +TRSCapability + + + +TRSCapability->TRSAttribute + + + + + +CanProvideInternetIsolation + +CanProvideInternetIsolation + + + +CanProvideInternetIsolation->TRSCapability + + + + + +TRSPolicy + +TRSPolicy + + + +TRSPolicy->TRSCapability + + + + + +EnforcesInternetIsolation + +EnforcesInternetIsolation + + + +EnforcesInternetIsolation->TRSPolicy + + + + + +TimeStampingAuthority + +TimeStampingAuthority + + + +TransparentResearchElement + +TransparentResearchElement + + + +TimeStampingAuthority->TransparentResearchElement + + + + + +TransparentResearchObject + +TransparentResearchObject + + + +TransparentResearchObject->TransparentResearchElement + + + + + +TransparentResearchPerformance + +TransparentResearchPerformance + + + +TransparentResearchPerformance->TransparentResearchElement + + + + + +TransparentResearchSystem + +TransparentResearchSystem + + + +TransparentResearchSystem->TransparentResearchElement + + + + + +ArtifactArrangement + +ArtifactArrangement + + + +ArtifactArrangement->TransparentResearchObject + + + + + diff --git a/demo/01-trov-vocab/products/report_subclass.html b/demo/01-trov-vocab/products/report_subclass.html new file mode 100644 index 0000000..0a64849 --- /dev/null +++ b/demo/01-trov-vocab/products/report_subclass.html @@ -0,0 +1,70 @@ + + + + + + + + + Subclass Report + +

Visualize subclass of the vocabularies

+

1. SVG

+ +

2. GV

+

+    digraph subclass_vocab_graph {
+    rankdir=LR
+    fontname=Courier; fontsize=12; labelloc=t
+    label="Subclass Vocab Graph"
+            node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier]
+                            
+    ArtifactComposition -> ArtifactCollection                            
+    ArtifactLocus -> ArtifactCollection                            
+    TROAttribute -> TREAttribute                            
+    TRPAttribute -> TREAttribute                            
+    TRSAttribute -> TREAttribute                            
+    IncludesAllInputData -> TROAttribute                            
+    InternetAccessRecording -> TRPAttribute                            
+    InternetIsolation -> TRPAttribute                            
+    TRSCapability -> TRSAttribute                            
+    CanProvideInternetIsolation -> TRSCapability                            
+    TRSPolicy -> TRSCapability                            
+    EnforcesInternetIsolation -> TRSPolicy                            
+    TimeStampingAuthority -> TransparentResearchElement                            
+    TransparentResearchObject -> TransparentResearchElement                            
+    TransparentResearchPerformance -> TransparentResearchElement                            
+    TransparentResearchSystem -> TransparentResearchElement                            
+    ArtifactArrangement -> TransparentResearchObject            
+            
+    }        
+

3. Table

+ + + + + + + + + + + + + + + + + + + + +
ParentLabelChildLabel
ArtifactCollectionArtifactComposition
ArtifactCollectionArtifactLocus
TREAttributeTROAttribute
TREAttributeTRPAttribute
TREAttributeTRSAttribute
TROAttributeIncludesAllInputData
TRPAttributeInternetAccessRecording
TRPAttributeInternetIsolation
TRSAttributeTRSCapability
TRSCapabilityCanProvideInternetIsolation
TRSCapabilityTRSPolicy
TRSPolicyEnforcesInternetIsolation
TransparentResearchElementTimeStampingAuthority
TransparentResearchElementTransparentResearchObject
TransparentResearchElementTransparentResearchPerformance
TransparentResearchElementTransparentResearchSystem
TransparentResearchObjectArtifactArrangement
+ + diff --git a/demo/01-trov-vocab/run.sh b/demo/01-trov-vocab/run.sh new file mode 100644 index 0000000..c212557 --- /dev/null +++ b/demo/01-trov-vocab/run.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash + +TRACE_VOCAB=$REPRO_MNT/exports/trace-vocab.jsonld +GEIST_TEMPLATES=templates.geist + +# ------------------------------------------------------------------------------ + +bash_cell 'load trov vocabulary without inferences' << END_CELL + +# Destroy the dataset +geist destroy rdflib --dataset kb --quiet + +# Import TRACE vocabulary and export as N-TRIPLES +geist create rdflib --dataset kb --inputformat json-ld --inputfile ${TRACE_VOCAB} --infer none + +END_CELL + +# ------------------------------------------------------------------------------ + + +bash_cell 'query subclass vocab' << END_CELL + +# What (ParentClass, ChildClass) pairs does trov vocabulary have? + +geist report --outputroot products << END_TEMPLATE + +{%- use "${GEIST_TEMPLATES}" %} +{%- query datastore="rdflib", isfilepath=False as query_subclass_vocab %} + PREFIX rdf: + PREFIX rdfs: + + SELECT DISTINCT ?ParentLabel ?ChildLabel + WHERE { + ?ParentClass rdf:type rdfs:Class ; + rdfs:label ?ParentLabel . + + ?ChildClass rdfs:subClassOf ?ParentClass ; + rdf:type rdfs:Class ; + rdfs:label ?ChildLabel . + + FILTER (?ParentLabel != ?ChildLabel) + } + ORDER BY ?ParentLabel ?ChildLabel +{% endquery %} + +{%- html "report_subclass.html" %} +{%- head "Subclass Report" %} + +

Visualize subclass of the vocabularies

+

1. SVG

+ {% img src="img.svg", width="80%" %} + {%- gv_graph "subclass_vocab_graph", "LR" %} + {%- gv_title "Subclass Vocab Graph" %} + + node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] + {% for _, row in query_subclass_vocab.iterrows() %} + {% gv_edge row["ChildLabel"], row["ParentLabel"] %} + {% endfor %} + + {% gv_end %} + {% endimg %} + +

2. GV

+ {% img src="img.gv" %} + {%- gv_graph "subclass_vocab_graph", "LR" %} + {%- gv_title "Subclass Vocab Graph" %} + + node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] + {% for _, row in query_subclass_vocab.iterrows() %} + {% gv_edge row["ChildLabel"], row["ParentLabel"] %} + {% endfor %} + + {% gv_end %} + {% endimg %} + +

3. Table

+ {%- table %} + {{ query_subclass_vocab | df2json }} + {% endtable %} + +{% endhtml %} +{%- destroy %} + +END_TEMPLATE + +END_CELL + +# ------------------------------------------------------------------------------ + diff --git a/demo/01-trov-vocab/run.txt b/demo/01-trov-vocab/run.txt new file mode 100644 index 0000000..e004265 --- /dev/null +++ b/demo/01-trov-vocab/run.txt @@ -0,0 +1,152 @@ +======================================= bash cell | load trov vocabulary without inferences ======================================== + +# Destroy the dataset +geist destroy rdflib --dataset kb --quiet + +# Import TRACE vocabulary and export as N-TRIPLES +geist create rdflib --dataset kb --inputformat json-ld --inputfile /mnt/trace-model/exports/trace-vocab.jsonld --infer none + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================= bash cell | query subclass vocab ================================================= + +# What (ParentClass, ChildClass) pairs does trov vocabulary have? + +geist report --outputroot products << END_TEMPLATE + +{%- use "templates.geist" %} +{%- query datastore="rdflib", isfilepath=False as query_subclass_vocab %} + PREFIX rdf: + PREFIX rdfs: + + SELECT DISTINCT ?ParentLabel ?ChildLabel + WHERE { + ?ParentClass rdf:type rdfs:Class ; + rdfs:label ?ParentLabel . + + ?ChildClass rdfs:subClassOf ?ParentClass ; + rdf:type rdfs:Class ; + rdfs:label ?ChildLabel . + + FILTER (?ParentLabel != ?ChildLabel) + } + ORDER BY ?ParentLabel ?ChildLabel +{% endquery %} + +{%- html "report_subclass.html" %} +{%- head "Subclass Report" %} + +

Visualize subclass of the vocabularies

+

1. SVG

+ {% img src="img.svg", width="80%" %} + {%- gv_graph "subclass_vocab_graph", "LR" %} + {%- gv_title "Subclass Vocab Graph" %} + + node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] + {% for _, row in query_subclass_vocab.iterrows() %} + {% gv_edge row["ChildLabel"], row["ParentLabel"] %} + {% endfor %} + + {% gv_end %} + {% endimg %} + +

2. GV

+ {% img src="img.gv" %} + {%- gv_graph "subclass_vocab_graph", "LR" %} + {%- gv_title "Subclass Vocab Graph" %} + + node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] + {% for _, row in query_subclass_vocab.iterrows() %} + {% gv_edge row["ChildLabel"], row["ParentLabel"] %} + {% endfor %} + + {% gv_end %} + {% endimg %} + +

3. Table

+ {%- table %} + {{ query_subclass_vocab | df2json }} + {% endtable %} + +{% endhtml %} +{%- destroy %} + +END_TEMPLATE + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- + + + + + + + + + Subclass Report + +

Visualize subclass of the vocabularies

+

1. SVG

+ +

2. GV

+

+    digraph subclass_vocab_graph {
+    rankdir=LR
+    fontname=Courier; fontsize=12; labelloc=t
+    label="Subclass Vocab Graph"
+            node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier]
+                            
+    ArtifactComposition -> ArtifactCollection                            
+    ArtifactLocus -> ArtifactCollection                            
+    TROAttribute -> TREAttribute                            
+    TRPAttribute -> TREAttribute                            
+    TRSAttribute -> TREAttribute                            
+    IncludesAllInputData -> TROAttribute                            
+    InternetAccessRecording -> TRPAttribute                            
+    InternetIsolation -> TRPAttribute                            
+    TRSCapability -> TRSAttribute                            
+    CanProvideInternetIsolation -> TRSCapability                            
+    TRSPolicy -> TRSCapability                            
+    EnforcesInternetIsolation -> TRSPolicy                            
+    TimeStampingAuthority -> TransparentResearchElement                            
+    TransparentResearchObject -> TransparentResearchElement                            
+    TransparentResearchPerformance -> TransparentResearchElement                            
+    TransparentResearchSystem -> TransparentResearchElement                            
+    ArtifactArrangement -> TransparentResearchObject            
+            
+    }        
+

3. Table

+ + + + + + + + + + + + + + + + + + + + +
ParentLabelChildLabel
ArtifactCollectionArtifactComposition
ArtifactCollectionArtifactLocus
TREAttributeTROAttribute
TREAttributeTRPAttribute
TREAttributeTRSAttribute
TROAttributeIncludesAllInputData
TRPAttributeInternetAccessRecording
TRPAttributeInternetIsolation
TRSAttributeTRSCapability
TRSCapabilityCanProvideInternetIsolation
TRSCapabilityTRSPolicy
TRSPolicyEnforcesInternetIsolation
TransparentResearchElementTimeStampingAuthority
TransparentResearchElementTransparentResearchObject
TransparentResearchElementTransparentResearchPerformance
TransparentResearchElementTransparentResearchSystem
TransparentResearchObjectArtifactArrangement
+ + + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/demo/02-explorations/04-report-subclass-graph/graphviz.geist b/demo/01-trov-vocab/templates.geist similarity index 61% rename from demo/02-explorations/04-report-subclass-graph/graphviz.geist rename to demo/01-trov-vocab/templates.geist index 87473a3..ec7d732 100644 --- a/demo/02-explorations/04-report-subclass-graph/graphviz.geist +++ b/demo/01-trov-vocab/templates.geist @@ -1,3 +1,18 @@ +{% template head title %} + + + + + {{ title }} + +{% endtemplate %} + {% template gv_graph name direction %} digraph {{ name }} { rankdir={{ direction }} @@ -8,42 +23,10 @@ label="{{ title }}" {% endtemplate %} -{% template gv_end %} - } -{% endtemplate %} - -{% template gv_cluster name %} - subgraph cluster_{{ name }} { label=""; color=white; penwidth=0 - subgraph cluster_{{ name }}_inner { label=""; color=white -{% endtemplate %} - -{% template gv_cluster_end %} - }} -{% endtemplate %} - -{% template gv_labeled_node nodeID nodeLabel %} - "{{ nodeID }}" [label="{{ nodeLabel }}"] -{% endtemplate %} - {% template gv_edge tail head %} {{ tail }} -> {{ head }} {% endtemplate %} -{% template gv_labeled_edge tail head edgeLabel %} - "{{ tail }}" -> "{{ head }}" [label="{{ edgeLabel }}"] -{% endtemplate %} - -{% template head title %} - - - - - {{ title }} - +{% template gv_end %} + } {% endtemplate %} diff --git a/demo/02-explorations/01-minimal/data/query b/demo/02-explorations/01-minimal/data/query deleted file mode 100644 index 31eaa5f..0000000 --- a/demo/02-explorations/01-minimal/data/query +++ /dev/null @@ -1,7 +0,0 @@ -PREFIX rdfs: - -SELECT ?s ?o -WHERE { - ?s rdfs:comment ?o -} -ORDER BY ?s ?o \ No newline at end of file diff --git a/demo/02-explorations/01-minimal/run.sh b/demo/02-explorations/01-minimal/run.sh deleted file mode 100644 index 5484379..0000000 --- a/demo/02-explorations/01-minimal/run.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env bash - -# paths to data files -COMMON=../common - -# ------------------------------------------------------------------------------ - -bash_cell 'import jsonld' << END_CELL - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ${COMMON}/trace-vocab.jsonld --infer owl -geist load --dataset kb --inputformat json-ld --inputfile ${COMMON}/trs-01-minimal.jsonld -geist load --dataset kb --inputformat json-ld --inputfile ${COMMON}/tro-01-from-minimal-trs.jsonld - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'export ntriples' << END_CELL - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'query comments with file' << END_CELL - -geist query --dataset kb --file data/query - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'query comments with string' << END_CELL - -geist query --dataset kb << __END_QUERY__ - -PREFIX rdfs: - -SELECT ?s ?o -WHERE { - ?s rdfs:comment ?o -} -ORDER BY ?s ?o - -__END_QUERY__ - -END_CELL - -# ------------------------------------------------------------------------------ - -source ../common/trs-queries.sh - -# ------------------------------------------------------------------------------ - -bash_cell 'destroy kb dataset' << END_CELL - -geist destroy --dataset kb - -END_CELL - -# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/02-explorations/01-minimal/run.txt b/demo/02-explorations/01-minimal/run.txt deleted file mode 100644 index 29cdf38..0000000 --- a/demo/02-explorations/01-minimal/run.txt +++ /dev/null @@ -1,317 +0,0 @@ -==================================================== bash cell | import jsonld ===================================================== - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ../common/trace-vocab.jsonld --infer owl -geist load --dataset kb --inputformat json-ld --inputfile ../common/trs-01-minimal.jsonld -geist load --dataset kb --inputformat json-ld --inputfile ../common/tro-01-from-minimal-trs.jsonld - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=================================================== bash cell | export ntriples ==================================================== - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - . - . - "Research system makes all inputs available after runtime." . - "AllInputAvailableAfterRuntime" . - . - . - . - "Research system makes all inputs available prior to runtime." . - "AllInputAvailableBeforeRuntime" . - . - . - . - "Research object describes the full software environment." . - "DescribeSoftwareEnvironment" . - . - . - . - "Research system shows evidence of runtime." . - "EvidenceRuntime" . - . - . - . - "Research object includes all code." . - "IncludeAllCode" . - . - . - . - "Research object includes all inputs." . - "IncludeAllInput" . - . - . - . - "Research object includes all outputs." . - "IncludeAllOutput" . - . - . - "ObjectPolicy" . - . - . - . - "Policy" . - . - . - . - "Research system prevents internet access during execution." . - "PreventInternetAccess" . - . - . - . - "Research system prevents interaction with author prior to runtime." . - "PreventInterventionBeforeRuntime" . - . - . - . - "Research system prevents interaction with author of package during runtime." . - "PreventInterventionDuringRuntime" . - . - . - . - . - "SystemPolicy" . - . - . - . - . - "Research system tracks intermediate steps." . - "TrackIntermediateSteps" . - . - . - "enforces" . - . - . - . - . - . - . - . - . - . - . - "TRS that enforces no policies." . - "Minimal TRS" . -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=============================================== bash cell | query comments with file =============================================== - -geist query --dataset kb --file data/query - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | s | o | -|---:|:-----------------------------------------------------------------------|:------------------------------------------------------------------------------| -| 0 | | "Research system makes all inputs available after runtime." | -| 1 | | "Research system makes all inputs available prior to runtime." | -| 2 | | "Research object describes the full software environment." | -| 3 | | "Research system shows evidence of runtime." | -| 4 | | "Research object includes all code." | -| 5 | | "Research object includes all inputs." | -| 6 | | "Research object includes all outputs." | -| 7 | | "Research system prevents internet access during execution." | -| 8 | | "Research system prevents interaction with author prior to runtime." | -| 9 | | "Research system prevents interaction with author of package during runtime." | -| 10 | | "Research system tracks intermediate steps." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================== bash cell | query comments with string ============================================== - -geist query --dataset kb << __END_QUERY__ - -PREFIX rdfs: - -SELECT ?s ?o -WHERE { - ?s rdfs:comment ?o -} -ORDER BY ?s ?o - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | s | o | -|---:|:-----------------------------------------------------------------------|:------------------------------------------------------------------------------| -| 0 | | "Research system makes all inputs available after runtime." | -| 1 | | "Research system makes all inputs available prior to runtime." | -| 2 | | "Research object describes the full software environment." | -| 3 | | "Research system shows evidence of runtime." | -| 4 | | "Research object includes all code." | -| 5 | | "Research object includes all inputs." | -| 6 | | "Research object includes all outputs." | -| 7 | | "Research system prevents internet access during execution." | -| 8 | | "Research system prevents interaction with author prior to runtime." | -| 9 | | "Research system prevents interaction with author of package during runtime." | -| 10 | | "Research system tracks intermediate steps." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query trs enforced policies ============================================== - -# What TRS policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdf:type trov:SystemPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| trs | policyName | policyDescription | -|-------|--------------|---------------------| -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query tro enforced policies ============================================== - -# What TRO policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdf:type trov:ObjectPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| trs | policyName | policyDescription | -|-------|--------------|---------------------| -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query all enforced policies ============================================== - -# What policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| trs | policyName | policyDescription | -|-------|--------------|---------------------| -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query trs prevented policies ============================================= - -# What TRS policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdf:type trov:SystemPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| trs | policyName | policyDescription | -|-------|--------------|---------------------| -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query tro prevented policies ============================================= - -# What TRO policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdf:type trov:ObjectPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| trs | policyName | policyDescription | -|-------|--------------|---------------------| -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query all prevented policies ============================================= - -# What policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| trs | policyName | policyDescription | -|-------|--------------|---------------------| -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================== bash cell | destroy kb dataset ================================================== - -geist destroy --dataset kb - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/02-type-a/run.sh b/demo/02-explorations/02-type-a/run.sh deleted file mode 100644 index fde5a73..0000000 --- a/demo/02-explorations/02-type-a/run.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -# paths to data files -COMMON=../common - -# ------------------------------------------------------------------------------ - -bash_cell 'import jsonld' << END_CELL - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ${COMMON}/trace-vocab.jsonld --infer owl -geist load --dataset kb --inputformat json-ld --inputfile ${COMMON}/trs-02-type-a.jsonld -geist load --dataset kb --inputformat json-ld --inputfile ${COMMON}/tro-02-from-type-a-trs.jsonld - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'export ntriples' << END_CELL - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - -END_CELL - -# ------------------------------------------------------------------------------ - -source ../common/trs-queries.sh - -# ------------------------------------------------------------------------------ - -bash_cell 'destroy kb dataset' << END_CELL - -geist destroy --dataset kb - -END_CELL - -# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/02-explorations/02-type-a/run.txt b/demo/02-explorations/02-type-a/run.txt deleted file mode 100644 index 44ebcc5..0000000 --- a/demo/02-explorations/02-type-a/run.txt +++ /dev/null @@ -1,294 +0,0 @@ -==================================================== bash cell | import jsonld ===================================================== - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ../common/trace-vocab.jsonld --infer owl -geist load --dataset kb --inputformat json-ld --inputfile ../common/trs-02-type-a.jsonld -geist load --dataset kb --inputformat json-ld --inputfile ../common/tro-02-from-type-a-trs.jsonld - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=================================================== bash cell | export ntriples ==================================================== - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - . - . - "Research system makes all inputs available after runtime." . - "AllInputAvailableAfterRuntime" . - . - . - . - "Research system makes all inputs available prior to runtime." . - "AllInputAvailableBeforeRuntime" . - . - . - . - "Research object describes the full software environment." . - "DescribeSoftwareEnvironment" . - . - . - . - "Research system shows evidence of runtime." . - "EvidenceRuntime" . - . - . - . - "Research object includes all code." . - "IncludeAllCode" . - . - . - . - "Research object includes all inputs." . - "IncludeAllInput" . - . - . - . - "Research object includes all outputs." . - "IncludeAllOutput" . - . - . - "ObjectPolicy" . - . - . - . - "Policy" . - . - . - . - "Research system prevents internet access during execution." . - "PreventInternetAccess" . - . - . - . - "Research system prevents interaction with author prior to runtime." . - "PreventInterventionBeforeRuntime" . - . - . - . - "Research system prevents interaction with author of package during runtime." . - "PreventInterventionDuringRuntime" . - . - . - . - . - "SystemPolicy" . - . - . - . - . - "Research system tracks intermediate steps." . - "TrackIntermediateSteps" . - . - . - . - "enforces" . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - "TRS that implements a loose queue." . - "Example Type B.1 TRS" . -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query trs enforced policies ============================================== - -# What TRS policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdf:type trov:SystemPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:-----------------------------------|:------------------------------------------------------------------------------| -| 0 | | "EvidenceRuntime" | "Research system shows evidence of runtime." | -| 1 | | "PreventInterventionDuringRuntime" | "Research system prevents interaction with author of package during runtime." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query tro enforced policies ============================================== - -# What TRO policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdf:type trov:ObjectPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:------------------------------|:-----------------------------------------------------------| -| 0 | | "DescribeSoftwareEnvironment" | "Research object describes the full software environment." | -| 1 | | "IncludeAllCode" | "Research object includes all code." | -| 2 | | "IncludeAllOutput" | "Research object includes all outputs." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query all enforced policies ============================================== - -# What policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:-----------------------------------|:------------------------------------------------------------------------------| -| 0 | | "DescribeSoftwareEnvironment" | "Research object describes the full software environment." | -| 1 | | "EvidenceRuntime" | "Research system shows evidence of runtime." | -| 2 | | "IncludeAllCode" | "Research object includes all code." | -| 3 | | "IncludeAllOutput" | "Research object includes all outputs." | -| 4 | | "PreventInterventionDuringRuntime" | "Research system prevents interaction with author of package during runtime." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query trs prevented policies ============================================= - -# What TRS policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdf:type trov:SystemPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:------------------------|:-------------------------------------------------------------| -| 0 | | "PreventInternetAccess" | "Research system prevents internet access during execution." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query tro prevented policies ============================================= - -# What TRO policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdf:type trov:ObjectPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| trs | policyName | policyDescription | -|-------|--------------|---------------------| -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query all prevented policies ============================================= - -# What policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:------------------------|:-------------------------------------------------------------| -| 0 | | "PreventInternetAccess" | "Research system prevents internet access during execution." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================== bash cell | destroy kb dataset ================================================== - -geist destroy --dataset kb - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/03-type-b2/run.sh b/demo/02-explorations/03-type-b2/run.sh deleted file mode 100644 index 82f7a28..0000000 --- a/demo/02-explorations/03-type-b2/run.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash - -# paths to data files -COMMON=../common - -# ------------------------------------------------------------------------------ - -bash_cell 'import jsonld' << END_CELL - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ${COMMON}/trace-vocab.jsonld --infer owl -geist load --dataset kb --inputformat json-ld --inputfile ${COMMON}/trs-03-type-b2.jsonld -geist load --dataset kb --inputformat json-ld --inputfile ${COMMON}/tro-03-from-type-b2-trs.jsonld - -END_CELL - -# ------------------------------------------------------------------------------ - -source ../common/trs-queries.sh - -# ------------------------------------------------------------------------------ - -bash_cell 'destroy kb dataset' << END_CELL - -geist destroy --dataset kb - -END_CELL - -# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/02-explorations/03-type-b2/run.txt b/demo/02-explorations/03-type-b2/run.txt deleted file mode 100644 index 04a2025..0000000 --- a/demo/02-explorations/03-type-b2/run.txt +++ /dev/null @@ -1,190 +0,0 @@ -==================================================== bash cell | import jsonld ===================================================== - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ../common/trace-vocab.jsonld --infer owl -geist load --dataset kb --inputformat json-ld --inputfile ../common/trs-03-type-b2.jsonld -geist load --dataset kb --inputformat json-ld --inputfile ../common/tro-03-from-type-b2-trs.jsonld - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query trs enforced policies ============================================== - -# What TRS policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdf:type trov:SystemPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:-----------------------------------|:------------------------------------------------------------------------------| -| 0 | | "AllInputAvailableBeforeRuntime" | "Research system makes all inputs available prior to runtime." | -| 1 | | "EvidenceRuntime" | "Research system shows evidence of runtime." | -| 2 | | "PreventInterventionDuringRuntime" | "Research system prevents interaction with author of package during runtime." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query tro enforced policies ============================================== - -# What TRO policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdf:type trov:ObjectPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:------------------------------|:-----------------------------------------------------------| -| 0 | | "DescribeSoftwareEnvironment" | "Research object describes the full software environment." | -| 1 | | "IncludeAllCode" | "Research object includes all code." | -| 2 | | "IncludeAllOutput" | "Research object includes all outputs." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query all enforced policies ============================================== - -# What policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:-----------------------------------|:------------------------------------------------------------------------------| -| 0 | | "AllInputAvailableBeforeRuntime" | "Research system makes all inputs available prior to runtime." | -| 1 | | "DescribeSoftwareEnvironment" | "Research object describes the full software environment." | -| 2 | | "EvidenceRuntime" | "Research system shows evidence of runtime." | -| 3 | | "IncludeAllCode" | "Research object includes all code." | -| 4 | | "IncludeAllOutput" | "Research object includes all outputs." | -| 5 | | "PreventInterventionDuringRuntime" | "Research system prevents interaction with author of package during runtime." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query trs prevented policies ============================================= - -# What TRS policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdf:type trov:SystemPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:--------------------------------|:------------------------------------------------------------| -| 0 | | "AllInputAvailableAfterRuntime" | "Research system makes all inputs available after runtime." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query tro prevented policies ============================================= - -# What TRO policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdf:type trov:ObjectPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:------------------|:---------------------------------------| -| 0 | | "IncludeAllInput" | "Research object includes all inputs." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | query all prevented policies ============================================= - -# What policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trs | policyName | policyDescription | -|---:|:---------------------------------------------|:--------------------------------|:------------------------------------------------------------| -| 0 | | "AllInputAvailableAfterRuntime" | "Research system makes all inputs available after runtime." | -| 1 | | "IncludeAllInput" | "Research object includes all inputs." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================== bash cell | destroy kb dataset ================================================== - -geist destroy --dataset kb - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/04-report-subclass-graph/base.gv b/demo/02-explorations/04-report-subclass-graph/base.gv deleted file mode 100644 index 430f9d9..0000000 --- a/demo/02-explorations/04-report-subclass-graph/base.gv +++ /dev/null @@ -1,5 +0,0 @@ -digraph {% block gv_graph_name %}Graph Name{% endblock %} { -rankdir="{% block gv_graph_direction%}Direction{% endblock %}" - -label="{% block gv_title %}Title{% endblock %}" -} \ No newline at end of file diff --git a/demo/02-explorations/04-report-subclass-graph/graphviz.jinja b/demo/02-explorations/04-report-subclass-graph/graphviz.jinja deleted file mode 100644 index e8310bd..0000000 --- a/demo/02-explorations/04-report-subclass-graph/graphviz.jinja +++ /dev/null @@ -1,34 +0,0 @@ -{% macro gv_graph(name, direction) -%} - digraph {{ name }} { - rankdir={{ direction }} -{%- endmacro %} - -{% macro gv_title(title) -%} - fontname=Courier; fontsize=12; labelloc=t - label="{{ title }}" -{%- endmacro %} - -{% macro gv_end() -%} - } -{%- endmacro %} - -{% macro gv_cluster(name) -%} - subgraph cluster_{{ name }} { label=""; color=white; penwidth=0 - subgraph cluster_{{ name }}_inner { label=""; color=white -{%- endmacro %} - -{% macro gv_cluster_end() -%} - }} -{%- endmacro %} - -{% macro gv_labeled_node(nodeID, nodeLabel) -%} - "{{ nodeID }}" [label="{{ nodeLabel }}"] -{%- endmacro %} - -{% macro gv_edge(tail, head) -%} - {{ tail }} -> {{ head }} -{%- endmacro %} - -{% macro gv_labeled_edge(tail, head, edgeLabel) -%} - "{{ tail }}" -> "{{ head }}" [label="{{ edgeLabel }}"] -{%- endmacro %} \ No newline at end of file diff --git a/demo/02-explorations/04-report-subclass-graph/products/img.gv b/demo/02-explorations/04-report-subclass-graph/products/img.gv deleted file mode 100644 index 51a1e8d..0000000 --- a/demo/02-explorations/04-report-subclass-graph/products/img.gv +++ /dev/null @@ -1,14 +0,0 @@ - - digraph subclass_vocab_graph { - rankdir=BT - fontname=Courier; fontsize=12; labelloc=t - label="Subclass Vocab Graph" - subgraph cluster_subclass { label=""; color=white; penwidth=0 - subgraph cluster_subclass_inner { label=""; color=white - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - - "ObjectPolicy" -> "Policy" - "SystemPolicy" -> "Policy" - - }} - } \ No newline at end of file diff --git a/demo/02-explorations/04-report-subclass-graph/products/img.jpg b/demo/02-explorations/04-report-subclass-graph/products/img.jpg deleted file mode 100644 index 6010126..0000000 Binary files a/demo/02-explorations/04-report-subclass-graph/products/img.jpg and /dev/null differ diff --git a/demo/02-explorations/04-report-subclass-graph/products/img.svg b/demo/02-explorations/04-report-subclass-graph/products/img.svg deleted file mode 100644 index f325863..0000000 --- a/demo/02-explorations/04-report-subclass-graph/products/img.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -subclass_vocab_graph - -Subclass Vocab Graph - -cluster_subclass - - - -cluster_subclass_inner - - - - -ObjectPolicy - -ObjectPolicy - - - -Policy - -Policy - - - -ObjectPolicy->Policy - - - - - -SystemPolicy - -SystemPolicy - - - -SystemPolicy->Policy - - - - - diff --git a/demo/02-explorations/04-report-subclass-graph/report.html b/demo/02-explorations/04-report-subclass-graph/report.html deleted file mode 100644 index 62598e3..0000000 --- a/demo/02-explorations/04-report-subclass-graph/report.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - Geist Report - - -

Geist Report

-

This report shows part of the vocabulary of TRACE. -

1. Graph Demo

-

(1) PNG

- -

(2) SVG

- -

(3) GV

-

-    digraph subclass_vocab_graph {
-    rankdir=BT
-    fontname=Courier; fontsize=12; labelloc=t
-    label="Subclass Vocab Graph"
-    subgraph cluster_subclass { label=""; color=white; penwidth=0
-    subgraph cluster_subclass_inner { label=""; color=white
-            node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier]
-                            
-    "ObjectPolicy" -> "Policy"                            
-    "SystemPolicy" -> "Policy"            
-            
-    }}            
-    }        
-

2. Table Demo

- - - - - -
ChildLabelParentLabel
"ObjectPolicy""Policy"
"SystemPolicy""Policy"
- - diff --git a/demo/02-explorations/04-report-subclass-graph/run.sh b/demo/02-explorations/04-report-subclass-graph/run.sh deleted file mode 100644 index e65fa50..0000000 --- a/demo/02-explorations/04-report-subclass-graph/run.sh +++ /dev/null @@ -1,203 +0,0 @@ -#!/usr/bin/env bash - -# paths to data files -COMMON=../common - -# ------------------------------------------------------------------------------ - -bash_cell import jsonld << END_CELL - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ${COMMON}/trace-vocab.jsonld --infer owl - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell export ntriples << END_CELL - -# Export kb dataset as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell query_subclass_vocab << END_CELL - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX rdfs: - - SELECT DISTINCT ?ChildLabel ?ParentLabel - WHERE { - ?ParentClass rdf:type rdfs:Class ; - rdfs:label ?ParentLabel . - - ?ChildClass rdfs:subClassOf ?ParentClass ; - rdf:type rdfs:Class ; - rdfs:label ?ChildLabel . - - FILTER (?ChildLabel != ?ParentLabel) - } - ORDER BY ?ChildLabel ?ParentLabel - -__END_QUERY__ - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell test_jinja_include << END_CELL - -geist report << END_TEMPLATE - - {% include "base.gv" %} - -END_TEMPLATE - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell test_jinja_extends << END_CELL - -geist report << END_TEMPLATE - - {% extends "base.gv" %} - {% block gv_graph_name %}subclass_vocab_graph{% endblock %} - {% block gv_title %}Subclass Vacab Graph{% endblock %} - -END_TEMPLATE - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell visualize_subclass_vocab_using_jinja_import << END_CELL - -geist report << END_TEMPLATE - - {% import "graphviz.jinja" as gv_macros %} - {% query isfilepath=False as query_subclass_vocab_str %} - SELECT DISTINCT ?ChildLabel ?ParentLabel - WHERE { - ?ParentClass rdf:type rdfs:Class ; - rdfs:label ?ParentLabel . - - ?ChildClass rdfs:subClassOf ?ParentClass ; - rdf:type rdfs:Class ; - rdfs:label ?ChildLabel . - - FILTER (?ChildLabel != ?ParentLabel) - } - ORDER BY ?ChildLabel ?ParentLabel - {% endquery %} - {% set query_subclass_vocab = query_subclass_vocab_str | json2df %} - - {{ gv_macros.gv_graph("subclass_vocab_graph", "BT") }} - {{ gv_macros.gv_title("Subclass Vacab Graph") }} - {{ gv_macros.gv_cluster("subclass") }} - - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - {% for _, row in query_subclass_vocab.iterrows() %} - {{ gv_macros.gv_edge(row["ChildLabel"], row["ParentLabel"]) }} - {% endfor %} - - {{ gv_macros.gv_cluster_end() }} - {{ gv_macros.gv_end() }} - -END_TEMPLATE - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell visualize_subclass_vocab_using_geist << END_CELL - -geist report << END_TEMPLATE - -{%- use "graphviz.geist" %} -{%- query isfilepath=False as query_subclass_vocab_str %} - SELECT DISTINCT ?ChildLabel ?ParentLabel - WHERE { - ?ParentClass rdf:type rdfs:Class ; - rdfs:label ?ParentLabel . - - ?ChildClass rdfs:subClassOf ?ParentClass ; - rdf:type rdfs:Class ; - rdfs:label ?ChildLabel . - - FILTER (?ChildLabel != ?ParentLabel) - } - ORDER BY ?ChildLabel ?ParentLabel -{% endquery %} -{%- set query_subclass_vocab = query_subclass_vocab_str | json2df %} - -{%- html "report.html" %} -{%- head "Geist Report" %} - - -

Geist Report

-

This report shows part of the vocabulary of TRACE. -

1. Graph Demo

-

(1) PNG

- {% img src="products/img.jpg" %} - {%- gv_graph "subclass_vocab_graph", "BT" %} - {%- gv_title "Subclass Vocab Graph" %} - {%- gv_cluster "subclass" %} - - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - {% for _, row in query_subclass_vocab.iterrows() %} - {% gv_edge row["ChildLabel"], row["ParentLabel"] %} - {% endfor %} - - {% gv_cluster_end %} - {% gv_end %} - {% endimg %} - -

(2) SVG

- {% img src="products/img.svg" %} - {%- gv_graph "subclass_vocab_graph", "BT" %} - {%- gv_title "Subclass Vocab Graph" %} - {%- gv_cluster "subclass" %} - - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - {% for _, row in query_subclass_vocab.iterrows() %} - {% gv_edge row["ChildLabel"], row["ParentLabel"] %} - {% endfor %} - - {% gv_cluster_end %} - {% gv_end %} - {% endimg %} - -

(3) GV

- {% img src="products/img.gv" %} - {%- gv_graph "subclass_vocab_graph", "BT" %} - {%- gv_title "Subclass Vocab Graph" %} - {%- gv_cluster "subclass" %} - - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - {% for _, row in query_subclass_vocab.iterrows() %} - {% gv_edge row["ChildLabel"], row["ParentLabel"] %} - {% endfor %} - - {% gv_cluster_end %} - {% gv_end %} - {% endimg %} - -

2. Table Demo

- {%- table %} - {{ query_subclass_vocab_str }} - {% endtable %} - -{% endhtml %} -{%- destroy %} - -END_TEMPLATE - -END_CELL - -# ------------------------------------------------------------------------------ diff --git a/demo/02-explorations/04-report-subclass-graph/run.txt b/demo/02-explorations/04-report-subclass-graph/run.txt deleted file mode 100644 index b9e99b2..0000000 --- a/demo/02-explorations/04-report-subclass-graph/run.txt +++ /dev/null @@ -1,349 +0,0 @@ -======================================================== bash cell | import ======================================================== - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ../common/trace-vocab.jsonld --infer owl - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -======================================================== bash cell | export ======================================================== - -# Export kb dataset as N-TRIPLES -geist export --dataset kb --outputformat nt | sort | grep trov - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - . - . - "Research system makes all inputs available after runtime." . - "AllInputAvailableAfterRuntime" . - . - . - . - "Research system makes all inputs available prior to runtime." . - "AllInputAvailableBeforeRuntime" . - . - . - . - "Research object describes the full software environment." . - "DescribeSoftwareEnvironment" . - . - . - . - "Research system shows evidence of runtime." . - "EvidenceRuntime" . - . - . - . - "Research object includes all code." . - "IncludeAllCode" . - . - . - . - "Research object includes all inputs." . - "IncludeAllInput" . - . - . - . - "Research object includes all outputs." . - "IncludeAllOutput" . - . - . - "ObjectPolicy" . - . - . - . - "Policy" . - . - . - . - "Research system prevents internet access during execution." . - "PreventInternetAccess" . - . - . - . - "Research system prevents interaction with author prior to runtime." . - "PreventInterventionBeforeRuntime" . - . - . - . - "Research system prevents interaction with author of package during runtime." . - "PreventInterventionDuringRuntime" . - . - . - "SystemPolicy" . - . - . - . - . - "Research system tracks intermediate steps." . - "TrackIntermediateSteps" . - . - . - "enforces" . - . - . - . -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================= bash cell | query_subclass_vocab ================================================= - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX rdfs: - - SELECT DISTINCT ?ChildLabel ?ParentLabel - WHERE { - ?ParentClass rdf:type rdfs:Class ; - rdfs:label ?ParentLabel . - - ?ChildClass rdfs:subClassOf ?ParentClass ; - rdf:type rdfs:Class ; - rdfs:label ?ChildLabel . - - FILTER (?ChildLabel != ?ParentLabel) - } - ORDER BY ?ChildLabel ?ParentLabel - -__END_QUERY__ - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | ChildLabel | ParentLabel | -|---:|:---------------|:--------------| -| 0 | "ObjectPolicy" | "Policy" | -| 1 | "SystemPolicy" | "Policy" | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================== bash cell | test_jinja_include ================================================== - -geist report << END_TEMPLATE - - {% include "base.gv" %} - -END_TEMPLATE - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - - digraph Graph Name { -rankdir="Direction" - -label="Title" -} -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================== bash cell | test_jinja_extends ================================================== - -geist report << END_TEMPLATE - - {% extends "base.gv" %} - {% block gv_graph_name %}subclass_vocab_graph{% endblock %} - {% block gv_title %}Subclass Vacab Graph{% endblock %} - -END_TEMPLATE - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - - digraph subclass_vocab_graph { -rankdir="Direction" - -label="Subclass Vacab Graph" -} -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -===================================== bash cell | visualize_subclass_vocab_using_jinja_import ====================================== - -geist report << END_TEMPLATE - - {% import "graphviz.jinja" as gv_macros %} - {% query isfilepath=False as query_subclass_vocab_str %} - SELECT DISTINCT ?ChildLabel ?ParentLabel - WHERE { - ?ParentClass rdf:type rdfs:Class ; - rdfs:label ?ParentLabel . - - ?ChildClass rdfs:subClassOf ?ParentClass ; - rdf:type rdfs:Class ; - rdfs:label ?ChildLabel . - - FILTER (?ChildLabel != ?ParentLabel) - } - ORDER BY ?ChildLabel ?ParentLabel - {% endquery %} - {% set query_subclass_vocab = query_subclass_vocab_str | json2df %} - - {{ gv_macros.gv_graph("subclass_vocab_graph", "BT") }} - {{ gv_macros.gv_title("Subclass Vacab Graph") }} - {{ gv_macros.gv_cluster("subclass") }} - - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - {% for _, row in query_subclass_vocab.iterrows() %} - {{ gv_macros.gv_edge(row["ChildLabel"], row["ParentLabel"]) }} - {% endfor %} - - {{ gv_macros.gv_cluster_end() }} - {{ gv_macros.gv_end() }} - -END_TEMPLATE - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - - - digraph subclass_vocab_graph { - rankdir=BT - fontname=Courier; fontsize=12; labelloc=t - label="Subclass Vacab Graph" - subgraph cluster_subclass { label=""; color=white; penwidth=0 - subgraph cluster_subclass_inner { label=""; color=white - - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - "ObjectPolicy" -> "Policy" - "SystemPolicy" -> "Policy" - - }} - } - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -========================================= bash cell | visualize_subclass_vocab_using_geist ========================================= - -geist report << END_TEMPLATE - -{%- use "graphviz.geist" %} -{%- query isfilepath=False as query_subclass_vocab_str %} - SELECT DISTINCT ?ChildLabel ?ParentLabel - WHERE { - ?ParentClass rdf:type rdfs:Class ; - rdfs:label ?ParentLabel . - - ?ChildClass rdfs:subClassOf ?ParentClass ; - rdf:type rdfs:Class ; - rdfs:label ?ChildLabel . - - FILTER (?ChildLabel != ?ParentLabel) - } - ORDER BY ?ChildLabel ?ParentLabel -{% endquery %} -{%- set query_subclass_vocab = query_subclass_vocab_str | json2df %} - -{%- html "report.html" %} -{%- head "Geist Report" %} - - -

Geist Report

-

This report shows part of the vocabulary of TRACE. -

1. Graph Demo

-

(1) PNG

- {% img src="products/img.jpg" %} - {%- gv_graph "subclass_vocab_graph", "BT" %} - {%- gv_title "Subclass Vocab Graph" %} - {%- gv_cluster "subclass" %} - - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - {% for _, row in query_subclass_vocab.iterrows() %} - {% gv_edge row["ChildLabel"], row["ParentLabel"] %} - {% endfor %} - - {% gv_cluster_end %} - {% gv_end %} - {% endimg %} - -

(2) SVG

- {% img src="products/img.svg" %} - {%- gv_graph "subclass_vocab_graph", "BT" %} - {%- gv_title "Subclass Vocab Graph" %} - {%- gv_cluster "subclass" %} - - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - {% for _, row in query_subclass_vocab.iterrows() %} - {% gv_edge row["ChildLabel"], row["ParentLabel"] %} - {% endfor %} - - {% gv_cluster_end %} - {% gv_end %} - {% endimg %} - -

(3) GV

- {% img src="products/img.gv" %} - {%- gv_graph "subclass_vocab_graph", "BT" %} - {%- gv_title "Subclass Vocab Graph" %} - {%- gv_cluster "subclass" %} - - node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier] - {% for _, row in query_subclass_vocab.iterrows() %} - {% gv_edge row["ChildLabel"], row["ParentLabel"] %} - {% endfor %} - - {% gv_cluster_end %} - {% gv_end %} - {% endimg %} - -

2. Table Demo

- {%- table %} - {{ query_subclass_vocab_str }} - {% endtable %} - -{% endhtml %} -{%- destroy %} - -END_TEMPLATE - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - - - - - - - - - Geist Report - - -

Geist Report

-

This report shows part of the vocabulary of TRACE. -

1. Graph Demo

-

(1) PNG

- -

(2) SVG

- -

(3) GV

-

-    digraph subclass_vocab_graph {
-    rankdir=BT
-    fontname=Courier; fontsize=12; labelloc=t
-    label="Subclass Vocab Graph"
-    subgraph cluster_subclass { label=""; color=white; penwidth=0
-    subgraph cluster_subclass_inner { label=""; color=white
-            node[shape=box style="filled" fillcolor="#CCFFCC" peripheries=1 fontname=Courier]
-                            
-    "ObjectPolicy" -> "Policy"                            
-    "SystemPolicy" -> "Policy"            
-            
-    }}            
-    }        
-

2. Table Demo

- - - - - -
ChildLabelParentLabel
"ObjectPolicy""Policy"
"SystemPolicy""Policy"
- - - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/05-report-policies/run.sh b/demo/02-explorations/05-report-policies/run.sh deleted file mode 100644 index a334054..0000000 --- a/demo/02-explorations/05-report-policies/run.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env bash - -# paths to data files -COMMON=../common - -# ------------------------------------------------------------------------------ - -bash_cell 'import jsonld' << END_CELL - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ${COMMON}/trace-vocab.jsonld --infer owl - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell trs_policies << END_CELL - -# What are all of the policies a TRS could enforce? - -geist query --dataset kb << END_QUERY - - PREFIX rdf: - PREFIX rdfs: - PREFIX trov: - - SELECT DISTINCT ?trsPolicyName ?trsPolicyDescription - WHERE { - ?trsPolicy rdf:type trov:SystemPolicy . - ?trsPolicy rdfs:label ?trsPolicyName . - ?trsPolicy rdfs:comment ?trsPolicyDescription . - } ORDER BY ?trsPolicyName - -END_QUERY - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell tro_policies << END_CELL - -# What are all of he policies a TRO could enforce? - -geist query --dataset kb << END_QUERY - - PREFIX rdf: - PREFIX rdfs: - PREFIX trov: - - SELECT DISTINCT ?troPolicyName ?troPolicyDescription - WHERE { - ?troPolicy rdf:type trov:ObjectPolicy . - ?troPolicy rdfs:label ?troPolicyName . - ?troPolicy rdfs:comment ?troPolicyDescription . - } ORDER BY ?troPolicyName - -END_QUERY - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell report_trs_and_tro_policies << END_CELL - -# A single report that gives the results of two queries of the vocabulary: -# 1) What are all of the policies a TRS could enforce? -# 2) What are all of the policies a TRO could enforce? - -geist report << END_TEMPLATE - - {% query isfilepath=False as trs_policies_str %} - SELECT DISTINCT ?trsPolicyName ?trsPolicyDescription - WHERE { - ?trsPolicy rdf:type trov:SystemPolicy . - ?trsPolicy rdfs:label ?trsPolicyName . - ?trsPolicy rdfs:comment ?trsPolicyDescription . - } ORDER BY ?trsPolicyName - {% endquery %} - {% set trs_policies = trs_policies_str | json2df %} - {% query isfilepath=False as tro_policies_str %} - SELECT DISTINCT ?troPolicyName ?troPolicyDescription - WHERE { - ?troPolicy rdf:type trov:ObjectPolicy . - ?troPolicy rdfs:label ?troPolicyName . - ?troPolicy rdfs:comment ?troPolicyDescription . - } ORDER BY ?troPolicyName - {% endquery %} - {% set tro_policies = tro_policies_str | json2df %} - - List of policies that a TRS could enforce: - ========================================== - {% for _, row in trs_policies.iterrows() -%} - {{ row["trsPolicyName"] }} : {{ row["trsPolicyDescription"] }} - {% endfor %} - - List of policies that a TRO could enforce: - ========================================== - {% for _, row in tro_policies.iterrows() -%} - {{ row["troPolicyName"] }} : {{ row["troPolicyDescription"] }} - {% endfor %} - - {% destroy %} - -END_TEMPLATE - -END_CELL - -# ------------------------------------------------------------------------------ diff --git a/demo/02-explorations/05-report-policies/run.txt b/demo/02-explorations/05-report-policies/run.txt deleted file mode 100644 index 646092b..0000000 --- a/demo/02-explorations/05-report-policies/run.txt +++ /dev/null @@ -1,138 +0,0 @@ -==================================================== bash cell | import jsonld ===================================================== - -# Import TRO and TRS as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ../common/trace-vocab.jsonld --infer owl - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -===================================================== bash cell | trs_policies ===================================================== - -# What are all of the policies a TRS could enforce? - -geist query --dataset kb << END_QUERY - - PREFIX rdf: - PREFIX rdfs: - PREFIX trov: - - SELECT DISTINCT ?trsPolicyName ?trsPolicyDescription - WHERE { - ?trsPolicy rdf:type trov:SystemPolicy . - ?trsPolicy rdfs:label ?trsPolicyName . - ?trsPolicy rdfs:comment ?trsPolicyDescription . - } ORDER BY ?trsPolicyName - -END_QUERY - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | trsPolicyName | trsPolicyDescription | -|---:|:-----------------------------------|:------------------------------------------------------------------------------| -| 0 | "AllInputAvailableAfterRuntime" | "Research system makes all inputs available after runtime." | -| 1 | "AllInputAvailableBeforeRuntime" | "Research system makes all inputs available prior to runtime." | -| 2 | "EvidenceRuntime" | "Research system shows evidence of runtime." | -| 3 | "PreventInternetAccess" | "Research system prevents internet access during execution." | -| 4 | "PreventInterventionBeforeRuntime" | "Research system prevents interaction with author prior to runtime." | -| 5 | "PreventInterventionDuringRuntime" | "Research system prevents interaction with author of package during runtime." | -| 6 | "TrackIntermediateSteps" | "Research system tracks intermediate steps." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -===================================================== bash cell | tro_policies ===================================================== - -# What are all of he policies a TRO could enforce? - -geist query --dataset kb << END_QUERY - - PREFIX rdf: - PREFIX rdfs: - PREFIX trov: - - SELECT DISTINCT ?troPolicyName ?troPolicyDescription - WHERE { - ?troPolicy rdf:type trov:ObjectPolicy . - ?troPolicy rdfs:label ?troPolicyName . - ?troPolicy rdfs:comment ?troPolicyDescription . - } ORDER BY ?troPolicyName - -END_QUERY - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -| | troPolicyName | troPolicyDescription | -|---:|:------------------------------|:-----------------------------------------------------------| -| 0 | "DescribeSoftwareEnvironment" | "Research object describes the full software environment." | -| 1 | "IncludeAllCode" | "Research object includes all code." | -| 2 | "IncludeAllInput" | "Research object includes all inputs." | -| 3 | "IncludeAllOutput" | "Research object includes all outputs." | -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | report_trs_and_tro_policies ============================================== - -# A single report that gives the results of two queries of the vocabulary: -# 1) What are all of the policies a TRS could enforce? -# 2) What are all of the policies a TRO could enforce? - -geist report << END_TEMPLATE - - {% query isfilepath=False as trs_policies_str %} - SELECT DISTINCT ?trsPolicyName ?trsPolicyDescription - WHERE { - ?trsPolicy rdf:type trov:SystemPolicy . - ?trsPolicy rdfs:label ?trsPolicyName . - ?trsPolicy rdfs:comment ?trsPolicyDescription . - } ORDER BY ?trsPolicyName - {% endquery %} - {% set trs_policies = trs_policies_str | json2df %} - {% query isfilepath=False as tro_policies_str %} - SELECT DISTINCT ?troPolicyName ?troPolicyDescription - WHERE { - ?troPolicy rdf:type trov:ObjectPolicy . - ?troPolicy rdfs:label ?troPolicyName . - ?troPolicy rdfs:comment ?troPolicyDescription . - } ORDER BY ?troPolicyName - {% endquery %} - {% set tro_policies = tro_policies_str | json2df %} - - List of policies that a TRS could enforce: - ========================================== - {% for _, row in trs_policies.iterrows() -%} - {{ row["trsPolicyName"] }} : {{ row["trsPolicyDescription"] }} - {% endfor %} - - List of policies that a TRO could enforce: - ========================================== - {% for _, row in tro_policies.iterrows() -%} - {{ row["troPolicyName"] }} : {{ row["troPolicyDescription"] }} - {% endfor %} - - {% destroy %} - -END_TEMPLATE - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- - - - List of policies that a TRS could enforce: - ========================================== - "AllInputAvailableAfterRuntime" : "Research system makes all inputs available after runtime." - "AllInputAvailableBeforeRuntime" : "Research system makes all inputs available prior to runtime." - "EvidenceRuntime" : "Research system shows evidence of runtime." - "PreventInternetAccess" : "Research system prevents internet access during execution." - "PreventInterventionBeforeRuntime" : "Research system prevents interaction with author prior to runtime." - "PreventInterventionDuringRuntime" : "Research system prevents interaction with author of package during runtime." - "TrackIntermediateSteps" : "Research system tracks intermediate steps." - - List of policies that a TRO could enforce: - ========================================== - "DescribeSoftwareEnvironment" : "Research object describes the full software environment." - "IncludeAllCode" : "Research object includes all code." - "IncludeAllInput" : "Research object includes all inputs." - "IncludeAllOutput" : "Research object includes all outputs." - - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/message/bar.txt b/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/message/bar.txt deleted file mode 100644 index ba0e162..0000000 --- a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/message/bar.txt +++ /dev/null @@ -1 +0,0 @@ -bar \ No newline at end of file diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/message/foo.txt b/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/message/foo.txt deleted file mode 100644 index 1910281..0000000 --- a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/message/foo.txt +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/private.asc b/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/private.asc deleted file mode 100644 index ea8fe60..0000000 --- a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/private.asc +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN PGP PRIVATE KEY BLOCK----- - -lQIGBGQk4TIBBACa+pwsduIv34Vg/DmC1VN+5Sq47KHWxL5a2DcisfXIWpNFeuS2 -sPd1TdCSEiNywzC3K9vOswY7w+6vAd1VjlQVRKE5at8flauvSaU93s8th3kNmizg -B1nEzeax0z9M5gqZlTZP08Hc/VTPgKEVELv/0AqgekWvpS1Tqpt/o0bGhQARAQAB -/gcDAsMlCwLEKLif/2Rq0B5+kEBZVcN7XSFBoZ6APrMwun/7mY2oXIcFuA8UtD0H -dJuZe477d1WukaJGUJTLenu9MlpYXWDCf5NAbeBPuNoqG9lcQQhiOSBXmazQr0oF -OypXQxf2W+WysXiWEzLVuWRHRvuTZ/CIAX8Rd4f6u/Yjlhf/ucV8govYOF3mP3Te -+hzyyATd7T8ijUG8daDUtb9GJE2QYyxLojnfbdAd5DHHNa1vW9k+1khoWqCBJwAc -5s8E/igZbEGplGgq79pDkCxtAKsEsNZXHO0dlPsEgwDTHcOJ/cc/SSVMnMj4iR0t -slmfu+XhjwEnzKCff8blc3yYV6WdlzKhggUqQmpoiAkzmZUDJhfXEtyKakY8py2a -037+Ecl5Y9ieggDCOjSQIiVtnnsO+J90KJKRoAZRi7FUdOaCgg8prbT9xdxuF2Kl -u7jUCrUep/5ixKZZOzmuCLkgFK7de4VhGEI0pPFZPZtXT72Z2frepEe0HXJlcHJv -IHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQS9TKei5BiTp5Qgl2I1 -qvERcdt4pwUCZCThMgIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA1qvER -cdt4p4TRA/0ZO/h6lRd1B4PL5yy6hVnhdjrUZS8rEGpWBw6+F6vgYI5m3wSTJ4mf -FvkIgYsPhgWev/JGZtgvu/lsiUZFpHx/teXgryLcwHTf+UCqJa0ZpfS7i9XN7J4C -GVg4nIPh1JHJfPn1jV7lE/vAURr9g+X2/Ny7Os4GeqHFDYwTA4ATFg== -=NNnd ------END PGP PRIVATE KEY BLOCK----- diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/public.gpg b/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/public.gpg deleted file mode 100644 index 492a3de..0000000 --- a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/data/public.gpg +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mI0EZCThMgEEAJr6nCx24i/fhWD8OYLVU37lKrjsodbEvlrYNyKx9chak0V65Law -93VN0JISI3LDMLcr286zBjvD7q8B3VWOVBVEoTlq3x+Vq69JpT3ezy2HeQ2aLOAH -WcTN5rHTP0zmCpmVNk/Twdz9VM+AoRUQu//QCqB6Ra+lLVOqm3+jRsaFABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQS9TKei5BiT -p5Qgl2I1qvERcdt4pwUCZCThMgIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRA1qvERcdt4p4TRA/0ZO/h6lRd1B4PL5yy6hVnhdjrUZS8rEGpWBw6+F6vgYI5m -3wSTJ4mfFvkIgYsPhgWev/JGZtgvu/lsiUZFpHx/teXgryLcwHTf+UCqJa0ZpfS7 -i9XN7J4CGVg4nIPh1JHJfPn1jV7lE/vAURr9g+X2/Ny7Os4GeqHFDYwTA4ATFg== -=uXS/ ------END PGP PUBLIC KEY BLOCK----- diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/products/digest.txt b/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/products/digest.txt deleted file mode 100644 index 380d22c..0000000 --- a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/products/digest.txt +++ /dev/null @@ -1 +0,0 @@ -ad94b0a6229daabe8e5747ad67479170483d263ca32fa5c149857d58e87eb9f0 products/message.tar.gz diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/products/message.tar.gz b/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/products/message.tar.gz deleted file mode 100644 index 4e081b4..0000000 Binary files a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/products/message.tar.gz and /dev/null differ diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/products/tro.jsonld b/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/products/tro.jsonld deleted file mode 100644 index 683b05a..0000000 --- a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/products/tro.jsonld +++ /dev/null @@ -1,16 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:digest": "ad94b0a6229daabe8e5747ad67479170483d263ca32fa5c149857d58e87eb9f0", - "trov:troFilePath": "products/message.tar.gz" - }] -} diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/run.sh b/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/run.sh deleted file mode 100644 index 230463f..0000000 --- a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/run.sh +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env bash - -MESSAGE_FOLDER=data/message -PUBLIC_KEY_FILE=data/public.gpg -PRIVATE_KEY_FILE=data/private.asc -ZIPPED_MESSAGE_FILE=products/message.tar.gz -TRO_JSONLD_FILE=products/tro.jsonld -DIGEST_FILE=products/digest.txt -SIGNATURE_FILE=tmp/signature.asc - -# ------------------------------------------------------------------------------ - -bash_cell 'delete gnupg home directory' << 'END_CELL' -# delete contents of the .gnupg directory for this REPRO -gnupg-runtime.purge-keys -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tar the data dir content' << END_CELL - -find | sort | tar -czvf ${ZIPPED_MESSAGE_FILE} ${MESSAGE_FOLDER} --mtime='1970-01-01 00:00:00' - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'create tro certificate containing the digest of data' << END_CELL - -# Create tro.jsonld -cat > ${TRO_JSONLD_FILE} << EOF -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:digest": "$(shasum -a 256 products/message.tar.gz | cut -d" " -f 1)", - "trov:troFilePath": "products/message.tar.gz" - }] -} -EOF - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'import jsonld' << END_CELL - -# Import TRO as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile ${TRO_JSONLD_FILE} --infer owl - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'create a tmp file to verify the digest' << 'END_CELL' - -# Note: there must be exactly two spaces between the hash and the file path -DIGEST_FILE=products/digest.txt -geist report > ${DIGEST_FILE} << END_TEMPLATE -{% query isfilepath=False as digest_str %} - SELECT DISTINCT ?hash ?filePath - WHERE { - ?tro trov:digest ?hash . - ?tro trov:troFilePath ?filePath . - } -{% endquery %} -{% set digest = digest_str | json2df %} -{% for _, row in digest.iterrows() %} -{{ row["hash"][1:-1] }} {{ row["filePath"][1:-1] }} -{%- endfor %} -END_TEMPLATE -cat ${DIGEST_FILE} -geist destroy --dataset kb -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'verify the digest using shasum' << END_CELL - -shasum -a 256 -c ${DIGEST_FILE} - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'import the private key for repro@repros.dev' << END_CELL -# delete contents of the .gnupg directory for this REPRO -gnupg-runtime.purge-keys -# import the private key file -gpg --import --pinentry-mode loopback --passphrase=repro ${PRIVATE_KEY_FILE} 2>&1 -echo -# list the gpg keys -gpg --list-keys -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'sign the tro.jsonld file with the private key' << END_CELL - -rm -f ${SIGNATURE_FILE} -gpg --detach-sign --local-user repro@repros.dev \ - --pinentry-mode loopback --passphrase=repro \ - -a -o ${SIGNATURE_FILE} \ - ${TRO_JSONLD_FILE} 2>&1 -gnupg-runtime.redact-key ${SIGNATURE_FILE} - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'verify the signature with the public key' << END_CELL - -gpg -v --verify ${SIGNATURE_FILE} ${TRO_JSONLD_FILE} 2>&1 | tail -6 - -END_CELL - -# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/run.txt b/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/run.txt deleted file mode 100644 index 00d9b2f..0000000 --- a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/run.txt +++ /dev/null @@ -1,148 +0,0 @@ -============================================= bash cell | delete gnupg home directory ============================================== -# delete contents of the .gnupg directory for this REPRO -gnupg-runtime.purge-keys ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=============================================== bash cell | tar the data dir content =============================================== - -find | sort | tar -czvf products/message.tar.gz data/message --mtime='1970-01-01 00:00:00' - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -data/message/ -data/message/bar.txt -data/message/foo.txt -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================= bash cell | create tro certificate containing the digest of data ================================= - -# Create tro.jsonld -cat > products/tro.jsonld << EOF -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:digest": "ad94b0a6229daabe8e5747ad67479170483d263ca32fa5c149857d58e87eb9f0", - "trov:troFilePath": "products/message.tar.gz" - }] -} -EOF - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -==================================================== bash cell | import jsonld ===================================================== - -# Import TRO as JSON-LD and export as N-TRIPLES -geist destroy --dataset kb --quiet -geist create --dataset kb --inputformat json-ld --inputfile products/tro.jsonld --infer owl - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -======================================== bash cell | create a tmp file to verify the digest ======================================== - -# Note: there must be exactly two spaces between the hash and the file path -DIGEST_FILE=products/digest.txt -geist report > ${DIGEST_FILE} << END_TEMPLATE -{% query isfilepath=False as digest_str %} - SELECT DISTINCT ?hash ?filePath - WHERE { - ?tro trov:digest ?hash . - ?tro trov:troFilePath ?filePath . - } -{% endquery %} -{% set digest = digest_str | json2df %} -{% for _, row in digest.iterrows() %} -{{ row["hash"][1:-1] }} {{ row["filePath"][1:-1] }} -{%- endfor %} -END_TEMPLATE -cat ${DIGEST_FILE} -geist destroy --dataset kb ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -ad94b0a6229daabe8e5747ad67479170483d263ca32fa5c149857d58e87eb9f0 products/message.tar.gz -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================ bash cell | verify the digest using shasum ============================================ - -shasum -a 256 -c products/digest.txt - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -products/message.tar.gz: OK -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -===================================== bash cell | import the private key for repro@repros.dev ====================================== -# delete contents of the .gnupg directory for this REPRO -gnupg-runtime.purge-keys -# import the private key file -gpg --import --pinentry-mode loopback --passphrase=repro data/private.asc 2>&1 -echo -# list the gpg keys -gpg --list-keys ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -gpg: directory '/mnt/trace-model/.gnupg-runtime/.gnupg' created -gpg: keybox '/mnt/trace-model/.gnupg-runtime/.gnupg/pubring.kbx' created -gpg: /mnt/trace-model/.gnupg-runtime/.gnupg/trustdb.gpg: trustdb created -gpg: key 35AAF11171DB78A7: public key "repro user " imported -gpg: key 35AAF11171DB78A7: secret key imported -gpg: Total number processed: 1 -gpg: imported: 1 -gpg: secret keys read: 1 -gpg: secret keys imported: 1 - -/mnt/trace-model/.gnupg-runtime/.gnupg/pubring.kbx --------------------------------------------------- -pub rsa1024 2023-03-30 [SCEA] - BD4CA7A2E41893A79420976235AAF11171DB78A7 -uid [ unknown] repro user - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -==================================== bash cell | sign the tro.jsonld file with the private key ===================================== - -rm -f tmp/signature.asc -gpg --detach-sign --local-user repro@repros.dev --pinentry-mode loopback --passphrase=repro -a -o tmp/signature.asc products/tro.jsonld 2>&1 -gnupg-runtime.redact-key tmp/signature.asc - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- ------BEGIN PGP SIGNATURE----- - -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxx -xxxxx ------END PGP SIGNATURE----- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -======================================= bash cell | verify the signature with the public key ======================================= - -gpg -v --verify tmp/signature.asc products/tro.jsonld 2>&1 | tail -6 - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -gpg: using pgp trust model -gpg: Good signature from "repro user " [unknown] -gpg: WARNING: This key is not certified with a trusted signature! -gpg: There is no indication that the signature belongs to the owner. -Primary key fingerprint: BD4C A7A2 E418 93A7 9420 9762 35AA F111 71DB 78A7 -gpg: binary signature, digest algorithm SHA512, key algorithm rsa1024 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/message/bar.txt b/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/message/bar.txt deleted file mode 100644 index ba0e162..0000000 --- a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/message/bar.txt +++ /dev/null @@ -1 +0,0 @@ -bar \ No newline at end of file diff --git a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/message/foo.txt b/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/message/foo.txt deleted file mode 100644 index 1910281..0000000 --- a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/message/foo.txt +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/private.asc b/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/private.asc deleted file mode 100644 index ea8fe60..0000000 --- a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/private.asc +++ /dev/null @@ -1,20 +0,0 @@ ------BEGIN PGP PRIVATE KEY BLOCK----- - -lQIGBGQk4TIBBACa+pwsduIv34Vg/DmC1VN+5Sq47KHWxL5a2DcisfXIWpNFeuS2 -sPd1TdCSEiNywzC3K9vOswY7w+6vAd1VjlQVRKE5at8flauvSaU93s8th3kNmizg -B1nEzeax0z9M5gqZlTZP08Hc/VTPgKEVELv/0AqgekWvpS1Tqpt/o0bGhQARAQAB -/gcDAsMlCwLEKLif/2Rq0B5+kEBZVcN7XSFBoZ6APrMwun/7mY2oXIcFuA8UtD0H -dJuZe477d1WukaJGUJTLenu9MlpYXWDCf5NAbeBPuNoqG9lcQQhiOSBXmazQr0oF -OypXQxf2W+WysXiWEzLVuWRHRvuTZ/CIAX8Rd4f6u/Yjlhf/ucV8govYOF3mP3Te -+hzyyATd7T8ijUG8daDUtb9GJE2QYyxLojnfbdAd5DHHNa1vW9k+1khoWqCBJwAc -5s8E/igZbEGplGgq79pDkCxtAKsEsNZXHO0dlPsEgwDTHcOJ/cc/SSVMnMj4iR0t -slmfu+XhjwEnzKCff8blc3yYV6WdlzKhggUqQmpoiAkzmZUDJhfXEtyKakY8py2a -037+Ecl5Y9ieggDCOjSQIiVtnnsO+J90KJKRoAZRi7FUdOaCgg8prbT9xdxuF2Kl -u7jUCrUep/5ixKZZOzmuCLkgFK7de4VhGEI0pPFZPZtXT72Z2frepEe0HXJlcHJv -IHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQS9TKei5BiTp5Qgl2I1 -qvERcdt4pwUCZCThMgIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA1qvER -cdt4p4TRA/0ZO/h6lRd1B4PL5yy6hVnhdjrUZS8rEGpWBw6+F6vgYI5m3wSTJ4mf -FvkIgYsPhgWev/JGZtgvu/lsiUZFpHx/teXgryLcwHTf+UCqJa0ZpfS7i9XN7J4C -GVg4nIPh1JHJfPn1jV7lE/vAURr9g+X2/Ny7Os4GeqHFDYwTA4ATFg== -=NNnd ------END PGP PRIVATE KEY BLOCK----- diff --git a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/public.gpg b/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/public.gpg deleted file mode 100644 index 492a3de..0000000 --- a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/data/public.gpg +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mI0EZCThMgEEAJr6nCx24i/fhWD8OYLVU37lKrjsodbEvlrYNyKx9chak0V65Law -93VN0JISI3LDMLcr286zBjvD7q8B3VWOVBVEoTlq3x+Vq69JpT3ezy2HeQ2aLOAH -WcTN5rHTP0zmCpmVNk/Twdz9VM+AoRUQu//QCqB6Ra+lLVOqm3+jRsaFABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQS9TKei5BiT -p5Qgl2I1qvERcdt4pwUCZCThMgIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRA1qvERcdt4p4TRA/0ZO/h6lRd1B4PL5yy6hVnhdjrUZS8rEGpWBw6+F6vgYI5m -3wSTJ4mfFvkIgYsPhgWev/JGZtgvu/lsiUZFpHx/teXgryLcwHTf+UCqJa0ZpfS7 -i9XN7J4CGVg4nIPh1JHJfPn1jV7lE/vAURr9g+X2/Ny7Os4GeqHFDYwTA4ATFg== -=uXS/ ------END PGP PUBLIC KEY BLOCK----- diff --git a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/products/message.tar.gz b/demo/02-explorations/07-gpg-api-demos/02-simple-tro/products/message.tar.gz deleted file mode 100644 index 4e081b4..0000000 Binary files a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/products/message.tar.gz and /dev/null differ diff --git a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/products/tro.jsonld b/demo/02-explorations/07-gpg-api-demos/02-simple-tro/products/tro.jsonld deleted file mode 100644 index 89b3782..0000000 --- a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/products/tro.jsonld +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@context": [ - { - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - } - ], - "@graph": [ - { - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - "trov:generatedBySystem": { - "@id": "trov:system/01" - }, - "trov:digest": "ad94b0a6229daabe8e5747ad67479170483d263ca32fa5c149857d58e87eb9f0", - "trov:troFilePath": "products/message.tar.gz" - } - ] -} \ No newline at end of file diff --git a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/run.txt b/demo/02-explorations/07-gpg-api-demos/02-simple-tro/run.txt deleted file mode 100644 index c32fe17..0000000 --- a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/run.txt +++ /dev/null @@ -1,137 +0,0 @@ -======================================= bash cell | delete the gnupg home directory and keys ======================================= -# delete contents of GnuPG home directory for this REPRO -gnupg-runtime.purge-keys ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=============================================== bash cell | tar the data dir content =============================================== - -find | sort | tar -czvf products/message.tar.gz data/message --mtime='1970-01-01' - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -data/message/ -data/message/bar.txt -data/message/foo.txt -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================== bash cell | create tro manifest containing the digest of data =================================== -python3 << END_PYTHON -from hashlib import sha256 -import json -with open("products/message.tar.gz", "rb") as fin: - digest = sha256(fin.read()).hexdigest() -fout = open("products/tro.jsonld", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:digest": digest, - "trov:troFilePath": "products/message.tar.gz" - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat products/tro.jsonld ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -{ - "@context": [ - { - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - } - ], - "@graph": [ - { - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - "trov:generatedBySystem": { - "@id": "trov:system/01" - }, - "trov:digest": "ad94b0a6229daabe8e5747ad67479170483d263ca32fa5c149857d58e87eb9f0", - "trov:troFilePath": "products/message.tar.gz" - } - ] -}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -===================================== bash cell | import the private key for repro@repros.dev ====================================== -python3 << END_PYTHON -import gnupg -# read the private key from the file -with open("data/private.asc", "r") as private_key_file: - private_key_text = private_key_file.read() -# import the private key and trust it -gpg = gnupg.GPG() -gpg.import_keys(private_key_text) -gpg.trust_keys('BD4CA7A2E41893A79420976235AAF11171DB78A7', 'TRUST_ULTIMATE') -END_PYTHON ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -==================================== bash cell | list the imported public key using the gpg cli ==================================== -echo Public keys: -echo -gpg --list-keys -echo -echo Private keys: -echo -gpg --list-secret-keys -echo ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Public keys: - -/mnt/trace-model/.gnupg-runtime/.gnupg/pubring.kbx --------------------------------------------------- -pub rsa1024 2023-03-30 [SCEA] - BD4CA7A2E41893A79420976235AAF11171DB78A7 -uid [ultimate] repro user - - -Private keys: - -/mnt/trace-model/.gnupg-runtime/.gnupg/pubring.kbx --------------------------------------------------- -sec rsa1024 2023-03-30 [SCEA] - BD4CA7A2E41893A79420976235AAF11171DB78A7 -uid [ultimate] repro user - - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -========================== bash cell | sign and verify the tro.jsonld for repro@repros.dev (detach=True) =========================== -python3 << END_PYTHON -import gnupg -# Read the message from the file -with open("products/tro.jsonld", "r") as tro_jsonld_file: - tro_jsonld_text = bytes(tro_jsonld_file.read(), "utf-8") -# Sign the message with the private key -gpg = gnupg.GPG() -signed_text = gpg.sign(tro_jsonld_text, keyid="repro@repros.dev", passphrase="repro", detach=True) -# Write the signed message to a file -with open("tmp/signature.asc", "w") as text_file: - text_file.write(str(signed_text)) -verified = gpg.verify_data("tmp/signature.asc", tro_jsonld_text) -if not verified: - raise ValueError("Signature could not be verified!") -else: - print("Signature has been verified successfully!") -END_PYTHON ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Signature has been verified successfully! -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/08-tro-fingerprint/data/message/bar.txt b/demo/02-explorations/08-tro-fingerprint/data/message/bar.txt deleted file mode 100644 index ba0e162..0000000 --- a/demo/02-explorations/08-tro-fingerprint/data/message/bar.txt +++ /dev/null @@ -1 +0,0 @@ -bar \ No newline at end of file diff --git a/demo/02-explorations/08-tro-fingerprint/data/message/baz/baz.txt b/demo/02-explorations/08-tro-fingerprint/data/message/baz/baz.txt deleted file mode 100644 index 3f95386..0000000 --- a/demo/02-explorations/08-tro-fingerprint/data/message/baz/baz.txt +++ /dev/null @@ -1 +0,0 @@ -baz \ No newline at end of file diff --git a/demo/02-explorations/08-tro-fingerprint/data/message/foo.txt b/demo/02-explorations/08-tro-fingerprint/data/message/foo.txt deleted file mode 100644 index 1910281..0000000 --- a/demo/02-explorations/08-tro-fingerprint/data/message/foo.txt +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/demo/02-explorations/08-tro-fingerprint/data/message_with_diff_filenames/test1.txt b/demo/02-explorations/08-tro-fingerprint/data/message_with_diff_filenames/test1.txt deleted file mode 100644 index ba0e162..0000000 --- a/demo/02-explorations/08-tro-fingerprint/data/message_with_diff_filenames/test1.txt +++ /dev/null @@ -1 +0,0 @@ -bar \ No newline at end of file diff --git a/demo/02-explorations/08-tro-fingerprint/data/message_with_diff_filenames/test2.txt b/demo/02-explorations/08-tro-fingerprint/data/message_with_diff_filenames/test2.txt deleted file mode 100644 index 1910281..0000000 --- a/demo/02-explorations/08-tro-fingerprint/data/message_with_diff_filenames/test2.txt +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/demo/02-explorations/08-tro-fingerprint/data/message_with_diff_filenames/test3/test3.txt b/demo/02-explorations/08-tro-fingerprint/data/message_with_diff_filenames/test3/test3.txt deleted file mode 100644 index 3f95386..0000000 --- a/demo/02-explorations/08-tro-fingerprint/data/message_with_diff_filenames/test3/test3.txt +++ /dev/null @@ -1 +0,0 @@ -baz \ No newline at end of file diff --git a/demo/02-explorations/08-tro-fingerprint/products/tro.jsonld b/demo/02-explorations/08-tro-fingerprint/products/tro.jsonld deleted file mode 100644 index eb76628..0000000 --- a/demo/02-explorations/08-tro-fingerprint/products/tro.jsonld +++ /dev/null @@ -1,18 +0,0 @@ -{ - "@context": [ - { - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - } - ], - "@graph": [ - { - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - "trov:generatedBySystem": { - "@id": "trov:system/01" - }, - "trov:fingerprint": "414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317" - } - ] -} \ No newline at end of file diff --git a/demo/02-explorations/08-tro-fingerprint/run.sh b/demo/02-explorations/08-tro-fingerprint/run.sh deleted file mode 100644 index 5b91293..0000000 --- a/demo/02-explorations/08-tro-fingerprint/run.sh +++ /dev/null @@ -1,255 +0,0 @@ -#!/usr/bin/env bash - -MESSAGE_DIR=data/message -MESSAGE_FILE=data/message/bar.txt,data/message/foo.txt,data/message/baz/baz.txt -MESSAGE_SUBDIR=data/message/baz -MESSAGE_FILE_WITHOUT_SUBDIR=data/message/bar.txt,data/message/foo.txt - -MESSAGE_WITH_DIFF_FILENAMES_DIR=data/message_with_diff_filenames -MESSAGE_WITH_DIFF_FILENAMES_FILE=data/message_with_diff_filenames/test1.txt,data/message_with_diff_filenames/test2.txt,data/message_with_diff_filenames/test3/test3.txt -MESSAGE_WITH_DIFF_FILENAMES_SUBDIR=data/message_with_diff_filenames/test3 -MESSAGE_WITH_DIFF_FILENAMES_FILE_WITHOUT_SUBDIR=data/message_with_diff_filenames/test1.txt,data/message_with_diff_filenames/test2.txt - -TRO_JSONLD_FILE=products/tro.jsonld - -# ------------------------------------------------------------------------------ - -bash_cell 'get fingerprint based on tro_fingerprint.py (directory)' << END_CELL - -tro_fingerprint -d ${MESSAGE_DIR} - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'get fingerprint based on tro_fingerprint.py (file)' << END_CELL - -tro_fingerprint -f ${MESSAGE_FILE} - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'get fingerprint based on tro_fingerprint.py (directory and file)' << END_CELL - -tro_fingerprint -d ${MESSAGE_SUBDIR} -f ${MESSAGE_FILE_WITHOUT_SUBDIR} - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'create tro manifest containing the digest of data (directory)' << END_CELL -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir="${MESSAGE_DIR}", arg_file=None) - -fout = open("${TRO_JSONLD_FILE}", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat ${TRO_JSONLD_FILE} -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'create tro manifest containing the digest of data (file)' << END_CELL -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir=None, arg_file="${MESSAGE_FILE}") - -fout = open("${TRO_JSONLD_FILE}", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat ${TRO_JSONLD_FILE} -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'create tro manifest containing the digest of data (directory and file)' << END_CELL -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir="${MESSAGE_SUBDIR}", arg_file="${MESSAGE_FILE_WITHOUT_SUBDIR}") - -fout = open("${TRO_JSONLD_FILE}", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat ${TRO_JSONLD_FILE} -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'test different filenames: get fingerprint based on tro_fingerprint.py (directory)' << END_CELL - -tro_fingerprint -d ${MESSAGE_WITH_DIFF_FILENAMES_DIR} - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'test different filenames: get fingerprint based on tro_fingerprint.py (file)' << END_CELL - -tro_fingerprint -f ${MESSAGE_WITH_DIFF_FILENAMES_FILE} - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'test different filenames: get fingerprint based on tro_fingerprint.py (directory and file)' << END_CELL - -tro_fingerprint -d ${MESSAGE_WITH_DIFF_FILENAMES_SUBDIR} -f ${MESSAGE_WITH_DIFF_FILENAMES_FILE_WITHOUT_SUBDIR} - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'test different filenames: create tro manifest containing the digest of data (directory)' << END_CELL -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir="${MESSAGE_WITH_DIFF_FILENAMES_DIR}", arg_file=None) - -fout = open("${TRO_JSONLD_FILE}", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat ${TRO_JSONLD_FILE} -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'test different filenames: create tro manifest containing the digest of data (file)' << END_CELL -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir=None, arg_file="${MESSAGE_WITH_DIFF_FILENAMES_FILE}") - -fout = open("${TRO_JSONLD_FILE}", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat ${TRO_JSONLD_FILE} -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'test different filenames: create tro manifest containing the digest of data (directory and file)' << END_CELL -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir="${MESSAGE_WITH_DIFF_FILENAMES_SUBDIR}", arg_file="${MESSAGE_WITH_DIFF_FILENAMES_FILE_WITHOUT_SUBDIR}") - -fout = open("${TRO_JSONLD_FILE}", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat ${TRO_JSONLD_FILE} -END_CELL - -# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/02-explorations/08-tro-fingerprint/run.txt b/demo/02-explorations/08-tro-fingerprint/run.txt deleted file mode 100644 index 86a5d3c..0000000 --- a/demo/02-explorations/08-tro-fingerprint/run.txt +++ /dev/null @@ -1,348 +0,0 @@ -=============================== bash cell | get fingerprint based on tro_fingerprint.py (directory) ================================ - -tro_fingerprint -d data/message - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================== bash cell | get fingerprint based on tro_fingerprint.py (file) ================================== - -tro_fingerprint -f data/message/bar.txt,data/message/foo.txt,data/message/baz/baz.txt - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=========================== bash cell | get fingerprint based on tro_fingerprint.py (directory and file) =========================== - -tro_fingerprint -d data/message/baz -f data/message/bar.txt,data/message/foo.txt - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================ bash cell | create tro manifest containing the digest of data (directory) ============================= -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir="data/message", arg_file=None) - -fout = open("products/tro.jsonld", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat products/tro.jsonld ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -{ - "@context": [ - { - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - } - ], - "@graph": [ - { - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - "trov:generatedBySystem": { - "@id": "trov:system/01" - }, - "trov:fingerprint": "414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317" - } - ] -}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=============================== bash cell | create tro manifest containing the digest of data (file) =============================== -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir=None, arg_file="data/message/bar.txt,data/message/foo.txt,data/message/baz/baz.txt") - -fout = open("products/tro.jsonld", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat products/tro.jsonld ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -{ - "@context": [ - { - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - } - ], - "@graph": [ - { - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - "trov:generatedBySystem": { - "@id": "trov:system/01" - }, - "trov:fingerprint": "414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317" - } - ] -}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -======================== bash cell | create tro manifest containing the digest of data (directory and file) ======================== -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir="data/message/baz", arg_file="data/message/bar.txt,data/message/foo.txt") - -fout = open("products/tro.jsonld", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat products/tro.jsonld ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -{ - "@context": [ - { - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - } - ], - "@graph": [ - { - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - "trov:generatedBySystem": { - "@id": "trov:system/01" - }, - "trov:fingerprint": "414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317" - } - ] -}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================== bash cell | test different filenames: get fingerprint based on tro_fingerprint.py (directory) =================== - -tro_fingerprint -d data/message_with_diff_filenames - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -===================== bash cell | test different filenames: get fingerprint based on tro_fingerprint.py (file) ===================== - -tro_fingerprint -f data/message_with_diff_filenames/test1.txt,data/message_with_diff_filenames/test2.txt,data/message_with_diff_filenames/test3/test3.txt - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============== bash cell | test different filenames: get fingerprint based on tro_fingerprint.py (directory and file) ============== - -tro_fingerprint -d data/message_with_diff_filenames/test3 -f data/message_with_diff_filenames/test1.txt,data/message_with_diff_filenames/test2.txt - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=============== bash cell | test different filenames: create tro manifest containing the digest of data (directory) ================ -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir="data/message_with_diff_filenames", arg_file=None) - -fout = open("products/tro.jsonld", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat products/tro.jsonld ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -{ - "@context": [ - { - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - } - ], - "@graph": [ - { - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - "trov:generatedBySystem": { - "@id": "trov:system/01" - }, - "trov:fingerprint": "414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317" - } - ] -}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================== bash cell | test different filenames: create tro manifest containing the digest of data (file) ================== -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir=None, arg_file="data/message_with_diff_filenames/test1.txt,data/message_with_diff_filenames/test2.txt,data/message_with_diff_filenames/test3/test3.txt") - -fout = open("products/tro.jsonld", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat products/tro.jsonld ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -{ - "@context": [ - { - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - } - ], - "@graph": [ - { - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - "trov:generatedBySystem": { - "@id": "trov:system/01" - }, - "trov:fingerprint": "414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317" - } - ] -}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=========== bash cell | test different filenames: create tro manifest containing the digest of data (directory and file) =========== -python3 << END_PYTHON -from trace_model.tro_fingerprint import compute_fingerprint -import json - -fingerprint = compute_fingerprint(arg_dir="data/message_with_diff_filenames/test3", arg_file="data/message_with_diff_filenames/test1.txt,data/message_with_diff_filenames/test2.txt") - -fout = open("products/tro.jsonld", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:fingerprint": fingerprint - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat products/tro.jsonld ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -{ - "@context": [ - { - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - } - ], - "@graph": [ - { - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - "trov:generatedBySystem": { - "@id": "trov:system/01" - }, - "trov:fingerprint": "414e9a71745d2dcceb72c25d46ed771ed9221676d49186766dc07eae2a00e317" - } - ] -}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/09-tro-fingerprint-state/Makefile b/demo/02-explorations/09-tro-fingerprint-state/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/09-tro-fingerprint-state/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/10-timestamp/Makefile b/demo/02-explorations/10-timestamp/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/10-timestamp/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/10-timestamp/data/digest.yaml b/demo/02-explorations/10-timestamp/data/digest.yaml deleted file mode 100644 index 99a18a1..0000000 --- a/demo/02-explorations/10-timestamp/data/digest.yaml +++ /dev/null @@ -1,2 +0,0 @@ -tro-declaration: c7ef4301a9f9978c282affaa69a32971d991d4b5e21501bd3fd6241c02823c2c -trs-signature": 9fb5dd0a2b9afdf4071b43558848a70101c91d3b1eab61f6a369740c36c2ea8d diff --git a/demo/02-explorations/10-timestamp/data/file.tsq b/demo/02-explorations/10-timestamp/data/file.tsq deleted file mode 100644 index 26c2d79..0000000 Binary files a/demo/02-explorations/10-timestamp/data/file.tsq and /dev/null differ diff --git a/demo/02-explorations/11-jsonld2csv/Makefile b/demo/02-explorations/11-jsonld2csv/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/11-jsonld2csv/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/11-jsonld2csv/data/tro1.jsonld b/demo/02-explorations/11-jsonld2csv/data/tro1.jsonld deleted file mode 100644 index fda2e4f..0000000 --- a/demo/02-explorations/11-jsonld2csv/data/tro1.jsonld +++ /dev/null @@ -1,76 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro", - "@type": "trov:TransparentResearchObject", - "rdfs:comment": "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies", - - "trov:wasAssembledBy": { - "@id": "trs", - "@type": "trov:TrustedResearchSystem", - "rdfs:comment": "TRS that enforces no policies", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:wasTimestampedBy": { - "@id": "tsa", - "@type": "trov:TimeStampingAuthority", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:hasComposition": - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fingerprint", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" - }, - - { - "@id": "composition/1/artifact/2", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" - }] - }, - - "trov:hasArrangement": [ - { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "file1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, - "trov:hasLocation": "file2" - } - ] - }] - } -]} diff --git a/demo/02-explorations/11-jsonld2csv/data/tro2.jsonld b/demo/02-explorations/11-jsonld2csv/data/tro2.jsonld deleted file mode 100644 index 0b896c8..0000000 --- a/demo/02-explorations/11-jsonld2csv/data/tro2.jsonld +++ /dev/null @@ -1,132 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/01-trov-examples/02-three-artifacts-one-trp/" - }], - - "@graph": [ - { - "@id": "tro", - "@type": "trov:TransparentResearchObject", - "rdfs:comment": "A composition of two files in a single arrangement endorsed by a TRS that enforced Interent isolation", - - "trov:wasAssembledBy": { - "@id": "trs", - "@type": "trov:TrustedResearchSystem", - "rdfs:comment": "TRS that can provide Internet isolation", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n", - "trov:hasCapability": [ - { - "@id": "trs/capability/1", - "@type": "trov:CanProvideInternetIsolation" - } - ] - }, - - "trov:wasTimestampedBy": { - "@id": "tsa", - "@type": "trov:TimeStampingAuthority", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:hasAttribute": [ - { - "@id": "tro/attribute/1", - "@type": "trov:IncludesAllInputData", - "trov:warrantedBy": [{"@id": "trp/1/attribute/1" }] - } - ], - - "trov:hasComposition": - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": { - "@id": "fingerprint", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" - }, - { - "@id": "composition/1/artifact/2", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" - }, - { - "@id": "composition/1/artifact/3", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" - } - ] - }, - - "trov:hasArrangement": [ - { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "rdfs:comment": "Initial arrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "file1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, - "trov:hasLocation": "file2" - } - ] - }, - { - "@id": "arrangement/2", - "@type": "trov:ArtifactArrangement", - "rdfs:comment": "Final arrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/2/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, - "trov:hasLocation": "file2" - }, - { - "@id": "arrangement/2/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/3" }, - "trov:hasLocation": "file3" - } - ] - } - ], - - "trov:hasPerformance": [{ - "@id": "trp/1", - "@type": "trov:TrustedResearchPerformance", - "rdfs:comment": "Workflow execution", - "trov:wasConductedBy": { "@id": "trs" }, - "trov:startedAtTime": "2023-05-05T01:30:00Z", - "trov:endedAtTime": "2023-05-05T01:40:00Z", - "trov:accessedArrangement": { "@id": "arrangement/1" }, - "trov:contributedToArrangement": { "@id": "arrangement/2" }, - "trov:hadPerformanceAttribute": { - "@id": "trp/1/attribute/1", - "@type": "trov:InternetIsolation", - "trov:warrantedBy": { "@id": "trs/capability/1" } - } - }] - } -]} diff --git a/demo/02-explorations/11-jsonld2csv/products/tro1#composition_and_arrangement.csv b/demo/02-explorations/11-jsonld2csv/products/tro1#composition_and_arrangement.csv deleted file mode 100644 index a1df37d..0000000 --- a/demo/02-explorations/11-jsonld2csv/products/tro1#composition_and_arrangement.csv +++ /dev/null @@ -1,3 +0,0 @@ -ArtifactId,Digest,MimeType,arrangement/1 -composition/1/artifact/1,b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c,text/plain,file1 -composition/1/artifact/2,7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730,text/plain,file2 diff --git a/demo/02-explorations/11-jsonld2csv/products/tro2#composition_and_arrangement.csv b/demo/02-explorations/11-jsonld2csv/products/tro2#composition_and_arrangement.csv deleted file mode 100644 index c73272a..0000000 --- a/demo/02-explorations/11-jsonld2csv/products/tro2#composition_and_arrangement.csv +++ /dev/null @@ -1,4 +0,0 @@ -ArtifactId,Digest,MimeType,arrangement/1,arrangement/2 -composition/1/artifact/1,b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c,text/plain,file1, -composition/1/artifact/2,7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730,text/plain,file2,file2 -composition/1/artifact/3,7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730,text/plain,,file3 diff --git a/demo/02-explorations/11-jsonld2csv/products/tro2#tro_attribute_justification.csv b/demo/02-explorations/11-jsonld2csv/products/tro2#tro_attribute_justification.csv deleted file mode 100644 index 14f0361..0000000 --- a/demo/02-explorations/11-jsonld2csv/products/tro2#tro_attribute_justification.csv +++ /dev/null @@ -1,2 +0,0 @@ -TroAtt,TrpAttId,TrpAtt,TrsAttId,TrsAtt -trov:IncludesAllInputData,trp/1/attribute/1,trov:InternetIsolation,trs/capability/1,trov:CanProvideInternetIsolation diff --git a/demo/02-explorations/11-jsonld2csv/products/tro2#trp_and_arrangement.csv b/demo/02-explorations/11-jsonld2csv/products/tro2#trp_and_arrangement.csv deleted file mode 100644 index e372e5b..0000000 --- a/demo/02-explorations/11-jsonld2csv/products/tro2#trp_and_arrangement.csv +++ /dev/null @@ -1,2 +0,0 @@ -TrpId,TrpComment,TrsId,StartedAtTime,EndedAtTime,accessedArrangementId,contributedToArrangementId -trp/1,Workflow execution,trs,2023-05-05T01:30:00Z,2023-05-05T01:40:00Z,arrangement/1,arrangement/2 diff --git a/demo/02-explorations/11-jsonld2csv/products/tro3#composition_and_arrangement.csv b/demo/02-explorations/11-jsonld2csv/products/tro3#composition_and_arrangement.csv deleted file mode 100644 index b8c900e..0000000 --- a/demo/02-explorations/11-jsonld2csv/products/tro3#composition_and_arrangement.csv +++ /dev/null @@ -1,7 +0,0 @@ -ArtifactId,Digest,MimeType,arrangement/1,arrangement/2,arrangement/3,arrangement/4 -composition/1/artifact/1,b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78,application/x-netcdf,https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc,data/lbda-v2_kddm_pmdi_2017.nc,data/lbda-v2_kddm_pmdi_2017.nc, -composition/1/artifact/2,8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6,text/plain,,analysis.ipynb,, -composition/1/artifact/3,8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf,text/plain,,,analysis.ipynb,analysis.ipynb -composition/1/artifact/4,870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0,text/html,,,output/analysis.html,analysis.html -composition/1/artifact/5,cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf,image/png,,,output/histogram.png,histogram.png -composition/1/artifact/6,e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d,image/tiff,,,output/lbda-v2_kddm_pmdi_2017.tiff,lbda-v2_kddm_pmdi_2017.tiff diff --git a/demo/02-explorations/11-jsonld2csv/products/tro3#tro_attribute_justification.csv b/demo/02-explorations/11-jsonld2csv/products/tro3#tro_attribute_justification.csv deleted file mode 100644 index d7e840c..0000000 --- a/demo/02-explorations/11-jsonld2csv/products/tro3#tro_attribute_justification.csv +++ /dev/null @@ -1,4 +0,0 @@ -TroAtt,TrpAttId,TrpAtt,TrsAttId,TrsAtt -trov:IncludesAllInputData,trp/1/attribute/1,trov:InternetAccessRecording,trs/capability/1,trov:CanRecordInternetAccess -trov:IncludesAllInputData,trp/2/attribute/1,trov:InternetIsolation,trs/capability/2,trov:CanProvideInternetIsolation -trov:IncludesAllInputData,trp/3/attribute/1,trov:InternetIsolation,trs/capability/2,trov:CanProvideInternetIsolation diff --git a/demo/02-explorations/11-jsonld2csv/products/tro3#trp_and_arrangement.csv b/demo/02-explorations/11-jsonld2csv/products/tro3#trp_and_arrangement.csv deleted file mode 100644 index 6763a07..0000000 --- a/demo/02-explorations/11-jsonld2csv/products/tro3#trp_and_arrangement.csv +++ /dev/null @@ -1,4 +0,0 @@ -TrpId,TrpComment,TrsId,StartedAtTime,EndedAtTime,accessedArrangementId,contributedToArrangementId -trp/1,Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem,trs,2023-05-08T01:30:00Z,2023-05-08T01:40:00Z,arrangement/1,arrangement/2 -trp/2,Process that ran Jupyter notebook,trs,2023-05-08T01:41:00Z,2023-05-08T01:50:00Z,arrangement/2,arrangement/3 -trp/3,Process that packaged products of the Jupyter notebook execution in a Zip file,trs,2023-05-08T01:51:00Z,2023-05-08T02:00:00Z,arrangement/3,arrangement/4 diff --git a/demo/02-explorations/11-jsonld2csv/run.sh b/demo/02-explorations/11-jsonld2csv/run.sh deleted file mode 100644 index 674ee5b..0000000 --- a/demo/02-explorations/11-jsonld2csv/run.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash - -# ------------------------------------------------------------------------------ - -bash_cell 'convert tro1 from jsonld to csv' << END_CELL - -jsonld2csv --file data/tro1.jsonld --output products - -cat products/tro1* - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'convert tro1 from jsonld to csv' << END_CELL - -jsonld2csv --file data/tro2.jsonld --output products - -cat products/tro2* - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'convert tro1 from jsonld to csv' << END_CELL - -jsonld2csv --file data/tro3.jsonld --output products - -cat products/tro3* - -END_CELL - -# ------------------------------------------------------------------------------ diff --git a/demo/02-explorations/11-jsonld2csv/run.txt b/demo/02-explorations/11-jsonld2csv/run.txt deleted file mode 100644 index aeb8311..0000000 --- a/demo/02-explorations/11-jsonld2csv/run.txt +++ /dev/null @@ -1,59 +0,0 @@ -=========================================== bash cell | convert tro1 from jsonld to csv ============================================ - -jsonld2csv --file data/tro1.jsonld --output products - -cat products/tro1* - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -tro1 -ArtifactId,Digest,MimeType,arrangement/1 -composition/1/artifact/1,b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c,text/plain,file1 -composition/1/artifact/2,7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730,text/plain,file2 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=========================================== bash cell | convert tro1 from jsonld to csv ============================================ - -jsonld2csv --file data/tro2.jsonld --output products - -cat products/tro2* - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -tro2 -ArtifactId,Digest,MimeType,arrangement/1,arrangement/2 -composition/1/artifact/1,b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c,text/plain,file1, -composition/1/artifact/2,7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730,text/plain,file2,file2 -composition/1/artifact/3,7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730,text/plain,,file3 -TroAtt,TrpAttId,TrpAtt,TrsAttId,TrsAtt -trov:IncludesAllInputData,trp/1/attribute/1,trov:InternetIsolation,trs/capability/1,trov:CanProvideInternetIsolation -TrpId,TrpComment,TrsId,StartedAtTime,EndedAtTime,accessedArrangementId,contributedToArrangementId -trp/1,Workflow execution,trs,2023-05-05T01:30:00Z,2023-05-05T01:40:00Z,arrangement/1,arrangement/2 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=========================================== bash cell | convert tro1 from jsonld to csv ============================================ - -jsonld2csv --file data/tro3.jsonld --output products - -cat products/tro3* - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -tro3 -ArtifactId,Digest,MimeType,arrangement/1,arrangement/2,arrangement/3,arrangement/4 -composition/1/artifact/1,b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78,application/x-netcdf,https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc,data/lbda-v2_kddm_pmdi_2017.nc,data/lbda-v2_kddm_pmdi_2017.nc, -composition/1/artifact/2,8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6,text/plain,,analysis.ipynb,, -composition/1/artifact/3,8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf,text/plain,,,analysis.ipynb,analysis.ipynb -composition/1/artifact/4,870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0,text/html,,,output/analysis.html,analysis.html -composition/1/artifact/5,cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf,image/png,,,output/histogram.png,histogram.png -composition/1/artifact/6,e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d,image/tiff,,,output/lbda-v2_kddm_pmdi_2017.tiff,lbda-v2_kddm_pmdi_2017.tiff -TroAtt,TrpAttId,TrpAtt,TrsAttId,TrsAtt -trov:IncludesAllInputData,trp/1/attribute/1,trov:InternetAccessRecording,trs/capability/1,trov:CanRecordInternetAccess -trov:IncludesAllInputData,trp/2/attribute/1,trov:InternetIsolation,trs/capability/2,trov:CanProvideInternetIsolation -trov:IncludesAllInputData,trp/3/attribute/1,trov:InternetIsolation,trs/capability/2,trov:CanProvideInternetIsolation -TrpId,TrpComment,TrsId,StartedAtTime,EndedAtTime,accessedArrangementId,contributedToArrangementId -trp/1,Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem,trs,2023-05-08T01:30:00Z,2023-05-08T01:40:00Z,arrangement/1,arrangement/2 -trp/2,Process that ran Jupyter notebook,trs,2023-05-08T01:41:00Z,2023-05-08T01:50:00Z,arrangement/2,arrangement/3 -trp/3,Process that packaged products of the Jupyter notebook execution in a Zip file,trs,2023-05-08T01:51:00Z,2023-05-08T02:00:00Z,arrangement/3,arrangement/4 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/12-validate-jsonld/01-jsonschema/Makefile b/demo/02-explorations/12-validate-jsonld/01-jsonschema/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/12-validate-jsonld/01-jsonschema/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/12-validate-jsonld/01-jsonschema/data/tro1_w.jsonld b/demo/02-explorations/12-validate-jsonld/01-jsonschema/data/tro1_w.jsonld deleted file mode 100644 index 47ff9c2..0000000 --- a/demo/02-explorations/12-validate-jsonld/01-jsonschema/data/tro1_w.jsonld +++ /dev/null @@ -1,70 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro", - "@type": "trov:TransparentResearchObject", - "rdfs:comment": "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies", - - "trov:wasAssembledBy": { - "@id": "trs", - "@type": "trov:TrustedResearchSystem", - "rdfs:comment": "TRS that enforces no policies", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:hasComposition": - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fingerprint", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" - }, - - { - "@id": "composition/1/artifact/2", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" - }] - }, - - "trov:hasArrangement": [ - { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "file1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, - "trov:hasLocation": "file2" - } - ] - }] - } -]} diff --git a/demo/02-explorations/12-validate-jsonld/01-jsonschema/run.sh b/demo/02-explorations/12-validate-jsonld/01-jsonschema/run.sh deleted file mode 100644 index 6fc0d24..0000000 --- a/demo/02-explorations/12-validate-jsonld/01-jsonschema/run.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env bash - -TRO_SCHEMA_FILE_PATH=tro.schema.json - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro1.jsonld' << END_CELL - -validate_jsonld --jsonldpath "data/tro1_c.jsonld" --schemapath "${TRO_SCHEMA_FILE_PATH}" - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro2.jsonld' << END_CELL - -python3 2>&1 << END_PYTHON - -from trace_model.validate_jsonld import validate_tro - -validate_tro("data/tro1_w.jsonld", "${TRO_SCHEMA_FILE_PATH}") - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ diff --git a/demo/02-explorations/12-validate-jsonld/01-jsonschema/run.txt b/demo/02-explorations/12-validate-jsonld/01-jsonschema/run.txt deleted file mode 100644 index fe9be2a..0000000 --- a/demo/02-explorations/12-validate-jsonld/01-jsonschema/run.txt +++ /dev/null @@ -1,152 +0,0 @@ -================================================= bash cell | validate tro1.jsonld ================================================= - -validate_jsonld --jsonldpath "data/tro1_c.jsonld" --schemapath "tro.schema.json" - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Is a valid TRO JSON-LD file. -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================================= bash cell | validate tro2.jsonld ================================================= - -python3 2>&1 << END_PYTHON - -from trace_model.validate_jsonld import validate_tro - -validate_tro("data/tro1_w.jsonld", "tro.schema.json") - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Traceback (most recent call last): - File "", line 4, in - File "/mnt/trace-model/src/trace_model/validate_jsonld.py", line 14, in validate_tro - validator.validate(instance=tro_jsonld) - File "/mnt/trace-model/.python-dev/.local/lib/python3.10/site-packages/jsonschema/validators.py", line 435, in validate - raise error -jsonschema.exceptions.ValidationError: 'trov:wasTimestampedBy' is a required property - -Failed validating 'required' in schema['properties']['@graph']['items']: - {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'rdfs:comment': {'type': 'string'}, - 'trov:hasArrangement': {'items': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'rdfs:comment': {'type': 'string'}, - 'trov:hasLocus': {'items': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'trov:hasArtifact': {'properties': {'@id': {'type': 'string'}}, - 'type': 'object'}, - 'trov:hasLocation': {'type': 'string'}}, - 'type': 'object'}, - 'type': 'array'}}, - 'type': 'object'}, - 'type': 'array'}, - 'trov:hasAttribute': {'items': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'trov:warrantedBy': {'items': {'properties': {'@id': {'type': 'string'}}, - 'type': 'object'}, - 'type': 'array'}}, - 'type': 'object'}, - 'type': 'array'}, - 'trov:hasComposition': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'trov:hasArtifact': {'items': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'rdfs:comment': {'type': 'string'}, - 'trov:mimeType': {'type': 'string'}, - 'trov:sha256': {'type': 'string'}}, - 'type': 'object'}, - 'type': 'array'}, - 'trov:hasFingerprint': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'trov:sha256': {'type': 'string'}}, - 'type': 'object'}}, - 'type': 'object'}, - 'trov:hasPerformance': {'items': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'rdfs:comment': {'type': 'string'}, - 'trov:accessedArrangement': {'properties': {'@id': {'type': 'string'}}, - 'type': 'object'}, - 'trov:contributedToArrangement': {'properties': {'@id': {'type': 'string'}}, - 'type': 'object'}, - 'trov:endedAtTime': {'format': 'date-time', - 'type': 'string'}, - 'trov:hadPerformanceAttribute': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'trov:warrantedBy': {'properties': {'@id': {'type': 'string'}}, - 'type': 'object'}}, - 'type': 'object'}, - 'trov:startedAtTime': {'format': 'date-time', - 'type': 'string'}, - 'trov:wasConductedBy': {'properties': {'@id': {'type': 'string'}}, - 'type': 'object'}}, - 'type': 'object'}, - 'type': 'array'}, - 'trov:wasAssembledBy': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'rdfs:comment': {'type': 'string'}, - 'trov:hasCapability': {'items': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}}, - 'type': 'object'}, - 'type': 'array'}, - 'trov:publicKey': {'type': 'string'}}, - 'type': 'object'}, - 'trov:wasTimestampedBy': {'properties': {'@id': {'type': 'string'}, - '@type': {'type': 'string'}, - 'trov:publicKey': {'type': 'string'}}, - 'type': 'object'}}, - 'required': ['trov:wasAssembledBy', - 'trov:wasTimestampedBy', - 'trov:hasComposition', - 'trov:hasArrangement'], - 'type': 'object'} - -On instance['@graph'][0]: - {'@id': 'tro', - '@type': 'trov:TransparentResearchObject', - 'rdfs:comment': 'A composition of two files in a single arrangement ' - 'endorsed by a TRS that enforces no policies', - 'trov:hasArrangement': [{'@id': 'arrangement/1', - '@type': 'trov:ArtifactArrangement', - 'trov:hasLocus': [{'@id': 'arrangement/1/locus/1', - '@type': 'trov:ArtifactLocus', - 'trov:hasArtifact': {'@id': 'composition/1/artifact/1'}, - 'trov:hasLocation': 'file1'}, - {'@id': 'arrangement/1/locus/2', - '@type': 'trov:ArtifactLocus', - 'trov:hasArtifact': {'@id': 'composition/1/artifact/2'}, - 'trov:hasLocation': 'file2'}]}], - 'trov:hasComposition': {'@id': 'composition/1', - '@type': 'trov:ArtifactComposition', - 'trov:hasArtifact': [{'@id': 'composition/1/artifact/1', - '@type': 'trov:ResearchArtifact', - 'trov:mimeType': 'text/plain', - 'trov:sha256': 'b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c'}, - {'@id': 'composition/1/artifact/2', - '@type': 'trov:ResearchArtifact', - 'trov:mimeType': 'text/plain', - 'trov:sha256': '7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730'}], - 'trov:hasFingerprint': {'@id': 'fingerprint', - '@type': 'trov:CompositionFingerprint', - 'trov:sha256': '218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc'}}, - 'trov:wasAssembledBy': {'@id': 'trs', - '@type': 'trov:TrustedResearchSystem', - 'rdfs:comment': 'TRS that enforces no ' - 'policies', - 'trov:publicKey': '-----BEGIN PGP PUBLIC KEY ' - 'BLOCK-----\n' - 'mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\n' - 'PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\n' - 'TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\n' - 'HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\n' - 'HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\n' - 'CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\n' - 'xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\n' - 'IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n' - '=vuaX\n' - '-----END PGP PUBLIC KEY ' - 'BLOCK-----\n'}} -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/12-validate-jsonld/01-jsonschema/tro.schema.json b/demo/02-explorations/12-validate-jsonld/01-jsonschema/tro.schema.json deleted file mode 100644 index b6e7255..0000000 --- a/demo/02-explorations/12-validate-jsonld/01-jsonschema/tro.schema.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "type": "object", - "properties": { - "@context": {"type": "array"}, - "@graph": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "rdfs:comment": {"type": "string"}, - "trov:wasAssembledBy": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "rdfs:comment": {"type": "string"}, - "trov:publicKey": {"type": "string"}, - "trov:hasCapability":{ - "type": "array", - "items": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"} - } - } - } - } - }, - "trov:wasTimestampedBy": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "trov:publicKey": {"type": "string"} - } - }, - "trov:hasAttribute": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "trov:warrantedBy": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@id": {"type": "string"} - } - } - } - } - } - }, - "trov:hasComposition": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "trov:hasFingerprint": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "trov:sha256": {"type": "string"} - } - }, - "trov:hasArtifact": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "rdfs:comment": {"type": "string"}, - "trov:mimeType": {"type": "string"}, - "trov:sha256": {"type": "string"} - } - } - } - } - }, - "trov:hasArrangement": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "rdfs:comment": {"type": "string"}, - "trov:hasLocus": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "trov:hasArtifact": { - "type": "object", - "properties": { - "@id": {"type": "string"} - } - }, - "trov:hasLocation": {"type": "string"} - } - } - } - } - } - }, - "trov:hasPerformance": { - "type": "array", - "items": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "rdfs:comment": {"type": "string"}, - "trov:wasConductedBy": { - "type": "object", - "properties": { - "@id": {"type": "string"} - } - }, - "trov:startedAtTime": { - "type": "string", - "format": "date-time" - }, - "trov:endedAtTime": { - "type": "string", - "format": "date-time" - }, - "trov:accessedArrangement": { - "type": "object", - "properties": { - "@id": {"type": "string"} - } - }, - "trov:contributedToArrangement": { - "type": "object", - "properties": { - "@id": {"type": "string"} - } - }, - "trov:hadPerformanceAttribute": { - "type": "object", - "properties": { - "@id": {"type": "string"}, - "@type": {"type": "string"}, - "trov:warrantedBy": { - "type": "object", - "properties": { - "@id": {"type": "string"} - } - } - } - } - } - } - } - }, - "required": ["trov:wasAssembledBy", "trov:wasTimestampedBy", "trov:hasComposition", "trov:hasArrangement"] - } - } - }, - "required": ["@context", "@graph"] -} \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/Makefile b/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/data/tro1.jsonld b/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/data/tro1.jsonld deleted file mode 100644 index fda2e4f..0000000 --- a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/data/tro1.jsonld +++ /dev/null @@ -1,76 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro", - "@type": "trov:TransparentResearchObject", - "rdfs:comment": "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies", - - "trov:wasAssembledBy": { - "@id": "trs", - "@type": "trov:TrustedResearchSystem", - "rdfs:comment": "TRS that enforces no policies", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:wasTimestampedBy": { - "@id": "tsa", - "@type": "trov:TimeStampingAuthority", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:hasComposition": - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fingerprint", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" - }, - - { - "@id": "composition/1/artifact/2", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" - }] - }, - - "trov:hasArrangement": [ - { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "file1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, - "trov:hasLocation": "file2" - } - ] - }] - } -]} diff --git a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/data/tro2.jsonld b/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/data/tro2.jsonld deleted file mode 100644 index 08776da..0000000 --- a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/data/tro2.jsonld +++ /dev/null @@ -1,102 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro", - "@type": "trov:TransparentResearchObject", - "rdfs:comment": "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies", - - "trov:wasAssembledBy": { - "@id": "trs", - "@type": "trov:TrustedResearchSystem", - "rdfs:comment": "TRS that enforces no policies", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:wasTimestampedBy": { - "@id": "tsa", - "@type": "trov:TimeStampingAuthority", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fingerprint", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" - }, - - { - "@id": "composition/1/artifact/2", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" - }] - }, - { - "@id": "composition/2", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fingerprint", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" - } - }], - - "trov:hasArrangement": [ - { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "file1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "file1" - }, - { - "@id": "arrangement/1/locus/3", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, - "trov:hasLocation": "file2" - }, - { - "@id": "arrangement/1/locus/4", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/12" }, - "trov:hasLocation": "file2" - } - ] - }] - }, - { "@id": "trs", "trov:publicKey": "The second one" }, - { "@id": "tsa", "trov:publicKey": "The second one" }, - { "@id": "fingerprint", "trov:sha256": "The second one" } -]} diff --git a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/run.sh b/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/run.sh deleted file mode 100644 index 91471f4..0000000 --- a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/run.sh +++ /dev/null @@ -1,282 +0,0 @@ -#!/usr/bin/env bash - -# ------------------------------------------------------------------------------ - -bash_cell 'rdflib without inferences' << END_CELL - -python3 << END_PYTHON - -from rdflib import Graph - -with open("data/tro1.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -for r in g.query(q): - print(r) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'rdflib with inferences: RDFS semantics' << END_CELL - -python3 << END_PYTHON - -from rdflib import Graph -from owlrl import DeductiveClosure, RDFS_Semantics - -with open("data/tro1.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# RDFS_Semantics: implementing the RDFS semantics. -DeductiveClosure(RDFS_Semantics).expand(g) - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -for r in g.query(q): - print(r) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'rdflib with inferences: OWL 2 RL' << END_CELL - -python3 << END_PYTHON - -from rdflib import Graph -from owlrl import DeductiveClosure, OWLRL_Semantics - -with open("data/tro1.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# OWLRL_Semantics: implementing the OWL 2 RL. -DeductiveClosure(OWLRL_Semantics).expand(g) - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -for r in g.query(q): - print(r) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'rdflib with inferences: a combined semantics of RDFS semantics and OWL 2 RL' << END_CELL - -python3 << END_PYTHON - -from rdflib import Graph -from owlrl import DeductiveClosure, RDFS_OWLRL_Semantics - -with open("data/tro1.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# RDFS_OWLRL_Semantics: implementing a combined semantics of RDFS semantics and OWL 2 RL. -DeductiveClosure(RDFS_OWLRL_Semantics).expand(g) - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -for r in g.query(q): - print(r) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'rdflib validate tro2.jsonld' << END_CELL - -python3 << END_PYTHON - -from rdflib import Graph - -with open("data/tro2.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# Query the imported triples - -# 1) TRS with a public key -q = """ - ASK { - SELECT ?trs { - ?tro trov:wasAssembledBy ?trs . - ?trs trov:publicKey ?trs_pk . - } GROUP BY ?trs HAVING (count(*) = 1) - } -""" -res1 = bool(g.query(q)) -print("Validate that a TRO Declaration has a TRS with a public key: " + ("PASS" if res1 else "FAIL")) - -# 2) TSA with public key -## Method 1 -q = """ - ASK { - { - SELECT (COUNT(*) AS ?c1) - WHERE { - SELECT ?tsa { - ?tro trov:wasTimestampedBy ?tsa . - ?tsa trov:publicKey ?tsa_pk . - } GROUP BY ?tsa HAVING (count(*) = 1) - } - } - - { - SELECT (COUNT(*) AS ?c2) { - ?tro trov:wasTimestampedBy ?tsa . - } - } - FILTER (?c2 = 0 || ?c1 = ?c2) - } - """ -res2 = bool(g.query(q)) -print("Validate that a TRO Declaration has (1) NO TSA or (2) ONE TSA with a public key: [method 1]" + ("PASS" if res2 else "FAIL")) - -## Method 2 (negation: do NOT have TSA with multiple public keys) -q = """ - ASK { - { - SELECT (COUNT(*) AS ?c1) - WHERE { - SELECT ?tsa { - ?tro trov:wasTimestampedBy ?tsa . - ?tsa trov:publicKey ?tsa_pk . - } GROUP BY ?tsa HAVING (count(*) > 1) - } - } - FILTER (?c1 = 0) - } -""" -res2 = bool(g.query(q)) -print("Validate that a TRO Declaration has (1) NO TSA or (2) ONE TSA with a public key: [method 2]" + ("PASS" if res2 else "FAIL")) - -# 3) Composition with a fingerprint -q = """ - ASK { - { - SELECT ?comp { - ?tro trov:hasComposition ?comp . - ?comp trov:hasFingerprint/trov:sha256 ?comp_fp . - } GROUP BY ?comp HAVING (count(*) = 1) - } - } - """ -res3 = bool(g.query(q)) -print("Validate that a TRO Declaration has at least a composition and each composition has exactly ONE fingerprint: " + ("PASS" if res3 else "FAIL")) - -# 4) Composition with at least an artifact -q = """ - ASK { - { - SELECT (COUNT(?comp) AS ?c1) - WHERE{ - SELECT ?comp { - ?tro trov:hasComposition ?comp . - ?comp trov:hasArtifact/trov:sha256 ?art_digest . - } GROUP BY ?comp} - } - - { - SELECT (COUNT(?comp) AS ?c2) { - ?tro trov:hasComposition ?comp . - } - } - FILTER (?c1 = ?c2) - } - """ -res4 = bool(g.query(q)) -print("Validate that a TRO Declaration has at least a composition and each composition has at least an artifact: " + ("PASS" if res4 else "FAIL")) - -# 5) Arrangement with validate artifacts -q = """ - ASK { - { - SELECT (COUNT(*) AS ?c1) - WHERE { - ?tro trov:hasArrangement ?arr . - ?arr trov:hasLocus/trov:hasArtifact ?art . - } - } - - { - SELECT (COUNT(*) AS ?c2) - WHERE { - ?tro trov:hasArrangement ?arr . - ?arr trov:hasLocus/trov:hasArtifact/trov:sha256 ?art_digest . - } - } - FILTER (?c1 = ?c2) - } -""" - -res5 = bool(g.query(q)) -print("Validate that a TRO Declaration has arrangement(s) with valid artifacts: " + ("PASS" if res5 else "FAIL")) - -if res1 and res2 and res3 and res4 and res5: - print("This is a valid TRO Declaration!!!") -else: - print("This is NOT a valid TRO Declaration!!!") - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ diff --git a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/run.txt b/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/run.txt deleted file mode 100644 index c3fe018..0000000 --- a/demo/02-explorations/12-validate-jsonld/02-rdflib-owlrl/run.txt +++ /dev/null @@ -1,1075 +0,0 @@ -============================================== bash cell | rdflib without inferences =============================================== - -python3 << END_PYTHON - -from rdflib import Graph - -with open("data/tro1.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -for r in g.query(q): - print(r) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.Literal('file1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.Literal('file2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.Literal('text/plain')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.Literal('text/plain')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.Literal('TRS that enforces no policies')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -======================================== bash cell | rdflib with inferences: RDFS semantics ======================================== - -python3 << END_PYTHON - -from rdflib import Graph -from owlrl import DeductiveClosure, RDFS_Semantics - -with open("data/tro1.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# RDFS_Semantics: implementing the RDFS semantics. -DeductiveClosure(RDFS_Semantics).expand(g) - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -for r in g.query(q): - print(r) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.Literal('file1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.Literal('file2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.Literal('text/plain')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.Literal('text/plain')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.Literal('TRS that enforces no policies')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy')) -(rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('file1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('file2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('text/plain'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=========================================== bash cell | rdflib with inferences: OWL 2 RL =========================================== - -python3 << END_PYTHON - -from rdflib import Graph -from owlrl import DeductiveClosure, OWLRL_Semantics - -with open("data/tro1.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# OWLRL_Semantics: implementing the OWL 2 RL. -DeductiveClosure(OWLRL_Semantics).expand(g) - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -for r in g.query(q): - print(r) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#isDefinedBy'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#isDefinedBy'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#isDefinedBy')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#seeAlso'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#seeAlso'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#seeAlso')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#backwardCompatibleWith'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#backwardCompatibleWith'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#backwardCompatibleWith')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#deprecated'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#deprecated'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#deprecated')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#incompatibleWith'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#incompatibleWith'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#incompatibleWith')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#priorVersion'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#priorVersion'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#priorVersion')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#versionInfo'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#versionInfo'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#versionInfo')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.Literal('file1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.Literal('file2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.Literal('text/plain')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.Literal('text/plain')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.Literal('TRS that enforces no policies')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy')) -(rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -(rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc')) -(rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730')) -(rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies')) -(rdflib.term.Literal('TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('TRS that enforces no policies')) -(rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c')) -(rdflib.term.Literal('file1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('file1')) -(rdflib.term.Literal('file2'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('file2')) -(rdflib.term.Literal('text/plain'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('text/plain')) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -===================== bash cell | rdflib with inferences: a combined semantics of RDFS semantics and OWL 2 RL ====================== - -python3 << END_PYTHON - -from rdflib import Graph -from owlrl import DeductiveClosure, RDFS_OWLRL_Semantics - -with open("data/tro1.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# RDFS_OWLRL_Semantics: implementing a combined semantics of RDFS semantics and OWL 2 RL. -DeductiveClosure(RDFS_OWLRL_Semantics).expand(g) - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -for r in g.query(q): - print(r) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#HTML')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#PlainLiteral')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')) -(rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#isDefinedBy'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#isDefinedBy'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#isDefinedBy'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#isDefinedBy'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#isDefinedBy')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#label')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#seeAlso'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#seeAlso'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#seeAlso'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#seeAlso'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#seeAlso')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf')) -(rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NCName')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#NMTOKEN')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#Name')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#anyURI')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#base64Binary')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#boolean')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#byte')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#date')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTime')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#dateTimeStamp')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#decimal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#double')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#float')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#hexBinary')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#int')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#integer')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#language')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#long')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#negativeInteger')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonNegativeInteger')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#nonPositiveInteger')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#normalizedString')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#positiveInteger')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#short')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#string')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#time')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#token')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedByte')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedInt')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedLong')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Literal')) -(rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2001/XMLSchema#unsignedShort')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Datatype')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#DataRange')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Nothing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Class')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subClassOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#backwardCompatibleWith'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#backwardCompatibleWith'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#backwardCompatibleWith'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#backwardCompatibleWith'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#backwardCompatibleWith')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#deprecated'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#deprecated'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#deprecated'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#deprecated'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#deprecated')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentClass')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#incompatibleWith'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#incompatibleWith'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#incompatibleWith'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#incompatibleWith'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#incompatibleWith')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#priorVersion'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#priorVersion'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#priorVersion'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#priorVersion'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#priorVersion')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#versionInfo'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#versionInfo'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#AnnotationProperty')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#versionInfo'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('http://www.w3.org/2002/07/owl#versionInfo'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#versionInfo')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.Literal('file1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.Literal('file2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.Literal('text/plain')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.Literal('text/plain')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/2'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fingerprint'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#comment'), rdflib.term.Literal('TRS that enforces no policies')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/trs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tsa'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactArrangement')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactComposition')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ArtifactLocus')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#CompositionFingerprint')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#ResearchArtifact')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TimeStampingAuthority')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TransparentResearchObject')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#TrustedResearchSystem')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArrangement')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasArtifact')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasComposition')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasFingerprint')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocation')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#hasLocus')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#mimeType')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#publicKey')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#sha256')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasAssembledBy')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#Property')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#equivalentProperty'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy')) -(rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.URIRef('https://w3id.org/trace/2023/05/trov#wasTimestampedBy')) -(rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n')) -(rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc')) -(rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730')) -(rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('A composition of two files in a single arrangement endorsed by a TRS that enforces no policies')) -(rdflib.term.Literal('TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.Literal('TRS that enforces no policies'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('TRS that enforces no policies')) -(rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c')) -(rdflib.term.Literal('file1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('file1'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.Literal('file1'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('file1')) -(rdflib.term.Literal('file2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('file2'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.Literal('file2'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('file2')) -(rdflib.term.Literal('text/plain'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2000/01/rdf-schema#Resource')) -(rdflib.term.Literal('text/plain'), rdflib.term.URIRef('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#Thing')) -(rdflib.term.Literal('text/plain'), rdflib.term.URIRef('http://www.w3.org/2002/07/owl#sameAs'), rdflib.term.Literal('text/plain')) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================= bash cell | rdflib validate tro2.jsonld ============================================== - -python3 << END_PYTHON - -from rdflib import Graph - -with open("data/tro2.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# Query the imported triples - -# 1) TRS with a public key -q = """ - ASK { - SELECT ?trs { - ?tro trov:wasAssembledBy ?trs . - ?trs trov:publicKey ?trs_pk . - } GROUP BY ?trs HAVING (count(*) = 1) - } -""" -res1 = bool(g.query(q)) -print("Validate that a TRO Declaration has a TRS with a public key: " + ("PASS" if res1 else "FAIL")) - -# 2) TSA with public key -## Method 1 -q = """ - ASK { - { - SELECT (COUNT(*) AS ?c1) - WHERE { - SELECT ?tsa { - ?tro trov:wasTimestampedBy ?tsa . - ?tsa trov:publicKey ?tsa_pk . - } GROUP BY ?tsa HAVING (count(*) = 1) - } - } - - { - SELECT (COUNT(*) AS ?c2) { - ?tro trov:wasTimestampedBy ?tsa . - } - } - FILTER (?c2 = 0 || ?c1 = ?c2) - } - """ -res2 = bool(g.query(q)) -print("Validate that a TRO Declaration has (1) NO TSA or (2) ONE TSA with a public key: [method 1]" + ("PASS" if res2 else "FAIL")) - -## Method 2 (negation: do NOT have TSA with multiple public keys) -q = """ - ASK { - { - SELECT (COUNT(*) AS ?c1) - WHERE { - SELECT ?tsa { - ?tro trov:wasTimestampedBy ?tsa . - ?tsa trov:publicKey ?tsa_pk . - } GROUP BY ?tsa HAVING (count(*) > 1) - } - } - FILTER (?c1 = 0) - } -""" -res2 = bool(g.query(q)) -print("Validate that a TRO Declaration has (1) NO TSA or (2) ONE TSA with a public key: [method 2]" + ("PASS" if res2 else "FAIL")) - -# 3) Composition with a fingerprint -q = """ - ASK { - { - SELECT ?comp { - ?tro trov:hasComposition ?comp . - ?comp trov:hasFingerprint/trov:sha256 ?comp_fp . - } GROUP BY ?comp HAVING (count(*) = 1) - } - } - """ -res3 = bool(g.query(q)) -print("Validate that a TRO Declaration has at least a composition and each composition has exactly ONE fingerprint: " + ("PASS" if res3 else "FAIL")) - -# 4) Composition with at least an artifact -q = """ - ASK { - { - SELECT (COUNT(?comp) AS ?c1) - WHERE{ - SELECT ?comp { - ?tro trov:hasComposition ?comp . - ?comp trov:hasArtifact/trov:sha256 ?art_digest . - } GROUP BY ?comp} - } - - { - SELECT (COUNT(?comp) AS ?c2) { - ?tro trov:hasComposition ?comp . - } - } - FILTER (?c1 = ?c2) - } - """ -res4 = bool(g.query(q)) -print("Validate that a TRO Declaration has at least a composition and each composition has at least an artifact: " + ("PASS" if res4 else "FAIL")) - -# 5) Arrangement with validate artifacts -q = """ - ASK { - { - SELECT (COUNT(*) AS ?c1) - WHERE { - ?tro trov:hasArrangement ?arr . - ?arr trov:hasLocus/trov:hasArtifact ?art . - } - } - - { - SELECT (COUNT(*) AS ?c2) - WHERE { - ?tro trov:hasArrangement ?arr . - ?arr trov:hasLocus/trov:hasArtifact/trov:sha256 ?art_digest . - } - } - FILTER (?c1 = ?c2) - } -""" - -res5 = bool(g.query(q)) -print("Validate that a TRO Declaration has arrangement(s) with valid artifacts: " + ("PASS" if res5 else "FAIL")) - -if res1 and res2 and res3 and res4 and res5: - print("This is a valid TRO Declaration!!!") -else: - print("This is NOT a valid TRO Declaration!!!") - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validate that a TRO Declaration has a TRS with a public key: FAIL -Validate that a TRO Declaration has (1) NO TSA or (2) ONE TSA with a public key: [method 1]FAIL -Validate that a TRO Declaration has (1) NO TSA or (2) ONE TSA with a public key: [method 2]FAIL -Validate that a TRO Declaration has at least a composition and each composition has exactly ONE fingerprint: FAIL -Validate that a TRO Declaration has at least a composition and each composition has at least an artifact: FAIL -Validate that a TRO Declaration has arrangement(s) with valid artifacts: FAIL -This is NOT a valid TRO Declaration!!! -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/12-validate-jsonld/03-pyshacl/Makefile b/demo/02-explorations/12-validate-jsonld/03-pyshacl/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/12-validate-jsonld/03-pyshacl/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/12-validate-jsonld/03-pyshacl/data/tro.schema.ttl b/demo/02-explorations/12-validate-jsonld/03-pyshacl/data/tro.schema.ttl deleted file mode 100644 index 6ecd9c9..0000000 --- a/demo/02-explorations/12-validate-jsonld/03-pyshacl/data/tro.schema.ttl +++ /dev/null @@ -1,128 +0,0 @@ -@prefix rdf: . -@prefix rdfs: . -@prefix trov: . -@prefix : . - -@prefix xsd: . -@prefix sh: . -@prefix schema: . - -schema:TroShape - a sh:NodeShape ; - sh:targetClass trov:TransparentResearchObject ; - sh:property [ # One TRO has ANY number of comments - sh:path rdfs:comment ; - sh:datatype xsd:string ; - ] ; - sh:property [ # One TRO has EXACTLY ONE TRS - sh:path trov:wasAssembledBy ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:node schema:TrsShape ; - ] ; - sh:property [ # One TRO has at MOST ONE TSA - sh:path trov:wasTimestampedBy ; - sh:maxCount 1 ; - sh:node schema:TsaShape ; - ] ; - sh:property [ # One TRO has at LEAST ONE composition - sh:path trov:hasComposition ; - sh:minCount 1 ; - sh:node schema:CompShape ; - ] ; - sh:property [ # One TRO has at LEAST ONE arrangement - sh:path trov:hasArrangement ; - sh:minCount 1 ; - sh:node schema:ArrShape ; - ] . - - -schema:TrsShape - a sh:NodeShape ; - sh:targetClass trov:TrustedResearchSystem ; - sh:property [ - sh:path rdfs:comment ; - sh:datatype xsd:string ; - ] ; - sh:property [ # One TRS has EXACTLY ONE public key - sh:path trov:publicKey ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:TsaShape - a sh:NodeShape ; - sh:targetClass trov:TimeStampingAuthority ; - sh:property [ # One TSA has EXACTLY ONE public key - sh:path trov:publicKey ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:CompShape - a sh:NodeShape ; - sh:targetClass trov:ArtifactComposition ; - sh:property [ # Each composition has EXACTLY ONE fingerprint - sh:path trov:hasFingerprint ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:node schema:FingerprintShape ; - ] ; - sh:property [ # Each composition has at LEAST ONE artifact - sh:path trov:hasArtifact ; - sh:minCount 1 ; - sh:node schema:ArtifactShape ; - ] . - -schema:FingerprintShape - a sh:NodeShape ; - sh:targetClass trov:CompositionFingerprint ; - sh:property [ # Each composition has at EXACTLY ONE sha256 - sh:message "*** Each fingerprint should have EXACTLY ONE sha256 with String format ***" ; - sh:path trov:sha256 ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:ArtifactShape - a sh:NodeShape ; - sh:targetClass trov:ResearchArtifact ; - sh:property [ # Each artifact has at MOST ONE memeType - sh:path trov:mimeType ; - sh:datatype xsd:string ; - sh:maxCount 1 ; - ] ; - sh:property [ # Each artifact has EXACTLY ONE sha256 - sh:path trov:sha256 ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:ArrShape - a sh:NodeShape ; - sh:targetClass trov:ArtifactArrangement ; - sh:property [ # Each artifact has at LEAST ONE artifact locus - sh:path trov:hasLocus ; - sh:minCount 1 ; - sh:node schema:LocusShape ; - ] . - -schema:LocusShape - a sh:NodeShape ; - sh:targetClass trov:ArtifactLocus ; - sh:property [ # Each artifact locus is linked to a valid artifact - sh:path trov:hasArtifact ; - sh:class trov:ResearchArtifact ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] ; - sh:property [ # Each artifact locus has EXACTLY ONE location - sh:path trov:hasLocation ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . diff --git a/demo/02-explorations/12-validate-jsonld/03-pyshacl/run.sh b/demo/02-explorations/12-validate-jsonld/03-pyshacl/run.sh deleted file mode 100644 index f7a3ae7..0000000 --- a/demo/02-explorations/12-validate-jsonld/03-pyshacl/run.sh +++ /dev/null @@ -1,474 +0,0 @@ -#!/usr/bin/env bash - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro declaration with pyshacl (without comments)' << END_CELL - -python3 << END_PYTHON - -# It allows any number of comments for each TRO -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { "@id": "tro", "@type": "trov:TransparentResearchObject" } - ] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro declaration with pyshacl (multiple trs pk)' << END_CELL - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { "@id": "trs", "@type": "trov:TrustedResearchSystem" }, - { "@id": "trs", "trov:publicKey": "trs.pk.1" }, - { "@id": "trs", "trov:publicKey": "trs.pk.2" } - ] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro declaration with pyshacl (multiple tsa pk)' << END_CELL - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { "@id": "tsa", "@type": "trov:TimeStampingAuthority" }, - { "@id": "tsa", "trov:publicKey": "tsa.pk.1" }, - { "@id": "tsa", "trov:publicKey": "tsa.pk.2" } - ] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro declaration with pyshacl (multiple fingerprints per composition)' << END_CELL - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - } - } - }, - { - "@id": "composition/1", - "trov:hasFingerprint": { - "@id": "fp2", - "trov:sha256": "sha256.fp2" - } - }] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro declaration with pyshacl (multiple sha256 per fingerprint)' << END_CELL - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - } - } - }, - { "@id": "fp1", "trov:sha256": "sha256.fp2" } - ] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro declaration with pyshacl (composition with at least one artifact)' << END_CELL - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "art.sha256.1" - }] - }, - { - "@id": "composition/2", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp2", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp2" - } - }] - }] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print(results_text) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro declaration with pyshacl (arrangement links to a valid artifact) and validate error msg with SPARQL' << END_CELL - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:sha256": "art.sha256.1" - }] - }], - "trov:hasArrangement": { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "filepath1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, - "trov:hasLocation": "filepath2" - }] - } - }] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -q = """ - ASK { - ?node ?p "Value does not have class trov:ResearchArtifact" . - } -""" - -res = bool(results_graph.query(q)) -print("Validate error message: " + ("PASS" if res else "FAIL")) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'validate tro declaration with pyshacl (arrangement links to a valid artifact) and select msg with SPARQL' << END_CELL - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:sha256": "art.sha256.1" - }] - }], - "trov:hasArrangement": { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "filepath1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, - "trov:hasLocation": "filepath2" - }] - } - }] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -q = """ - PREFIX : - - SELECT ?focus ?value ?msg - WHERE { - ?curr_node :focusNode ?focus . - ?curr_node :value ?value . - ?curr_node :resultMessage ?msg . - ?another_node :focusNode ?another_focus . - FILTER (?value != ?another_focus) - FILTER (?another_node != ?curr_node) - } - ORDER BY ?focus ?value ?msg -""" - -for x in results_graph.query(q): - print(x) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ diff --git a/demo/02-explorations/12-validate-jsonld/03-pyshacl/run.txt b/demo/02-explorations/12-validate-jsonld/03-pyshacl/run.txt deleted file mode 100644 index a132ecd..0000000 --- a/demo/02-explorations/12-validate-jsonld/03-pyshacl/run.txt +++ /dev/null @@ -1,574 +0,0 @@ -=============================== bash cell | validate tro declaration with pyshacl (without comments) =============================== - -python3 << END_PYTHON - -# It allows any number of comments for each TRO -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { "@id": "tro", "@type": "trov:TransparentResearchObject" } - ] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -results_text: Validation Report -Conforms: False -Results (3): -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Result Path: trov:wasAssembledBy - Message: Less than 1 values on ->trov:wasAssembledBy -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Result Path: trov:hasComposition - Message: Less than 1 values on ->trov:hasComposition -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArrShape ; sh:path trov:hasArrangement ] - Focus Node: - Result Path: trov:hasArrangement - Message: Less than 1 values on ->trov:hasArrangement - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=============================== bash cell | validate tro declaration with pyshacl (multiple trs pk) ================================ - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { "@id": "trs", "@type": "trov:TrustedResearchSystem" }, - { "@id": "trs", "trov:publicKey": "trs.pk.1" }, - { "@id": "trs", "trov:publicKey": "trs.pk.2" } - ] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -results_text: Validation Report -Conforms: False -Results (1): -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=============================== bash cell | validate tro declaration with pyshacl (multiple tsa pk) ================================ - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { "@id": "tsa", "@type": "trov:TimeStampingAuthority" }, - { "@id": "tsa", "trov:publicKey": "tsa.pk.1" }, - { "@id": "tsa", "trov:publicKey": "tsa.pk.2" } - ] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -results_text: Validation Report -Conforms: False -Results (1): -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -==================== bash cell | validate tro declaration with pyshacl (multiple fingerprints per composition) ===================== - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - } - } - }, - { - "@id": "composition/1", - "trov:hasFingerprint": { - "@id": "fp2", - "trov:sha256": "sha256.fp2" - } - }] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -results_text: Validation Report -Conforms: False -Results (2): -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Result Path: trov:hasFingerprint - Message: More than 1 values on ->trov:hasFingerprint -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArtifactShape ; sh:path trov:hasArtifact ] - Focus Node: - Result Path: trov:hasArtifact - Message: Less than 1 values on ->trov:hasArtifact - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -======================= bash cell | validate tro declaration with pyshacl (multiple sha256 per fingerprint) ======================== - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - } - } - }, - { "@id": "fp1", "trov:sha256": "sha256.fp2" } - ] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print("results_text: ", results_text) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -results_text: Validation Report -Conforms: False -Results (3): -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArtifactShape ; sh:path trov:hasArtifact ] - Focus Node: - Result Path: trov:hasArtifact - Message: Less than 1 values on ->trov:hasArtifact -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -==================== bash cell | validate tro declaration with pyshacl (composition with at least one artifact) ==================== - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "art.sha256.1" - }] - }, - { - "@id": "composition/2", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp2", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp2" - } - }] - }] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -print(results_text) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (1): -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArtifactShape ; sh:path trov:hasArtifact ] - Focus Node: - Result Path: trov:hasArtifact - Message: Less than 1 values on ->trov:hasArtifact - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=== bash cell | validate tro declaration with pyshacl (arrangement links to a valid artifact) and validate error msg with SPARQL === - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:sha256": "art.sha256.1" - }] - }], - "trov:hasArrangement": { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "filepath1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, - "trov:hasLocation": "filepath2" - }] - } - }] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -q = """ - ASK { - ?node ?p "Value does not have class trov:ResearchArtifact" . - } -""" - -res = bool(results_graph.query(q)) -print("Validate error message: " + ("PASS" if res else "FAIL")) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validate error message: PASS -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -======= bash cell | validate tro declaration with pyshacl (arrangement links to a valid artifact) and select msg with SPARQL ======= - -python3 << END_PYTHON - -from pyshacl import validate - -tro_jsonld = """ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [{ - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:sha256": "art.sha256.1" - }] - }], - "trov:hasArrangement": { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "filepath1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, - "trov:hasLocation": "filepath2" - }] - } - }] -} -""" - -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() - -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r - -q = """ - PREFIX : - - SELECT ?focus ?value ?msg - WHERE { - ?curr_node :focusNode ?focus . - ?curr_node :value ?value . - ?curr_node :resultMessage ?msg . - ?another_node :focusNode ?another_focus . - FILTER (?value != ?another_focus) - FILTER (?another_node != ?curr_node) - } - ORDER BY ?focus ?value ?msg -""" - -for x in results_graph.query(q): - print(x) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/100'), rdflib.term.Literal('Value does not have class trov:ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/100'), rdflib.term.Literal('Value does not have class trov:ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/100'), rdflib.term.Literal('Value does not have class trov:ResearchArtifact')) -(rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2'), rdflib.term.URIRef('https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/100'), rdflib.term.Literal('Value does not have class trov:ResearchArtifact')) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/Makefile b/demo/02-explorations/12-validate-jsonld/04-report-yfiles/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/data/tro.jsonld b/demo/02-explorations/12-validate-jsonld/04-report-yfiles/data/tro.jsonld deleted file mode 100644 index 48ffe6a..0000000 --- a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/data/tro.jsonld +++ /dev/null @@ -1,51 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro/1", - "@type": "trov:TransparentResearchObject", - - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:sha256": "art.sha256.1" - }] - }], - "trov:hasArrangement": { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "filepath1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, - "trov:hasLocation": "filepath2" - }] - } - }] -} \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/products/triples.csv b/demo/02-explorations/12-validate-jsonld/04-report-yfiles/products/triples.csv deleted file mode 100644 index 41bc1f3..0000000 --- a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/products/triples.csv +++ /dev/null @@ -1,20 +0,0 @@ -source,label,target -arrangement/1,trov#hasLocus,arrangement/1/locus/1 -arrangement/1,trov#hasLocus,arrangement/1/locus/2 -arrangement/1,rdf#type,trov#ArtifactArrangement -arrangement/1/locus/1,trov#hasArtifact,composition/1/artifact/1 -arrangement/1/locus/1,trov#hasLocation,filepath1 -arrangement/1/locus/1,rdf#type,trov#ArtifactLocus -arrangement/1/locus/2,trov#hasArtifact,composition/1/artifact/100 -arrangement/1/locus/2,trov#hasLocation,filepath2 -arrangement/1/locus/2,rdf#type,trov#ArtifactLocus -composition/1,trov#hasArtifact,composition/1/artifact/1 -composition/1,trov#hasFingerprint,fp1 -composition/1,rdf#type,trov#ArtifactComposition -composition/1/artifact/1,trov#sha256,art.sha256.1 -composition/1/artifact/1,rdf#type,trov#ResearchArtifact -fp1,trov#sha256,sha256.fp1 -fp1,rdf#type,trov#CompositionFingerprint -tro/1,trov#hasArrangement,arrangement/1 -tro/1,trov#hasComposition,composition/1 -tro/1,rdf#type,trov#TransparentResearchObject diff --git a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/run.sh b/demo/02-explorations/12-validate-jsonld/04-report-yfiles/run.sh deleted file mode 100644 index 3a05c08..0000000 --- a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/run.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env bash - -# ------------------------------------------------------------------------------ - -bash_cell 'export tro declaration as triples' << END_CELL - -python3 << END_PYTHON - -from rdflib import Graph -import pandas as pd - -mappings = { - "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf#", - "http://www.w3.org/2000/01/rdf-schema#": "rdfs#", - "https://w3id.org/trace/2023/05/trov#": "trov#", - "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/": "" -} - -with open("data/tro.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -rows = [] -for r in g.query(q): - rows.append(r) - -graphs = pd.DataFrame(rows, columns=["source", "label", "target"]).replace(mappings, regex=True).sort_values(by=["source", "target"]) -graphs.to_csv("products/triples.csv", index=False) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ -bash_cell 'visualize triples with errors' << END_CELL - -jupyter nbconvert --ExecutePreprocessor.kernel_name=python3 --to html --execute visualize_triples.ipynb --output products/report.html - -# Please run this code in terminal to check the html file: python3 -m http.server -# Then open your web browser, go to http://127.0.0.1:8000/, and find the products/report.html file - -END_CELL -# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/run.txt b/demo/02-explorations/12-validate-jsonld/04-report-yfiles/run.txt deleted file mode 100644 index 50590cd..0000000 --- a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/run.txt +++ /dev/null @@ -1,54 +0,0 @@ -========================================== bash cell | export tro declaration as triples =========================================== - -python3 << END_PYTHON - -from rdflib import Graph -import pandas as pd - -mappings = { - "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf#", - "http://www.w3.org/2000/01/rdf-schema#": "rdfs#", - "https://w3id.org/trace/2023/05/trov#": "trov#", - "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/": "" -} - -with open("data/tro.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - -rows = [] -for r in g.query(q): - rows.append(r) - -graphs = pd.DataFrame(rows, columns=["source", "label", "target"]).replace(mappings, regex=True).sort_values(by=["source", "target"]) -graphs.to_csv("products/triples.csv", index=False) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -============================================ bash cell | visualize triples with errors ============================================= - -jupyter nbconvert --ExecutePreprocessor.kernel_name=python3 --to html --execute visualize_triples.ipynb --output products/report.html - -# Please run this code in terminal to check the html file: python3 -m http.server -# Then open your web browser, go to http://127.0.0.1:8000/, and find the products/report.html file - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/visualize_triples.ipynb b/demo/02-explorations/12-validate-jsonld/04-report-yfiles/visualize_triples.ipynb deleted file mode 100644 index 4eccb05..0000000 --- a/demo/02-explorations/12-validate-jsonld/04-report-yfiles/visualize_triples.ipynb +++ /dev/null @@ -1,128 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import networkx as nx\n", - "from yfiles_jupyter_graphs import GraphWidget" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# Load triples of the given TRO Declaration\n", - "triples = pd.read_csv(\"products/triples.csv\")\n", - "# Load triples to NetworkX's graph\n", - "# Reference: https://github.com/yWorks/yfiles-jupyter-graphs/blob/main/examples/import_from_networkx.ipynb\n", - "G = nx.from_pandas_edgelist(triples, source=\"source\", target=\"target\", edge_attr=[\"label\"], create_using=nx.DiGraph())\n", - "# Add node attributes: error_flag and error_msg\n", - "nx.set_node_attributes(G, None, name=\"error_flag\")\n", - "nx.set_node_attributes(G, None, name=\"error_msg\")\n", - "# Add an error manually: the artifact/100 node\n", - "G.add_node(\"composition/1/artifact/100\", error_flag=\"ERROR\", error_msg=\"The node of composition/1/artifact/100 should have an edge point to the node of trov#ResearchArtifact with the label of rdf#type\")\n", - "# Visualize graph with YFile\n", - "w = GraphWidget(graph = G)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f239e436d787485e93816af118172587", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "GraphWidget(layout=Layout(height='500px', width='100%'))" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Update node color\n", - "def custom_node_color_mapping(index, node):\n", - " if node[\"properties\"][\"label\"] == \"composition/1/artifact/100\":\n", - " color = \"#E26A6A\"\n", - " else:\n", - " color = \"#58BBBA\"\n", - " return color\n", - "\n", - "w.set_node_color_mapping(custom_node_color_mapping)\n", - "w.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"\n", - "# Load triples of the given TRO Declaration\n", - "triples = pd.read_csv(\"products/triples.csv\")\n", - "triples[\"error_flag\"] = \"\"\n", - "triples[\"error_msg\"] = \"\"\n", - "# Load triples to NetworkX's graph\n", - "# Reference: https://github.com/yWorks/yfiles-jupyter-graphs/blob/main/examples/import_from_networkx.ipynb\n", - "G = nx.from_pandas_edgelist(triples, source=\"source\", target=\"target\", edge_attr=[\"label\", \"error_flag\", \"error_msg\"], create_using=nx.DiGraph())\n", - "# Add an error manually: the (artifact/100, trov#ResearchArtifact) edge should exist\n", - "G.add_edge(\"composition/1/artifact/100\", \"trov#ResearchArtifact\", label=\"rdf#type\", error_flag=\"ERROR\", error_msg=\"This edge should exist.\")\n", - "# Visualize graph with YFile\n", - "w = GraphWidget(graph = G)\n", - "\n", - "# Update edge color\n", - "def custom_edge_color_mapping(index, edge):\n", - " if edge[\"properties\"][\"error_flag\"] == \"ERROR\":\n", - " color = \"#E26A6A\"\n", - " else:\n", - " color = \"#58BBBA\"\n", - " return color\n", - "w.set_edge_color_mapping(custom_edge_color_mapping)\n", - "w.show()\n", - "\"\"\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "gelato", - "language": "python", - "name": "gelato" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.15" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/Makefile b/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/data/tro.jsonld b/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/data/tro.jsonld deleted file mode 100644 index 48ffe6a..0000000 --- a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/data/tro.jsonld +++ /dev/null @@ -1,51 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro/1", - "@type": "trov:TransparentResearchObject", - - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:sha256": "art.sha256.1" - }] - }], - "trov:hasArrangement": { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "filepath1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, - "trov:hasLocation": "filepath2" - }] - } - }] -} \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/data/tro.schema.ttl b/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/data/tro.schema.ttl deleted file mode 100644 index 6ecd9c9..0000000 --- a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/data/tro.schema.ttl +++ /dev/null @@ -1,128 +0,0 @@ -@prefix rdf: . -@prefix rdfs: . -@prefix trov: . -@prefix : . - -@prefix xsd: . -@prefix sh: . -@prefix schema: . - -schema:TroShape - a sh:NodeShape ; - sh:targetClass trov:TransparentResearchObject ; - sh:property [ # One TRO has ANY number of comments - sh:path rdfs:comment ; - sh:datatype xsd:string ; - ] ; - sh:property [ # One TRO has EXACTLY ONE TRS - sh:path trov:wasAssembledBy ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:node schema:TrsShape ; - ] ; - sh:property [ # One TRO has at MOST ONE TSA - sh:path trov:wasTimestampedBy ; - sh:maxCount 1 ; - sh:node schema:TsaShape ; - ] ; - sh:property [ # One TRO has at LEAST ONE composition - sh:path trov:hasComposition ; - sh:minCount 1 ; - sh:node schema:CompShape ; - ] ; - sh:property [ # One TRO has at LEAST ONE arrangement - sh:path trov:hasArrangement ; - sh:minCount 1 ; - sh:node schema:ArrShape ; - ] . - - -schema:TrsShape - a sh:NodeShape ; - sh:targetClass trov:TrustedResearchSystem ; - sh:property [ - sh:path rdfs:comment ; - sh:datatype xsd:string ; - ] ; - sh:property [ # One TRS has EXACTLY ONE public key - sh:path trov:publicKey ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:TsaShape - a sh:NodeShape ; - sh:targetClass trov:TimeStampingAuthority ; - sh:property [ # One TSA has EXACTLY ONE public key - sh:path trov:publicKey ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:CompShape - a sh:NodeShape ; - sh:targetClass trov:ArtifactComposition ; - sh:property [ # Each composition has EXACTLY ONE fingerprint - sh:path trov:hasFingerprint ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:node schema:FingerprintShape ; - ] ; - sh:property [ # Each composition has at LEAST ONE artifact - sh:path trov:hasArtifact ; - sh:minCount 1 ; - sh:node schema:ArtifactShape ; - ] . - -schema:FingerprintShape - a sh:NodeShape ; - sh:targetClass trov:CompositionFingerprint ; - sh:property [ # Each composition has at EXACTLY ONE sha256 - sh:message "*** Each fingerprint should have EXACTLY ONE sha256 with String format ***" ; - sh:path trov:sha256 ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:ArtifactShape - a sh:NodeShape ; - sh:targetClass trov:ResearchArtifact ; - sh:property [ # Each artifact has at MOST ONE memeType - sh:path trov:mimeType ; - sh:datatype xsd:string ; - sh:maxCount 1 ; - ] ; - sh:property [ # Each artifact has EXACTLY ONE sha256 - sh:path trov:sha256 ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:ArrShape - a sh:NodeShape ; - sh:targetClass trov:ArtifactArrangement ; - sh:property [ # Each artifact has at LEAST ONE artifact locus - sh:path trov:hasLocus ; - sh:minCount 1 ; - sh:node schema:LocusShape ; - ] . - -schema:LocusShape - a sh:NodeShape ; - sh:targetClass trov:ArtifactLocus ; - sh:property [ # Each artifact locus is linked to a valid artifact - sh:path trov:hasArtifact ; - sh:class trov:ResearchArtifact ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] ; - sh:property [ # Each artifact locus has EXACTLY ONE location - sh:path trov:hasLocation ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . diff --git a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/scratch_report.gv b/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/scratch_report.gv deleted file mode 100644 index 2b06d4e..0000000 --- a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/scratch_report.gv +++ /dev/null @@ -1,24 +0,0 @@ -strict digraph "" { - "arrangement/1" [color="#f77580"]; - "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "arrangement/1/locus/2" [color="#f77580"]; - "arrangement/1" -> "arrangement/1/locus/2" [label="trov#hasLocus"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - "arrangement/1/locus/1" -> filepath1 [label="trov#hasLocation"]; - "arrangement/1/locus/2" -> "trov#ArtifactLocus" [label="rdf#type"]; - "composition/1/artifact/100" [color="#f77580"]; - "arrangement/1/locus/2" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; - "arrangement/1/locus/2" -> filepath2 [label="trov#hasLocation"]; - "composition/1/artifact/1" -> "trov#ResearchArtifact" [label="rdf#type"]; - "composition/1/artifact/1" -> "art.sha256.1" [label="trov#sha256"]; - "composition/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - "composition/1" -> "trov#ArtifactComposition" [label="rdf#type"]; - "composition/1" -> fp1 [label="trov#hasFingerprint"]; - fp1 -> "trov#CompositionFingerprint" [label="rdf#type"]; - fp1 -> "sha256.fp1" [label="trov#sha256"]; - "tro/1" -> "arrangement/1" [label="trov#hasArrangement"]; - "tro/1" -> "composition/1" [label="trov#hasComposition"]; - "tro/1" -> "trov#TransparentResearchObject" [label="rdf#type"]; -} diff --git a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/scratch_report.png b/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/scratch_report.png deleted file mode 100644 index b62f8de..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/scratch_report.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/tool_report.png b/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/tool_report.png deleted file mode 100644 index 955eb9b..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/tool_report.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/tool_report.txt b/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/tool_report.txt deleted file mode 100644 index 70a0303..0000000 --- a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/products/tool_report.txt +++ /dev/null @@ -1,4 +0,0 @@ -Node: arrangement/1/locus/2 -Error Message: Value does not have class trov:ResearchArtifact -Suggested Node(s) to be Updated: composition/1/artifact/100 - diff --git a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/run.sh b/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/run.sh deleted file mode 100644 index 3bec032..0000000 --- a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/run.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bash - -# paths to data files -TRO_DECLARATION_JSONLD_PATH="data/tro.jsonld" -TRO_DECLARATION_SCHEMA_PATH="data/tro.schema.ttl" -SCRATCH_REPORT_PATH="products/scratch_report" -TOOL_REPORT_PATH="products/tool_report" - -# ------------------------------------------------------------------------------ - -bash_cell 'dot report' << END_CELL - -python3 << END_PYTHON - -from pyshacl import validate -from rdflib import Graph -import pygraphviz as pgv -import pandas as pd -import subprocess - -mappings={ - "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf#", - "http://www.w3.org/2000/01/rdf-schema#": "rdfs#", - "https://w3id.org/trace/2023/05/trov#": "trov#", - "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/": "" -} - -with open("${TRO_DECLARATION_JSONLD_PATH}") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ -rows = [] -for r in g.query(q): - rows.append(r) -graphs = pd.DataFrame(rows, columns=["source", "label", "target"]).replace(mappings, regex=True) #.sort_values(by=["source", "target"]) - -# Validate JSON-LD file with SHACL -with open("${TRO_DECLARATION_SCHEMA_PATH}") as fin: - tro_schema = fin.read() -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r -q = """ - PREFIX : - - SELECT ?value ?msg - WHERE { - ?curr_node :focusNode ?focus . - ?curr_node :value ?value . - ?curr_node :resultMessage ?msg . - ?another_node :focusNode ?another_focus . - FILTER (?value != ?another_focus) - FILTER (?another_node != ?curr_node) - } -""" -rows = [] -for r in results_graph.query(q): - rows.append(r) -wrong = pd.DataFrame(rows, columns=["node", "msg"]).replace(mappings, regex=True).drop_duplicates() - -# Create a directed graph -G = pgv.AGraph(directed=True) - -for _, row in graphs.iterrows(): - G.add_edge(row["source"], row["target"], label=row["label"]) -for _, row in wrong.iterrows(): - G.add_node(row["node"], color="#f77580") - # G.add_edge(row["node"], row["msg"], label="ErrorMsg", color="#f77580") - -G.write("${SCRATCH_REPORT_PATH}.gv") -subprocess.run(["dot", "-Tpng", "${SCRATCH_REPORT_PATH}.gv", "-o", "${SCRATCH_REPORT_PATH}.png"]) - -END_PYTHON - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'report string with the validate_tro tool' << END_CELL - -validate_tro -f ${TRO_DECLARATION_JSONLD_PATH} -s ${TRO_DECLARATION_SCHEMA_PATH} - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'report txt file with the validate_tro tool' << END_CELL - -validate_tro -f ${TRO_DECLARATION_JSONLD_PATH} -s ${TRO_DECLARATION_SCHEMA_PATH} -o ${TOOL_REPORT_PATH} -of txt - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'report png file with the validate_tro tool' << END_CELL - -validate_tro -f ${TRO_DECLARATION_JSONLD_PATH} -s ${TRO_DECLARATION_SCHEMA_PATH} -o ${TOOL_REPORT_PATH} -of png - -END_CELL - -# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/run.txt b/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/run.txt deleted file mode 100644 index 399f5b8..0000000 --- a/demo/02-explorations/12-validate-jsonld/05-report-pygraphviz/run.txt +++ /dev/null @@ -1,111 +0,0 @@ -====================================================== bash cell | dot report ====================================================== - -python3 << END_PYTHON - -from pyshacl import validate -from rdflib import Graph -import pygraphviz as pgv -import pandas as pd -import subprocess - -mappings={ - "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf#", - "http://www.w3.org/2000/01/rdf-schema#": "rdfs#", - "https://w3id.org/trace/2023/05/trov#": "trov#", - "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/": "" -} - -with open("data/tro.jsonld") as fin: - tro_jsonld = fin.read() - -# Load JSON-LD file with RDFLib -g = Graph() -g.parse(data=tro_jsonld, format="json-ld") - -# Query the imported triples -q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ -rows = [] -for r in g.query(q): - rows.append(r) -graphs = pd.DataFrame(rows, columns=["source", "label", "target"]).replace(mappings, regex=True) #.sort_values(by=["source", "target"]) - -# Validate JSON-LD file with SHACL -with open("data/tro.schema.ttl") as fin: - tro_schema = fin.read() -r = validate(data_graph=tro_jsonld, - shacl_graph=tro_schema, - data_graph_format="json-ld", - inference='rdfs', - debug=True) -conforms, results_graph, results_text = r -q = """ - PREFIX : - - SELECT ?value ?msg - WHERE { - ?curr_node :focusNode ?focus . - ?curr_node :value ?value . - ?curr_node :resultMessage ?msg . - ?another_node :focusNode ?another_focus . - FILTER (?value != ?another_focus) - FILTER (?another_node != ?curr_node) - } -""" -rows = [] -for r in results_graph.query(q): - rows.append(r) -wrong = pd.DataFrame(rows, columns=["node", "msg"]).replace(mappings, regex=True).drop_duplicates() - -# Create a directed graph -G = pgv.AGraph(directed=True) - -for _, row in graphs.iterrows(): - G.add_edge(row["source"], row["target"], label=row["label"]) -for _, row in wrong.iterrows(): - G.add_node(row["node"], color="#f77580") - # G.add_edge(row["node"], row["msg"], label="ErrorMsg", color="#f77580") - -G.write("products/scratch_report.gv") -subprocess.run(["dot", "-Tpng", "products/scratch_report.gv", "-o", "products/scratch_report.png"]) - -END_PYTHON - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -======================================= bash cell | report string with the validate_tro tool ======================================= - -validate_tro -f data/tro.jsonld -s data/tro.schema.ttl - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Node: arrangement/1/locus/2 -Error Message: Value does not have class trov:ResearchArtifact -Suggested Node(s) to be Updated: composition/1/artifact/100 - - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -====================================== bash cell | report txt file with the validate_tro tool ====================================== - -validate_tro -f data/tro.jsonld -s data/tro.schema.ttl -o products/tool_report -of txt - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -====================================== bash cell | report png file with the validate_tro tool ====================================== - -validate_tro -f data/tro.jsonld -s data/tro.schema.ttl -o products/tool_report -of png - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/Makefile b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro3.jsonld b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro3.jsonld deleted file mode 100644 index f0d6d8e..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro3.jsonld +++ /dev/null @@ -1,102 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro/1", - "@type": "trov:TransparentResearchObject", - "rdfs:comment": "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies", - - "trov:wasAssembledBy": { - "@id": "trs", - "@type": "trov:TrustedResearchSystem", - "rdfs:comment": "TRS that enforces no policies", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:wasTimestampedBy": { - "@id": "tsa", - "@type": "trov:TimeStampingAuthority", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fingerprint", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" - }, - - { - "@id": "composition/1/artifact/2", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" - }] - }, - { - "@id": "composition/2", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fingerprint", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" - } - }], - - "trov:hasArrangement": [ - { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "file1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "file1" - }, - { - "@id": "arrangement/1/locus/3", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, - "trov:hasLocation": "file2" - }, - { - "@id": "arrangement/1/locus/4", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, - "trov:hasLocation": "file2" - } - ] - }] - }, - { "@id": "trs", "trov:publicKey": "trs.pk2" }, - { "@id": "tsa", "trov:publicKey": "tsa.pk2" }, - { "@id": "fingerprint", "trov:sha256": "fp2" } -]} diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro4.jsonld b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro4.jsonld deleted file mode 100644 index 80c6e1d..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro4.jsonld +++ /dev/null @@ -1,44 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro/1", - "@type": "trov:TransparentResearchObject", - - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:sha256": "art.sha256.1" - }] - }], - "trov:hasArrangement": { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "filepath1" - }] - } - }] -} \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro5.jsonld b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro5.jsonld deleted file mode 100644 index fb43907..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro5.jsonld +++ /dev/null @@ -1,46 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro/1", - "@type": "trov:TransparentResearchObject", - - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:sha256": "art.sha256.1" - }] - }], - "trov:hasArrangement": { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "filepath1" - }] - } - }, - { "@id": "fp1", "trov:sha256": "sha256.fp2" } -]} \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro1.gv b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro1.gv deleted file mode 100644 index 058a914..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro1.gv +++ /dev/null @@ -1,80 +0,0 @@ -strict digraph "" { - "arrangement/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "trov#ArtifactArrangement" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "arrangement/1/locus/2" [fillcolor="#fdccac", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/2" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; - "composition/1/artifact/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - filepath1 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> filepath1 [label="trov#hasLocation"]; - "arrangement/1/locus/2" -> "trov#ArtifactLocus" [label="rdf#type"]; - "composition/1/artifact/100" [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/2" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; - filepath2 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/2" -> filepath2 [label="trov#hasLocation"]; - "Value does not have class trov:ResearchArtifact" [fillcolor="#fdccac", - shape=box, - style="filled, rounded, dashed"]; - "arrangement/1/locus/2" -> "Value does not have class trov:ResearchArtifact" [label=ErrorMsg, - style=dashed]; - "trov#ResearchArtifact" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "trov#ResearchArtifact" [label="rdf#type"]; - "art.sha256.1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "art.sha256.1" [label="trov#sha256"]; - "composition/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - "trov#ArtifactComposition" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "trov#ArtifactComposition" [label="rdf#type"]; - fp1 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> fp1 [label="trov#hasFingerprint"]; - "trov#CompositionFingerprint" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - fp1 -> "trov#CompositionFingerprint" [label="rdf#type"]; - "sha256.fp1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - fp1 -> "sha256.fp1" [label="trov#sha256"]; - "tro/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "arrangement/1" [label="trov#hasArrangement"]; - "tro/1" -> "composition/1" [label="trov#hasComposition"]; - "trov#TransparentResearchObject" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "trov#TransparentResearchObject" [label="rdf#type"]; -} diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro1.png b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro1.png deleted file mode 100644 index 955eb9b..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro1.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro2.gv b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro2.gv deleted file mode 100644 index dfc46ef..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro2.gv +++ /dev/null @@ -1,168 +0,0 @@ -strict digraph "" { - "arrangement/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "trov#ArtifactArrangement" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "arrangement/1/locus/2" [fillcolor="#fdccac", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/2" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; - "composition/1/artifact/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - file1 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> file1 [label="trov#hasLocation"]; - "arrangement/1/locus/2" -> "trov#ArtifactLocus" [label="rdf#type"]; - "composition/1/artifact/100" [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/2" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; - file2 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/2" -> file2 [label="trov#hasLocation"]; - "Value does not have class trov:ResearchArtifact" [fillcolor="#fdccac", - shape=box, - style="filled, rounded, dashed"]; - "arrangement/1/locus/2" -> "Value does not have class trov:ResearchArtifact" [label=ErrorMsg, - style=dashed]; - "trov#ResearchArtifact" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "trov#ResearchArtifact" [label="rdf#type"]; - "text/plain" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "text/plain" [label="trov#mimeType"]; - b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c [label="trov#sha256"]; - "composition/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - "trov#ArtifactComposition" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "trov#ArtifactComposition" [label="rdf#type"]; - "composition/1/artifact/2" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "composition/1/artifact/2" [label="trov#hasArtifact"]; - fingerprint [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> fingerprint [label="trov#hasFingerprint"]; - "composition/1/artifact/2" -> "trov#ResearchArtifact" [label="rdf#type"]; - "composition/1/artifact/2" -> "text/plain" [label="trov#mimeType"]; - "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/2" -> "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" [label="trov#sha256"]; - "trov#CompositionFingerprint" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - fingerprint -> "trov#CompositionFingerprint" [label="rdf#type"]; - "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - fingerprint -> "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" [label="trov#sha256"]; - "tro/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "arrangement/1" [label="trov#hasArrangement"]; - "tro/1" -> "composition/1" [label="trov#hasComposition"]; - "trov#TransparentResearchObject" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "trov#TransparentResearchObject" [label="rdf#type"]; - "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies" [label="rdfs#comment"]; - trs [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> trs [label="trov#wasAssembledBy"]; - tsa [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> tsa [label="trov#wasTimestampedBy"]; - "trov#TrustedResearchSystem" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - trs -> "trov#TrustedResearchSystem" [label="rdf#type"]; - "TRS that enforces no policies" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - trs -> "TRS that enforces no policies" [label="rdfs#comment"]; - "-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+\ -GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+\ -iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+\ -CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+\ -1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - trs -> "-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+\ -GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+\ -iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+\ -CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+\ -1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" [label="trov#publicKey"]; - tsa -> "-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+\ -GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+\ -iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+\ -CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+\ -1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" [label="trov#publicKey"]; - "trov#TimeStampingAuthority" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - tsa -> "trov#TimeStampingAuthority" [label="rdf#type"]; -} diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro2.png b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro2.png deleted file mode 100644 index e6bffa7..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro2.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro3.gv b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro3.gv deleted file mode 100644 index 3a2a6eb..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro3.gv +++ /dev/null @@ -1,215 +0,0 @@ -strict digraph "" { - "arrangement/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "trov#ArtifactArrangement" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "arrangement/1/locus/2" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/2" [label="trov#hasLocus"]; - "arrangement/1/locus/3" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/3" [label="trov#hasLocus"]; - "arrangement/1/locus/4" [fillcolor="#fdccac", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/4" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; - "composition/1/artifact/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - file1 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> file1 [label="trov#hasLocation"]; - "arrangement/1/locus/2" -> "trov#ArtifactLocus" [label="rdf#type"]; - "arrangement/1/locus/2" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - "arrangement/1/locus/2" -> file1 [label="trov#hasLocation"]; - "arrangement/1/locus/3" -> "trov#ArtifactLocus" [label="rdf#type"]; - "composition/1/artifact/2" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/3" -> "composition/1/artifact/2" [label="trov#hasArtifact"]; - file2 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/3" -> file2 [label="trov#hasLocation"]; - "arrangement/1/locus/4" -> "trov#ArtifactLocus" [label="rdf#type"]; - "arrangement/1/locus/4" -> file2 [label="trov#hasLocation"]; - "composition/1/artifact/100" [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/4" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; - "Value does not have class trov:ResearchArtifact" [fillcolor="#fdccac", - shape=box, - style="filled, rounded, dashed"]; - "arrangement/1/locus/4" -> "Value does not have class trov:ResearchArtifact" [label=ErrorMsg, - style=dashed]; - "trov#ResearchArtifact" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "trov#ResearchArtifact" [label="rdf#type"]; - "text/plain" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "text/plain" [label="trov#mimeType"]; - b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c [label="trov#sha256"]; - "composition/1/artifact/2" -> "trov#ResearchArtifact" [label="rdf#type"]; - "composition/1/artifact/2" -> "text/plain" [label="trov#mimeType"]; - "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/2" -> "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" [label="trov#sha256"]; - "composition/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - "composition/1" -> "composition/1/artifact/2" [label="trov#hasArtifact"]; - "trov#ArtifactComposition" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "trov#ArtifactComposition" [label="rdf#type"]; - fingerprint [fillcolor="#fdccac", - shape=box, - style="filled, rounded"]; - "composition/1" -> fingerprint [label="trov#hasFingerprint"]; - "trov#CompositionFingerprint" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - fingerprint -> "trov#CompositionFingerprint" [label="rdf#type"]; - "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - fingerprint -> "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" [label="trov#sha256"]; - fp2 [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - fingerprint -> fp2 [label="trov#sha256"]; - "*** Each fingerprint should have EXACTLY ONE sha256 with String format ***" [fillcolor="#fdccac", - shape=box, - style="filled, rounded, dashed"]; - fingerprint -> "*** Each fingerprint should have EXACTLY ONE sha256 with String format ***" [label=ErrorMsg, - style=dashed]; - "composition/2" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/2" -> "trov#ArtifactComposition" [label="rdf#type"]; - "composition/2" -> fingerprint [label="trov#hasFingerprint"]; - "tro/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "arrangement/1" [label="trov#hasArrangement"]; - "tro/1" -> "composition/1" [label="trov#hasComposition"]; - "tro/1" -> "composition/2" [label="trov#hasComposition"]; - "trov#TransparentResearchObject" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "trov#TransparentResearchObject" [label="rdf#type"]; - "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies" [label="rdfs#comment"]; - trs [fillcolor="#fdccac", - shape=box, - style="filled, rounded"]; - "tro/1" -> trs [label="trov#wasAssembledBy"]; - tsa [fillcolor="#fdccac", - shape=box, - style="filled, rounded"]; - "tro/1" -> tsa [label="trov#wasTimestampedBy"]; - "trov#TrustedResearchSystem" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - trs -> "trov#TrustedResearchSystem" [label="rdf#type"]; - "TRS that enforces no policies" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - trs -> "TRS that enforces no policies" [label="rdfs#comment"]; - "-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+\ -GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+\ -iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+\ -CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+\ -1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - trs -> "-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+\ -GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+\ -iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+\ -CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+\ -1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" [label="trov#publicKey"]; - "trs.pk2" [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - trs -> "trs.pk2" [label="trov#publicKey"]; - "More than 1 values on ->trov:publicKey" [fillcolor="#fdccac", - shape=box, - style="filled, rounded, dashed"]; - trs -> "More than 1 values on ->trov:publicKey" [label=ErrorMsg, - style=dashed]; - tsa -> "-----BEGIN PGP PUBLIC KEY BLOCK----- -mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f -PFa62W7k1CWEm7KLcOO5hlmMvI+\ -GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 -TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 -HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+\ -iM4EEwEKADgWIQQS8oDdaGyb -HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK -CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+\ -CknyQ3yV/fpEU+IH2T6qS -xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N -IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+\ -1An5ogCOACg== -=vuaX ------END PGP PUBLIC KEY BLOCK----- -" [label="trov#publicKey"]; - "trov#TimeStampingAuthority" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - tsa -> "trov#TimeStampingAuthority" [label="rdf#type"]; - "tsa.pk2" [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - tsa -> "tsa.pk2" [label="trov#publicKey"]; - "More than 1 values on ->trov:publicKey" [fillcolor="#fdccac", - shape=box, - style="filled, rounded, dashed"]; - tsa -> "More than 1 values on ->trov:publicKey" [label=ErrorMsg, - style=dashed]; -} diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro3.png b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro3.png deleted file mode 100644 index a807538..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro3.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro4.gv b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro4.gv deleted file mode 100644 index b73e426..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro4.gv +++ /dev/null @@ -1,58 +0,0 @@ -strict digraph "" { - "arrangement/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "trov#ArtifactArrangement" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; - "composition/1/artifact/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - filepath1 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> filepath1 [label="trov#hasLocation"]; - "trov#ResearchArtifact" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "trov#ResearchArtifact" [label="rdf#type"]; - "art.sha256.1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "art.sha256.1" [label="trov#sha256"]; - "composition/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - "trov#ArtifactComposition" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "trov#ArtifactComposition" [label="rdf#type"]; - fp1 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> fp1 [label="trov#hasFingerprint"]; - "trov#CompositionFingerprint" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - fp1 -> "trov#CompositionFingerprint" [label="rdf#type"]; - "tro/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "arrangement/1" [label="trov#hasArrangement"]; - "tro/1" -> "composition/1" [label="trov#hasComposition"]; - "trov#TransparentResearchObject" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "trov#TransparentResearchObject" [label="rdf#type"]; -} diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro4.png b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro4.png deleted file mode 100644 index bfa2134..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro4.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro5.gv b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro5.gv deleted file mode 100644 index 2153330..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro5.gv +++ /dev/null @@ -1,71 +0,0 @@ -strict digraph "" { - "arrangement/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "trov#ArtifactArrangement" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; - "composition/1/artifact/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - filepath1 [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "arrangement/1/locus/1" -> filepath1 [label="trov#hasLocation"]; - "trov#ResearchArtifact" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "trov#ResearchArtifact" [label="rdf#type"]; - "art.sha256.1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1/artifact/1" -> "art.sha256.1" [label="trov#sha256"]; - "composition/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - "trov#ArtifactComposition" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "composition/1" -> "trov#ArtifactComposition" [label="rdf#type"]; - fp1 [fillcolor="#fdccac", - shape=box, - style="filled, rounded"]; - "composition/1" -> fp1 [label="trov#hasFingerprint"]; - "trov#CompositionFingerprint" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - fp1 -> "trov#CompositionFingerprint" [label="rdf#type"]; - "sha256.fp1" [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - fp1 -> "sha256.fp1" [label="trov#sha256"]; - "sha256.fp2" [fillcolor="#cbd5e8", - shape=box, - style="filled, rounded"]; - fp1 -> "sha256.fp2" [label="trov#sha256"]; - "*** Each fingerprint should have EXACTLY ONE sha256 with String format ***" [fillcolor="#fdccac", - shape=box, - style="filled, rounded, dashed"]; - fp1 -> "*** Each fingerprint should have EXACTLY ONE sha256 with String format ***" [label=ErrorMsg, - style=dashed]; - "tro/1" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "arrangement/1" [label="trov#hasArrangement"]; - "tro/1" -> "composition/1" [label="trov#hasComposition"]; - "trov#TransparentResearchObject" [fillcolor="#b3e2cd", - shape=box, - style="filled, rounded"]; - "tro/1" -> "trov#TransparentResearchObject" [label="rdf#type"]; -} diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro5.png b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro5.png deleted file mode 100644 index 41a00b5..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro5.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro5.txt b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro5.txt deleted file mode 100644 index 6f632ac..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/products/tro5.txt +++ /dev/null @@ -1,4 +0,0 @@ -Node: fp1 -Error Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Suggested Node(s) to be Updated: sha256.fp1, sha256.fp2 - diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/run.sh b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/run.sh deleted file mode 100644 index 75cd639..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/run.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env bash - -# paths to data files -TRO_DECLARATION_SCHEMA_PATH="data/tro.schema.ttl" - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 1 png: refer to a nonexistent artifact' << END_CELL - -validate_tro -f data/tro1.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro1 -of png -se True - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 1 gv: refer to a nonexistent artifact' << END_CELL - -validate_tro -f data/tro1.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro1 -of gv -se True - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 2 png: refer to a nonexistent artifact' << END_CELL - -validate_tro -f data/tro2.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro2 -of png -se True - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 2 gv: refer to a nonexistent artifact' << END_CELL - -validate_tro -f data/tro2.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro2 -of gv -se True - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 3 png: refer to a nonexistent artifact' << END_CELL - -validate_tro -f data/tro3.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro3 -of png -se True - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 3 gv: refer to a nonexistent artifact' << END_CELL - -validate_tro -f data/tro3.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro3 -of gv -se True - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 4 png: lack of sha256' << END_CELL - -validate_tro -f data/tro4.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro4 -of png -se True - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 4 gv: lack of sha256' << END_CELL - -validate_tro -f data/tro4.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro4 -of gv -se True - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 5 export as png: multiple sha256' << END_CELL - -validate_tro -f data/tro5.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro5 -of png -se True - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tro validation 5 export as gv: multiple sha256' << END_CELL - -validate_tro -f data/tro5.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro5 -of gv -se True - -END_CELL - -# ------------------------------------------------------------------------------ - - -bash_cell 'tro validation 5 export as txt: multiple sha256' << END_CELL - -validate_tro -f data/tro5.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -o products/tro5 -of txt -se True - -END_CELL - -# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/run.txt b/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/run.txt deleted file mode 100644 index 7237b74..0000000 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/run.txt +++ /dev/null @@ -1,914 +0,0 @@ -================================ bash cell | tro validation 1 png: refer to a nonexistent artifact ================================= - -validate_tro -f data/tro1.jsonld -s data/tro.schema.ttl -o products/tro1 -of png -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (4): -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Result Path: trov:wasAssembledBy - Message: Less than 1 values on ->trov:wasAssembledBy -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArrShape ; sh:path trov:hasArrangement ] - Focus Node: - Value Node: - Result Path: trov:hasArrangement - Message: Value does not conform to Shape schema1:ArrShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================= bash cell | tro validation 1 gv: refer to a nonexistent artifact ================================= - -validate_tro -f data/tro1.jsonld -s data/tro.schema.ttl -o products/tro1 -of gv -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (4): -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Result Path: trov:wasAssembledBy - Message: Less than 1 values on ->trov:wasAssembledBy -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArrShape ; sh:path trov:hasArrangement ] - Focus Node: - Value Node: - Result Path: trov:hasArrangement - Message: Value does not conform to Shape schema1:ArrShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================ bash cell | tro validation 2 png: refer to a nonexistent artifact ================================= - -validate_tro -f data/tro2.jsonld -s data/tro.schema.ttl -o products/tro2 -of png -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (3): -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArrShape ; sh:path trov:hasArrangement ] - Focus Node: - Value Node: - Result Path: trov:hasArrangement - Message: Value does not conform to Shape schema1:ArrShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================= bash cell | tro validation 2 gv: refer to a nonexistent artifact ================================= - -validate_tro -f data/tro2.jsonld -s data/tro.schema.ttl -o products/tro2 -of gv -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (3): -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArrShape ; sh:path trov:hasArrangement ] - Focus Node: - Value Node: - Result Path: trov:hasArrangement - Message: Value does not conform to Shape schema1:ArrShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================ bash cell | tro validation 3 png: refer to a nonexistent artifact ================================= - -validate_tro -f data/tro3.jsonld -s data/tro.schema.ttl -o products/tro3 -of png -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (13): -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArtifactShape ; sh:path trov:hasArtifact ] - Focus Node: - Result Path: trov:hasArtifact - Message: Less than 1 values on ->trov:hasArtifact -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Value Node: - Result Path: trov:wasAssembledBy - Message: Value does not conform to Shape schema1:TrsShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TsaShape ; sh:path trov:wasTimestampedBy ] - Focus Node: - Value Node: - Result Path: trov:wasTimestampedBy - Message: Value does not conform to Shape schema1:TsaShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Value Node: - Result Path: trov:hasComposition - Message: Value does not conform to Shape schema1:CompShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** - Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArtifactShape ; sh:path trov:hasArtifact ] - Focus Node: - Result Path: trov:hasArtifact - Message: Less than 1 values on ->trov:hasArtifact -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Value Node: - Result Path: trov:hasComposition - Message: Value does not conform to Shape schema1:CompShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArrShape ; sh:path trov:hasArrangement ] - Focus Node: - Value Node: - Result Path: trov:hasArrangement - Message: Value does not conform to Shape schema1:ArrShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -================================= bash cell | tro validation 3 gv: refer to a nonexistent artifact ================================= - -validate_tro -f data/tro3.jsonld -s data/tro.schema.ttl -o products/tro3 -of gv -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (13): -Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Value Node: - Result Path: trov:wasAssembledBy - Message: Value does not conform to Shape schema1:TrsShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TsaShape ; sh:path trov:wasTimestampedBy ] - Focus Node: - Value Node: - Result Path: trov:wasTimestampedBy - Message: Value does not conform to Shape schema1:TsaShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Value Node: - Result Path: trov:hasComposition - Message: Value does not conform to Shape schema1:CompShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Value Node: - Result Path: trov:hasComposition - Message: Value does not conform to Shape schema1:CompShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** - Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArtifactShape ; sh:path trov:hasArtifact ] - Focus Node: - Result Path: trov:hasArtifact - Message: Less than 1 values on ->trov:hasArtifact -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArrShape ; sh:path trov:hasArrangement ] - Focus Node: - Value Node: - Result Path: trov:hasArrangement - Message: Value does not conform to Shape schema1:ArrShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:LocusShape ; sh:path trov:hasLocus ] - Focus Node: - Value Node: - Result Path: trov:hasLocus - Message: Value does not conform to Shape schema1:LocusShape. See details for more information. - Details: - Constraint Violation in ClassConstraintComponent (http://www.w3.org/ns/shacl#ClassConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:class trov:ResearchArtifact ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:hasArtifact ] - Focus Node: - Value Node: - Result Path: trov:hasArtifact - Message: Value does not have class trov:ResearchArtifact -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:ArtifactShape ; sh:path trov:hasArtifact ] - Focus Node: - Result Path: trov:hasArtifact - Message: Less than 1 values on ->trov:hasArtifact -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:publicKey ] - Focus Node: - Result Path: trov:publicKey - Message: More than 1 values on ->trov:publicKey - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -========================================= bash cell | tro validation 4 png: lack of sha256 ========================================= - -validate_tro -f data/tro4.jsonld -s data/tro.schema.ttl -o products/tro4 -of png -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (4): -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Result Path: trov:wasAssembledBy - Message: Less than 1 values on ->trov:wasAssembledBy -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Value Node: - Result Path: trov:hasComposition - Message: Value does not conform to Shape schema1:CompShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -========================================= bash cell | tro validation 4 gv: lack of sha256 ========================================== - -validate_tro -f data/tro4.jsonld -s data/tro.schema.ttl -o products/tro4 -of gv -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (4): -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Result Path: trov:wasAssembledBy - Message: Less than 1 values on ->trov:wasAssembledBy -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Value Node: - Result Path: trov:hasComposition - Message: Value does not conform to Shape schema1:CompShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=================================== bash cell | tro validation 5 export as png: multiple sha256 ==================================== - -validate_tro -f data/tro5.jsonld -s data/tro.schema.ttl -o products/tro5 -of png -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (4): -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Result Path: trov:wasAssembledBy - Message: Less than 1 values on ->trov:wasAssembledBy -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Value Node: - Result Path: trov:hasComposition - Message: Value does not conform to Shape schema1:CompShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -==================================== bash cell | tro validation 5 export as gv: multiple sha256 ==================================== - -validate_tro -f data/tro5.jsonld -s data/tro.schema.ttl -o products/tro5 -of gv -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (4): -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Result Path: trov:wasAssembledBy - Message: Less than 1 values on ->trov:wasAssembledBy -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Value Node: - Result Path: trov:hasComposition - Message: Value does not conform to Shape schema1:CompShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - -=================================== bash cell | tro validation 5 export as txt: multiple sha256 ==================================== - -validate_tro -f data/tro5.jsonld -s data/tro.schema.ttl -o products/tro5 -of txt -se True - ------------------------------------------------------------ cell outputs ----------------------------------------------------------- -Validation Report -Conforms: False -Results (4): -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** -Constraint Violation in MinCountConstraintComponent (http://www.w3.org/ns/shacl#MinCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:TrsShape ; sh:path trov:wasAssembledBy ] - Focus Node: - Result Path: trov:wasAssembledBy - Message: Less than 1 values on ->trov:wasAssembledBy -Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:CompShape ; sh:path trov:hasComposition ] - Focus Node: - Value Node: - Result Path: trov:hasComposition - Message: Value does not conform to Shape schema1:CompShape. See details for more information. - Details: - Constraint Violation in NodeConstraintComponent (http://www.w3.org/ns/shacl#NodeConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:maxCount Literal("1", datatype=xsd:integer) ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:node schema1:FingerprintShape ; sh:path trov:hasFingerprint ] - Focus Node: - Value Node: - Result Path: trov:hasFingerprint - Message: Value does not conform to Shape schema1:FingerprintShape. See details for more information. - Details: - Constraint Violation in MaxCountConstraintComponent (http://www.w3.org/ns/shacl#MaxCountConstraintComponent): - Severity: sh:Violation - Source Shape: [ sh:datatype xsd:string ; sh:maxCount Literal("1", datatype=xsd:integer) ; sh:message Literal("*** Each fingerprint should have EXACTLY ONE sha256 with String format ***") ; sh:minCount Literal("1", datatype=xsd:integer) ; sh:path trov:sha256 ] - Focus Node: - Result Path: trov:sha256 - Message: *** Each fingerprint should have EXACTLY ONE sha256 with String format *** - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - - diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/Makefile b/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro.schema.ttl b/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro.schema.ttl deleted file mode 100644 index 6ecd9c9..0000000 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro.schema.ttl +++ /dev/null @@ -1,128 +0,0 @@ -@prefix rdf: . -@prefix rdfs: . -@prefix trov: . -@prefix : . - -@prefix xsd: . -@prefix sh: . -@prefix schema: . - -schema:TroShape - a sh:NodeShape ; - sh:targetClass trov:TransparentResearchObject ; - sh:property [ # One TRO has ANY number of comments - sh:path rdfs:comment ; - sh:datatype xsd:string ; - ] ; - sh:property [ # One TRO has EXACTLY ONE TRS - sh:path trov:wasAssembledBy ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:node schema:TrsShape ; - ] ; - sh:property [ # One TRO has at MOST ONE TSA - sh:path trov:wasTimestampedBy ; - sh:maxCount 1 ; - sh:node schema:TsaShape ; - ] ; - sh:property [ # One TRO has at LEAST ONE composition - sh:path trov:hasComposition ; - sh:minCount 1 ; - sh:node schema:CompShape ; - ] ; - sh:property [ # One TRO has at LEAST ONE arrangement - sh:path trov:hasArrangement ; - sh:minCount 1 ; - sh:node schema:ArrShape ; - ] . - - -schema:TrsShape - a sh:NodeShape ; - sh:targetClass trov:TrustedResearchSystem ; - sh:property [ - sh:path rdfs:comment ; - sh:datatype xsd:string ; - ] ; - sh:property [ # One TRS has EXACTLY ONE public key - sh:path trov:publicKey ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:TsaShape - a sh:NodeShape ; - sh:targetClass trov:TimeStampingAuthority ; - sh:property [ # One TSA has EXACTLY ONE public key - sh:path trov:publicKey ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:CompShape - a sh:NodeShape ; - sh:targetClass trov:ArtifactComposition ; - sh:property [ # Each composition has EXACTLY ONE fingerprint - sh:path trov:hasFingerprint ; - sh:minCount 1 ; - sh:maxCount 1 ; - sh:node schema:FingerprintShape ; - ] ; - sh:property [ # Each composition has at LEAST ONE artifact - sh:path trov:hasArtifact ; - sh:minCount 1 ; - sh:node schema:ArtifactShape ; - ] . - -schema:FingerprintShape - a sh:NodeShape ; - sh:targetClass trov:CompositionFingerprint ; - sh:property [ # Each composition has at EXACTLY ONE sha256 - sh:message "*** Each fingerprint should have EXACTLY ONE sha256 with String format ***" ; - sh:path trov:sha256 ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:ArtifactShape - a sh:NodeShape ; - sh:targetClass trov:ResearchArtifact ; - sh:property [ # Each artifact has at MOST ONE memeType - sh:path trov:mimeType ; - sh:datatype xsd:string ; - sh:maxCount 1 ; - ] ; - sh:property [ # Each artifact has EXACTLY ONE sha256 - sh:path trov:sha256 ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . - -schema:ArrShape - a sh:NodeShape ; - sh:targetClass trov:ArtifactArrangement ; - sh:property [ # Each artifact has at LEAST ONE artifact locus - sh:path trov:hasLocus ; - sh:minCount 1 ; - sh:node schema:LocusShape ; - ] . - -schema:LocusShape - a sh:NodeShape ; - sh:targetClass trov:ArtifactLocus ; - sh:property [ # Each artifact locus is linked to a valid artifact - sh:path trov:hasArtifact ; - sh:class trov:ResearchArtifact ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] ; - sh:property [ # Each artifact locus has EXACTLY ONE location - sh:path trov:hasLocation ; - sh:datatype xsd:string ; - sh:minCount 1 ; - sh:maxCount 1 ; - ] . diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro1.jsonld b/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro1.jsonld deleted file mode 100644 index 48ffe6a..0000000 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro1.jsonld +++ /dev/null @@ -1,51 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro/1", - "@type": "trov:TransparentResearchObject", - - "trov:hasComposition": [ - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fp1", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "sha256.fp1" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:sha256": "art.sha256.1" - }] - }], - "trov:hasArrangement": { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "filepath1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, - "trov:hasLocation": "filepath2" - }] - } - }] -} \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro2.jsonld b/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro2.jsonld deleted file mode 100644 index 1e90c36..0000000 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro2.jsonld +++ /dev/null @@ -1,76 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" - }], - - "@graph": [ - { - "@id": "tro/1", - "@type": "trov:TransparentResearchObject", - "rdfs:comment": "A composition of two files in a single arrangement endorsed by a TRS that enforces no policies", - - "trov:wasAssembledBy": { - "@id": "trs", - "@type": "trov:TrustedResearchSystem", - "rdfs:comment": "TRS that enforces no policies", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:wasTimestampedBy": { - "@id": "tsa", - "@type": "trov:TimeStampingAuthority", - "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" - }, - - "trov:hasComposition": - { - "@id": "composition/1", - "@type": "trov:ArtifactComposition", - - "trov:hasFingerprint": - { - "@id": "fingerprint", - "@type": "trov:CompositionFingerprint", - "trov:sha256": "218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc" - }, - - "trov:hasArtifact": [ - { - "@id": "composition/1/artifact/1", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c" - }, - - { - "@id": "composition/1/artifact/2", - "@type": "trov:ResearchArtifact", - "trov:mimeType": "text/plain", - "trov:sha256": "7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730" - }] - }, - - "trov:hasArrangement": [ - { - "@id": "arrangement/1", - "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ - { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, - "trov:hasLocation": "file1" - }, - { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", - "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, - "trov:hasLocation": "file2" - } - ] - }] - } -]} diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro1.png b/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro1.png deleted file mode 100644 index 4885a3b..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro1.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro2.png b/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro2.png deleted file mode 100644 index e4cd33e..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro2.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro3.png b/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro3.png deleted file mode 100644 index 01e1922..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro3.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro4.png b/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro4.png deleted file mode 100644 index 8b1e0ea..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro4.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro5.png b/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro5.png deleted file mode 100644 index 728f6f6..0000000 Binary files a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro5.png and /dev/null differ diff --git a/demo/02-explorations/12-validate-jsonld/Makefile b/demo/02-explorations/12-validate-jsonld/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/12-validate-jsonld/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/Makefile b/demo/02-explorations/Makefile deleted file mode 100644 index 68e529c..0000000 --- a/demo/02-explorations/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ${SHELL_NOTEBOOK_DOT_DIR}/Makefile.demo-runner diff --git a/demo/02-explorations/common/trace-vocab.jsonld b/demo/02-explorations/common/trace-vocab.jsonld deleted file mode 100644 index 95fae6d..0000000 --- a/demo/02-explorations/common/trace-vocab.jsonld +++ /dev/null @@ -1,102 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [ - - { - "@id": "trov:Policy", - "@type": "rdfs:Class", - "rdfs:label": "Policy" - }, - { - "@id": "trov:ObjectPolicy", - "@type": "rdfs:Class", - "rdfs:label": "ObjectPolicy", - "rdfs:subClassOf": { "@id": "trov:Policy" } - }, - { - "@id": "trov:SystemPolicy", - "@type": "rdfs:Class", - "rdfs:label": "SystemPolicy", - "rdfs:subClassOf": { "@id": "trov:Policy" } - }, - - { - "@id": "trov:enforces", - "@type": "rdf:Property", - "rdfs:label": "enforces" - }, - - - { - "@id": "trov:IncludeAllInput", - "@type": "trov:ObjectPolicy", - "rdfs:label": "IncludeAllInput", - "rdfs:comment": "Research object includes all inputs." - }, - { - "@id": "trov:AllInputAvailableBeforeRuntime", - "@type": "trov:SystemPolicy", - "rdfs:label": "AllInputAvailableBeforeRuntime", - "rdfs:comment": "Research system makes all inputs available prior to runtime." - }, - { - "@id": "trov:AllInputAvailableAfterRuntime", - "@type": "trov:SystemPolicy", - "rdfs:label": "AllInputAvailableAfterRuntime", - "rdfs:comment": "Research system makes all inputs available after runtime." - }, - { - "@id": "trov:IncludeAllOutput", - "@type": "trov:ObjectPolicy", - "rdfs:label": "IncludeAllOutput", - "rdfs:comment": "Research object includes all outputs." - }, - { - "@id": "trov:IncludeAllCode", - "@type": "trov:ObjectPolicy", - "rdfs:label": "IncludeAllCode", - "rdfs:comment": "Research object includes all code." - }, - { - "@id": "trov:DescribeSoftwareEnvironment", - "@type": "trov:ObjectPolicy", - "rdfs:label": "DescribeSoftwareEnvironment", - "rdfs:comment": "Research object describes the full software environment." - }, - { - "@id": "trov:PreventInternetAccess", - "@type": "trov:SystemPolicy", - "rdfs:label": "PreventInternetAccess", - "rdfs:comment": "Research system prevents internet access during execution." - }, - { - "@id": "trov:PreventInterventionDuringRuntime", - "@type": "trov:SystemPolicy", - "rdfs:label": "PreventInterventionDuringRuntime", - "rdfs:comment": "Research system prevents interaction with author of package during runtime." - }, - { - "@id": "trov:PreventInterventionBeforeRuntime", - "@type": "trov:SystemPolicy", - "rdfs:label": "PreventInterventionBeforeRuntime", - "rdfs:comment": "Research system prevents interaction with author prior to runtime." - }, - { - "@id": "trov:TrackIntermediateSteps", - "@type": "trov:SystemPolicy", - "rdfs:label": "TrackIntermediateSteps", - "rdfs:comment": "Research system tracks intermediate steps." - }, - { - "@id": "trov:EvidenceRuntime", - "@type": "trov:SystemPolicy", - "rdfs:label": "EvidenceRuntime", - "rdfs:comment": "Research system shows evidence of runtime." - } - ] -} diff --git a/demo/02-explorations/common/tro-01-from-minimal-trs.jsonld b/demo/02-explorations/common/tro-01-from-minimal-trs.jsonld deleted file mode 100644 index 166d527..0000000 --- a/demo/02-explorations/common/tro-01-from-minimal-trs.jsonld +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" } - }] -} diff --git a/demo/02-explorations/common/tro-02-from-type-a-trs.jsonld b/demo/02-explorations/common/tro-02-from-type-a-trs.jsonld deleted file mode 100644 index 96e6029..0000000 --- a/demo/02-explorations/common/tro-02-from-type-a-trs.jsonld +++ /dev/null @@ -1,21 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/02", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/02" }, - - "trov:satisfies": [ - { "@id": "trov:IncludeAllOutput" }, - { "@id": "trov:IncludeAllCode" }, - { "@id": "trov:DescribeSoftwareEnvironment" } - ] - - }] -} diff --git a/demo/02-explorations/common/tro-03-from-type-b2-trs.jsonld b/demo/02-explorations/common/tro-03-from-type-b2-trs.jsonld deleted file mode 100644 index ac12701..0000000 --- a/demo/02-explorations/common/tro-03-from-type-b2-trs.jsonld +++ /dev/null @@ -1,21 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/03", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/03" }, - - "trov:satisfies": [ - { "@id": "trov:IncludeAllOutput" }, - { "@id": "trov:IncludeAllCode" }, - { "@id": "trov:DescribeSoftwareEnvironment" } - ] - - }] -} \ No newline at end of file diff --git a/demo/02-explorations/common/trs-01-minimal.jsonld b/demo/02-explorations/common/trs-01-minimal.jsonld deleted file mode 100644 index 8a08f35..0000000 --- a/demo/02-explorations/common/trs-01-minimal.jsonld +++ /dev/null @@ -1,15 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - - }], - - "@graph": [{ - - "@id": "trov:trs/01", - "@type": "trov:System", - "rdfs:label": "Minimal TRS", - "rdfs:comment": "TRS that enforces no policies." - }] -} diff --git a/demo/02-explorations/common/trs-02-type-a.jsonld b/demo/02-explorations/common/trs-02-type-a.jsonld deleted file mode 100644 index b4954b1..0000000 --- a/demo/02-explorations/common/trs-02-type-a.jsonld +++ /dev/null @@ -1,34 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:trs/02", - "@type": "trov:System", - "rdfs:label": "Example Type B.1 TRS", - "rdfs:comment": "TRS that implements a loose queue.", - - "trov:enforces": [ - { "@id": "trov:IncludeAllOutput" }, - { "@id": "trov:IncludeAllCode" }, - { "@id": "trov:DescribeSoftwareEnvironment" }, - { "@id": "trov:PreventInterventionDuringRuntime" }, - { "@id": "trov:EvidenceRuntime" } - ], - - "trov:prevents": [ - { "@id": "trov:PreventInternetAccess" } - ], - - "trov:allows": [ - { "@id": "trov:IncludeAllInput" }, - { "@id": "trov:AllInputAvailableBeforeRuntime" }, - { "@id": "trov:AllInputAvailableAfterRuntime" }, - { "@id": "trov:PreventInterventionBeforeRuntime" }, - { "@id": "TrackIntermediateSteps" } - ] - }] -} diff --git a/demo/02-explorations/common/trs-03-type-b2.jsonld b/demo/02-explorations/common/trs-03-type-b2.jsonld deleted file mode 100644 index 77af599..0000000 --- a/demo/02-explorations/common/trs-03-type-b2.jsonld +++ /dev/null @@ -1,35 +0,0 @@ -{ - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:trs/03", - "@type": "trov:System", - "rdfs:label": "Example Type B.2 TRS", - "rdfs:comment": "TRS that implements a transient data.", - - "trov:enforces": [ - { "@id": "trov:AllInputAvailableBeforeRuntime" }, - { "@id": "trov:IncludeAllOutput" }, - { "@id": "trov:IncludeAllCode" }, - { "@id": "trov:DescribeSoftwareEnvironment" }, - { "@id": "trov:PreventInterventionDuringRuntime" }, - { "@id": "trov:EvidenceRuntime" } - ], - - "trov:prevents": [ - { "@id": "trov:IncludeAllInput" }, - { "@id": "trov:AllInputAvailableAfterRuntime" } - ], - - "trov:allows": [ - { "@id": "trov:IncludeAllInput" }, - { "@id": "trov:PreventInternetAccess" }, - { "@id": "trov:PreventInterventionBeforeRuntime" }, - { "@id": "trov:TrackIntermediateSteps" } - ] - }] -} diff --git a/demo/02-explorations/common/trs-queries.sh b/demo/02-explorations/common/trs-queries.sh deleted file mode 100644 index 1351150..0000000 --- a/demo/02-explorations/common/trs-queries.sh +++ /dev/null @@ -1,144 +0,0 @@ - -# ------------------------------------------------------------------------------ - -bash_cell 'query trs enforced policies' << END_CELL - -# What TRS policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdf:type trov:SystemPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'query tro enforced policies' << END_CELL - -# What TRO policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdf:type trov:ObjectPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'query all enforced policies' << END_CELL - -# What policies are enforced by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:enforces ?policy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'query trs prevented policies' << END_CELL - -# What TRS policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdf:type trov:SystemPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'query tro prevented policies' << END_CELL - -# What TRO policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdf:type trov:ObjectPolicy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'query all prevented policies' << END_CELL - -# What policies are prevented by the TRS? - -geist query --dataset kb << __END_QUERY__ - - PREFIX rdf: - PREFIX trov: - - SELECT DISTINCT ?trs ?policyName ?policyDescription - WHERE { - ?trs rdf:type trov:System . - ?trs trov:prevents ?policy . - ?policy rdfs:label ?policyName . - ?policy rdfs:comment ?policyDescription . - } ORDER BY ?trs ?policyName - -__END_QUERY__ - -END_CELL - -# ------------------------------------------------------------------------------ diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/Makefile b/demo/02-tro-examples/01-two-artifacts-no-trp/Makefile similarity index 100% rename from demo/01-trov-examples/02-three-artifacts-one-trp/Makefile rename to demo/02-tro-examples/01-two-artifacts-no-trp/Makefile diff --git a/demo/01-trov-examples/01-two-artifacts-no-trp/run.sh b/demo/02-tro-examples/01-two-artifacts-no-trp/run.sh similarity index 100% rename from demo/01-trov-examples/01-two-artifacts-no-trp/run.sh rename to demo/02-tro-examples/01-two-artifacts-no-trp/run.sh diff --git a/demo/02-tro-examples/01-two-artifacts-no-trp/run.txt b/demo/02-tro-examples/01-two-artifacts-no-trp/run.txt new file mode 100644 index 0000000..412a8fd --- /dev/null +++ b/demo/02-tro-examples/01-two-artifacts-no-trp/run.txt @@ -0,0 +1,340 @@ +================================================ bash cell | import trov vocabulary ================================================ + +# Destroy the dataset +geist destroy rdflib --dataset kb --quiet + +# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES +geist create rdflib --dataset kb --inputformat json-ld --inputfile /mnt/trace-model/exports/trace-vocab.jsonld --infer owl + +# Import TRO and TRS as JSON-LD and export as N-TRIPLES +geist export rdflib --dataset kb --outputformat nt | sort | grep trov + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- + . + "A set of loci describing the location of one or more artifacts" . + "ArtifactArrangement" . + . + . + . + . + "Base class for collections of one or more artifacts." . + "ArtifactCollection" . + . + . + "A set of artifacts described by a TRO." . + "ArtifactComposition" . + . + . + . + "The location of a specific artifact." . + "ArtifactLocus" . + . + . + . + "The capability to prevent Internet access during a TRP." . + "CanProvideInternetIsolation" . + . + . + . + . + . + "Unique fingerprint of a particular artifact composition" . + "CompositionFingerprint" . + . + . + "The policy of always preventing Internet access during a TRP." . + "EnforcesInternetIsolation" . + . + . + . + . + . + . + "TRO composition includes all input data employed in creating the TRO." . + "IncludesAllInputData" . + . + . + . + . + "A TRO requires internet access recording." . + "InternetAccessRecording" . + . + . + . + . + "A TRO requires internet isolation." . + "InternetIsolation" . + . + . + . + . + "A research artifact described by a TRO." . + "ResearchArtifact" . + . + . + "An attribute of a TRS, TRP, or TRO." . + "TREAttribute" . + . + . + "An attribute of a particular TRO." . + "TROAttribute" . + . + . + . + "An attribute of a TRP." . + "TRPAttribute" . + . + . + . + "An attribute of a TRS." . + "TRSAttribute" . + . + . + . + "A capability of a TRS." . + "TRSCapability" . + . + . + . + . + "A policy always enforced by a particular TRS." . + "TRSPolicy" . + . + . + . + . + . + "A timestamping authority trusted by a TRS." . + "TimeStampingAuthority" . + . + . + . + "Common base class for TRSs, TRPs, and TROs." . + "TransparentResearchElement" . + . + . + "A set of research artifacts produced by a TRP and signed by the performing TRS." . + "TransparentResearchObject" . + . + . + . + "A set of research operations performed by a TRS." . + "An execution of a research process" . + "TransparentResearchPerformance" . + . + . + . + "A system certified to perform TRPs and assemble TROs." . + "TransparentResearchSystem" . + . + . + . + . + . + "accessedArrangement" . + . + . + . + . + . + . + . + . + . + "contributedToArrangement" . + . + . + . + . + . + . + . + . + . + "hadPerformanceAttribute" . + . + . + . + . + . + . + . + . + "hasArrangement" . + . + . + . + . + . + . + . + . + "hasArtifact" . + . + . + . + . + . + . + . + . + "hasLocus" . + . + . + . + . + . + . + . + . + "hasCapability" . + . + . + . + . + . + . + . + . + . + "hasComposition" . + . + . + . + . + . + . + . + . + "hasFingerprint" . + . + . + . + . + . + . + . + "hasLocus" . + . + . + . + . + . + . + . + "hasPerformance" . + . + . + . + . + . + . + . + . + . + "warrantedBy" . + . + . + . + . + . + . + . + . + . + . + "wasAssembledBy" . + . + . + . + . + . + . + . + . + "wasConductedBy" . + . + . + . + . + . + . + . + . + "wasTimestampedBy" . + . + . + . + . + . +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================ bash cell | import tro declaration ================================================ + +# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES +geist load rdflib --dataset kb --inputformat json-ld --inputfile tro/tro.jsonld + +# Import TRO and TRS as JSON-LD and export as N-TRIPLES +geist export rdflib --dataset kb --outputformat nt | sort | grep trov-example + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================= bash cell | query tro attributes ================================================= + +# What subclasses of TROAttribute have been defined? + +geist query rdflib --dataset kb << __END_QUERY__ + + PREFIX rdfs: + PREFIX trov: + + SELECT DISTINCT ?attribute ?attributeLabel ?attributeComment + WHERE { + ?attribute rdfs:subClassOf trov:TROAttribute . + ?attribute rdfs:label ?attributeLabel . + ?attribute rdfs:comment ?attributeComment . + } ORDER BY ?attribute ?attributeLabel ?attributeComment + +__END_QUERY__ + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +| | attribute | attributeLabel | attributeComment | +|---:|:-----------------------------------------------------------|:---------------------|:----------------------------------------------------------------------| +| 0 | | IncludesAllInputData | TRO composition includes all input data employed in creating the TRO. | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================= bash cell | query trs attributes ================================================= + +# What subclasses of TRSAttribute have been defined? + +geist query rdflib --dataset kb << __END_QUERY__ + + PREFIX rdfs: + PREFIX trov: + + SELECT DISTINCT ?attribute ?attributeLabel ?attributeComment + WHERE { + ?attribute rdfs:subClassOf trov:TRSAttribute . + ?attribute rdfs:label ?attributeLabel . + ?attribute rdfs:comment ?attributeComment . + } ORDER BY ?attribute ?attributeLabel ?attributeComment + +__END_QUERY__ + +# Destroy the dataset +geist destroy rdflib --dataset kb + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +| | attribute | attributeLabel | attributeComment | +|---:|:------------------------------------------------------------------|:----------------------------|:--------------------------------------------------------------| +| 0 | | CanProvideInternetIsolation | The capability to prevent Internet access during a TRP. | +| 1 | | EnforcesInternetIsolation | The policy of always preventing Internet access during a TRP. | +| 2 | | TRSCapability | A capability of a TRS. | +| 3 | | TRSPolicy | A policy always enforced by a particular TRS. | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/demo/01-trov-examples/01-two-artifacts-no-trp/tro/file1 b/demo/02-tro-examples/01-two-artifacts-no-trp/tro/file1 similarity index 100% rename from demo/01-trov-examples/01-two-artifacts-no-trp/tro/file1 rename to demo/02-tro-examples/01-two-artifacts-no-trp/tro/file1 diff --git a/demo/01-trov-examples/01-two-artifacts-no-trp/tro/file2 b/demo/02-tro-examples/01-two-artifacts-no-trp/tro/file2 similarity index 100% rename from demo/01-trov-examples/01-two-artifacts-no-trp/tro/file2 rename to demo/02-tro-examples/01-two-artifacts-no-trp/tro/file2 diff --git a/demo/02-explorations/12-validate-jsonld/01-jsonschema/data/tro1_c.jsonld b/demo/02-tro-examples/01-two-artifacts-no-trp/tro/tro.jsonld similarity index 90% rename from demo/02-explorations/12-validate-jsonld/01-jsonschema/data/tro1_c.jsonld rename to demo/02-tro-examples/01-two-artifacts-no-trp/tro/tro.jsonld index fda2e4f..4cb5179 100644 --- a/demo/02-explorations/12-validate-jsonld/01-jsonschema/data/tro1_c.jsonld +++ b/demo/02-tro-examples/01-two-artifacts-no-trp/tro/tro.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/02-tro-examples/01-two-artifacts-no-trp/" }], "@graph": [ @@ -14,7 +14,7 @@ "trov:wasAssembledBy": { "@id": "trs", - "@type": "trov:TrustedResearchSystem", + "@type": "trov:TransparentResearchSystem", "rdfs:comment": "TRS that enforces no policies", "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" }, @@ -57,16 +57,16 @@ { "@id": "arrangement/1", "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "file1" }, { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/2", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, "trov:hasLocation": "file2" } diff --git a/demo/01-trov-examples/01-two-artifacts-no-trp/trs/private.asc b/demo/02-tro-examples/01-two-artifacts-no-trp/trs/private.asc similarity index 100% rename from demo/01-trov-examples/01-two-artifacts-no-trp/trs/private.asc rename to demo/02-tro-examples/01-two-artifacts-no-trp/trs/private.asc diff --git a/demo/01-trov-examples/01-two-artifacts-no-trp/trs/public.gpg b/demo/02-tro-examples/01-two-artifacts-no-trp/trs/public.gpg similarity index 100% rename from demo/01-trov-examples/01-two-artifacts-no-trp/trs/public.gpg rename to demo/02-tro-examples/01-two-artifacts-no-trp/trs/public.gpg diff --git a/demo/01-trov-examples/01-two-artifacts-no-trp/trs/trs.jsonld b/demo/02-tro-examples/01-two-artifacts-no-trp/trs/trs.jsonld similarity index 93% rename from demo/01-trov-examples/01-two-artifacts-no-trp/trs/trs.jsonld rename to demo/02-tro-examples/01-two-artifacts-no-trp/trs/trs.jsonld index 3a036ee..099ee02 100644 --- a/demo/01-trov-examples/01-two-artifacts-no-trp/trs/trs.jsonld +++ b/demo/02-tro-examples/01-two-artifacts-no-trp/trs/trs.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/02-tro-examples/01-two-artifacts-no-trp/" }], "@graph": [{ diff --git a/demo/01-trov-examples/03-skope-lbda-processing/Makefile b/demo/02-tro-examples/02-three-artifacts-one-trp/Makefile similarity index 100% rename from demo/01-trov-examples/03-skope-lbda-processing/Makefile rename to demo/02-tro-examples/02-three-artifacts-one-trp/Makefile diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/run.sh b/demo/02-tro-examples/02-three-artifacts-one-trp/run.sh similarity index 100% rename from demo/01-trov-examples/02-three-artifacts-one-trp/run.sh rename to demo/02-tro-examples/02-three-artifacts-one-trp/run.sh diff --git a/demo/02-tro-examples/02-three-artifacts-one-trp/run.txt b/demo/02-tro-examples/02-three-artifacts-one-trp/run.txt new file mode 100644 index 0000000..412a8fd --- /dev/null +++ b/demo/02-tro-examples/02-three-artifacts-one-trp/run.txt @@ -0,0 +1,340 @@ +================================================ bash cell | import trov vocabulary ================================================ + +# Destroy the dataset +geist destroy rdflib --dataset kb --quiet + +# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES +geist create rdflib --dataset kb --inputformat json-ld --inputfile /mnt/trace-model/exports/trace-vocab.jsonld --infer owl + +# Import TRO and TRS as JSON-LD and export as N-TRIPLES +geist export rdflib --dataset kb --outputformat nt | sort | grep trov + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- + . + "A set of loci describing the location of one or more artifacts" . + "ArtifactArrangement" . + . + . + . + . + "Base class for collections of one or more artifacts." . + "ArtifactCollection" . + . + . + "A set of artifacts described by a TRO." . + "ArtifactComposition" . + . + . + . + "The location of a specific artifact." . + "ArtifactLocus" . + . + . + . + "The capability to prevent Internet access during a TRP." . + "CanProvideInternetIsolation" . + . + . + . + . + . + "Unique fingerprint of a particular artifact composition" . + "CompositionFingerprint" . + . + . + "The policy of always preventing Internet access during a TRP." . + "EnforcesInternetIsolation" . + . + . + . + . + . + . + "TRO composition includes all input data employed in creating the TRO." . + "IncludesAllInputData" . + . + . + . + . + "A TRO requires internet access recording." . + "InternetAccessRecording" . + . + . + . + . + "A TRO requires internet isolation." . + "InternetIsolation" . + . + . + . + . + "A research artifact described by a TRO." . + "ResearchArtifact" . + . + . + "An attribute of a TRS, TRP, or TRO." . + "TREAttribute" . + . + . + "An attribute of a particular TRO." . + "TROAttribute" . + . + . + . + "An attribute of a TRP." . + "TRPAttribute" . + . + . + . + "An attribute of a TRS." . + "TRSAttribute" . + . + . + . + "A capability of a TRS." . + "TRSCapability" . + . + . + . + . + "A policy always enforced by a particular TRS." . + "TRSPolicy" . + . + . + . + . + . + "A timestamping authority trusted by a TRS." . + "TimeStampingAuthority" . + . + . + . + "Common base class for TRSs, TRPs, and TROs." . + "TransparentResearchElement" . + . + . + "A set of research artifacts produced by a TRP and signed by the performing TRS." . + "TransparentResearchObject" . + . + . + . + "A set of research operations performed by a TRS." . + "An execution of a research process" . + "TransparentResearchPerformance" . + . + . + . + "A system certified to perform TRPs and assemble TROs." . + "TransparentResearchSystem" . + . + . + . + . + . + "accessedArrangement" . + . + . + . + . + . + . + . + . + . + "contributedToArrangement" . + . + . + . + . + . + . + . + . + . + "hadPerformanceAttribute" . + . + . + . + . + . + . + . + . + "hasArrangement" . + . + . + . + . + . + . + . + . + "hasArtifact" . + . + . + . + . + . + . + . + . + "hasLocus" . + . + . + . + . + . + . + . + . + "hasCapability" . + . + . + . + . + . + . + . + . + . + "hasComposition" . + . + . + . + . + . + . + . + . + "hasFingerprint" . + . + . + . + . + . + . + . + "hasLocus" . + . + . + . + . + . + . + . + "hasPerformance" . + . + . + . + . + . + . + . + . + . + "warrantedBy" . + . + . + . + . + . + . + . + . + . + . + "wasAssembledBy" . + . + . + . + . + . + . + . + . + "wasConductedBy" . + . + . + . + . + . + . + . + . + "wasTimestampedBy" . + . + . + . + . + . +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================ bash cell | import tro declaration ================================================ + +# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES +geist load rdflib --dataset kb --inputformat json-ld --inputfile tro/tro.jsonld + +# Import TRO and TRS as JSON-LD and export as N-TRIPLES +geist export rdflib --dataset kb --outputformat nt | sort | grep trov-example + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================= bash cell | query tro attributes ================================================= + +# What subclasses of TROAttribute have been defined? + +geist query rdflib --dataset kb << __END_QUERY__ + + PREFIX rdfs: + PREFIX trov: + + SELECT DISTINCT ?attribute ?attributeLabel ?attributeComment + WHERE { + ?attribute rdfs:subClassOf trov:TROAttribute . + ?attribute rdfs:label ?attributeLabel . + ?attribute rdfs:comment ?attributeComment . + } ORDER BY ?attribute ?attributeLabel ?attributeComment + +__END_QUERY__ + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +| | attribute | attributeLabel | attributeComment | +|---:|:-----------------------------------------------------------|:---------------------|:----------------------------------------------------------------------| +| 0 | | IncludesAllInputData | TRO composition includes all input data employed in creating the TRO. | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================= bash cell | query trs attributes ================================================= + +# What subclasses of TRSAttribute have been defined? + +geist query rdflib --dataset kb << __END_QUERY__ + + PREFIX rdfs: + PREFIX trov: + + SELECT DISTINCT ?attribute ?attributeLabel ?attributeComment + WHERE { + ?attribute rdfs:subClassOf trov:TRSAttribute . + ?attribute rdfs:label ?attributeLabel . + ?attribute rdfs:comment ?attributeComment . + } ORDER BY ?attribute ?attributeLabel ?attributeComment + +__END_QUERY__ + +# Destroy the dataset +geist destroy rdflib --dataset kb + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +| | attribute | attributeLabel | attributeComment | +|---:|:------------------------------------------------------------------|:----------------------------|:--------------------------------------------------------------| +| 0 | | CanProvideInternetIsolation | The capability to prevent Internet access during a TRP. | +| 1 | | EnforcesInternetIsolation | The policy of always preventing Internet access during a TRP. | +| 2 | | TRSCapability | A capability of a TRS. | +| 3 | | TRSPolicy | A policy always enforced by a particular TRS. | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/tro/file1 b/demo/02-tro-examples/02-three-artifacts-one-trp/tro/file1 similarity index 100% rename from demo/01-trov-examples/02-three-artifacts-one-trp/tro/file1 rename to demo/02-tro-examples/02-three-artifacts-one-trp/tro/file1 diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/tro/file2 b/demo/02-tro-examples/02-three-artifacts-one-trp/tro/file2 similarity index 100% rename from demo/01-trov-examples/02-three-artifacts-one-trp/tro/file2 rename to demo/02-tro-examples/02-three-artifacts-one-trp/tro/file2 diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/tro/file3 b/demo/02-tro-examples/02-three-artifacts-one-trp/tro/file3 similarity index 100% rename from demo/01-trov-examples/02-three-artifacts-one-trp/tro/file3 rename to demo/02-tro-examples/02-three-artifacts-one-trp/tro/file3 diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/tro/tro.jsonld b/demo/02-tro-examples/02-three-artifacts-one-trp/tro/tro.jsonld similarity index 88% rename from demo/01-trov-examples/02-three-artifacts-one-trp/tro/tro.jsonld rename to demo/02-tro-examples/02-three-artifacts-one-trp/tro/tro.jsonld index a0572ce..77e1767 100644 --- a/demo/01-trov-examples/02-three-artifacts-one-trp/tro/tro.jsonld +++ b/demo/02-tro-examples/02-three-artifacts-one-trp/tro/tro.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/01-trov-examples/02-three-artifacts-one-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/02-tro-examples/02-three-artifacts-one-trp/" }], "@graph": [ @@ -14,7 +14,7 @@ "trov:wasAssembledBy": { "@id": "trs", - "@type": "trov:TrustedResearchSystem", + "@type": "trov:TransparentResearchSystem", "rdfs:comment": "TRS that can provide Internet isolation", "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n", "trov:hasCapability": [ @@ -77,16 +77,16 @@ "@id": "arrangement/1", "@type": "trov:ArtifactArrangement", "rdfs:comment": "Initial arrangement", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "file1" }, { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/2", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, "trov:hasLocation": "file2" } @@ -96,16 +96,16 @@ "@id": "arrangement/2", "@type": "trov:ArtifactArrangement", "rdfs:comment": "Final arrangement", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/2/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/2/location/1", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, "trov:hasLocation": "file2" }, { - "@id": "arrangement/2/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/2/location/2", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/3" }, "trov:hasLocation": "file3" } @@ -115,7 +115,7 @@ "trov:hasPerformance": { "@id": "trp/1", - "@type": "trov:TrustedResearchPerformance", + "@type": "trov:TransparentResearchPerformance", "rdfs:comment": "Workflow execution", "trov:wasConductedBy": { "@id": "trs" }, "trov:startedAtTime": "2023-05-05T01:30:00Z", diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/trs/private.asc b/demo/02-tro-examples/02-three-artifacts-one-trp/trs/private.asc similarity index 100% rename from demo/01-trov-examples/02-three-artifacts-one-trp/trs/private.asc rename to demo/02-tro-examples/02-three-artifacts-one-trp/trs/private.asc diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/trs/public.gpg b/demo/02-tro-examples/02-three-artifacts-one-trp/trs/public.gpg similarity index 100% rename from demo/01-trov-examples/02-three-artifacts-one-trp/trs/public.gpg rename to demo/02-tro-examples/02-three-artifacts-one-trp/trs/public.gpg diff --git a/demo/01-trov-examples/02-three-artifacts-one-trp/trs/trs.jsonld b/demo/02-tro-examples/02-three-artifacts-one-trp/trs/trs.jsonld similarity index 94% rename from demo/01-trov-examples/02-three-artifacts-one-trp/trs/trs.jsonld rename to demo/02-tro-examples/02-three-artifacts-one-trp/trs/trs.jsonld index 200c1f4..b871bf1 100644 --- a/demo/01-trov-examples/02-three-artifacts-one-trp/trs/trs.jsonld +++ b/demo/02-tro-examples/02-three-artifacts-one-trp/trs/trs.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/01-trov-examples/02-three-artifacts-one-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/02-tro-examples/02-three-artifacts-one-trp/" }], "@graph": [{ diff --git a/demo/01-trov-examples/Makefile b/demo/02-tro-examples/03-skope-lbda-processing/Makefile similarity index 100% rename from demo/01-trov-examples/Makefile rename to demo/02-tro-examples/03-skope-lbda-processing/Makefile diff --git a/demo/01-trov-examples/03-skope-lbda-processing/mappings.json b/demo/02-tro-examples/03-skope-lbda-processing/mappings.json similarity index 75% rename from demo/01-trov-examples/03-skope-lbda-processing/mappings.json rename to demo/02-tro-examples/03-skope-lbda-processing/mappings.json index c67ee75..44b2bed 100644 --- a/demo/01-trov-examples/03-skope-lbda-processing/mappings.json +++ b/demo/02-tro-examples/03-skope-lbda-processing/mappings.json @@ -1,6 +1,7 @@ { "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf:", "http://www.w3.org/2000/01/rdf-schema#": "rdfs:", + "https://schema.org": "schema:", "https://w3id.org/trace/2023/05/trov#": "trov:", - "https://github.com/transparency-certified/trace-model/tree/master/01-trov-examples/03-skope-/": "" + "https://github.com/transparency-certified/trace-model/tree/master/02-tro-examples/03-skope-/": "" } \ No newline at end of file diff --git a/demo/02-tro-examples/03-skope-lbda-processing/products/report.html b/demo/02-tro-examples/03-skope-lbda-processing/products/report.html new file mode 100644 index 0000000..2c75707 --- /dev/null +++ b/demo/02-tro-examples/03-skope-lbda-processing/products/report.html @@ -0,0 +1,235 @@ + + + + + + + + TRO Report + + +

TRO Report

+ +

This Transparent Research Object (TRO):

LBDA Exploration Example +

TRO ID: tro +
    +
  • Created by: Jane Archaeologist
  • +
  • Created datetime: 2023-05-09T10:00:00Z
  • +
  • TRO Description: Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application
  • +
  • Digital artifacts: 6
  • +
  • Artifact artifact arrangements: 4
  • +
  • Transparent Research Performances (TRPs): 3
  • +
+ + +
TRACE Reference Implementation +

TRS ID: trs +
    +
  • Publisher: TRACE Project
  • +
  • TRS Description: TRS that can monitor netowrk accesses or provide Internet isolation
  • +
  • Capabilities: 2 (see below)
  • +
+ + + + + + +
idnamedescription
trs/capability/1Capability of Recording Internet AccessTRS can record internet access
trs/capability/2Capability of Providing Internet IsolationTRS can provide Internet isolation
+
+ + +
+

Descriptions of these TRPs:


+ + + + + + +
trpdescriptionstartend
<trp/1>Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem2023-05-08T01:30:00Z2023-05-08T01:40:00Z
<trp/2>Process that ran Jupyter notebook2023-05-08T01:41:00Z2023-05-08T01:50:00Z
<trp/3>Process that packaged products of the Jupyter notebook execution in a Zip file2023-05-08T01:51:00Z2023-05-08T02:00:00Z
+
+ + +
+ + + + + + + + + +
nameidmimeTypedescription
LBDA NetCDF filecomposition/1/artifact/1application/x-netcdfNetCDF file containing the Living Blended Drought Atlas (LBDA) dataset
Initial Notebookcomposition/1/artifact/2text/plainInitial state of Jupyter notebook for processing the LBDA dataset
Final Notebookcomposition/1/artifact/3text/plainFinal state of Jupyter notebook for processing the LBDA dataset
Final Notebook HTML Renderingcomposition/1/artifact/4text/htmlHTML rendering of final state of the Jupyter notebook
Graphical Histogram Renderingcomposition/1/artifact/5image/pngGraphical rendering of the histogram of dataset values
LBDA GeoTIFF filecomposition/1/artifact/6image/tiffGeoTIFF file containing LBDA data cube ready for staging to SKOPE server
+
+ + +
Web Resource Artifact Arrangement +

Arrangement ID: arrangement/1 +
    +
  • Arrangement Description: Arrangement describing location of LBDA NetCDF file on NOAA web server
  • +
  • Digital artifacts: + + + + +
    nameidlocation
    LBDA NetCDF filecomposition/1/artifact/1https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc
    +
  • +
+ Local File System Artifact Arrangement +

Arrangement ID: arrangement/2 +
    +
  • Arrangement Description: Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook
  • +
  • Digital artifacts: + + + + + +
    nameidlocation
    LBDA NetCDF filecomposition/1/artifact/1data/lbda-v2_kddm_pmdi_2017.nc
    Initial Notebookcomposition/1/artifact/2analysis.ipynb
    +
  • +
+ Local File System Artifact Arrangement +

Arrangement ID: arrangement/3 +
    +
  • Arrangement Description: Arrangement on fileserver managed by TRS after running Jupyter notebook
  • +
  • Digital artifacts: + + + + + + + + +
    nameidlocation
    LBDA NetCDF filecomposition/1/artifact/1data/lbda-v2_kddm_pmdi_2017.nc
    Final Notebookcomposition/1/artifact/3analysis.ipynb
    Final Notebook HTML Renderingcomposition/1/artifact/4output/analysis.html
    Graphical Histogram Renderingcomposition/1/artifact/5output/histogram.png
    LBDA GeoTIFF filecomposition/1/artifact/6output/lbda-v2_kddm_pmdi_2017.tiff
    +
  • +
+ Zip Artifact Arrangement +

Arrangement ID: arrangement/4 +
    +
  • Arrangement Description: Arrangement of final products packaged in a Zip file
  • +
  • Digital artifacts: + + + + + + + +
    nameidlocation
    Final Notebookcomposition/1/artifact/3analysis.ipynb
    Final Notebook HTML Renderingcomposition/1/artifact/4analysis.html
    Graphical Histogram Renderingcomposition/1/artifact/5histogram.png
    LBDA GeoTIFF filecomposition/1/artifact/6lbda-v2_kddm_pmdi_2017.tiff
    +
  • +
+ + + + + + diff --git a/demo/01-trov-examples/03-skope-lbda-processing/report_file/trp.svg b/demo/02-tro-examples/03-skope-lbda-processing/products/trp.svg similarity index 100% rename from demo/01-trov-examples/03-skope-lbda-processing/report_file/trp.svg rename to demo/02-tro-examples/03-skope-lbda-processing/products/trp.svg diff --git a/demo/02-tro-examples/03-skope-lbda-processing/run.sh b/demo/02-tro-examples/03-skope-lbda-processing/run.sh new file mode 100644 index 0000000..76377b3 --- /dev/null +++ b/demo/02-tro-examples/03-skope-lbda-processing/run.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +source ../common/query-tro.sh + +# ------------------------------------------------------------------------------ + +bash_cell tro_report << END_CELL + +geist report --outputroot products << END_TEMPLATE + +{%- use "templates.geist" %} +{%- create datastore="rdflib" %} tro/tro.jsonld {% endcreate %} + +{%- html "report.html" %} +{%- head "TRO Report" %} + + +

TRO Report

+ +

This Transparent Research Object (TRO):

+ {%- map isfilepath=False, mappings="mappings.json" as query_tro %} {% query_tro_str %} {% endmap %} + {% for _, row in query_tro.iterrows() %} + {{ row["tro_name"] }} +

TRO ID: {{ row["tro_id"] }} +
    +
  • Created by: {{ row["tro_creator"] }}
  • +
  • Created datetime: {{ row["tro_date"] }}
  • +
  • TRO Description: {{ row["tro_descr"] }}
  • +
  • Digital artifacts: {{ row["num_of_artifacts"] }}
  • +
  • Artifact artifact arrangements: {{ row["num_of_arrs"] }}
  • +
  • Transparent Research Performances (TRPs): {{ row["num_of_trps"] }}
  • +
+ {% endfor %} + + +
+ {%- map isfilepath=False, mappings="mappings.json" as query_trs %} {% query_trs_str %} {% endmap %} + {% for _, row in query_trs.iterrows() %} + {{ row["trs_name"] }} +

TRS ID: {{ row["trs_id"] }} +
    +
  • Publisher: {{ row["trs_publisher"] }}
  • +
  • TRS Description: {{ row["trs_descr"] }}
  • +
  • Capabilities: {{ row["num_of_capabilities"] }} (see below)
  • +
+ {% endfor %} + {%- table mappings="mappings.json" %}{% query_trs_capability_str %}{% endtable %} +
+ + +
+ {% img src="trp.svg" %} + {%- gv_graph "trp", "LR" %} + nodesep=0.6 + node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] + {%- map isfilepath=False, mappings="mappings.json" as query_trp %} {% query_trp_str %} {% endmap %} + {% for _, row in query_trp.iterrows() %} + {% gv_labeled_edge row["in"], row["out"], row["trp"] %} + {% endfor %} + {% gv_end %} + {% endimg %} +

Descriptions of these TRPs:


+ {%- table mappings="mappings.json" %}{% query_trp_details_str %}{% endtable %} +
+ + +
+ {%- table mappings="mappings.json" %}{% query_artifact_str %}{% endtable %} +
+ + +
+ + {%- query datastore="rdflib", isfilepath=False as _query_arrangement %} + SELECT DISTINCT ?arrangement (STR(?arrangement) AS ?id) ?name ?descr + WHERE { + ?tro rdf:type trov:TransparentResearchObject . + ?tro trov:hasArrangement ?arrangement . + ?arrangement rdfs:label ?name . + ?arrangement rdfs:comment ?descr . + } + ORDER BY ?arrangement + {% endquery %} + + {%- map isfilepath=False, mappings="mappings.json", on="id" as query_arrangement %} {{ _query_arrangement | df2json }} {% endmap %} + {% for idx, row in query_arrangement.iterrows() %} + {{ row["name"] }} +

Arrangement ID: {{ row["id"] }} +
    +
  • Arrangement Description: {{ row["descr"] }}
  • +
  • Digital artifacts: {%- table mappings="mappings.json" %}{% query_artifacts_by_arrangement_str row["arrangement"] %}{% endtable %}
  • +
+ {% endfor %} + + +{% style %} +{% script %} +{% endhtml %} + +{%- destroy %} + +END_TEMPLATE + +END_CELL + +# ------------------------------------------------------------------------------ diff --git a/demo/02-tro-examples/03-skope-lbda-processing/run.txt b/demo/02-tro-examples/03-skope-lbda-processing/run.txt new file mode 100644 index 0000000..512e1ec --- /dev/null +++ b/demo/02-tro-examples/03-skope-lbda-processing/run.txt @@ -0,0 +1,677 @@ +================================================ bash cell | import trov vocabulary ================================================ + +# Destroy the dataset +geist destroy rdflib --dataset kb --quiet + +# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES +geist create rdflib --dataset kb --inputformat json-ld --inputfile /mnt/trace-model/exports/trace-vocab.jsonld --infer owl + +# Import TRO and TRS as JSON-LD and export as N-TRIPLES +geist export rdflib --dataset kb --outputformat nt | sort | grep trov + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- + . + "A set of loci describing the location of one or more artifacts" . + "ArtifactArrangement" . + . + . + . + . + "Base class for collections of one or more artifacts." . + "ArtifactCollection" . + . + . + "A set of artifacts described by a TRO." . + "ArtifactComposition" . + . + . + . + "The location of a specific artifact." . + "ArtifactLocus" . + . + . + . + "The capability to prevent Internet access during a TRP." . + "CanProvideInternetIsolation" . + . + . + . + . + . + "Unique fingerprint of a particular artifact composition" . + "CompositionFingerprint" . + . + . + "The policy of always preventing Internet access during a TRP." . + "EnforcesInternetIsolation" . + . + . + . + . + . + . + "TRO composition includes all input data employed in creating the TRO." . + "IncludesAllInputData" . + . + . + . + . + "A TRO requires internet access recording." . + "InternetAccessRecording" . + . + . + . + . + "A TRO requires internet isolation." . + "InternetIsolation" . + . + . + . + . + "A research artifact described by a TRO." . + "ResearchArtifact" . + . + . + "An attribute of a TRS, TRP, or TRO." . + "TREAttribute" . + . + . + "An attribute of a particular TRO." . + "TROAttribute" . + . + . + . + "An attribute of a TRP." . + "TRPAttribute" . + . + . + . + "An attribute of a TRS." . + "TRSAttribute" . + . + . + . + "A capability of a TRS." . + "TRSCapability" . + . + . + . + . + "A policy always enforced by a particular TRS." . + "TRSPolicy" . + . + . + . + . + . + "A timestamping authority trusted by a TRS." . + "TimeStampingAuthority" . + . + . + . + "Common base class for TRSs, TRPs, and TROs." . + "TransparentResearchElement" . + . + . + "A set of research artifacts produced by a TRP and signed by the performing TRS." . + "TransparentResearchObject" . + . + . + . + "A set of research operations performed by a TRS." . + "An execution of a research process" . + "TransparentResearchPerformance" . + . + . + . + "A system certified to perform TRPs and assemble TROs." . + "TransparentResearchSystem" . + . + . + . + . + . + "accessedArrangement" . + . + . + . + . + . + . + . + . + . + "contributedToArrangement" . + . + . + . + . + . + . + . + . + . + "hadPerformanceAttribute" . + . + . + . + . + . + . + . + . + "hasArrangement" . + . + . + . + . + . + . + . + . + "hasArtifact" . + . + . + . + . + . + . + . + . + "hasLocus" . + . + . + . + . + . + . + . + . + "hasCapability" . + . + . + . + . + . + . + . + . + . + "hasComposition" . + . + . + . + . + . + . + . + . + "hasFingerprint" . + . + . + . + . + . + . + . + "hasLocus" . + . + . + . + . + . + . + . + "hasPerformance" . + . + . + . + . + . + . + . + . + . + "warrantedBy" . + . + . + . + . + . + . + . + . + . + . + "wasAssembledBy" . + . + . + . + . + . + . + . + . + "wasConductedBy" . + . + . + . + . + . + . + . + . + "wasTimestampedBy" . + . + . + . + . + . +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================ bash cell | import tro declaration ================================================ + +# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES +geist load rdflib --dataset kb --inputformat json-ld --inputfile tro/tro.jsonld + +# Import TRO and TRS as JSON-LD and export as N-TRIPLES +geist export rdflib --dataset kb --outputformat nt | sort | grep trov-example + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================= bash cell | query tro attributes ================================================= + +# What subclasses of TROAttribute have been defined? + +geist query rdflib --dataset kb << __END_QUERY__ + + PREFIX rdfs: + PREFIX trov: + + SELECT DISTINCT ?attribute ?attributeLabel ?attributeComment + WHERE { + ?attribute rdfs:subClassOf trov:TROAttribute . + ?attribute rdfs:label ?attributeLabel . + ?attribute rdfs:comment ?attributeComment . + } ORDER BY ?attribute ?attributeLabel ?attributeComment + +__END_QUERY__ + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +| | attribute | attributeLabel | attributeComment | +|---:|:-----------------------------------------------------------|:---------------------|:----------------------------------------------------------------------| +| 0 | | IncludesAllInputData | TRO composition includes all input data employed in creating the TRO. | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +================================================= bash cell | query trs attributes ================================================= + +# What subclasses of TRSAttribute have been defined? + +geist query rdflib --dataset kb << __END_QUERY__ + + PREFIX rdfs: + PREFIX trov: + + SELECT DISTINCT ?attribute ?attributeLabel ?attributeComment + WHERE { + ?attribute rdfs:subClassOf trov:TRSAttribute . + ?attribute rdfs:label ?attributeLabel . + ?attribute rdfs:comment ?attributeComment . + } ORDER BY ?attribute ?attributeLabel ?attributeComment + +__END_QUERY__ + +# Destroy the dataset +geist destroy rdflib --dataset kb + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +| | attribute | attributeLabel | attributeComment | +|---:|:------------------------------------------------------------------|:----------------------------|:--------------------------------------------------------------| +| 0 | | CanProvideInternetIsolation | The capability to prevent Internet access during a TRP. | +| 1 | | EnforcesInternetIsolation | The policy of always preventing Internet access during a TRP. | +| 2 | | TRSCapability | A capability of a TRS. | +| 3 | | TRSPolicy | A policy always enforced by a particular TRS. | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +====================================================== bash cell | tro_report ====================================================== + +geist report --outputroot products << END_TEMPLATE + +{%- use "templates.geist" %} +{%- create datastore="rdflib" %} tro/tro.jsonld {% endcreate %} + +{%- html "report.html" %} +{%- head "TRO Report" %} + + +

TRO Report

+ +

This Transparent Research Object (TRO):

+ {%- map isfilepath=False, mappings="mappings.json" as query_tro %} {% query_tro_str %} {% endmap %} + {% for _, row in query_tro.iterrows() %} + {{ row["tro_name"] }} +

TRO ID: {{ row["tro_id"] }} +
    +
  • Created by: {{ row["tro_creator"] }}
  • +
  • Created datetime: {{ row["tro_date"] }}
  • +
  • TRO Description: {{ row["tro_descr"] }}
  • +
  • Digital artifacts: {{ row["num_of_artifacts"] }}
  • +
  • Artifact artifact arrangements: {{ row["num_of_arrs"] }}
  • +
  • Transparent Research Performances (TRPs): {{ row["num_of_trps"] }}
  • +
+ {% endfor %} + + +
+ {%- map isfilepath=False, mappings="mappings.json" as query_trs %} {% query_trs_str %} {% endmap %} + {% for _, row in query_trs.iterrows() %} + {{ row["trs_name"] }} +

TRS ID: {{ row["trs_id"] }} +
    +
  • Publisher: {{ row["trs_publisher"] }}
  • +
  • TRS Description: {{ row["trs_descr"] }}
  • +
  • Capabilities: {{ row["num_of_capabilities"] }} (see below)
  • +
+ {% endfor %} + {%- table mappings="mappings.json" %}{% query_trs_capability_str %}{% endtable %} +
+ + +
+ {% img src="trp.svg" %} + {%- gv_graph "trp", "LR" %} + nodesep=0.6 + node[shape=box style="filled, rounded" fillcolor="#b3e2cd" peripheries=1 fontname=Courier] + {%- map isfilepath=False, mappings="mappings.json" as query_trp %} {% query_trp_str %} {% endmap %} + {% for _, row in query_trp.iterrows() %} + {% gv_labeled_edge row["in"], row["out"], row["trp"] %} + {% endfor %} + {% gv_end %} + {% endimg %} +

Descriptions of these TRPs:


+ {%- table mappings="mappings.json" %}{% query_trp_details_str %}{% endtable %} +
+ + +
+ {%- table mappings="mappings.json" %}{% query_artifact_str %}{% endtable %} +
+ + +
+ + {%- query datastore="rdflib", isfilepath=False as _query_arrangement %} + SELECT DISTINCT ?arrangement (STR(?arrangement) AS ?id) ?name ?descr + WHERE { + ?tro rdf:type trov:TransparentResearchObject . + ?tro trov:hasArrangement ?arrangement . + ?arrangement rdfs:label ?name . + ?arrangement rdfs:comment ?descr . + } + ORDER BY ?arrangement + {% endquery %} + + {%- map isfilepath=False, mappings="mappings.json", on="id" as query_arrangement %} {{ _query_arrangement | df2json }} {% endmap %} + {% for idx, row in query_arrangement.iterrows() %} + {{ row["name"] }} +

Arrangement ID: {{ row["id"] }} +
    +
  • Arrangement Description: {{ row["descr"] }}
  • +
  • Digital artifacts: {%- table mappings="mappings.json" %}{% query_artifacts_by_arrangement_str row["arrangement"] %}{% endtable %}
  • +
+ {% endfor %} + + +{% style %} +{% script %} +{% endhtml %} + +{%- destroy %} + +END_TEMPLATE + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- + + + + + + + + TRO Report + + +

TRO Report

+ +

This Transparent Research Object (TRO):

LBDA Exploration Example +

TRO ID: tro +
    +
  • Created by: Jane Archaeologist
  • +
  • Created datetime: 2023-05-09T10:00:00Z
  • +
  • TRO Description: Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application
  • +
  • Digital artifacts: 6
  • +
  • Artifact artifact arrangements: 4
  • +
  • Transparent Research Performances (TRPs): 3
  • +
+ + +
TRACE Reference Implementation +

TRS ID: trs +
    +
  • Publisher: TRACE Project
  • +
  • TRS Description: TRS that can monitor netowrk accesses or provide Internet isolation
  • +
  • Capabilities: 2 (see below)
  • +
+ + + + + + +
idnamedescription
trs/capability/1Capability of Recording Internet AccessTRS can record internet access
trs/capability/2Capability of Providing Internet IsolationTRS can provide Internet isolation
+
+ + +
+

Descriptions of these TRPs:


+ + + + + + +
trpdescriptionstartend
<trp/1>Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem2023-05-08T01:30:00Z2023-05-08T01:40:00Z
<trp/2>Process that ran Jupyter notebook2023-05-08T01:41:00Z2023-05-08T01:50:00Z
<trp/3>Process that packaged products of the Jupyter notebook execution in a Zip file2023-05-08T01:51:00Z2023-05-08T02:00:00Z
+
+ + +
+ + + + + + + + + +
nameidmimeTypedescription
LBDA NetCDF filecomposition/1/artifact/1application/x-netcdfNetCDF file containing the Living Blended Drought Atlas (LBDA) dataset
Initial Notebookcomposition/1/artifact/2text/plainInitial state of Jupyter notebook for processing the LBDA dataset
Final Notebookcomposition/1/artifact/3text/plainFinal state of Jupyter notebook for processing the LBDA dataset
Final Notebook HTML Renderingcomposition/1/artifact/4text/htmlHTML rendering of final state of the Jupyter notebook
Graphical Histogram Renderingcomposition/1/artifact/5image/pngGraphical rendering of the histogram of dataset values
LBDA GeoTIFF filecomposition/1/artifact/6image/tiffGeoTIFF file containing LBDA data cube ready for staging to SKOPE server
+
+ + +
Web Resource Artifact Arrangement +

Arrangement ID: arrangement/1 +
    +
  • Arrangement Description: Arrangement describing location of LBDA NetCDF file on NOAA web server
  • +
  • Digital artifacts: + + + + +
    nameidlocation
    LBDA NetCDF filecomposition/1/artifact/1https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc
    +
  • +
+ Local File System Artifact Arrangement +

Arrangement ID: arrangement/2 +
    +
  • Arrangement Description: Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook
  • +
  • Digital artifacts: + + + + + +
    nameidlocation
    LBDA NetCDF filecomposition/1/artifact/1data/lbda-v2_kddm_pmdi_2017.nc
    Initial Notebookcomposition/1/artifact/2analysis.ipynb
    +
  • +
+ Local File System Artifact Arrangement +

Arrangement ID: arrangement/3 +
    +
  • Arrangement Description: Arrangement on fileserver managed by TRS after running Jupyter notebook
  • +
  • Digital artifacts: + + + + + + + + +
    nameidlocation
    LBDA NetCDF filecomposition/1/artifact/1data/lbda-v2_kddm_pmdi_2017.nc
    Final Notebookcomposition/1/artifact/3analysis.ipynb
    Final Notebook HTML Renderingcomposition/1/artifact/4output/analysis.html
    Graphical Histogram Renderingcomposition/1/artifact/5output/histogram.png
    LBDA GeoTIFF filecomposition/1/artifact/6output/lbda-v2_kddm_pmdi_2017.tiff
    +
  • +
+ Zip Artifact Arrangement +

Arrangement ID: arrangement/4 +
    +
  • Arrangement Description: Arrangement of final products packaged in a Zip file
  • +
  • Digital artifacts: + + + + + + + +
    nameidlocation
    Final Notebookcomposition/1/artifact/3analysis.ipynb
    Final Notebook HTML Renderingcomposition/1/artifact/4analysis.html
    Graphical Histogram Renderingcomposition/1/artifact/5histogram.png
    LBDA GeoTIFF filecomposition/1/artifact/6lbda-v2_kddm_pmdi_2017.tiff
    +
  • +
+ + + + + + + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/demo/02-tro-examples/03-skope-lbda-processing/templates.geist b/demo/02-tro-examples/03-skope-lbda-processing/templates.geist new file mode 100644 index 0000000..48d6342 --- /dev/null +++ b/demo/02-tro-examples/03-skope-lbda-processing/templates.geist @@ -0,0 +1,239 @@ +{% template head title %} + + + + {{ title }} + +{% endtemplate %} + +{% template gv_graph name direction %} + digraph {{ name }} { + rankdir={{ direction }} +{% endtemplate %} + +{% template gv_end %} + } +{% endtemplate %} + +{% template gv_edge tail head %} + {{ tail }} -> {{ head }} +{% endtemplate %} + +{% template gv_labeled_edge tail head label %} + {{ tail }} -> {{ head }} [label="{{ label }}"] +{% endtemplate %} + +{% template query_tro_str %} + {%- query datastore="rdflib", isfilepath=False as query_tro %} + SELECT ?tro_creator ?tro_date ?tro_name (STR(?tro) AS ?tro_id) ?tro_descr (COUNT(DISTINCT ?artifact) AS ?num_of_artifacts) (COUNT(DISTINCT ?arrangement) AS ?num_of_arrs) (COUNT(DISTINCT ?trp) AS ?num_of_trps) + WHERE { + ?tro rdf:type trov:TransparentResearchObject . + ?tro ?tro_creator . + ?tro ?tro_date . + ?tro rdfs:label ?tro_name . + ?tro rdfs:comment ?tro_descr . + ?tro trov:hasComposition/trov:hasArtifact ?artifact . + ?tro trov:hasArrangement ?arrangement . + ?tro trov:hasPerformance ?trp . + } GROUP BY ?tro + {% endquery %} + {{ query_tro | df2json }} +{% endtemplate %} + +{% template query_artifacts_by_arrangement_str arrangement %} + {%- query datastore="rdflib", isfilepath=False as query_artifacts_by_arrangement %} + SELECT DISTINCT ?name (STR(?artifact) AS ?id) ?location + WHERE { + {{ arrangement }} trov:hasArtifactLocation ?locus . + ?locus rdfs:label ?name . + ?locus trov:hasArtifact ?artifact . + ?locus trov:hasLocation ?location . + } + ORDER BY ?artifact + {% endquery %} + {{ query_artifacts_by_arrangement | df2json }} +{% endtemplate %} + +{% template query_artifact_str %} + {%- query datastore="rdflib", isfilepath=False as query_artifact %} + SELECT DISTINCT ?name (STR(?artifact) AS ?id) ?mimeType ?description + WHERE { + ?tro rdf:type trov:TransparentResearchObject . + ?tro trov:hasComposition/trov:hasArtifact ?artifact . + ?artifact rdfs:label ?name . + ?artifact trov:mimeType ?mimeType . + ?artifact rdfs:comment ?description . + } + ORDER BY ?artifact + {% endquery %} + {{ query_artifact | df2json }} +{% endtemplate %} + +{% template query_trs_str %} + {%- query datastore="rdflib", isfilepath=False as query_trs %} + SELECT ?trs_publisher ?trs_name (STR(?trs) AS ?trs_id) ?trs_descr (COUNT(DISTINCT ?capability) AS ?num_of_capabilities) + WHERE { + ?trs rdf:type trov:TransparentResearchSystem . + ?trs trov:hasCapability ?capability . + ?trs ?trs_publisher . + ?trs rdfs:label ?trs_name . + ?trs rdfs:comment ?trs_descr + } GROUP BY ?trs + {% endquery %} + {{ query_trs | df2json }} +{% endtemplate %} + +{% template query_trs_capability_str %} + {%- query datastore="rdflib", isfilepath=False as query_trs_capability %} + SELECT DISTINCT (STR(?capability) AS ?id) ?name ?description + WHERE { + ?trs rdf:type trov:TransparentResearchSystem . + ?trs trov:hasCapability ?capability . + ?capability rdfs:label ?name . + ?capability rdfs:comment ?description . + } + ORDER BY ?trs ?capability + {% endquery %} + {{ query_trs_capability | df2json }} +{% endtemplate %} + +{% template query_trp_str %} + {%- query datastore="rdflib", isfilepath=False as query_trp %} + SELECT DISTINCT ?trp ?in ?out + WHERE { + ?trp rdf:type trov:TransparentResearchPerformance . + ?trp trov:accessedArrangement ?in . + ?trp trov:contributedToArrangement ?out . + } + ORDER BY ?trp ?in ?out + {% endquery %} + {{ query_trp | df2json }} +{% endtemplate %} + +{% template query_trp_details_str %} + {%- query datastore="rdflib", isfilepath=False as query_trp_details %} + SELECT DISTINCT ?trp ?description ?start ?end + WHERE { + ?trp rdf:type trov:TransparentResearchPerformance . + ?trp rdfs:comment ?description . + ?trp trov:startedAtTime ?start . + ?trp trov:endedAtTime ?end . + } + ORDER BY ?TRP ?start ?end + {% endquery %} + {{ query_trp_details | df2json }} +{% endtemplate %} + +{% template style %} + +{% endtemplate %} + +{% template script %} + +{% endtemplate %} \ No newline at end of file diff --git a/demo/02-explorations/11-jsonld2csv/data/tro3.jsonld b/demo/02-tro-examples/03-skope-lbda-processing/tro/tro.jsonld similarity index 73% rename from demo/02-explorations/11-jsonld2csv/data/tro3.jsonld rename to demo/02-tro-examples/03-skope-lbda-processing/tro/tro.jsonld index 0006479..1d650b4 100644 --- a/demo/02-explorations/11-jsonld2csv/data/tro3.jsonld +++ b/demo/02-tro-examples/03-skope-lbda-processing/tro/tro.jsonld @@ -2,29 +2,39 @@ "@context": [{ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "schema": "https://schema.org", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/01-trov-examples/03-skope-/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/02-tro-examples/03-skope-/" }], "@graph": [ { "@id": "tro", "@type": "trov:TransparentResearchObject", + "schema:creator": "Jane Archaeologist", + "schema:dateCreated": "2023-05-09T10:00:00Z", + "rdfs:label": "LBDA Exploration Example", "rdfs:comment": "Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application", "trov:wasAssembledBy": { "@id": "trs", - "@type": "trov:TrustedResearchSystem", + "@type": "trov:TransparentResearchSystem", + "schema:publisher": "TRACE Project", + "rdfs:label": "TRACE Reference Implementation", "rdfs:comment": "TRS that can monitor netowrk accesses or provide Internet isolation", "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n", "trov:hasCapability": [ { "@id": "trs/capability/1", - "@type": "trov:CanRecordInternetAccess" + "@type": "trov:CanRecordInternetAccess", + "rdfs:label": "Capability of Recording Internet Access", + "rdfs:comment": "TRS can record internet access" }, { "@id": "trs/capability/2", - "@type": "trov:CanProvideInternetIsolation" + "@type": "trov:CanProvideInternetIsolation", + "rdfs:label": "Capability of Providing Internet Isolation", + "rdfs:comment": "TRS can provide Internet isolation" } ] }, @@ -62,6 +72,7 @@ { "@id": "composition/1/artifact/1", "@type": "trov:DataArtifact", + "rdfs:label": "LBDA NetCDF file", "rdfs:comment": "NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset", "trov:mimeType": "application/x-netcdf", "trov:sha256": "b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" @@ -69,6 +80,7 @@ { "@id": "composition/1/artifact/2", "@type": "trov:ComputationalNotebookArtifact", + "rdfs:label": "Initial Notebook", "rdfs:comment": "Initial state of Jupyter notebook for processing the LBDA dataset", "trov:mimeType": "text/plain", "trov:sha256": "8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" @@ -76,6 +88,7 @@ { "@id": "composition/1/artifact/3", "@type": "trov:ComputationalNotebookArtifact", + "rdfs:label": "Final Notebook", "rdfs:comment": "Final state of Jupyter notebook for processing the LBDA dataset", "trov:mimeType": "text/plain", "trov:sha256": "8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" @@ -83,6 +96,7 @@ { "@id": "composition/1/artifact/4", "@type": "trov:HTMLArtifact", + "rdfs:label": "Final Notebook HTML Rendering", "rdfs:comment": "HTML rendering of final state of the Jupyter notebook", "trov:mimeType": "text/html", "trov:sha256": "870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" @@ -90,6 +104,7 @@ { "@id": "composition/1/artifact/5", "@type": "trov:ImageArtifact", + "rdfs:label": "Graphical Histogram Rendering", "rdfs:comment": "Graphical rendering of the histogram of dataset values", "trov:mimeType": "image/png", "trov:sha256": "cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" @@ -97,6 +112,7 @@ { "@id": "composition/1/artifact/6", "@type": "trov:DataArtifact", + "rdfs:label": "LBDA GeoTIFF file", "rdfs:comment": "GeoTIFF file containing LBDA data cube ready for staging to SKOPE server", "trov:mimeType": "image/tiff", "trov:sha256": "e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" @@ -108,11 +124,13 @@ { "@id": "arrangement/1", "@type": "trov:WebResourceArtifactArrangement", - "rdfs:comment": "Arrangement decscribing location of LBDA NetCDF file on NOAA web server", - "trov:hasLocus": [ + "rdfs:label": "Web Resource Artifact Arrangement", + "rdfs:comment": "Arrangement describing location of LBDA NetCDF file on NOAA web server", + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA NetCDF file", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" } @@ -121,17 +139,20 @@ { "@id": "arrangement/2", "@type": "trov:LocalFilesystemArtifactArrangement", + "rdfs:label": "Local File System Artifact Arrangement", "rdfs:comment": "Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/2/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/2/location/1", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA NetCDF file", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "data/lbda-v2_kddm_pmdi_2017.nc" }, { - "@id": "arrangement/2/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/2/location/2", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Initial Notebook", "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, "trov:hasLocation": "analysis.ipynb" } @@ -140,35 +161,41 @@ { "@id": "arrangement/3", "@type": "trov:LocalFilesystemArtifactArrangement", + "rdfs:label": "Local File System Artifact Arrangement", "rdfs:comment": "Arrangement on fileserver managed by TRS after running Jupyter notebook", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/3/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/1", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA NetCDF file", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "data/lbda-v2_kddm_pmdi_2017.nc" }, { - "@id": "arrangement/3/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/2", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Final Notebook", "trov:hasArtifact": { "@id": "composition/1/artifact/3" }, "trov:hasLocation": "analysis.ipynb" }, { - "@id": "arrangement/3/locus/3", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/3", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Final Notebook HTML Rendering", "trov:hasArtifact": { "@id": "composition/1/artifact/4" }, "trov:hasLocation": "output/analysis.html" }, { - "@id": "arrangement/3/locus/4", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/4", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Graphical Histogram Rendering", "trov:hasArtifact": { "@id": "composition/1/artifact/5" }, "trov:hasLocation": "output/histogram.png" }, { - "@id": "arrangement/3/locus/5", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/5", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA GeoTIFF file", "trov:hasArtifact": { "@id": "composition/1/artifact/6" }, "trov:hasLocation": "output/lbda-v2_kddm_pmdi_2017.tiff" } @@ -177,29 +204,34 @@ { "@id": "arrangement/4", "@type": "trov:ZipArtifactArrangement", + "rdfs:label": "Zip Artifact Arrangement", "rdfs:comment": "Arrangement of final products packaged in a Zip file", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/4/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/4/location/1", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Final Notebook", "trov:hasArtifact": { "@id": "composition/1/artifact/3" }, "trov:hasLocation": "analysis.ipynb" }, { - "@id": "arrangement/4/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/4/location/2", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Final Notebook HTML Rendering", "trov:hasArtifact": { "@id": "composition/1/artifact/4" }, "trov:hasLocation": "analysis.html" }, { - "@id": "arrangement/4/locus/3", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/4/location/3", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Graphical Histogram Rendering", "trov:hasArtifact": { "@id": "composition/1/artifact/5" }, "trov:hasLocation": "histogram.png" }, { - "@id": "arrangement/3/locus/5", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/4/location/5", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA GeoTIFF file", "trov:hasArtifact": { "@id": "composition/1/artifact/6" }, "trov:hasLocation": "lbda-v2_kddm_pmdi_2017.tiff" } @@ -210,7 +242,7 @@ "trov:hasPerformance": [ { "@id": "trp/1", - "@type": "trov:TrustedResearchPerformance", + "@type": "trov:TransparentResearchPerformance", "rdfs:comment": "Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem", "trov:wasConductedBy": { "@id": "trs" }, "trov:startedAtTime": "2023-05-08T01:30:00Z", @@ -226,7 +258,7 @@ { "@id": "trp/2", - "@type": "trov:TrustedResearchPerformance", + "@type": "trov:TransparentResearchPerformance", "rdfs:comment": "Process that ran Jupyter notebook", "trov:wasConductedBy": { "@id": "trs" }, "trov:startedAtTime": "2023-05-08T01:41:00Z", @@ -242,7 +274,7 @@ { "@id": "trp/3", - "@type": "trov:TrustedResearchPerformance", + "@type": "trov:TransparentResearchPerformance", "rdfs:comment": "Process that packaged products of the Jupyter notebook execution in a Zip file", "trov:wasConductedBy": { "@id": "trs" }, "trov:startedAtTime": "2023-05-08T01:51:00Z", diff --git a/demo/02-explorations/01-minimal/Makefile b/demo/02-tro-examples/Makefile similarity index 100% rename from demo/02-explorations/01-minimal/Makefile rename to demo/02-tro-examples/Makefile diff --git a/demo/02-tro-examples/common/query-tro.sh b/demo/02-tro-examples/common/query-tro.sh new file mode 100644 index 0000000..7324a2c --- /dev/null +++ b/demo/02-tro-examples/common/query-tro.sh @@ -0,0 +1,81 @@ + + +TRACE_VOCAB=$REPRO_MNT/exports/trace-vocab.jsonld +TRO_DECLARATION=tro/tro.jsonld +TRS_CERTIFICATE=trs/trs.jsonld + +# ------------------------------------------------------------------------------ + +bash_cell 'import trov vocabulary' << END_CELL + +# Destroy the dataset +geist destroy rdflib --dataset kb --quiet + +# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES +geist create rdflib --dataset kb --inputformat json-ld --inputfile ${TRACE_VOCAB} --infer owl + +# Import TRO and TRS as JSON-LD and export as N-TRIPLES +geist export rdflib --dataset kb --outputformat nt | sort | grep trov + +END_CELL + +# ------------------------------------------------------------------------------ + +bash_cell 'import tro declaration' << END_CELL + +# Import TRACE vocabulary and TRO Manifest and export as N-TRIPLES +geist load rdflib --dataset kb --inputformat json-ld --inputfile ${TRO_DECLARATION} + +# Import TRO and TRS as JSON-LD and export as N-TRIPLES +geist export rdflib --dataset kb --outputformat nt | sort | grep trov-example + +END_CELL + +# ------------------------------------------------------------------------------ + +bash_cell 'query tro attributes' << END_CELL + +# What subclasses of TROAttribute have been defined? + +geist query rdflib --dataset kb << __END_QUERY__ + + PREFIX rdfs: + PREFIX trov: + + SELECT DISTINCT ?attribute ?attributeLabel ?attributeComment + WHERE { + ?attribute rdfs:subClassOf trov:TROAttribute . + ?attribute rdfs:label ?attributeLabel . + ?attribute rdfs:comment ?attributeComment . + } ORDER BY ?attribute ?attributeLabel ?attributeComment + +__END_QUERY__ + +END_CELL + +# ------------------------------------------------------------------------------ + +bash_cell 'query trs attributes' << END_CELL + +# What subclasses of TRSAttribute have been defined? + +geist query rdflib --dataset kb << __END_QUERY__ + + PREFIX rdfs: + PREFIX trov: + + SELECT DISTINCT ?attribute ?attributeLabel ?attributeComment + WHERE { + ?attribute rdfs:subClassOf trov:TRSAttribute . + ?attribute rdfs:label ?attributeLabel . + ?attribute rdfs:comment ?attributeComment . + } ORDER BY ?attribute ?attributeLabel ?attributeComment + +__END_QUERY__ + +# Destroy the dataset +geist destroy rdflib --dataset kb + +END_CELL + +# ------------------------------------------------------------------------------ diff --git a/demo/02-explorations/02-type-a/Makefile b/demo/03-trace-explorations/01-gpg-runtime/01-generate-key/Makefile similarity index 100% rename from demo/02-explorations/02-type-a/Makefile rename to demo/03-trace-explorations/01-gpg-runtime/01-generate-key/Makefile diff --git a/demo/02-explorations/06-gpg-runtime-demos/01-generate-key/run.sh b/demo/03-trace-explorations/01-gpg-runtime/01-generate-key/run.sh similarity index 75% rename from demo/02-explorations/06-gpg-runtime-demos/01-generate-key/run.sh rename to demo/03-trace-explorations/01-gpg-runtime/01-generate-key/run.sh index 0621b63..5eeb63c 100644 --- a/demo/02-explorations/06-gpg-runtime-demos/01-generate-key/run.sh +++ b/demo/03-trace-explorations/01-gpg-runtime/01-generate-key/run.sh @@ -1,8 +1,13 @@ #!/usr/bin/env bash +TRO_DECLARATION=../../common/tro/tro.jsonld +PUBLIC_KEY_FILE=tmp/public.gpg +PRIVATE_KEY_FILE=tmp/private.asc +SIGNATURE_FILE=tmp/signature.asc + # ------------------------------------------------------------------------------ -bash_cell 'delete gnupg home directory' << 'END_CELL' +bash_cell 'delete gnupg home directory' << END_CELL # delete contents of the .gnupg directory for this REPRO gnupg-runtime.purge-keys @@ -41,26 +46,20 @@ END_CELL # ------------------------------------------------------------------------------ -bash_cell 'export the public key' << 'END_CELL' +bash_cell 'export the public key' << END_CELL # export the public key -gpg --export -a -o tmp/public.gpg repro@repros.dev - -# print a redacted view of the public key -gnupg-runtime.redact-key tmp/public.gpg +gpg --export -a -o ${PUBLIC_KEY_FILE} repro@repros.dev END_CELL # ------------------------------------------------------------------------------ -bash_cell 'export the private key' << 'END_CELL' +bash_cell 'export the private key' << END_CELL # export the private key -gpg --export-secret-key -a --pinentry-mode loopback --passphrase=repro > tmp/private.asc - -# print a redacted view of the private key -gnupg-runtime.redact-key tmp/private.asc +gpg --export-secret-key -a --pinentry-mode loopback --passphrase=repro > ${PRIVATE_KEY_FILE} END_CELL diff --git a/demo/02-explorations/06-gpg-runtime-demos/01-generate-key/run.txt b/demo/03-trace-explorations/01-gpg-runtime/01-generate-key/run.txt similarity index 61% rename from demo/02-explorations/06-gpg-runtime-demos/01-generate-key/run.txt rename to demo/03-trace-explorations/01-gpg-runtime/01-generate-key/run.txt index 29ae7a0..a0b1f2d 100644 --- a/demo/02-explorations/06-gpg-runtime-demos/01-generate-key/run.txt +++ b/demo/03-trace-explorations/01-gpg-runtime/01-generate-key/run.txt @@ -52,22 +52,7 @@ uid [ultimate] repro user # export the public key gpg --export -a -o tmp/public.gpg repro@repros.dev -# print a redacted view of the public key -gnupg-runtime.redact-key tmp/public.gpg - ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ------BEGIN PGP PUBLIC KEY BLOCK----- - -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxx ------END PGP PUBLIC KEY BLOCK----- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -76,30 +61,7 @@ xxxxx # export the private key gpg --export-secret-key -a --pinentry-mode loopback --passphrase=repro > tmp/private.asc -# print a redacted view of the private key -gnupg-runtime.redact-key tmp/private.asc - ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ------BEGIN PGP PRIVATE KEY BLOCK----- - -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxx ------END PGP PRIVATE KEY BLOCK----- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/demo/02-explorations/03-type-b2/Makefile b/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/Makefile similarity index 100% rename from demo/02-explorations/03-type-b2/Makefile rename to demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/Makefile diff --git a/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/data/private.asc b/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/data/private.asc new file mode 100644 index 0000000..c25edd1 --- /dev/null +++ b/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/data/private.asc @@ -0,0 +1,20 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +lQIGBGUgICgBBACnqSMevqKr0pY+I7NH/3E45SkMWyutmbt06SqQPLyWRQ/8lrcJ +v8ANqetWUqTKgIRlTWJ4pm8m4Cs7SJN4KBNkKdy6cfUTTQNadDRPrOZ8gxfvPKkF +cORqBGdRHTdCdim0fAk72MLZKx8CTi0Kp/pyL1UAMeP3cqY4HtjGAmK1+wARAQAB +/gcDAoBkG/XYcTnW/1sgcatAehk5nAk5WtSdN82iX7UMXU/Rfx3+8AOoz6PPq8kE +fL3oBE6lGDZLhWTE0Mesn20NXMNfjVPMOdZBhFqowk7orPuF54f0PuKxlqalHjLW +FNe3vQ2aoemrWC+V790fH2X7GldaF70nJb78HEX/OMo6EDL0lQzhVU1j6Zg2m/F0 +4odREmJOdvQRg849pMKDmUeKe/+3ONcu5JhmZxpcbsK/qhJwzMHjHo0QLOkLLwPm +J1jfd/Bo+FCKcbXNE/RFQgrd1OHeQBRmKxooY1ndyr5j0WWIzdbNi+puUyPRafuD +E5hz+kqrvWndbSTriNUhB+t88wl5cK82v93gckCHCpyy6STwmURZr6SWcMoo7MHp +RSF4N3ppa6BM42eXGBHx76J2N7zVB8IhFssxI4tWKc1aCYntFWxtHW6ESr3xbrFp +qtfKYimLwc3ZwzbxiCcZt3TdaBgyO7ZPOpF3v+vZiJnpUx9TeSNQLn60HXJlcHJv +IHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQ/vdYZD9vELJCPIDxR +jxVtzElN/wUCZSAgKAIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRBRjxVt +zElN/7d4BACmRSgot6XaSrKLE9iSZIvGU3etZWhGlzXb3eXYxYrW9E22EACKk8Wv +HXNKJQqxMljQnJDh2Jvw4v3nF6N3eLK8Ak8FAc9zBSz+GzwTC17qM+oPuxrf1G0W +7u69FbZ7JFw2ZkO1Aifk0zOuwORdNZwt5yIGeEBgCWg8TVwCsvbAyw== +=XJdS +-----END PGP PRIVATE KEY BLOCK----- diff --git a/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/data/public.gpg b/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/data/public.gpg new file mode 100644 index 0000000..6f5dc42 --- /dev/null +++ b/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/data/public.gpg @@ -0,0 +1,12 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mI0EZSAgKAEEAKepIx6+oqvSlj4js0f/cTjlKQxbK62Zu3TpKpA8vJZFD/yWtwm/ +wA2p61ZSpMqAhGVNYnimbybgKztIk3goE2Qp3Lpx9RNNA1p0NE+s5nyDF+88qQVw +5GoEZ1EdN0J2KbR8CTvYwtkrHwJOLQqn+nIvVQAx4/dypjge2MYCYrX7ABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQ/vdYZD9vE +LJCPIDxRjxVtzElN/wUCZSAgKAIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBRjxVtzElN/7d4BACmRSgot6XaSrKLE9iSZIvGU3etZWhGlzXb3eXYxYrW9E22 +EACKk8WvHXNKJQqxMljQnJDh2Jvw4v3nF6N3eLK8Ak8FAc9zBSz+GzwTC17qM+oP +uxrf1G0W7u69FbZ7JFw2ZkO1Aifk0zOuwORdNZwt5yIGeEBgCWg8TVwCsvbAyw== +=IW7u +-----END PGP PUBLIC KEY BLOCK----- diff --git a/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/run.sh b/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/run.sh new file mode 100644 index 0000000..9fda17c --- /dev/null +++ b/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/run.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +TRO_DECLARATION=../../common/tro/tro.jsonld +PUBLIC_KEY_FILE=data/public.gpg +PRIVATE_KEY_FILE=data/private.asc +SIGNATURE_FILE=tmp/signature.asc + +# ------------------------------------------------------------------------------ + +bash_cell 'delete gnupg home directory' << 'END_CELL' + +# delete contents of the .gnupg directory for this REPRO +gnupg-runtime.purge-keys + +END_CELL + +# ------------------------------------------------------------------------------ + +bash_cell 'import jsonld' << END_CELL + +# Import TRO as JSON-LD and export as N-TRIPLES +geist destroy rdflib --dataset kb --quiet +geist create rdflib --dataset kb --inputformat json-ld --inputfile ${TRO_DECLARATION} --infer owl + +END_CELL + +# ------------------------------------------------------------------------------ + +bash_cell 'import the private key for repro@repros.dev' << END_CELL + +# delete contents of the .gnupg directory for this REPRO +gnupg-runtime.purge-keys + +# import the private key file +gpg --import --pinentry-mode loopback --passphrase=repro ${PRIVATE_KEY_FILE} 2>&1 +echo + +# list the gpg keys +gpg --list-keys + +END_CELL + +# ------------------------------------------------------------------------------ + +bash_cell 'sign the tro.jsonld file with the private key' << END_CELL + +rm -f ${SIGNATURE_FILE} +gpg --detach-sign --local-user repro@repros.dev \ + --pinentry-mode loopback --passphrase=repro \ + -a -o ${SIGNATURE_FILE} \ + ${TRO_DECLARATION} 2>&1 + +END_CELL + +# ------------------------------------------------------------------------------ + +bash_cell 'verify the signature with the public key' << END_CELL + +gpg -v --verify ${SIGNATURE_FILE} ${TRO_DECLARATION} 2>&1 | tail -6 + +END_CELL + +# ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/run.txt b/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/run.txt new file mode 100644 index 0000000..50d6123 --- /dev/null +++ b/demo/03-trace-explorations/01-gpg-runtime/02-simple-tro/run.txt @@ -0,0 +1,74 @@ +============================================= bash cell | delete gnupg home directory ============================================== + +# delete contents of the .gnupg directory for this REPRO +gnupg-runtime.purge-keys + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +==================================================== bash cell | import jsonld ===================================================== + +# Import TRO as JSON-LD and export as N-TRIPLES +geist destroy rdflib --dataset kb --quiet +geist create rdflib --dataset kb --inputformat json-ld --inputfile ../../common/tro/tro.jsonld --infer owl + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +===================================== bash cell | import the private key for repro@repros.dev ====================================== + +# delete contents of the .gnupg directory for this REPRO +gnupg-runtime.purge-keys + +# import the private key file +gpg --import --pinentry-mode loopback --passphrase=repro data/private.asc 2>&1 +echo + +# list the gpg keys +gpg --list-keys + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +gpg: directory '/mnt/trace-model/.gnupg-runtime/.gnupg' created +gpg: keybox '/mnt/trace-model/.gnupg-runtime/.gnupg/pubring.kbx' created +gpg: /mnt/trace-model/.gnupg-runtime/.gnupg/trustdb.gpg: trustdb created +gpg: key 518F156DCC494DFF: public key "repro user " imported +gpg: key 518F156DCC494DFF: secret key imported +gpg: Total number processed: 1 +gpg: imported: 1 +gpg: secret keys read: 1 +gpg: secret keys imported: 1 + +/mnt/trace-model/.gnupg-runtime/.gnupg/pubring.kbx +-------------------------------------------------- +pub rsa1024 2023-10-06 [SCEA] + 3FBDD6190FDBC42C908F203C518F156DCC494DFF +uid [ unknown] repro user + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +==================================== bash cell | sign the tro.jsonld file with the private key ===================================== + +rm -f tmp/signature.asc +gpg --detach-sign --local-user repro@repros.dev --pinentry-mode loopback --passphrase=repro -a -o tmp/signature.asc ../../common/tro/tro.jsonld 2>&1 + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +======================================= bash cell | verify the signature with the public key ======================================= + +gpg -v --verify tmp/signature.asc ../../common/tro/tro.jsonld 2>&1 | tail -6 + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +gpg: using pgp trust model +gpg: Good signature from "repro user " [unknown] +gpg: WARNING: This key is not certified with a trusted signature! +gpg: There is no indication that the signature belongs to the owner. +Primary key fingerprint: 3FBD D619 0FDB C42C 908F 203C 518F 156D CC49 4DFF +gpg: binary signature, digest algorithm SHA512, key algorithm rsa1024 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/demo/02-explorations/04-report-subclass-graph/Makefile b/demo/03-trace-explorations/01-gpg-runtime/Makefile similarity index 100% rename from demo/02-explorations/04-report-subclass-graph/Makefile rename to demo/03-trace-explorations/01-gpg-runtime/Makefile diff --git a/demo/02-explorations/05-report-policies/Makefile b/demo/03-trace-explorations/02-gpg-api/01-generate-key/Makefile similarity index 100% rename from demo/02-explorations/05-report-policies/Makefile rename to demo/03-trace-explorations/02-gpg-api/01-generate-key/Makefile diff --git a/demo/02-explorations/07-gpg-api-demos/01-generate-key/run.sh b/demo/03-trace-explorations/02-gpg-api/01-generate-key/run.sh similarity index 76% rename from demo/02-explorations/07-gpg-api-demos/01-generate-key/run.sh rename to demo/03-trace-explorations/02-gpg-api/01-generate-key/run.sh index f942f06..54ef0cf 100644 --- a/demo/02-explorations/07-gpg-api-demos/01-generate-key/run.sh +++ b/demo/03-trace-explorations/02-gpg-api/01-generate-key/run.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash +TRO_DECLARATION=../../common/tro/tro.jsonld +PUBLIC_KEY_FILE=tmp/public.gpg +PRIVATE_KEY_FILE=tmp/private.asc +SIGNATURE_FILE=tmp/signature.asc + # ------------------------------------------------------------------------------ bash_cell 'generate a key pair' << END_CELL @@ -32,9 +37,7 @@ END_CELL # ------------------------------------------------------------------------------ -bash_cell 'export the public key' << 'END_CELL' - -PUBLIC_KEY_FILE=tmp/public.pgp +bash_cell 'export the public key' << END_CELL python3 << END_PYTHON @@ -45,22 +48,16 @@ gpg = gnupg.GPG() public_key = gpg.export_keys('repro@repros.dev') # write the public key to a file -with open("tmp/public.pgp", "w") as text_file: +with open("${PUBLIC_KEY_FILE}", "w") as text_file: text_file.write(public_key) END_PYTHON -# print a redacted view of the public key -gnupg-runtime.redact-key ${PUBLIC_KEY_FILE} - END_CELL # ------------------------------------------------------------------------------ -bash_cell 'export the private key' << 'END_CELL' - -# export the private key -PRIVATE_KEY_FILE=tmp/private.asc +bash_cell 'export the private key' << END_CELL python3 << END_PYTHON @@ -71,14 +68,11 @@ gpg = gnupg.GPG() private_key = gpg.export_keys('repro@repros.dev', secret=True, passphrase='repro') # write the private key to a file -with open("tmp/private.asc", "w") as text_file: +with open("${PRIVATE_KEY_FILE}", "w") as text_file: text_file.write(private_key) END_PYTHON -# print a redacted view of the private key -gnupg-runtime.redact-key ${PRIVATE_KEY_FILE} - END_CELL # ------------------------------------------------------------------------------ diff --git a/demo/02-explorations/07-gpg-api-demos/01-generate-key/run.txt b/demo/03-trace-explorations/02-gpg-api/01-generate-key/run.txt similarity index 52% rename from demo/02-explorations/07-gpg-api-demos/01-generate-key/run.txt rename to demo/03-trace-explorations/02-gpg-api/01-generate-key/run.txt index a87896a..933a6b4 100644 --- a/demo/02-explorations/07-gpg-api-demos/01-generate-key/run.txt +++ b/demo/03-trace-explorations/02-gpg-api/01-generate-key/run.txt @@ -31,8 +31,6 @@ uid [ultimate] repro user ================================================ bash cell | export the public key ================================================= -PUBLIC_KEY_FILE=tmp/public.pgp - python3 << END_PYTHON import gnupg @@ -42,35 +40,17 @@ gpg = gnupg.GPG() public_key = gpg.export_keys('repro@repros.dev') # write the public key to a file -with open("tmp/public.pgp", "w") as text_file: +with open("tmp/public.gpg", "w") as text_file: text_file.write(public_key) END_PYTHON -# print a redacted view of the public key -gnupg-runtime.redact-key ${PUBLIC_KEY_FILE} - ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ------BEGIN PGP PUBLIC KEY BLOCK----- - -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxx ------END PGP PUBLIC KEY BLOCK----- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ================================================ bash cell | export the private key ================================================ -# export the private key -PRIVATE_KEY_FILE=tmp/private.asc - python3 << END_PYTHON import gnupg @@ -85,30 +65,7 @@ with open("tmp/private.asc", "w") as text_file: END_PYTHON -# print a redacted view of the private key -gnupg-runtime.redact-key ${PRIVATE_KEY_FILE} - ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ------BEGIN PGP PRIVATE KEY BLOCK----- - -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -xxxxx ------END PGP PRIVATE KEY BLOCK----- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/demo/02-explorations/06-gpg-runtime-demos/01-generate-key/Makefile b/demo/03-trace-explorations/02-gpg-api/02-simple-tro/Makefile similarity index 100% rename from demo/02-explorations/06-gpg-runtime-demos/01-generate-key/Makefile rename to demo/03-trace-explorations/02-gpg-api/02-simple-tro/Makefile diff --git a/demo/03-trace-explorations/02-gpg-api/02-simple-tro/data/private.asc b/demo/03-trace-explorations/02-gpg-api/02-simple-tro/data/private.asc new file mode 100644 index 0000000..c25edd1 --- /dev/null +++ b/demo/03-trace-explorations/02-gpg-api/02-simple-tro/data/private.asc @@ -0,0 +1,20 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +lQIGBGUgICgBBACnqSMevqKr0pY+I7NH/3E45SkMWyutmbt06SqQPLyWRQ/8lrcJ +v8ANqetWUqTKgIRlTWJ4pm8m4Cs7SJN4KBNkKdy6cfUTTQNadDRPrOZ8gxfvPKkF +cORqBGdRHTdCdim0fAk72MLZKx8CTi0Kp/pyL1UAMeP3cqY4HtjGAmK1+wARAQAB +/gcDAoBkG/XYcTnW/1sgcatAehk5nAk5WtSdN82iX7UMXU/Rfx3+8AOoz6PPq8kE +fL3oBE6lGDZLhWTE0Mesn20NXMNfjVPMOdZBhFqowk7orPuF54f0PuKxlqalHjLW +FNe3vQ2aoemrWC+V790fH2X7GldaF70nJb78HEX/OMo6EDL0lQzhVU1j6Zg2m/F0 +4odREmJOdvQRg849pMKDmUeKe/+3ONcu5JhmZxpcbsK/qhJwzMHjHo0QLOkLLwPm +J1jfd/Bo+FCKcbXNE/RFQgrd1OHeQBRmKxooY1ndyr5j0WWIzdbNi+puUyPRafuD +E5hz+kqrvWndbSTriNUhB+t88wl5cK82v93gckCHCpyy6STwmURZr6SWcMoo7MHp +RSF4N3ppa6BM42eXGBHx76J2N7zVB8IhFssxI4tWKc1aCYntFWxtHW6ESr3xbrFp +qtfKYimLwc3ZwzbxiCcZt3TdaBgyO7ZPOpF3v+vZiJnpUx9TeSNQLn60HXJlcHJv +IHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQ/vdYZD9vELJCPIDxR +jxVtzElN/wUCZSAgKAIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRBRjxVt +zElN/7d4BACmRSgot6XaSrKLE9iSZIvGU3etZWhGlzXb3eXYxYrW9E22EACKk8Wv +HXNKJQqxMljQnJDh2Jvw4v3nF6N3eLK8Ak8FAc9zBSz+GzwTC17qM+oPuxrf1G0W +7u69FbZ7JFw2ZkO1Aifk0zOuwORdNZwt5yIGeEBgCWg8TVwCsvbAyw== +=XJdS +-----END PGP PRIVATE KEY BLOCK----- diff --git a/demo/03-trace-explorations/02-gpg-api/02-simple-tro/data/public.gpg b/demo/03-trace-explorations/02-gpg-api/02-simple-tro/data/public.gpg new file mode 100644 index 0000000..6f5dc42 --- /dev/null +++ b/demo/03-trace-explorations/02-gpg-api/02-simple-tro/data/public.gpg @@ -0,0 +1,12 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mI0EZSAgKAEEAKepIx6+oqvSlj4js0f/cTjlKQxbK62Zu3TpKpA8vJZFD/yWtwm/ +wA2p61ZSpMqAhGVNYnimbybgKztIk3goE2Qp3Lpx9RNNA1p0NE+s5nyDF+88qQVw +5GoEZ1EdN0J2KbR8CTvYwtkrHwJOLQqn+nIvVQAx4/dypjge2MYCYrX7ABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQ/vdYZD9vE +LJCPIDxRjxVtzElN/wUCZSAgKAIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBRjxVtzElN/7d4BACmRSgot6XaSrKLE9iSZIvGU3etZWhGlzXb3eXYxYrW9E22 +EACKk8WvHXNKJQqxMljQnJDh2Jvw4v3nF6N3eLK8Ak8FAc9zBSz+GzwTC17qM+oP +uxrf1G0W7u69FbZ7JFw2ZkO1Aifk0zOuwORdNZwt5yIGeEBgCWg8TVwCsvbAyw== +=IW7u +-----END PGP PUBLIC KEY BLOCK----- diff --git a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/run.sh b/demo/03-trace-explorations/02-gpg-api/02-simple-tro/run.sh similarity index 52% rename from demo/02-explorations/07-gpg-api-demos/02-simple-tro/run.sh rename to demo/03-trace-explorations/02-gpg-api/02-simple-tro/run.sh index 315e137..716ab6b 100644 --- a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/run.sh +++ b/demo/03-trace-explorations/02-gpg-api/02-simple-tro/run.sh @@ -1,77 +1,43 @@ #!/usr/bin/env bash -MESSAGE_FOLDER=data/message +TRO_DECLARATION=../../common/tro/tro.jsonld PUBLIC_KEY_FILE=data/public.gpg PRIVATE_KEY_FILE=data/private.asc -ZIPPED_MESSAGE_FILE=products/message.tar.gz -TRO_JSONLD_FILE=products/tro.jsonld SIGNATURE_FILE=tmp/signature.asc # ------------------------------------------------------------------------------ bash_cell 'delete the gnupg home directory and keys' << END_CELL + # delete contents of GnuPG home directory for this REPRO gnupg-runtime.purge-keys -END_CELL - -# ------------------------------------------------------------------------------ - -bash_cell 'tar the data dir content' << END_CELL - -find | sort | tar -czvf ${ZIPPED_MESSAGE_FILE} ${MESSAGE_FOLDER} --mtime='1970-01-01' - -END_CELL - -# ------------------------------------------------------------------------------ -bash_cell 'create tro manifest containing the digest of data' << END_CELL -python3 << END_PYTHON -from hashlib import sha256 -import json -with open("products/message.tar.gz", "rb") as fin: - digest = sha256(fin.read()).hexdigest() -fout = open("${TRO_JSONLD_FILE}", mode="w", encoding="utf-8") -jsonld_content = { - "@context": [{ - "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", - "trov": "https://w3id.org/trace/2022/10/trov#" - }], - - "@graph": [{ - - "@id": "trov:tro/01", - "@type": "trov:ResearchObject", - - "trov:generatedBySystem": { "@id": "trov:system/01" }, - "trov:digest": digest, - "trov:troFilePath": "products/message.tar.gz" - }] -} -json.dump(jsonld_content, fout, indent=4) - -fout.close() -END_PYTHON -cat ${TRO_JSONLD_FILE} END_CELL # ------------------------------------------------------------------------------ bash_cell 'import the private key for repro@repros.dev' << END_CELL + python3 << END_PYTHON + import gnupg + # read the private key from the file with open("${PRIVATE_KEY_FILE}", "r") as private_key_file: private_key_text = private_key_file.read() + # import the private key and trust it gpg = gnupg.GPG() gpg.import_keys(private_key_text) -gpg.trust_keys('BD4CA7A2E41893A79420976235AAF11171DB78A7', 'TRUST_ULTIMATE') + END_PYTHON + END_CELL # ------------------------------------------------------------------------------ bash_cell 'list the imported public key using the gpg cli' << END_CELL + echo Public keys: echo gpg --list-keys @@ -80,28 +46,36 @@ echo Private keys: echo gpg --list-secret-keys echo + END_CELL # ------------------------------------------------------------------------------ bash_cell 'sign and verify the tro.jsonld for repro@repros.dev (detach=True)' << END_CELL + python3 << END_PYTHON + import gnupg + # Read the message from the file -with open("${TRO_JSONLD_FILE}", "r") as tro_jsonld_file: - tro_jsonld_text = bytes(tro_jsonld_file.read(), "utf-8") +with open("${TRO_DECLARATION}", "r") as tro_declaration_file: + tro_declaration_text = bytes(tro_declaration_file.read(), "utf-8") + # Sign the message with the private key gpg = gnupg.GPG() -signed_text = gpg.sign(tro_jsonld_text, keyid="repro@repros.dev", passphrase="repro", detach=True) +signed_text = gpg.sign(tro_declaration_text, keyid="repro@repros.dev", passphrase="repro", detach=True) + # Write the signed message to a file with open("${SIGNATURE_FILE}", "w") as text_file: text_file.write(str(signed_text)) -verified = gpg.verify_data("${SIGNATURE_FILE}", tro_jsonld_text) +verified = gpg.verify_data("${SIGNATURE_FILE}", tro_declaration_text) if not verified: raise ValueError("Signature could not be verified!") else: print("Signature has been verified successfully!") + END_PYTHON + END_CELL # ------------------------------------------------------------------------------ \ No newline at end of file diff --git a/demo/03-trace-explorations/02-gpg-api/02-simple-tro/run.txt b/demo/03-trace-explorations/02-gpg-api/02-simple-tro/run.txt new file mode 100644 index 0000000..c89be4b --- /dev/null +++ b/demo/03-trace-explorations/02-gpg-api/02-simple-tro/run.txt @@ -0,0 +1,92 @@ +======================================= bash cell | delete the gnupg home directory and keys ======================================= + +# delete contents of GnuPG home directory for this REPRO +gnupg-runtime.purge-keys + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +===================================== bash cell | import the private key for repro@repros.dev ====================================== + +python3 << END_PYTHON + +import gnupg + +# read the private key from the file +with open("data/private.asc", "r") as private_key_file: + private_key_text = private_key_file.read() + +# import the private key and trust it +gpg = gnupg.GPG() +gpg.import_keys(private_key_text) + +END_PYTHON + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +==================================== bash cell | list the imported public key using the gpg cli ==================================== + +echo Public keys: +echo +gpg --list-keys +echo +echo Private keys: +echo +gpg --list-secret-keys +echo + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +Public keys: + +/mnt/trace-model/.gnupg-runtime/.gnupg/pubring.kbx +-------------------------------------------------- +pub rsa1024 2023-10-06 [SCEA] + 3FBDD6190FDBC42C908F203C518F156DCC494DFF +uid [ unknown] repro user + + +Private keys: + +/mnt/trace-model/.gnupg-runtime/.gnupg/pubring.kbx +-------------------------------------------------- +sec rsa1024 2023-10-06 [SCEA] + 3FBDD6190FDBC42C908F203C518F156DCC494DFF +uid [ unknown] repro user + + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +========================== bash cell | sign and verify the tro.jsonld for repro@repros.dev (detach=True) =========================== + +python3 << END_PYTHON + +import gnupg + +# Read the message from the file +with open("../../common/tro/tro.jsonld", "r") as tro_declaration_file: + tro_declaration_text = bytes(tro_declaration_file.read(), "utf-8") + +# Sign the message with the private key +gpg = gnupg.GPG() +signed_text = gpg.sign(tro_declaration_text, keyid="repro@repros.dev", passphrase="repro", detach=True) + +# Write the signed message to a file +with open("tmp/signature.asc", "w") as text_file: + text_file.write(str(signed_text)) +verified = gpg.verify_data("tmp/signature.asc", tro_declaration_text) +if not verified: + raise ValueError("Signature could not be verified!") +else: + print("Signature has been verified successfully!") + +END_PYTHON + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +Signature has been verified successfully! +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/Makefile b/demo/03-trace-explorations/02-gpg-api/Makefile similarity index 100% rename from demo/02-explorations/06-gpg-runtime-demos/02-simple-tro/Makefile rename to demo/03-trace-explorations/02-gpg-api/Makefile diff --git a/demo/02-explorations/06-gpg-runtime-demos/Makefile b/demo/03-trace-explorations/03-tro-fingerprint-state/Makefile similarity index 100% rename from demo/02-explorations/06-gpg-runtime-demos/Makefile rename to demo/03-trace-explorations/03-tro-fingerprint-state/Makefile diff --git a/demo/02-explorations/09-tro-fingerprint-state/data/file1.csv b/demo/03-trace-explorations/03-tro-fingerprint-state/data/file1.csv similarity index 100% rename from demo/02-explorations/09-tro-fingerprint-state/data/file1.csv rename to demo/03-trace-explorations/03-tro-fingerprint-state/data/file1.csv diff --git a/demo/02-explorations/09-tro-fingerprint-state/data/file2.csv b/demo/03-trace-explorations/03-tro-fingerprint-state/data/file2.csv similarity index 100% rename from demo/02-explorations/09-tro-fingerprint-state/data/file2.csv rename to demo/03-trace-explorations/03-tro-fingerprint-state/data/file2.csv diff --git a/demo/02-explorations/09-tro-fingerprint-state/products/after.csv b/demo/03-trace-explorations/03-tro-fingerprint-state/products/after.csv similarity index 100% rename from demo/02-explorations/09-tro-fingerprint-state/products/after.csv rename to demo/03-trace-explorations/03-tro-fingerprint-state/products/after.csv diff --git a/demo/02-explorations/09-tro-fingerprint-state/products/before.csv b/demo/03-trace-explorations/03-tro-fingerprint-state/products/before.csv similarity index 100% rename from demo/02-explorations/09-tro-fingerprint-state/products/before.csv rename to demo/03-trace-explorations/03-tro-fingerprint-state/products/before.csv diff --git a/demo/02-explorations/09-tro-fingerprint-state/products/fingerprint_state.csv b/demo/03-trace-explorations/03-tro-fingerprint-state/products/fingerprint_state.csv similarity index 100% rename from demo/02-explorations/09-tro-fingerprint-state/products/fingerprint_state.csv rename to demo/03-trace-explorations/03-tro-fingerprint-state/products/fingerprint_state.csv diff --git a/demo/02-explorations/09-tro-fingerprint-state/run.sh b/demo/03-trace-explorations/03-tro-fingerprint-state/run.sh similarity index 98% rename from demo/02-explorations/09-tro-fingerprint-state/run.sh rename to demo/03-trace-explorations/03-tro-fingerprint-state/run.sh index 1022328..7dbff58 100644 --- a/demo/02-explorations/09-tro-fingerprint-state/run.sh +++ b/demo/03-trace-explorations/03-tro-fingerprint-state/run.sh @@ -12,7 +12,7 @@ FINGERPRINT_STATE_FILE=products/fingerprint_state.csv bash_cell 'Remove the run folder' << END_CELL if [[ -d "${TRO_DATA_RUN_DIR}" ]] ; then - rm -vf "${TRO_DATA_RUN_DIR}"/* + rm -f "${TRO_DATA_RUN_DIR}"/* rmdir -v "${TRO_DATA_RUN_DIR}" fi diff --git a/demo/02-explorations/09-tro-fingerprint-state/run.txt b/demo/03-trace-explorations/03-tro-fingerprint-state/run.txt similarity index 98% rename from demo/02-explorations/09-tro-fingerprint-state/run.txt rename to demo/03-trace-explorations/03-tro-fingerprint-state/run.txt index 5b3e06c..b6f8d5b 100644 --- a/demo/02-explorations/09-tro-fingerprint-state/run.txt +++ b/demo/03-trace-explorations/03-tro-fingerprint-state/run.txt @@ -1,13 +1,11 @@ ================================================ bash cell | Remove the run folder ================================================= if [[ -d "runtime" ]] ; then - rm -vf "runtime"/* + rm -f "runtime"/* rmdir -v "runtime" fi ----------------------------------------------------------- cell outputs ----------------------------------------------------------- -removed 'runtime/file1.csv' -removed 'runtime/file3.csv' rmdir: removing directory, 'runtime' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/demo/02-explorations/09-tro-fingerprint-state/runtime/file1.csv b/demo/03-trace-explorations/03-tro-fingerprint-state/runtime/file1.csv similarity index 100% rename from demo/02-explorations/09-tro-fingerprint-state/runtime/file1.csv rename to demo/03-trace-explorations/03-tro-fingerprint-state/runtime/file1.csv diff --git a/demo/02-explorations/09-tro-fingerprint-state/runtime/file3.csv b/demo/03-trace-explorations/03-tro-fingerprint-state/runtime/file3.csv similarity index 100% rename from demo/02-explorations/09-tro-fingerprint-state/runtime/file3.csv rename to demo/03-trace-explorations/03-tro-fingerprint-state/runtime/file3.csv diff --git a/demo/02-explorations/09-tro-fingerprint-state/test.py b/demo/03-trace-explorations/03-tro-fingerprint-state/test.py similarity index 100% rename from demo/02-explorations/09-tro-fingerprint-state/test.py rename to demo/03-trace-explorations/03-tro-fingerprint-state/test.py diff --git a/demo/02-explorations/07-gpg-api-demos/01-generate-key/Makefile b/demo/03-trace-explorations/04-timestamp/Makefile similarity index 100% rename from demo/02-explorations/07-gpg-api-demos/01-generate-key/Makefile rename to demo/03-trace-explorations/04-timestamp/Makefile diff --git a/demo/02-explorations/10-timestamp/data/signature.asc b/demo/03-trace-explorations/04-timestamp/data/signature.asc similarity index 100% rename from demo/02-explorations/10-timestamp/data/signature.asc rename to demo/03-trace-explorations/04-timestamp/data/signature.asc diff --git a/demo/03-trace-explorations/04-timestamp/products/digest.yaml b/demo/03-trace-explorations/04-timestamp/products/digest.yaml new file mode 100644 index 0000000..b034d90 --- /dev/null +++ b/demo/03-trace-explorations/04-timestamp/products/digest.yaml @@ -0,0 +1,2 @@ +tro-declaration: 1d019ac3518b6f20bbc93c829e6c0d3234c9a83c99c0a1615580537836b0a079 +trs-signature": 9fb5dd0a2b9afdf4071b43558848a70101c91d3b1eab61f6a369740c36c2ea8d diff --git a/demo/03-trace-explorations/04-timestamp/products/file.tsq b/demo/03-trace-explorations/04-timestamp/products/file.tsq new file mode 100644 index 0000000..23904e5 Binary files /dev/null and b/demo/03-trace-explorations/04-timestamp/products/file.tsq differ diff --git a/demo/02-explorations/10-timestamp/run.sh b/demo/03-trace-explorations/04-timestamp/run.sh similarity index 90% rename from demo/02-explorations/10-timestamp/run.sh rename to demo/03-trace-explorations/04-timestamp/run.sh index 1e92786..93abdc7 100644 --- a/demo/02-explorations/10-timestamp/run.sh +++ b/demo/03-trace-explorations/04-timestamp/run.sh @@ -1,11 +1,11 @@ #!/usr/bin/env bash CERTIFICATE_DIR=../common/certificate -TRO_DECLARATION_FILE=../common/tro-01-from-minimal-trs.jsonld +TRO_DECLARATION_FILE=../common/tro/tro.jsonld TRS_SIGNATURE_FILE=data/signature.asc -DIGEST_FILE=data/digest.yaml -TSQ_FILE=data/file.tsq -TSR_FILE=data/file.tsr +DIGEST_FILE=products/digest.yaml +TSQ_FILE=products/file.tsq +TSR_FILE=tmp/file.tsr diff --git a/demo/02-explorations/10-timestamp/run.txt b/demo/03-trace-explorations/04-timestamp/run.txt similarity index 81% rename from demo/02-explorations/10-timestamp/run.txt rename to demo/03-trace-explorations/04-timestamp/run.txt index 44531f6..b37a31e 100644 --- a/demo/02-explorations/10-timestamp/run.txt +++ b/demo/03-trace-explorations/04-timestamp/run.txt @@ -1,7 +1,7 @@ ================================ bash cell | Compute a digest for tro declaration and trs signature ================================ -cat > data/digest.yaml << EOF -tro-declaration: c7ef4301a9f9978c282affaa69a32971d991d4b5e21501bd3fd6241c02823c2c +cat > products/digest.yaml << EOF +tro-declaration: 1d019ac3518b6f20bbc93c829e6c0d3234c9a83c99c0a1615580537836b0a079 trs-signature": 9fb5dd0a2b9afdf4071b43558848a70101c91d3b1eab61f6a369740c36c2ea8d EOF @@ -11,7 +11,7 @@ EOF ================================================== bash cell | Create a tsq file =================================================== -openssl ts -query -data data/digest.yaml -no_nonce -sha512 -cert -out data/file.tsq +openssl ts -query -data products/digest.yaml -no_nonce -sha512 -cert -out products/file.tsq ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -19,7 +19,7 @@ openssl ts -query -data data/digest.yaml -no_nonce -sha512 -cert -out data/file. ================================================== bash cell | Create a tsr file =================================================== -curl -H "Content-Type: application/timestamp-query" --data-binary '@data/file.tsq' https://freetsa.org/tsr > data/file.tsr +curl -H "Content-Type: application/timestamp-query" --data-binary '@products/file.tsq' https://freetsa.org/tsr > tmp/file.tsr ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -27,7 +27,7 @@ curl -H "Content-Type: application/timestamp-query" --data-binary '@data/file.ts ==================================================== bash cell | Verify the tsr ==================================================== -openssl ts -verify -in data/file.tsr -queryfile data/file.tsq -CAfile ../common/certificate/cacert.pem -untrusted ../common/certificate/tsa.crt +openssl ts -verify -in tmp/file.tsr -queryfile products/file.tsq -CAfile ../common/certificate/cacert.pem -untrusted ../common/certificate/tsa.crt ----------------------------------------------------------- cell outputs ----------------------------------------------------------- Verification: OK diff --git a/demo/02-explorations/07-gpg-api-demos/02-simple-tro/Makefile b/demo/03-trace-explorations/05-validate-tro-declaration/Makefile similarity index 100% rename from demo/02-explorations/07-gpg-api-demos/02-simple-tro/Makefile rename to demo/03-trace-explorations/05-validate-tro-declaration/Makefile diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/mappings.json b/demo/03-trace-explorations/05-validate-tro-declaration/data/mappings.json similarity index 79% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/mappings.json rename to demo/03-trace-explorations/05-validate-tro-declaration/data/mappings.json index ba3993b..701d9d4 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/mappings.json +++ b/demo/03-trace-explorations/05-validate-tro-declaration/data/mappings.json @@ -2,5 +2,5 @@ "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf#", "http://www.w3.org/2000/01/rdf-schema#": "rdfs#", "https://w3id.org/trace/2023/05/trov#": "trov#", - "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/": "" + "https://github.com/transparency-certified/trace-model/tree/master/demo/03-trace-explorations/": "" } \ No newline at end of file diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro.schema.ttl b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro.schema.ttl similarity index 88% rename from demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro.schema.ttl rename to demo/03-trace-explorations/05-validate-tro-declaration/data/tro.schema.ttl index 6ecd9c9..94791e1 100644 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro.schema.ttl +++ b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro.schema.ttl @@ -1,7 +1,7 @@ @prefix rdf: . @prefix rdfs: . @prefix trov: . -@prefix : . +@prefix : . @prefix xsd: . @prefix sh: . @@ -39,7 +39,7 @@ schema:TroShape schema:TrsShape a sh:NodeShape ; - sh:targetClass trov:TrustedResearchSystem ; + sh:targetClass trov:TransparentResearchSystem ; sh:property [ sh:path rdfs:comment ; sh:datatype xsd:string ; @@ -105,22 +105,22 @@ schema:ArtifactShape schema:ArrShape a sh:NodeShape ; sh:targetClass trov:ArtifactArrangement ; - sh:property [ # Each artifact has at LEAST ONE artifact locus - sh:path trov:hasLocus ; + sh:property [ # Each artifact has at LEAST ONE artifact location + sh:path trov:hasArtifactLocation ; sh:minCount 1 ; - sh:node schema:LocusShape ; + sh:node schema:ArtifactLocationShape ; ] . -schema:LocusShape +schema:ArtifactLocationShape a sh:NodeShape ; - sh:targetClass trov:ArtifactLocus ; - sh:property [ # Each artifact locus is linked to a valid artifact + sh:targetClass trov:ArtifactLocation ; + sh:property [ # Each artifact location is linked to a valid artifact sh:path trov:hasArtifact ; sh:class trov:ResearchArtifact ; sh:minCount 1 ; sh:maxCount 1 ; ] ; - sh:property [ # Each artifact locus has EXACTLY ONE location + sh:property [ # Each artifact location has EXACTLY ONE location sh:path trov:hasLocation ; sh:datatype xsd:string ; sh:minCount 1 ; diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro1.jsonld b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro1.jsonld similarity index 82% rename from demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro1.jsonld rename to demo/03-trace-explorations/05-validate-tro-declaration/data/tro1.jsonld index 48ffe6a..c6ff5af 100644 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro1.jsonld +++ b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro1.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/03-trace-explorations/" }], "@graph": [ @@ -33,16 +33,16 @@ "trov:hasArrangement": { "@id": "arrangement/1", "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "filepath1" }, { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/2", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, "trov:hasLocation": "filepath2" }] diff --git a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro2.jsonld b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro2.jsonld similarity index 90% rename from demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro2.jsonld rename to demo/03-trace-explorations/05-validate-tro-declaration/data/tro2.jsonld index 1e90c36..58dfc27 100644 --- a/demo/02-explorations/12-validate-jsonld/06-test-tro-wrong-cases/data/tro2.jsonld +++ b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro2.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/03-trace-explorations/" }], "@graph": [ @@ -14,7 +14,7 @@ "trov:wasAssembledBy": { "@id": "trs", - "@type": "trov:TrustedResearchSystem", + "@type": "trov:TransparentResearchSystem", "rdfs:comment": "TRS that enforces no policies", "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" }, @@ -57,16 +57,16 @@ { "@id": "arrangement/1", "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "file1" }, { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/2", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, "trov:hasLocation": "file2" } diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro3.jsonld b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro3.jsonld similarity index 88% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro3.jsonld rename to demo/03-trace-explorations/05-validate-tro-declaration/data/tro3.jsonld index f0d6d8e..81a4272 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro3.jsonld +++ b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro3.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/03-trace-explorations/" }], "@graph": [ @@ -14,7 +14,7 @@ "trov:wasAssembledBy": { "@id": "trs", - "@type": "trov:TrustedResearchSystem", + "@type": "trov:TransparentResearchSystem", "rdfs:comment": "TRS that enforces no policies", "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" }, @@ -68,28 +68,28 @@ { "@id": "arrangement/1", "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "file1" }, { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/2", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "file1" }, { - "@id": "arrangement/1/locus/3", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/3", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, "trov:hasLocation": "file2" }, { - "@id": "arrangement/1/locus/4", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/4", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/100" }, "trov:hasLocation": "file2" } diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro4.jsonld b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro4.jsonld similarity index 85% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro4.jsonld rename to demo/03-trace-explorations/05-validate-tro-declaration/data/tro4.jsonld index 9c80332..873c138 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro4.jsonld +++ b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro4.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/03-trace-explorations/" }], "@graph": [ @@ -32,10 +32,10 @@ "trov:hasArrangement": { "@id": "arrangement/1", "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "filepath1" }] diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro5.jsonld b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro5.jsonld similarity index 86% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro5.jsonld rename to demo/03-trace-explorations/05-validate-tro-declaration/data/tro5.jsonld index 4f374ab..574afaf 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/data/tro5.jsonld +++ b/demo/03-trace-explorations/05-validate-tro-declaration/data/tro5.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/03-trace-explorations/" }], "@graph": [ @@ -33,10 +33,10 @@ "trov:hasArrangement": { "@id": "arrangement/1", "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "filepath1" }] diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro1.gv b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro1.gv similarity index 73% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro1.gv rename to demo/03-trace-explorations/05-validate-tro-declaration/products/tro1.gv index 5b7b6e9..13e6661 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro1.gv +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro1.gv @@ -6,39 +6,39 @@ strict digraph "" { shape=box, style="filled, rounded"]; "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", + "arrangement/1/location/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "arrangement/1/locus/2" [fillcolor="#fdccac", + "arrangement/1" -> "arrangement/1/location/1" [label="trov#hasArtifactLocation"]; + "arrangement/1/location/2" [fillcolor="#fdccac", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/2" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", + "arrangement/1" -> "arrangement/1/location/2" [label="trov#hasArtifactLocation"]; + "trov#ArtifactLocation" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; + "arrangement/1/location/1" -> "trov#ArtifactLocation" [label="rdf#type"]; "composition/1/artifact/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; + "arrangement/1/location/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; filepath1 [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> filepath1 [label="trov#hasLocation"]; - "arrangement/1/locus/2" -> "trov#ArtifactLocus" [label="rdf#type"]; + "arrangement/1/location/1" -> filepath1 [label="trov#hasLocation"]; + "arrangement/1/location/2" -> "trov#ArtifactLocation" [label="rdf#type"]; "composition/1/artifact/100" [fillcolor="#cbd5e8", shape=box, style="filled, rounded"]; - "arrangement/1/locus/2" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; + "arrangement/1/location/2" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; filepath2 [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/2" -> filepath2 [label="trov#hasLocation"]; + "arrangement/1/location/2" -> filepath2 [label="trov#hasLocation"]; "Value does not have class trov:ResearchArtifact" [fillcolor="#fdccac", shape=box, style="filled, rounded, dashed"]; - "arrangement/1/locus/2" -> "Value does not have class trov:ResearchArtifact" [label=ErrorMsg, + "arrangement/1/location/2" -> "Value does not have class trov:ResearchArtifact" [label=ErrorMsg, style=dashed]; "trov#ResearchArtifact" [fillcolor="#b3e2cd", shape=box, diff --git a/demo/03-trace-explorations/05-validate-tro-declaration/products/tro1.svg b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro1.svg new file mode 100644 index 0000000..41b14f9 --- /dev/null +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro1.svg @@ -0,0 +1,279 @@ + + + + + + + + + +arrangement/1 + +arrangement/1 + + + +trov#ArtifactArrangement + +trov#ArtifactArrangement + + + +arrangement/1->trov#ArtifactArrangement + + +rdf#type + + + +arrangement/1/location/1 + +arrangement/1/location/1 + + + +arrangement/1->arrangement/1/location/1 + + +trov#hasArtifactLocation + + + +arrangement/1/location/2 + +arrangement/1/location/2 + + + +arrangement/1->arrangement/1/location/2 + + +trov#hasArtifactLocation + + + +trov#ArtifactLocation + +trov#ArtifactLocation + + + +arrangement/1/location/1->trov#ArtifactLocation + + +rdf#type + + + +composition/1/artifact/1 + +composition/1/artifact/1 + + + +arrangement/1/location/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +filepath1 + +filepath1 + + + +arrangement/1/location/1->filepath1 + + +trov#hasLocation + + + +arrangement/1/location/2->trov#ArtifactLocation + + +rdf#type + + + +composition/1/artifact/100 + +composition/1/artifact/100 + + + +arrangement/1/location/2->composition/1/artifact/100 + + +trov#hasArtifact + + + +filepath2 + +filepath2 + + + +arrangement/1/location/2->filepath2 + + +trov#hasLocation + + + +Value does not have class trov:ResearchArtifact + +Value does not have class trov:ResearchArtifact + + + +arrangement/1/location/2->Value does not have class trov:ResearchArtifact + + +ErrorMsg + + + +trov#ResearchArtifact + +trov#ResearchArtifact + + + +composition/1/artifact/1->trov#ResearchArtifact + + +rdf#type + + + +art.sha256.1 + +art.sha256.1 + + + +composition/1/artifact/1->art.sha256.1 + + +trov#sha256 + + + +composition/1 + +composition/1 + + + +composition/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +trov#ArtifactComposition + +trov#ArtifactComposition + + + +composition/1->trov#ArtifactComposition + + +rdf#type + + + +fp1 + +fp1 + + + +composition/1->fp1 + + +trov#hasFingerprint + + + +trov#CompositionFingerprint + +trov#CompositionFingerprint + + + +fp1->trov#CompositionFingerprint + + +rdf#type + + + +sha256.fp1 + +sha256.fp1 + + + +fp1->sha256.fp1 + + +trov#sha256 + + + +tro/1 + +tro/1 + + + +tro/1->arrangement/1 + + +trov#hasArrangement + + + +tro/1->composition/1 + + +trov#hasComposition + + + +trov#TransparentResearchObject + +trov#TransparentResearchObject + + + +tro/1->trov#TransparentResearchObject + + +rdf#type + + + +Less than 1 values on <tro/1>->trov:wasAssembledBy + +Less than 1 values on <tro/1>->trov:wasAssembledBy + + + +tro/1->Less than 1 values on <tro/1>->trov:wasAssembledBy + + +ErrorMsg + + + diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro2.gv b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro2.gv similarity index 85% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro2.gv rename to demo/03-trace-explorations/05-validate-tro-declaration/products/tro2.gv index dfc46ef..589a1c6 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro2.gv +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro2.gv @@ -6,39 +6,39 @@ strict digraph "" { shape=box, style="filled, rounded"]; "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", + "arrangement/1/location/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "arrangement/1/locus/2" [fillcolor="#fdccac", + "arrangement/1" -> "arrangement/1/location/1" [label="trov#hasArtifactLocation"]; + "arrangement/1/location/2" [fillcolor="#fdccac", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/2" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", + "arrangement/1" -> "arrangement/1/location/2" [label="trov#hasArtifactLocation"]; + "trov#ArtifactLocation" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; + "arrangement/1/location/1" -> "trov#ArtifactLocation" [label="rdf#type"]; "composition/1/artifact/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; + "arrangement/1/location/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; file1 [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> file1 [label="trov#hasLocation"]; - "arrangement/1/locus/2" -> "trov#ArtifactLocus" [label="rdf#type"]; + "arrangement/1/location/1" -> file1 [label="trov#hasLocation"]; + "arrangement/1/location/2" -> "trov#ArtifactLocation" [label="rdf#type"]; "composition/1/artifact/100" [fillcolor="#cbd5e8", shape=box, style="filled, rounded"]; - "arrangement/1/locus/2" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; + "arrangement/1/location/2" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; file2 [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/2" -> file2 [label="trov#hasLocation"]; + "arrangement/1/location/2" -> file2 [label="trov#hasLocation"]; "Value does not have class trov:ResearchArtifact" [fillcolor="#fdccac", shape=box, style="filled, rounded, dashed"]; - "arrangement/1/locus/2" -> "Value does not have class trov:ResearchArtifact" [label=ErrorMsg, + "arrangement/1/location/2" -> "Value does not have class trov:ResearchArtifact" [label=ErrorMsg, style=dashed]; "trov#ResearchArtifact" [fillcolor="#b3e2cd", shape=box, @@ -103,10 +103,10 @@ strict digraph "" { shape=box, style="filled, rounded"]; "tro/1" -> tsa [label="trov#wasTimestampedBy"]; - "trov#TrustedResearchSystem" [fillcolor="#b3e2cd", + "trov#TransparentResearchSystem" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - trs -> "trov#TrustedResearchSystem" [label="rdf#type"]; + trs -> "trov#TransparentResearchSystem" [label="rdf#type"]; "TRS that enforces no policies" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; diff --git a/demo/03-trace-explorations/05-validate-tro-declaration/products/tro2.svg b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro2.svg new file mode 100644 index 0000000..1de0d1c --- /dev/null +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro2.svg @@ -0,0 +1,493 @@ + + + + + + + + + +arrangement/1 + +arrangement/1 + + + +trov#ArtifactArrangement + +trov#ArtifactArrangement + + + +arrangement/1->trov#ArtifactArrangement + + +rdf#type + + + +arrangement/1/location/1 + +arrangement/1/location/1 + + + +arrangement/1->arrangement/1/location/1 + + +trov#hasArtifactLocation + + + +arrangement/1/location/2 + +arrangement/1/location/2 + + + +arrangement/1->arrangement/1/location/2 + + +trov#hasArtifactLocation + + + +trov#ArtifactLocation + +trov#ArtifactLocation + + + +arrangement/1/location/1->trov#ArtifactLocation + + +rdf#type + + + +composition/1/artifact/1 + +composition/1/artifact/1 + + + +arrangement/1/location/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +file1 + +file1 + + + +arrangement/1/location/1->file1 + + +trov#hasLocation + + + +arrangement/1/location/2->trov#ArtifactLocation + + +rdf#type + + + +composition/1/artifact/100 + +composition/1/artifact/100 + + + +arrangement/1/location/2->composition/1/artifact/100 + + +trov#hasArtifact + + + +file2 + +file2 + + + +arrangement/1/location/2->file2 + + +trov#hasLocation + + + +Value does not have class trov:ResearchArtifact + +Value does not have class trov:ResearchArtifact + + + +arrangement/1/location/2->Value does not have class trov:ResearchArtifact + + +ErrorMsg + + + +trov#ResearchArtifact + +trov#ResearchArtifact + + + +composition/1/artifact/1->trov#ResearchArtifact + + +rdf#type + + + +text/plain + +text/plain + + + +composition/1/artifact/1->text/plain + + +trov#mimeType + + + +b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + +b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + + + +composition/1/artifact/1->b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + + +trov#sha256 + + + +composition/1 + +composition/1 + + + +composition/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +trov#ArtifactComposition + +trov#ArtifactComposition + + + +composition/1->trov#ArtifactComposition + + +rdf#type + + + +composition/1/artifact/2 + +composition/1/artifact/2 + + + +composition/1->composition/1/artifact/2 + + +trov#hasArtifact + + + +fingerprint + +fingerprint + + + +composition/1->fingerprint + + +trov#hasFingerprint + + + +composition/1/artifact/2->trov#ResearchArtifact + + +rdf#type + + + +composition/1/artifact/2->text/plain + + +trov#mimeType + + + +7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730 + +7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730 + + + +composition/1/artifact/2->7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730 + + +trov#sha256 + + + +trov#CompositionFingerprint + +trov#CompositionFingerprint + + + +fingerprint->trov#CompositionFingerprint + + +rdf#type + + + +218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc + +218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc + + + +fingerprint->218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc + + +trov#sha256 + + + +tro/1 + +tro/1 + + + +tro/1->arrangement/1 + + +trov#hasArrangement + + + +tro/1->composition/1 + + +trov#hasComposition + + + +trov#TransparentResearchObject + +trov#TransparentResearchObject + + + +tro/1->trov#TransparentResearchObject + + +rdf#type + + + +A composition of two files in a single arrangement endorsed by a TRS that enforces no policies + +A composition of two files in a single arrangement endorsed by a TRS that enforces no policies + + + +tro/1->A composition of two files in a single arrangement endorsed by a TRS that enforces no policies + + +rdfs#comment + + + +trs + +trs + + + +tro/1->trs + + +trov#wasAssembledBy + + + +tsa + +tsa + + + +tro/1->tsa + + +trov#wasTimestampedBy + + + +trov#TransparentResearchSystem + +trov#TransparentResearchSystem + + + +trs->trov#TransparentResearchSystem + + +rdf#type + + + +TRS that enforces no policies + +TRS that enforces no policies + + + +trs->TRS that enforces no policies + + +rdfs#comment + + + +-----BEGIN PGP PUBLIC KEY BLOCK----- +mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f +PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 +TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb +HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS +xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N +IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== +=vuaX +-----END PGP PUBLIC KEY BLOCK----- + + +-----BEGIN PGP PUBLIC KEY BLOCK----- +mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f +PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 +TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb +HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS +xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N +IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== +=vuaX +-----END PGP PUBLIC KEY BLOCK----- + + + +trs->-----BEGIN PGP PUBLIC KEY BLOCK----- +mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f +PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 +TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb +HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS +xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N +IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== +=vuaX +-----END PGP PUBLIC KEY BLOCK----- + + + +trov#publicKey + + + +tsa->-----BEGIN PGP PUBLIC KEY BLOCK----- +mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f +PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 +TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb +HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS +xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N +IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== +=vuaX +-----END PGP PUBLIC KEY BLOCK----- + + + +trov#publicKey + + + +trov#TimeStampingAuthority + +trov#TimeStampingAuthority + + + +tsa->trov#TimeStampingAuthority + + +rdf#type + + + diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro3.gv b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro3.gv similarity index 81% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro3.gv rename to demo/03-trace-explorations/05-validate-tro-declaration/products/tro3.gv index b116dfc..de731c3 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro3.gv +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro3.gv @@ -6,56 +6,56 @@ strict digraph "" { shape=box, style="filled, rounded"]; "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", + "arrangement/1/location/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "arrangement/1/locus/2" [fillcolor="#b3e2cd", + "arrangement/1" -> "arrangement/1/location/1" [label="trov#hasArtifactLocation"]; + "arrangement/1/location/2" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/2" [label="trov#hasLocus"]; - "arrangement/1/locus/3" [fillcolor="#b3e2cd", + "arrangement/1" -> "arrangement/1/location/2" [label="trov#hasArtifactLocation"]; + "arrangement/1/location/3" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/3" [label="trov#hasLocus"]; - "arrangement/1/locus/4" [fillcolor="#fdccac", + "arrangement/1" -> "arrangement/1/location/3" [label="trov#hasArtifactLocation"]; + "arrangement/1/location/4" [fillcolor="#fdccac", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/4" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", + "arrangement/1" -> "arrangement/1/location/4" [label="trov#hasArtifactLocation"]; + "trov#ArtifactLocation" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; + "arrangement/1/location/1" -> "trov#ArtifactLocation" [label="rdf#type"]; "composition/1/artifact/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; + "arrangement/1/location/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; file1 [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> file1 [label="trov#hasLocation"]; - "arrangement/1/locus/2" -> "trov#ArtifactLocus" [label="rdf#type"]; - "arrangement/1/locus/2" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; - "arrangement/1/locus/2" -> file1 [label="trov#hasLocation"]; - "arrangement/1/locus/3" -> "trov#ArtifactLocus" [label="rdf#type"]; + "arrangement/1/location/1" -> file1 [label="trov#hasLocation"]; + "arrangement/1/location/2" -> "trov#ArtifactLocation" [label="rdf#type"]; + "arrangement/1/location/2" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; + "arrangement/1/location/2" -> file1 [label="trov#hasLocation"]; + "arrangement/1/location/3" -> "trov#ArtifactLocation" [label="rdf#type"]; "composition/1/artifact/2" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/3" -> "composition/1/artifact/2" [label="trov#hasArtifact"]; + "arrangement/1/location/3" -> "composition/1/artifact/2" [label="trov#hasArtifact"]; file2 [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/3" -> file2 [label="trov#hasLocation"]; - "arrangement/1/locus/4" -> "trov#ArtifactLocus" [label="rdf#type"]; - "arrangement/1/locus/4" -> file2 [label="trov#hasLocation"]; + "arrangement/1/location/3" -> file2 [label="trov#hasLocation"]; + "arrangement/1/location/4" -> "trov#ArtifactLocation" [label="rdf#type"]; + "arrangement/1/location/4" -> file2 [label="trov#hasLocation"]; "composition/1/artifact/100" [fillcolor="#cbd5e8", shape=box, style="filled, rounded"]; - "arrangement/1/locus/4" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; + "arrangement/1/location/4" -> "composition/1/artifact/100" [label="trov#hasArtifact"]; "Value does not have class trov:ResearchArtifact" [fillcolor="#fdccac", shape=box, style="filled, rounded, dashed"]; - "arrangement/1/locus/4" -> "Value does not have class trov:ResearchArtifact" [label=ErrorMsg, + "arrangement/1/location/4" -> "Value does not have class trov:ResearchArtifact" [label=ErrorMsg, style=dashed]; "trov#ResearchArtifact" [fillcolor="#b3e2cd", shape=box, @@ -137,10 +137,10 @@ strict digraph "" { shape=box, style="filled, rounded"]; "tro/1" -> tsa [label="trov#wasTimestampedBy"]; - "trov#TrustedResearchSystem" [fillcolor="#b3e2cd", + "trov#TransparentResearchSystem" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - trs -> "trov#TrustedResearchSystem" [label="rdf#type"]; + trs -> "trov#TransparentResearchSystem" [label="rdf#type"]; "TRS that enforces no policies" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; diff --git a/demo/03-trace-explorations/05-validate-tro-declaration/products/tro3.svg b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro3.svg new file mode 100644 index 0000000..11585da --- /dev/null +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro3.svg @@ -0,0 +1,679 @@ + + + + + + + + + +arrangement/1 + +arrangement/1 + + + +trov#ArtifactArrangement + +trov#ArtifactArrangement + + + +arrangement/1->trov#ArtifactArrangement + + +rdf#type + + + +arrangement/1/location/1 + +arrangement/1/location/1 + + + +arrangement/1->arrangement/1/location/1 + + +trov#hasArtifactLocation + + + +arrangement/1/location/2 + +arrangement/1/location/2 + + + +arrangement/1->arrangement/1/location/2 + + +trov#hasArtifactLocation + + + +arrangement/1/location/3 + +arrangement/1/location/3 + + + +arrangement/1->arrangement/1/location/3 + + +trov#hasArtifactLocation + + + +arrangement/1/location/4 + +arrangement/1/location/4 + + + +arrangement/1->arrangement/1/location/4 + + +trov#hasArtifactLocation + + + +trov#ArtifactLocation + +trov#ArtifactLocation + + + +arrangement/1/location/1->trov#ArtifactLocation + + +rdf#type + + + +composition/1/artifact/1 + +composition/1/artifact/1 + + + +arrangement/1/location/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +file1 + +file1 + + + +arrangement/1/location/1->file1 + + +trov#hasLocation + + + +arrangement/1/location/2->trov#ArtifactLocation + + +rdf#type + + + +arrangement/1/location/2->composition/1/artifact/1 + + +trov#hasArtifact + + + +arrangement/1/location/2->file1 + + +trov#hasLocation + + + +arrangement/1/location/3->trov#ArtifactLocation + + +rdf#type + + + +composition/1/artifact/2 + +composition/1/artifact/2 + + + +arrangement/1/location/3->composition/1/artifact/2 + + +trov#hasArtifact + + + +file2 + +file2 + + + +arrangement/1/location/3->file2 + + +trov#hasLocation + + + +arrangement/1/location/4->trov#ArtifactLocation + + +rdf#type + + + +arrangement/1/location/4->file2 + + +trov#hasLocation + + + +composition/1/artifact/100 + +composition/1/artifact/100 + + + +arrangement/1/location/4->composition/1/artifact/100 + + +trov#hasArtifact + + + +Value does not have class trov:ResearchArtifact + +Value does not have class trov:ResearchArtifact + + + +arrangement/1/location/4->Value does not have class trov:ResearchArtifact + + +ErrorMsg + + + +trov#ResearchArtifact + +trov#ResearchArtifact + + + +composition/1/artifact/1->trov#ResearchArtifact + + +rdf#type + + + +text/plain + +text/plain + + + +composition/1/artifact/1->text/plain + + +trov#mimeType + + + +b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + +b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + + + +composition/1/artifact/1->b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c + + +trov#sha256 + + + +composition/1/artifact/2->trov#ResearchArtifact + + +rdf#type + + + +composition/1/artifact/2->text/plain + + +trov#mimeType + + + +7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730 + +7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730 + + + +composition/1/artifact/2->7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730 + + +trov#sha256 + + + +composition/1 + +composition/1 + + + +composition/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +composition/1->composition/1/artifact/2 + + +trov#hasArtifact + + + +trov#ArtifactComposition + +trov#ArtifactComposition + + + +composition/1->trov#ArtifactComposition + + +rdf#type + + + +fingerprint + +fingerprint + + + +composition/1->fingerprint + + +trov#hasFingerprint + + + +trov#CompositionFingerprint + +trov#CompositionFingerprint + + + +fingerprint->trov#CompositionFingerprint + + +rdf#type + + + +218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc + +218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc + + + +fingerprint->218d9c33959c89013ca3f0f9dfa9479e0df8d5e4a53bb319b5bfab87f506dadc + + +trov#sha256 + + + +fp2 + +fp2 + + + +fingerprint->fp2 + + +trov#sha256 + + + +*** Each fingerprint should have EXACTLY ONE sha256 with String format *** + +*** Each fingerprint should have EXACTLY ONE sha256 with String format *** + + + +fingerprint->*** Each fingerprint should have EXACTLY ONE sha256 with String format *** + + +ErrorMsg + + + +composition/2 + +composition/2 + + + +composition/2->trov#ArtifactComposition + + +rdf#type + + + +composition/2->fingerprint + + +trov#hasFingerprint + + + +Less than 1 values on <composition/2>->trov:hasArtifact + +Less than 1 values on <composition/2>->trov:hasArtifact + + + +composition/2->Less than 1 values on <composition/2>->trov:hasArtifact + + +ErrorMsg + + + +tro/1 + +tro/1 + + + +tro/1->arrangement/1 + + +trov#hasArrangement + + + +tro/1->composition/1 + + +trov#hasComposition + + + +tro/1->composition/2 + + +trov#hasComposition + + + +trov#TransparentResearchObject + +trov#TransparentResearchObject + + + +tro/1->trov#TransparentResearchObject + + +rdf#type + + + +A composition of two files in a single arrangement endorsed by a TRS that enforces no policies + +A composition of two files in a single arrangement endorsed by a TRS that enforces no policies + + + +tro/1->A composition of two files in a single arrangement endorsed by a TRS that enforces no policies + + +rdfs#comment + + + +trs + +trs + + + +tro/1->trs + + +trov#wasAssembledBy + + + +tsa + +tsa + + + +tro/1->tsa + + +trov#wasTimestampedBy + + + +trov#TransparentResearchSystem + +trov#TransparentResearchSystem + + + +trs->trov#TransparentResearchSystem + + +rdf#type + + + +TRS that enforces no policies + +TRS that enforces no policies + + + +trs->TRS that enforces no policies + + +rdfs#comment + + + +-----BEGIN PGP PUBLIC KEY BLOCK----- +mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f +PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 +TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb +HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS +xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N +IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== +=vuaX +-----END PGP PUBLIC KEY BLOCK----- + + +-----BEGIN PGP PUBLIC KEY BLOCK----- +mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f +PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 +TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb +HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS +xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N +IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== +=vuaX +-----END PGP PUBLIC KEY BLOCK----- + + + +trs->-----BEGIN PGP PUBLIC KEY BLOCK----- +mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f +PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 +TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb +HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS +xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N +IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== +=vuaX +-----END PGP PUBLIC KEY BLOCK----- + + + +trov#publicKey + + + +trs.pk2 + +trs.pk2 + + + +trs->trs.pk2 + + +trov#publicKey + + + +More than 1 values on <trs>->trov:publicKey + +More than 1 values on <trs>->trov:publicKey + + + +trs->More than 1 values on <trs>->trov:publicKey + + +ErrorMsg + + + +tsa->-----BEGIN PGP PUBLIC KEY BLOCK----- +mI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f +PFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6 +TbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0 +HXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb +HbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK +CRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS +xrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N +IsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg== +=vuaX +-----END PGP PUBLIC KEY BLOCK----- + + + +trov#publicKey + + + +trov#TimeStampingAuthority + +trov#TimeStampingAuthority + + + +tsa->trov#TimeStampingAuthority + + +rdf#type + + + +tsa.pk2 + +tsa.pk2 + + + +tsa->tsa.pk2 + + +trov#publicKey + + + +More than 1 values on <tsa>->trov:publicKey + +More than 1 values on <tsa>->trov:publicKey + + + +tsa->More than 1 values on <tsa>->trov:publicKey + + +ErrorMsg + + + diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro4.gv b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro4.gv similarity index 84% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro4.gv rename to demo/03-trace-explorations/05-validate-tro-declaration/products/tro4.gv index 3e559f6..0bde419 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro4.gv +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro4.gv @@ -6,22 +6,22 @@ strict digraph "" { shape=box, style="filled, rounded"]; "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", + "arrangement/1/location/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", + "arrangement/1" -> "arrangement/1/location/1" [label="trov#hasArtifactLocation"]; + "trov#ArtifactLocation" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; + "arrangement/1/location/1" -> "trov#ArtifactLocation" [label="rdf#type"]; "composition/1/artifact/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; + "arrangement/1/location/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; filepath1 [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> filepath1 [label="trov#hasLocation"]; + "arrangement/1/location/1" -> filepath1 [label="trov#hasLocation"]; "trov#ResearchArtifact" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; diff --git a/demo/03-trace-explorations/05-validate-tro-declaration/products/tro4.svg b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro4.svg new file mode 100644 index 0000000..6c36b95 --- /dev/null +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro4.svg @@ -0,0 +1,220 @@ + + + + + + + + + +arrangement/1 + +arrangement/1 + + + +trov#ArtifactArrangement + +trov#ArtifactArrangement + + + +arrangement/1->trov#ArtifactArrangement + + +rdf#type + + + +arrangement/1/location/1 + +arrangement/1/location/1 + + + +arrangement/1->arrangement/1/location/1 + + +trov#hasArtifactLocation + + + +trov#ArtifactLocation + +trov#ArtifactLocation + + + +arrangement/1/location/1->trov#ArtifactLocation + + +rdf#type + + + +composition/1/artifact/1 + +composition/1/artifact/1 + + + +arrangement/1/location/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +filepath1 + +filepath1 + + + +arrangement/1/location/1->filepath1 + + +trov#hasLocation + + + +trov#ResearchArtifact + +trov#ResearchArtifact + + + +composition/1/artifact/1->trov#ResearchArtifact + + +rdf#type + + + +art.sha256.1 + +art.sha256.1 + + + +composition/1/artifact/1->art.sha256.1 + + +trov#sha256 + + + +composition/1 + +composition/1 + + + +composition/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +trov#ArtifactComposition + +trov#ArtifactComposition + + + +composition/1->trov#ArtifactComposition + + +rdf#type + + + +fp1 + +fp1 + + + +composition/1->fp1 + + +trov#hasFingerprint + + + +trov#CompositionFingerprint + +trov#CompositionFingerprint + + + +fp1->trov#CompositionFingerprint + + +rdf#type + + + +*** Each fingerprint should have EXACTLY ONE sha256 with String format *** + +*** Each fingerprint should have EXACTLY ONE sha256 with String format *** + + + +fp1->*** Each fingerprint should have EXACTLY ONE sha256 with String format *** + + +ErrorMsg + + + +tro/1 + +tro/1 + + + +tro/1->arrangement/1 + + +trov#hasArrangement + + + +tro/1->composition/1 + + +trov#hasComposition + + + +trov#TransparentResearchObject + +trov#TransparentResearchObject + + + +tro/1->trov#TransparentResearchObject + + +rdf#type + + + +Less than 1 values on <tro/1>->trov:wasAssembledBy + +Less than 1 values on <tro/1>->trov:wasAssembledBy + + + +tro/1->Less than 1 values on <tro/1>->trov:wasAssembledBy + + +ErrorMsg + + + diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro5.gv b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro5.gv similarity index 85% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro5.gv rename to demo/03-trace-explorations/05-validate-tro-declaration/products/tro5.gv index 98eaaf0..eb4f3cf 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/products/tro5.gv +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro5.gv @@ -6,22 +6,22 @@ strict digraph "" { shape=box, style="filled, rounded"]; "arrangement/1" -> "trov#ArtifactArrangement" [label="rdf#type"]; - "arrangement/1/locus/1" [fillcolor="#b3e2cd", + "arrangement/1/location/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1" -> "arrangement/1/locus/1" [label="trov#hasLocus"]; - "trov#ArtifactLocus" [fillcolor="#b3e2cd", + "arrangement/1" -> "arrangement/1/location/1" [label="trov#hasArtifactLocation"]; + "trov#ArtifactLocation" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "trov#ArtifactLocus" [label="rdf#type"]; + "arrangement/1/location/1" -> "trov#ArtifactLocation" [label="rdf#type"]; "composition/1/artifact/1" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; + "arrangement/1/location/1" -> "composition/1/artifact/1" [label="trov#hasArtifact"]; filepath1 [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; - "arrangement/1/locus/1" -> filepath1 [label="trov#hasLocation"]; + "arrangement/1/location/1" -> filepath1 [label="trov#hasLocation"]; "trov#ResearchArtifact" [fillcolor="#b3e2cd", shape=box, style="filled, rounded"]; diff --git a/demo/03-trace-explorations/05-validate-tro-declaration/products/tro5.svg b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro5.svg new file mode 100644 index 0000000..8189abf --- /dev/null +++ b/demo/03-trace-explorations/05-validate-tro-declaration/products/tro5.svg @@ -0,0 +1,246 @@ + + + + + + + + + +arrangement/1 + +arrangement/1 + + + +trov#ArtifactArrangement + +trov#ArtifactArrangement + + + +arrangement/1->trov#ArtifactArrangement + + +rdf#type + + + +arrangement/1/location/1 + +arrangement/1/location/1 + + + +arrangement/1->arrangement/1/location/1 + + +trov#hasArtifactLocation + + + +trov#ArtifactLocation + +trov#ArtifactLocation + + + +arrangement/1/location/1->trov#ArtifactLocation + + +rdf#type + + + +composition/1/artifact/1 + +composition/1/artifact/1 + + + +arrangement/1/location/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +filepath1 + +filepath1 + + + +arrangement/1/location/1->filepath1 + + +trov#hasLocation + + + +trov#ResearchArtifact + +trov#ResearchArtifact + + + +composition/1/artifact/1->trov#ResearchArtifact + + +rdf#type + + + +art.sha256.1 + +art.sha256.1 + + + +composition/1/artifact/1->art.sha256.1 + + +trov#sha256 + + + +composition/1 + +composition/1 + + + +composition/1->composition/1/artifact/1 + + +trov#hasArtifact + + + +trov#ArtifactComposition + +trov#ArtifactComposition + + + +composition/1->trov#ArtifactComposition + + +rdf#type + + + +fp1 + +fp1 + + + +composition/1->fp1 + + +trov#hasFingerprint + + + +trov#CompositionFingerprint + +trov#CompositionFingerprint + + + +fp1->trov#CompositionFingerprint + + +rdf#type + + + +sha256.fp1 + +sha256.fp1 + + + +fp1->sha256.fp1 + + +trov#sha256 + + + +sha256.fp2 + +sha256.fp2 + + + +fp1->sha256.fp2 + + +trov#sha256 + + + +*** Each fingerprint should have EXACTLY ONE sha256 with String format *** + +*** Each fingerprint should have EXACTLY ONE sha256 with String format *** + + + +fp1->*** Each fingerprint should have EXACTLY ONE sha256 with String format *** + + +ErrorMsg + + + +tro/1 + +tro/1 + + + +tro/1->arrangement/1 + + +trov#hasArrangement + + + +tro/1->composition/1 + + +trov#hasComposition + + + +trov#TransparentResearchObject + +trov#TransparentResearchObject + + + +tro/1->trov#TransparentResearchObject + + +rdf#type + + + +Less than 1 values on <tro/1>->trov:wasAssembledBy + +Less than 1 values on <tro/1>->trov:wasAssembledBy + + + +tro/1->Less than 1 values on <tro/1>->trov:wasAssembledBy + + +ErrorMsg + + + diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/run.sh b/demo/03-trace-explorations/05-validate-tro-declaration/run.sh similarity index 82% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/run.sh rename to demo/03-trace-explorations/05-validate-tro-declaration/run.sh index c258bdb..a3e926d 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/run.sh +++ b/demo/03-trace-explorations/05-validate-tro-declaration/run.sh @@ -6,9 +6,9 @@ MAPPINGS_PATH="data/mappings.json" # ------------------------------------------------------------------------------ -bash_cell 'tro validation 1 png: refer to a nonexistent artifact' << END_CELL +bash_cell 'tro validation 1 svg: refer to a nonexistent artifact' << END_CELL -rdfvr -f data/tro1.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro1 -of png +rdfvr -f data/tro1.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro1 -of svg END_CELL @@ -22,9 +22,9 @@ END_CELL # ------------------------------------------------------------------------------ -bash_cell 'tro validation 2 png: refer to a nonexistent artifact' << END_CELL +bash_cell 'tro validation 2 svg: refer to a nonexistent artifact' << END_CELL -rdfvr -f data/tro2.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro2 -of png +rdfvr -f data/tro2.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro2 -of svg END_CELL @@ -38,9 +38,9 @@ END_CELL # ------------------------------------------------------------------------------ -bash_cell 'tro validation 3 png: refer to a nonexistent artifact' << END_CELL +bash_cell 'tro validation 3 svg: refer to a nonexistent artifact' << END_CELL -rdfvr -f data/tro3.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro3 -of png +rdfvr -f data/tro3.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro3 -of svg END_CELL @@ -54,9 +54,9 @@ END_CELL # ------------------------------------------------------------------------------ -bash_cell 'tro validation 4 png: lack of sha256' << END_CELL +bash_cell 'tro validation 4 svg: lack of sha256' << END_CELL -rdfvr -f data/tro4.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro4 -of png +rdfvr -f data/tro4.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro4 -of svg END_CELL @@ -70,9 +70,9 @@ END_CELL # ------------------------------------------------------------------------------ -bash_cell 'tro validation 5 export as png: multiple sha256' << END_CELL +bash_cell 'tro validation 5 export as svg: multiple sha256' << END_CELL -rdfvr -f data/tro5.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro5 -of png +rdfvr -f data/tro5.jsonld -s ${TRO_DECLARATION_SCHEMA_PATH} -m ${MAPPINGS_PATH} -o products/tro5 -of svg END_CELL diff --git a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/run.txt b/demo/03-trace-explorations/05-validate-tro-declaration/run.txt similarity index 90% rename from demo/02-explorations/12-validate-jsonld/07-report-rdfvr/run.txt rename to demo/03-trace-explorations/05-validate-tro-declaration/run.txt index fb8e395..ed0a5e5 100644 --- a/demo/02-explorations/12-validate-jsonld/07-report-rdfvr/run.txt +++ b/demo/03-trace-explorations/05-validate-tro-declaration/run.txt @@ -1,6 +1,6 @@ -================================ bash cell | tro validation 1 png: refer to a nonexistent artifact ================================= +================================ bash cell | tro validation 1 svg: refer to a nonexistent artifact ================================= -rdfvr -f data/tro1.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro1 -of png +rdfvr -f data/tro1.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro1 -of svg ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -14,9 +14,9 @@ rdfvr -f data/tro1.jsonld -s data/tro.schema.ttl -m data/mappings.json -o produc ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -================================ bash cell | tro validation 2 png: refer to a nonexistent artifact ================================= +================================ bash cell | tro validation 2 svg: refer to a nonexistent artifact ================================= -rdfvr -f data/tro2.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro2 -of png +rdfvr -f data/tro2.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro2 -of svg ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -30,9 +30,9 @@ rdfvr -f data/tro2.jsonld -s data/tro.schema.ttl -m data/mappings.json -o produc ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -================================ bash cell | tro validation 3 png: refer to a nonexistent artifact ================================= +================================ bash cell | tro validation 3 svg: refer to a nonexistent artifact ================================= -rdfvr -f data/tro3.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro3 -of png +rdfvr -f data/tro3.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro3 -of svg ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -46,9 +46,9 @@ rdfvr -f data/tro3.jsonld -s data/tro.schema.ttl -m data/mappings.json -o produc ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -========================================= bash cell | tro validation 4 png: lack of sha256 ========================================= +========================================= bash cell | tro validation 4 svg: lack of sha256 ========================================= -rdfvr -f data/tro4.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro4 -of png +rdfvr -f data/tro4.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro4 -of svg ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -62,9 +62,9 @@ rdfvr -f data/tro4.jsonld -s data/tro.schema.ttl -m data/mappings.json -o produc ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -=================================== bash cell | tro validation 5 export as png: multiple sha256 ==================================== +=================================== bash cell | tro validation 5 export as svg: multiple sha256 ==================================== -rdfvr -f data/tro5.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro5 -of png +rdfvr -f data/tro5.jsonld -s data/tro.schema.ttl -m data/mappings.json -o products/tro5 -of svg ----------------------------------------------------------- cell outputs ----------------------------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/demo/02-explorations/07-gpg-api-demos/Makefile b/demo/03-trace-explorations/06-json2jsonld/Makefile similarity index 100% rename from demo/02-explorations/07-gpg-api-demos/Makefile rename to demo/03-trace-explorations/06-json2jsonld/Makefile diff --git a/demo/03-trace-explorations/06-json2jsonld/data/context1.csv b/demo/03-trace-explorations/06-json2jsonld/data/context1.csv new file mode 100644 index 0000000..a9995c6 --- /dev/null +++ b/demo/03-trace-explorations/06-json2jsonld/data/context1.csv @@ -0,0 +1,3 @@ +k1,k2,id +trp,trpAttribute,trp/{id1}/attribute/{id2} +composition,compArtifact,composition/{id1}/artifact/{id2} \ No newline at end of file diff --git a/demo/03-trace-explorations/06-json2jsonld/data/context2.csv b/demo/03-trace-explorations/06-json2jsonld/data/context2.csv new file mode 100644 index 0000000..972f121 --- /dev/null +++ b/demo/03-trace-explorations/06-json2jsonld/data/context2.csv @@ -0,0 +1,4 @@ +k1,k2,k3,id +composition,hasArtifact,artifact,composition/{id1}/artifact/{id2} +arrangement,hasArtifactLocation,artifactLocation,arrangement/{id1}/location/{id2} +trp,hadPerformanceAttribute,trpAttribute,trp/{id1}/attribute/{id2} \ No newline at end of file diff --git a/demo/03-trace-explorations/06-json2jsonld/data/context3.csv b/demo/03-trace-explorations/06-json2jsonld/data/context3.csv new file mode 100644 index 0000000..9f0be4f --- /dev/null +++ b/demo/03-trace-explorations/06-json2jsonld/data/context3.csv @@ -0,0 +1,29 @@ +key,rdfTerm,idPrefix +label,rdfs:label +description,rdfs:comment +wasAssembledBy,trov:wasAssembledBy +hasCapability,trov:hasCapability +capability,@id,trs/capability/ +publicKey,trov:publicKey +wasTimestampedBy,trov:wasTimestampedBy +hasAttribute,trov:hasAttribute +troAttribute,@id,tro/attribute/ +warrantedBy,trov:warrantedBy +hasComposition,trov:hasComposition +composition,@id,composition/ +hasFingerprint,trov:hasFingerprint +fingerprint,@id,fingerprint/ +sha256,trov:sha256 +hasArtifact,trov:hasArtifact +mimeType,trov:mimeType +hasArrangement,trov:hasArrangement +arrangement,@id,arrangement/ +hasArtifactLocation,trov:hasArtifactLocation +hasLocation,trov:hasLocation +hasPerformance,trov:hasPerformance +trp,@id,trp/ +startedAtTime,trov:startedAtTime +endedAtTime,trov:endedAtTime +accessedArrangement,trov:accessedArrangement +contributedToArrangement,trov:contributedToArrangement +hadPerformanceAttribute,trov:hadPerformanceAttribute diff --git a/demo/03-trace-explorations/06-json2jsonld/data/tro.json b/demo/03-trace-explorations/06-json2jsonld/data/tro.json new file mode 100644 index 0000000..4ab60e0 --- /dev/null +++ b/demo/03-trace-explorations/06-json2jsonld/data/tro.json @@ -0,0 +1,237 @@ + +{ + "label": "Transparent Research Object Instance", + "description": "Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application", + + "wasAssembledBy": { + "label": "Transparent Research System Instance", + "description": "TRS that can monitor netowrk accesses or provide Internet isolation", + "publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n", + "hasCapability": [ + { + "capability": 1, + "label": "Capability of Recording Internet Access", + "description": "TRS can record internet access" + }, + { + "capability": 2, + "label": "Capability of Providing Internet Isolation", + "description": "TRS can provide Internet isolation" + } + ] + }, + + "wasTimestampedBy": { + "publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + + "hasAttribute": [ + { + "troAttribute": 1, + "warrantedBy": [ + {"trp": 1, "trpAttribute": 1}, + {"trp": 2, "trpAttribute": 1}, + {"trp": 3, "trpAttribute": 1} + ] + } + ], + + "hasComposition": + { + "composition": 1, + + "hasFingerprint": { + "fingerprint": 1, + "sha256": "b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2" + }, + + "hasArtifact": [ + { + "artifact": 1, + "label": "LBDA NetCDF file", + "description": "NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset", + "mimeType": "application/x-netcdf", + "sha256": "b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" + }, + { + "artifact": 2, + "label": "Initial Notebook", + "description": "Initial state of Jupyter notebook for processing the LBDA dataset", + "mimeType": "text/plain", + "sha256": "8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" + }, + { + "artifact": 3, + "label": "Final Notebook", + "description": "Final state of Jupyter notebook for processing the LBDA dataset", + "mimeType": "text/plain", + "sha256": "8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" + }, + { + "artifact": 4, + "label": "Final Notebook HTML Rendering", + "description": "HTML rendering of final state of the Jupyter notebook", + "mimeType": "text/html", + "sha256": "870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" + }, + { + "artifact": 5, + "label": "Graphical Histogram Rendering", + "description": "Graphical rendering of the histogram of dataset values", + "mimeType": "image/png", + "sha256": "cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" + }, + { + "artifact": 6, + "label": "LBDA GeoTIFF file", + "description": "GeoTIFF file containing LBDA data cube ready for staging to SKOPE server", + "mimeType": "image/tiff", + "sha256": "e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" + } + ] + }, + + "hasArrangement": [ + { + "arrangement": 1, + "label": "Web Resource Artifact Arrangement Instance", + "description": "Arrangement describing location of LBDA NetCDF file on NOAA web server", + "hasArtifactLocation": [ + { + "artifactLocation": 1, + "label": "LBDA NetCDF file", + "hasArtifact": {"composition": 1, "compArtifact": 1}, + "hasLocation": "https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" + } + ] + }, + { + "arrangement": 2, + "label": "Local File System Artifact Arrangement Instance", + "description": "Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook", + "hasArtifactLocation": [ + { + "artifactLocation": 1, + "label": "LBDA NetCDF file", + "hasArtifact": {"composition": 1, "compArtifact": 1}, + "hasLocation": "data/lbda-v2_kddm_pmdi_2017.nc" + }, + { + "artifactLocation": 2, + "label": "Initial Notebook", + "hasArtifact": {"composition": 1, "compArtifact": 2}, + "hasLocation": "analysis.ipynb" + } + ] + }, + { + "arrangement": 3, + "label": "Local File System Artifact Arrangement Instance", + "description": "Arrangement on fileserver managed by TRS after running Jupyter notebook", + "hasArtifactLocation": [ + { + "artifactLocation": 1, + "label": "LBDA NetCDF file", + "hasArtifact": {"composition": 1, "compArtifact": 1}, + "hasLocation": "data/lbda-v2_kddm_pmdi_2017.nc" + }, + { + "artifactLocation": 2, + "label": "Final Notebook", + "hasArtifact": {"composition": 1, "compArtifact": 3}, + "hasLocation": "analysis.ipynb" + }, + { + "artifactLocation": 3, + "label": "Final Notebook HTML Rendering", + "hasArtifact": {"composition": 1, "compArtifact": 4}, + "hasLocation": "output/analysis.html" + }, + { + "artifactLocation": 4, + "label": "Graphical Histogram Rendering", + "hasArtifact": {"composition": 1, "compArtifact": 5}, + "hasLocation": "output/histogram.png" + }, + { + "artifactLocation": 5, + "label": "LBDA GeoTIFF file", + "hasArtifact": {"composition": 1, "compArtifact": 6}, + "hasLocation": "output/lbda-v2_kddm_pmdi_2017.tiff" + } + ] + }, + { + "arrangement": 4, + "label": "Zip Artifact Arrangement Instance", + "description": "Arrangement of final products packaged in a Zip file", + "hasArtifactLocation": [ + { + "artifactLocation": 1, + "label": "Final Notebook", + "hasArtifact": {"composition": 1, "compArtifact": 3}, + "hasLocation": "analysis.ipynb" + }, + { + "artifactLocation": 2, + "label": "Final Notebook HTML Rendering", + "hasArtifact": {"composition": 1, "compArtifact": 4}, + "hasLocation": "analysis.html" + }, + { + "artifactLocation": 3, + "label": "Graphical Histogram Rendering", + "hasArtifact": {"composition": 1, "compArtifact": 5}, + "hasLocation": "histogram.png" + }, + { + "artifactLocation": 5, + "label": "LBDA GeoTIFF file", + "hasArtifact": {"composition": 1, "compArtifact": 6}, + "hasLocation": "lbda-v2_kddm_pmdi_2017.tiff" + } + ] + } + ], + + "hasPerformance": [ + { + "trp": 1, + "description": "Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem", + "startedAtTime": "2023-05-08T01:30:00Z", + "endedAtTime": "2023-05-08T01:40:00Z", + "accessedArrangement": { "arrangement": 1 }, + "contributedToArrangement": { "arrangement": 2 }, + "hadPerformanceAttribute": { + "trpAttribute": 1, + "warrantedBy": { "capability": 1 } + } + }, + + { + "trp": 2, + "description": "Process that ran Jupyter notebook", + "startedAtTime": "2023-05-08T01:41:00Z", + "endedAtTime": "2023-05-08T01:50:00Z", + "accessedArrangement": { "arrangement": 2 }, + "contributedToArrangement": { "arrangement": 3 }, + "hadPerformanceAttribute": { + "trpAttribute": 1, + "warrantedBy": { "capability": 2 } + } + }, + + { + "trp": 3, + "description": "Process that packaged products of the Jupyter notebook execution in a Zip file", + "startedAtTime": "2023-05-08T01:51:00Z", + "endedAtTime": "2023-05-08T02:00:00Z", + "accessedArrangement": { "arrangement": 3 }, + "contributedToArrangement": { "arrangement": 4 }, + "hadPerformanceAttribute": { + "trpAttribute": 1, + "warrantedBy": { "capability": 2 } + } + } + ] +} diff --git a/demo/01-trov-examples/03-skope-lbda-processing/tro/tro.jsonld b/demo/03-trace-explorations/06-json2jsonld/data/tro.jsonld similarity index 73% rename from demo/01-trov-examples/03-skope-lbda-processing/tro/tro.jsonld rename to demo/03-trace-explorations/06-json2jsonld/data/tro.jsonld index 0006479..9e286ce 100644 --- a/demo/01-trov-examples/03-skope-lbda-processing/tro/tro.jsonld +++ b/demo/03-trace-explorations/06-json2jsonld/data/tro.jsonld @@ -3,28 +3,34 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/01-trov-examples/03-skope-/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/02-tro-examples/03-skope-/" }], "@graph": [ { "@id": "tro", "@type": "trov:TransparentResearchObject", + "rdfs:label": "Transparent Research Object Instance", "rdfs:comment": "Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application", "trov:wasAssembledBy": { "@id": "trs", - "@type": "trov:TrustedResearchSystem", + "@type": "trov:TransparentResearchSystem", + "rdfs:label": "Transparent Research System Instance", "rdfs:comment": "TRS that can monitor netowrk accesses or provide Internet isolation", "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n", "trov:hasCapability": [ { "@id": "trs/capability/1", - "@type": "trov:CanRecordInternetAccess" + "@type": "trov:CanRecordInternetAccess", + "rdfs:label": "Capability of Recording Internet Access", + "rdfs:comment": "TRS can record internet access" }, { "@id": "trs/capability/2", - "@type": "trov:CanProvideInternetIsolation" + "@type": "trov:CanProvideInternetIsolation", + "rdfs:label": "Capability of Providing Internet Isolation", + "rdfs:comment": "TRS can provide Internet isolation" } ] }, @@ -62,6 +68,7 @@ { "@id": "composition/1/artifact/1", "@type": "trov:DataArtifact", + "rdfs:label": "LBDA NetCDF file", "rdfs:comment": "NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset", "trov:mimeType": "application/x-netcdf", "trov:sha256": "b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78" @@ -69,6 +76,7 @@ { "@id": "composition/1/artifact/2", "@type": "trov:ComputationalNotebookArtifact", + "rdfs:label": "Initial Notebook", "rdfs:comment": "Initial state of Jupyter notebook for processing the LBDA dataset", "trov:mimeType": "text/plain", "trov:sha256": "8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6" @@ -76,6 +84,7 @@ { "@id": "composition/1/artifact/3", "@type": "trov:ComputationalNotebookArtifact", + "rdfs:label": "Final Notebook", "rdfs:comment": "Final state of Jupyter notebook for processing the LBDA dataset", "trov:mimeType": "text/plain", "trov:sha256": "8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf" @@ -83,6 +92,7 @@ { "@id": "composition/1/artifact/4", "@type": "trov:HTMLArtifact", + "rdfs:label": "Final Notebook HTML Rendering", "rdfs:comment": "HTML rendering of final state of the Jupyter notebook", "trov:mimeType": "text/html", "trov:sha256": "870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0" @@ -90,6 +100,7 @@ { "@id": "composition/1/artifact/5", "@type": "trov:ImageArtifact", + "rdfs:label": "Graphical Histogram Rendering", "rdfs:comment": "Graphical rendering of the histogram of dataset values", "trov:mimeType": "image/png", "trov:sha256": "cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf" @@ -97,6 +108,7 @@ { "@id": "composition/1/artifact/6", "@type": "trov:DataArtifact", + "rdfs:label": "LBDA GeoTIFF file", "rdfs:comment": "GeoTIFF file containing LBDA data cube ready for staging to SKOPE server", "trov:mimeType": "image/tiff", "trov:sha256": "e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d" @@ -108,11 +120,13 @@ { "@id": "arrangement/1", "@type": "trov:WebResourceArtifactArrangement", - "rdfs:comment": "Arrangement decscribing location of LBDA NetCDF file on NOAA web server", - "trov:hasLocus": [ + "rdfs:label": "Web Resource Artifact Arrangement Instance", + "rdfs:comment": "Arrangement describing location of LBDA NetCDF file on NOAA web server", + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA NetCDF file", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" } @@ -121,17 +135,20 @@ { "@id": "arrangement/2", "@type": "trov:LocalFilesystemArtifactArrangement", + "rdfs:label": "Local File System Artifact Arrangement Instance", "rdfs:comment": "Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/2/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/2/location/1", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA NetCDF file", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "data/lbda-v2_kddm_pmdi_2017.nc" }, { - "@id": "arrangement/2/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/2/location/2", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Initial Notebook", "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, "trov:hasLocation": "analysis.ipynb" } @@ -140,35 +157,41 @@ { "@id": "arrangement/3", "@type": "trov:LocalFilesystemArtifactArrangement", + "rdfs:label": "Local File System Artifact Arrangement Instance", "rdfs:comment": "Arrangement on fileserver managed by TRS after running Jupyter notebook", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/3/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/1", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA NetCDF file", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "data/lbda-v2_kddm_pmdi_2017.nc" }, { - "@id": "arrangement/3/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/2", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Final Notebook", "trov:hasArtifact": { "@id": "composition/1/artifact/3" }, "trov:hasLocation": "analysis.ipynb" }, { - "@id": "arrangement/3/locus/3", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/3", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Final Notebook HTML Rendering", "trov:hasArtifact": { "@id": "composition/1/artifact/4" }, "trov:hasLocation": "output/analysis.html" }, { - "@id": "arrangement/3/locus/4", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/4", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Graphical Histogram Rendering", "trov:hasArtifact": { "@id": "composition/1/artifact/5" }, "trov:hasLocation": "output/histogram.png" }, { - "@id": "arrangement/3/locus/5", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/3/location/5", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA GeoTIFF file", "trov:hasArtifact": { "@id": "composition/1/artifact/6" }, "trov:hasLocation": "output/lbda-v2_kddm_pmdi_2017.tiff" } @@ -177,29 +200,34 @@ { "@id": "arrangement/4", "@type": "trov:ZipArtifactArrangement", + "rdfs:label": "Zip Artifact Arrangement Instance", "rdfs:comment": "Arrangement of final products packaged in a Zip file", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/4/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/4/location/1", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Final Notebook", "trov:hasArtifact": { "@id": "composition/1/artifact/3" }, "trov:hasLocation": "analysis.ipynb" }, { - "@id": "arrangement/4/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/4/location/2", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Final Notebook HTML Rendering", "trov:hasArtifact": { "@id": "composition/1/artifact/4" }, "trov:hasLocation": "analysis.html" }, { - "@id": "arrangement/4/locus/3", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/4/location/3", + "@type": "trov:ArtifactLocation", + "rdfs:label": "Graphical Histogram Rendering", "trov:hasArtifact": { "@id": "composition/1/artifact/5" }, "trov:hasLocation": "histogram.png" }, { - "@id": "arrangement/3/locus/5", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/4/location/5", + "@type": "trov:ArtifactLocation", + "rdfs:label": "LBDA GeoTIFF file", "trov:hasArtifact": { "@id": "composition/1/artifact/6" }, "trov:hasLocation": "lbda-v2_kddm_pmdi_2017.tiff" } @@ -210,7 +238,7 @@ "trov:hasPerformance": [ { "@id": "trp/1", - "@type": "trov:TrustedResearchPerformance", + "@type": "trov:TransparentResearchPerformance", "rdfs:comment": "Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem", "trov:wasConductedBy": { "@id": "trs" }, "trov:startedAtTime": "2023-05-08T01:30:00Z", @@ -226,7 +254,7 @@ { "@id": "trp/2", - "@type": "trov:TrustedResearchPerformance", + "@type": "trov:TransparentResearchPerformance", "rdfs:comment": "Process that ran Jupyter notebook", "trov:wasConductedBy": { "@id": "trs" }, "trov:startedAtTime": "2023-05-08T01:41:00Z", @@ -242,7 +270,7 @@ { "@id": "trp/3", - "@type": "trov:TrustedResearchPerformance", + "@type": "trov:TransparentResearchPerformance", "rdfs:comment": "Process that packaged products of the Jupyter notebook execution in a Zip file", "trov:wasConductedBy": { "@id": "trs" }, "trov:startedAtTime": "2023-05-08T01:51:00Z", diff --git a/demo/03-trace-explorations/06-json2jsonld/products/tro.jsonld b/demo/03-trace-explorations/06-json2jsonld/products/tro.jsonld new file mode 100644 index 0000000..37318b0 --- /dev/null +++ b/demo/03-trace-explorations/06-json2jsonld/products/tro.jsonld @@ -0,0 +1,285 @@ +{ + "@context": [ + { + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "trov": "https://w3id.org/trace/2023/05/trov#", + "@base": "https://github.com/transparency-certified/trace-model/tree/master/02-tro-examples/03-skope-/" + } + ], + "@graph": [ + { + "rdfs:label": "Transparent Research Object Instance", + "rdfs:comment": "Download LBDA dataset from NOAA website and prepare for use by researchers employing the SKOPE application", + "trov:wasAssembledBy": { + "rdfs:label": "Transparent Research System Instance", + "rdfs:comment": "TRS that can monitor netowrk accesses or provide Internet isolation", + "trov:hasCapability": [ + { + "rdfs:label": "Capability of Recording Internet Access", + "rdfs:comment": "TRS can record internet access", + "@id": "trs/capability/1" + }, + { + "rdfs:label": "Capability of Providing Internet Isolation", + "rdfs:comment": "TRS can provide Internet isolation", + "@id": "trs/capability/2" + } + ], + "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + "trov:wasTimestampedBy": { + "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" + }, + "trov:hasAttribute": [ + { + "@id": "tro/attribute/1", + "trov:warrantedBy": [ + { + "@id": "trp/1/attribute/1" + }, + { + "@id": "trp/2/attribute/1" + }, + { + "@id": "trp/3/attribute/1" + } + ] + } + ], + "trov:hasComposition": { + "@id": "composition/1", + "trov:hasFingerprint": { + "@id": "fingerprint/1", + "trov:sha256": "b2b65040893f35d112979c564121c7425f4aad10838aadcb232be5db715ec2b2" + }, + "trov:hasArtifact": [ + { + "@id": "composition/1/artifact/1", + "rdfs:label": "LBDA NetCDF file", + "rdfs:comment": "NetCDF file containing the Living Blended Drought Atlas (LBDA) dataset", + "trov:sha256": "b02edb8d27cf9ac19087938dd3d306895e208bd3a9f0458e63292ea2695a1f78", + "trov:mimeType": "application/x-netcdf" + }, + { + "@id": "composition/1/artifact/2", + "rdfs:label": "Initial Notebook", + "rdfs:comment": "Initial state of Jupyter notebook for processing the LBDA dataset", + "trov:sha256": "8fcf663f1c40cbf846d0e5a136f0797fa560545f5d8c1391a5b13406f3814ad6", + "trov:mimeType": "text/plain" + }, + { + "@id": "composition/1/artifact/3", + "rdfs:label": "Final Notebook", + "rdfs:comment": "Final state of Jupyter notebook for processing the LBDA dataset", + "trov:sha256": "8cf4f26b27e83a967bd7ddd97a24e6d4b7a9a7a14fff7ffeb47e2fa9085bccaf", + "trov:mimeType": "text/plain" + }, + { + "@id": "composition/1/artifact/4", + "rdfs:label": "Final Notebook HTML Rendering", + "rdfs:comment": "HTML rendering of final state of the Jupyter notebook", + "trov:sha256": "870c9297ae7439c283697761c90028312cc0312f13182afb0a0125eb29e5f7f0", + "trov:mimeType": "text/html" + }, + { + "@id": "composition/1/artifact/5", + "rdfs:label": "Graphical Histogram Rendering", + "rdfs:comment": "Graphical rendering of the histogram of dataset values", + "trov:sha256": "cfc6e4d5e76754d4802d42a2d6ff79a901c7f0e5daccb256cab542bb7953b2bf", + "trov:mimeType": "image/png" + }, + { + "@id": "composition/1/artifact/6", + "rdfs:label": "LBDA GeoTIFF file", + "rdfs:comment": "GeoTIFF file containing LBDA data cube ready for staging to SKOPE server", + "trov:sha256": "e035f3af957c4f761c1d502cc28f91676fbf2bbdf5f7045a7151a6d3ff04789d", + "trov:mimeType": "image/tiff" + } + ] + }, + "trov:hasArrangement": [ + { + "rdfs:label": "Web Resource Artifact Arrangement Instance", + "rdfs:comment": "Arrangement describing location of LBDA NetCDF file on NOAA web server", + "@id": "arrangement/1", + "trov:hasArtifactLocation": [ + { + "@id": "arrangement/1/location/1", + "rdfs:label": "LBDA NetCDF file", + "trov:hasArtifact": { + "@id": "composition/1/artifact/1" + }, + "trov:hasLocation": "https://www1.ncdc.noaa.gov/pub/data/paleo/drought/LBDP-v2/lbda-v2_kddm_pmdi_2017.nc" + } + ] + }, + { + "rdfs:label": "Local File System Artifact Arrangement Instance", + "rdfs:comment": "Arrangement on fileserver managed by TRS after downloading dataset and before running Jupyter notebook", + "@id": "arrangement/2", + "trov:hasArtifactLocation": [ + { + "@id": "arrangement/2/location/1", + "rdfs:label": "LBDA NetCDF file", + "trov:hasArtifact": { + "@id": "composition/1/artifact/1" + }, + "trov:hasLocation": "data/lbda-v2_kddm_pmdi_2017.nc" + }, + { + "@id": "arrangement/2/location/2", + "rdfs:label": "Initial Notebook", + "trov:hasArtifact": { + "@id": "composition/1/artifact/2" + }, + "trov:hasLocation": "analysis.ipynb" + } + ] + }, + { + "rdfs:label": "Local File System Artifact Arrangement Instance", + "rdfs:comment": "Arrangement on fileserver managed by TRS after running Jupyter notebook", + "@id": "arrangement/3", + "trov:hasArtifactLocation": [ + { + "@id": "arrangement/3/location/1", + "rdfs:label": "LBDA NetCDF file", + "trov:hasArtifact": { + "@id": "composition/1/artifact/1" + }, + "trov:hasLocation": "data/lbda-v2_kddm_pmdi_2017.nc" + }, + { + "@id": "arrangement/3/location/2", + "rdfs:label": "Final Notebook", + "trov:hasArtifact": { + "@id": "composition/1/artifact/3" + }, + "trov:hasLocation": "analysis.ipynb" + }, + { + "@id": "arrangement/3/location/3", + "rdfs:label": "Final Notebook HTML Rendering", + "trov:hasArtifact": { + "@id": "composition/1/artifact/4" + }, + "trov:hasLocation": "output/analysis.html" + }, + { + "@id": "arrangement/3/location/4", + "rdfs:label": "Graphical Histogram Rendering", + "trov:hasArtifact": { + "@id": "composition/1/artifact/5" + }, + "trov:hasLocation": "output/histogram.png" + }, + { + "@id": "arrangement/3/location/5", + "rdfs:label": "LBDA GeoTIFF file", + "trov:hasArtifact": { + "@id": "composition/1/artifact/6" + }, + "trov:hasLocation": "output/lbda-v2_kddm_pmdi_2017.tiff" + } + ] + }, + { + "rdfs:label": "Zip Artifact Arrangement Instance", + "rdfs:comment": "Arrangement of final products packaged in a Zip file", + "@id": "arrangement/4", + "trov:hasArtifactLocation": [ + { + "@id": "arrangement/4/location/1", + "rdfs:label": "Final Notebook", + "trov:hasArtifact": { + "@id": "composition/1/artifact/3" + }, + "trov:hasLocation": "analysis.ipynb" + }, + { + "@id": "arrangement/4/location/2", + "rdfs:label": "Final Notebook HTML Rendering", + "trov:hasArtifact": { + "@id": "composition/1/artifact/4" + }, + "trov:hasLocation": "analysis.html" + }, + { + "@id": "arrangement/4/location/3", + "rdfs:label": "Graphical Histogram Rendering", + "trov:hasArtifact": { + "@id": "composition/1/artifact/5" + }, + "trov:hasLocation": "histogram.png" + }, + { + "@id": "arrangement/4/location/5", + "rdfs:label": "LBDA GeoTIFF file", + "trov:hasArtifact": { + "@id": "composition/1/artifact/6" + }, + "trov:hasLocation": "lbda-v2_kddm_pmdi_2017.tiff" + } + ] + } + ], + "trov:hasPerformance": [ + { + "rdfs:comment": "Process that downloaded the LBDA NetCDF file from NOAA server to local filesystem", + "@id": "trp/1", + "trov:startedAtTime": "2023-05-08T01:30:00Z", + "trov:endedAtTime": "2023-05-08T01:40:00Z", + "trov:accessedArrangement": { + "@id": "arrangement/1" + }, + "trov:contributedToArrangement": { + "@id": "arrangement/2" + }, + "trov:hadPerformanceAttribute": { + "@id": "trp/1/attribute/1", + "trov:warrantedBy": { + "@id": "trs/capability/1" + } + } + }, + { + "rdfs:comment": "Process that ran Jupyter notebook", + "@id": "trp/2", + "trov:startedAtTime": "2023-05-08T01:41:00Z", + "trov:endedAtTime": "2023-05-08T01:50:00Z", + "trov:accessedArrangement": { + "@id": "arrangement/2" + }, + "trov:contributedToArrangement": { + "@id": "arrangement/3" + }, + "trov:hadPerformanceAttribute": { + "@id": "trp/2/attribute/1", + "trov:warrantedBy": { + "@id": "trs/capability/2" + } + } + }, + { + "rdfs:comment": "Process that packaged products of the Jupyter notebook execution in a Zip file", + "@id": "trp/3", + "trov:startedAtTime": "2023-05-08T01:51:00Z", + "trov:endedAtTime": "2023-05-08T02:00:00Z", + "trov:accessedArrangement": { + "@id": "arrangement/3" + }, + "trov:contributedToArrangement": { + "@id": "arrangement/4" + }, + "trov:hadPerformanceAttribute": { + "@id": "trp/3/attribute/1", + "trov:warrantedBy": { + "@id": "trs/capability/2" + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/demo/03-trace-explorations/06-json2jsonld/run.sh b/demo/03-trace-explorations/06-json2jsonld/run.sh new file mode 100644 index 0000000..aa43e41 --- /dev/null +++ b/demo/03-trace-explorations/06-json2jsonld/run.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash + +CONTEXT1_FILE_PATH=data/context1.csv +CONTEXT2_FILE_PATH=data/context2.csv +CONTEXT3_FILE_PATH=data/context3.csv +JSON_FILE_PATH=data/tro.json +JSONLD_FILE_PATH=products/tro.jsonld + +# ------------------------------------------------------------------------------ + +bash_cell json2jsonld << END_CELL + +python3 << END_PYTHON + +from pyld import jsonld +import pandas as pd +import numpy as np +import json + +def process_id(value): + return str(value).strip() + +def update_dict(data, keys, cm): + + # Unpack context mappings + cm1, cm2, cm3 = cm + + # TYPE 1 + # e.g., {"trp": 1, "trpAttribute": 1} => {"@id": "trp/1/attribute/1" } + for item in cm1: + k1, k2 = item["k1"], item["k2"] + if (k1 in keys) and (k2 in keys): + data["@id"] = item["id"].format(id1=process_id(data[k1]), id2=process_id(data[k2])) + data.pop(k1) + data.pop(k2) + + # TYPE 2 + # e.g., {"composition": 1, "hasArtifact": {"artifact": 1}} OR {"composition": 1, "hasArtifact": [{"artifact": 1}]} + # => {"composition": 1, "hasArtifact": {"@id": "composition/1/artifact/1"}} OR {"composition": 1, "hasArtifact": [{"@id": "composition/1/artifact/1"}]} + for item in cm2: + k1, k2, k3 = item["k1"], item["k2"], item["k3"] + if (k1 in keys) and (k2 in keys): + if isinstance(data[k2], dict): + data[k2]["@id"] = item["id"].format(id1=process_id(data[k1]), id2=process_id(data[k2][k3])) + data[k2].pop(k3) + else: + for idx, artifact in enumerate(data[k2]): + data[k2][idx]["@id"] = item["id"].format(id1=process_id(data[k1]), id2=process_id(artifact[k3])) + data[k2][idx].pop(k3) + + # TYPE 3 + # one-to-one mappings based on context3.csv + for key in cm3.keys(): + if key in keys: + if isinstance(cm3[key]["idPrefix"], str): + data[cm3[key]["rdfTerm"]] = cm3[key]["idPrefix"] + process_id(data.pop(key)) + else: + data[cm3[key]["rdfTerm"]] = data.pop(key) + + return data + +def traverse_json(obj, cm): + if isinstance(obj, list): + for item in obj: + traverse_json(item, cm) + elif isinstance(obj, dict): + keys = obj.keys() + obj = update_dict(obj, keys, cm) + for k, v in obj.items(): + if isinstance(v, (list, dict)): + traverse_json(v, cm) + return obj + +# Load a TRO JSON Declaration +with open('${JSON_FILE_PATH}', 'r', encoding='utf-8') as fin: + content = fin.read() +json_content = json.loads(content) + +# Load the context mappings +cm1 = pd.read_csv('${CONTEXT1_FILE_PATH}').to_dict(orient='records') +cm2 = pd.read_csv('${CONTEXT2_FILE_PATH}').to_dict(orient='records') +cm3 = pd.read_csv('${CONTEXT3_FILE_PATH}', index_col='key').T.to_dict(orient='dict') +cm = [cm1, cm2, cm3] + +# Traverse and update it recursively +content = traverse_json(json_content, cm) + +# Add context +jsonld = { + "@context": [{ + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "trov": "https://w3id.org/trace/2023/05/trov#", + "@base": "https://github.com/transparency-certified/trace-model/tree/master/02-tro-examples/03-skope-/" + }] +} + +jsonld["@graph"] = [content] + +with open('${JSONLD_FILE_PATH}', 'w', encoding='utf-8') as fout: + json.dump(jsonld, fout, indent=2) + +END_PYTHON + +END_CELL + +# ------------------------------------------------------------------------------ diff --git a/demo/03-trace-explorations/06-json2jsonld/run.txt b/demo/03-trace-explorations/06-json2jsonld/run.txt new file mode 100644 index 0000000..2204aae --- /dev/null +++ b/demo/03-trace-explorations/06-json2jsonld/run.txt @@ -0,0 +1,98 @@ +===================================================== bash cell | json2jsonld ====================================================== + +python3 << END_PYTHON + +from pyld import jsonld +import pandas as pd +import numpy as np +import json + +def process_id(value): + return str(value).strip() + +def update_dict(data, keys, cm): + + # Unpack context mappings + cm1, cm2, cm3 = cm + + # TYPE 1 + # e.g., {"trp": 1, "trpAttribute": 1} => {"@id": "trp/1/attribute/1" } + for item in cm1: + k1, k2 = item["k1"], item["k2"] + if (k1 in keys) and (k2 in keys): + data["@id"] = item["id"].format(id1=process_id(data[k1]), id2=process_id(data[k2])) + data.pop(k1) + data.pop(k2) + + # TYPE 2 + # e.g., {"composition": 1, "hasArtifact": {"artifact": 1}} OR {"composition": 1, "hasArtifact": [{"artifact": 1}]} + # => {"composition": 1, "hasArtifact": {"@id": "composition/1/artifact/1"}} OR {"composition": 1, "hasArtifact": [{"@id": "composition/1/artifact/1"}]} + for item in cm2: + k1, k2, k3 = item["k1"], item["k2"], item["k3"] + if (k1 in keys) and (k2 in keys): + if isinstance(data[k2], dict): + data[k2]["@id"] = item["id"].format(id1=process_id(data[k1]), id2=process_id(data[k2][k3])) + data[k2].pop(k3) + else: + for idx, artifact in enumerate(data[k2]): + data[k2][idx]["@id"] = item["id"].format(id1=process_id(data[k1]), id2=process_id(artifact[k3])) + data[k2][idx].pop(k3) + + # TYPE 3 + # one-to-one mappings based on context3.csv + for key in cm3.keys(): + if key in keys: + if isinstance(cm3[key]["idPrefix"], str): + data[cm3[key]["rdfTerm"]] = cm3[key]["idPrefix"] + process_id(data.pop(key)) + else: + data[cm3[key]["rdfTerm"]] = data.pop(key) + + return data + +def traverse_json(obj, cm): + if isinstance(obj, list): + for item in obj: + traverse_json(item, cm) + elif isinstance(obj, dict): + keys = obj.keys() + obj = update_dict(obj, keys, cm) + for k, v in obj.items(): + if isinstance(v, (list, dict)): + traverse_json(v, cm) + return obj + +# Load a TRO JSON Declaration +with open('data/tro.json', 'r', encoding='utf-8') as fin: + content = fin.read() +json_content = json.loads(content) + +# Load the context mappings +cm1 = pd.read_csv('data/context1.csv').to_dict(orient='records') +cm2 = pd.read_csv('data/context2.csv').to_dict(orient='records') +cm3 = pd.read_csv('data/context3.csv', index_col='key').T.to_dict(orient='dict') +cm = [cm1, cm2, cm3] + +# Traverse and update it recursively +content = traverse_json(json_content, cm) + +# Add context +jsonld = { + "@context": [{ + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "trov": "https://w3id.org/trace/2023/05/trov#", + "@base": "https://github.com/transparency-certified/trace-model/tree/master/02-tro-examples/03-skope-/" + }] +} + +jsonld["@graph"] = [content] + +with open('products/tro.jsonld', 'w', encoding='utf-8') as fout: + json.dump(jsonld, fout, indent=2) + +END_PYTHON + +----------------------------------------------------------- cell outputs ----------------------------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + diff --git a/demo/02-explorations/08-tro-fingerprint/Makefile b/demo/03-trace-explorations/Makefile similarity index 100% rename from demo/02-explorations/08-tro-fingerprint/Makefile rename to demo/03-trace-explorations/Makefile diff --git a/demo/02-explorations/common/certificate/cacert.pem b/demo/03-trace-explorations/common/certificate/cacert.pem similarity index 100% rename from demo/02-explorations/common/certificate/cacert.pem rename to demo/03-trace-explorations/common/certificate/cacert.pem diff --git a/demo/02-explorations/common/certificate/tsa.crt b/demo/03-trace-explorations/common/certificate/tsa.crt similarity index 100% rename from demo/02-explorations/common/certificate/tsa.crt rename to demo/03-trace-explorations/common/certificate/tsa.crt diff --git a/demo/03-trace-explorations/common/tro/file1 b/demo/03-trace-explorations/common/tro/file1 new file mode 100644 index 0000000..257cc56 --- /dev/null +++ b/demo/03-trace-explorations/common/tro/file1 @@ -0,0 +1 @@ +foo diff --git a/demo/03-trace-explorations/common/tro/file2 b/demo/03-trace-explorations/common/tro/file2 new file mode 100644 index 0000000..5716ca5 --- /dev/null +++ b/demo/03-trace-explorations/common/tro/file2 @@ -0,0 +1 @@ +bar diff --git a/demo/01-trov-examples/01-two-artifacts-no-trp/tro/tro.jsonld b/demo/03-trace-explorations/common/tro/tro.jsonld similarity index 90% rename from demo/01-trov-examples/01-two-artifacts-no-trp/tro/tro.jsonld rename to demo/03-trace-explorations/common/tro/tro.jsonld index fda2e4f..c5722f0 100644 --- a/demo/01-trov-examples/01-two-artifacts-no-trp/tro/tro.jsonld +++ b/demo/03-trace-explorations/common/tro/tro.jsonld @@ -3,7 +3,7 @@ "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "rdfs": "http://www.w3.org/2000/01/rdf-schema#", "trov": "https://w3id.org/trace/2023/05/trov#", - "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/" + "@base": "https://github.com/transparency-certified/trace-model/tree/master/demo/03-trace-explorations/" }], "@graph": [ @@ -14,7 +14,7 @@ "trov:wasAssembledBy": { "@id": "trs", - "@type": "trov:TrustedResearchSystem", + "@type": "trov:TransparentResearchSystem", "rdfs:comment": "TRS that enforces no policies", "trov:publicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\nmI0EZDYvLQEEALgKOwntOmQquijOSnnOOHYAEMKwIO//Ukogb8ftzIBGZ6PSSI9f\nPFa62W7k1CWEm7KLcOO5hlmMvI+GJLnLa4y60wxcKEq26Hi/r9SPO2HbjJMo9vy6\nTbwSndwn148wKzpfSH4dt3v5xJJ5ty0nz2k3cKsKxuOV/X23R0GotxUtABEBAAG0\nHXJlcHJvIHVzZXIgPHJlcHJvQHJlcHJvcy5kZXY+iM4EEwEKADgWIQQS8oDdaGyb\nHbIUMG5hkHOSVXRlzAUCZDYvLQIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAK\nCRBhkHOSVXRlzJeoA/40RSsS88t6zXgBmHZDXyV9d5+CknyQ3yV/fpEU+IH2T6qS\nxrj9JZ8wIk4K2yntksmNOioztGyzTwrZlf6Gd/xo0U26ptKgxppBQZV/Wbzjpo1N\nIsGEo6zUxyfInIxL/nnAlktGhl9B8teoyqwmMCP8bmrUiLSeex+1An5ogCOACg==\n=vuaX\n-----END PGP PUBLIC KEY BLOCK-----\n" }, @@ -57,16 +57,16 @@ { "@id": "arrangement/1", "@type": "trov:ArtifactArrangement", - "trov:hasLocus": [ + "trov:hasArtifactLocation": [ { - "@id": "arrangement/1/locus/1", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/1", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/1" }, "trov:hasLocation": "file1" }, { - "@id": "arrangement/1/locus/2", - "@type": "trov:ArtifactLocus", + "@id": "arrangement/1/location/2", + "@type": "trov:ArtifactLocation", "trov:hasArtifact": { "@id": "composition/1/artifact/2" }, "trov:hasLocation": "file2" } diff --git a/exports/trace-vocab.jsonld b/exports/trace-vocab.jsonld index 4cfc372..d84b185 100644 --- a/exports/trace-vocab.jsonld +++ b/exports/trace-vocab.jsonld @@ -8,58 +8,51 @@ "@graph": [ { - "@id": "trov:TrustedResearchElement", - "@type": "rdf:Class", - "rdfs:label": "TrustedResearchElement", + "@id": "trov:TransparentResearchElement", + "@type": "rdfs:Class", + "rdfs:label": "TransparentResearchElement", "rdfs:comment": "Common base class for TRSs, TRPs, and TROs." }, { - "@id": "trov:TrustedResearchSystem", - "@type": "rdf:Class", - "rdfs:subClassOf": { "@id": "trov:TrustedResearchElement" }, - "rdfs:label": "TrustedResearchSystem", + "@id": "trov:TransparentResearchSystem", + "@type": "rdfs:Class", + "rdfs:subClassOf": { "@id": "trov:TransparentResearchElement" }, + "rdfs:label": "TransparentResearchSystem", "rdfs:comment": "A system certified to perform TRPs and assemble TROs." }, { - "@id": "trov:TrustedResearchPerformance", - "@type": "rdf:Class", - "rdfs:subClassOf": { "@id": "trov:TrustedResearchElement" }, - "rdfs:label": "TrustedResearchPerformance", + "@id": "trov:TransparentResearchPerformance", + "@type": "rdfs:Class", + "rdfs:subClassOf": { "@id": "trov:TransparentResearchElement" }, + "rdfs:label": "TransparentResearchPerformance", "rdfs:comment": "A set of research operations performed by a TRS." }, { "@id": "trov:TransparentResearchObject", - "@type": "rdf:Class", - "rdfs:subClassOf": { "@id": "trov:TrustedResearchElement" }, + "@type": "rdfs:Class", + "rdfs:subClassOf": { "@id": "trov:TransparentResearchElement" }, "rdfs:label": "TransparentResearchObject", "rdfs:comment": "A set of research artifacts produced by a TRP and signed by the performing TRS." }, { "@id": "trov:TimeStampingAuthority", - "@type": "rdf:Class", - "rdfs:subClassOf": { "@id": "trov:TrustedResearchElement" }, + "@type": "rdfs:Class", + "rdfs:subClassOf": { "@id": "trov:TransparentResearchElement" }, "rdfs:label": "TimeStampingAuthority", "rdfs:comment": "A timestamping authority trusted by a TRS." }, { "@id": "trov:TREAttribute", - "@type": "rdf:Class", + "@type": "rdfs:Class", "rdfs:label": "TREAttribute", "rdfs:comment": "An attribute of a TRS, TRP, or TRO." }, - { - "@id": "trov:TRSAttribute", - "@type": "rdf:Class", - "rdfs:subClassOf": { "@id": "trov:TREAttribute" }, - "rdfs:label": "TRSAttribute", - "rdfs:comment": "An attribute of a TRS." - }, { "@id": "trov:TRSCapability", "@type": "rdfs:Class", "rdfs:label": "TRSCapability", "rdfs:subClassOf": { "@id": "trov:TRSAttribute" }, - "rdfs:comment": "A policy always enforced by a particular TRS." + "rdfs:comment": "A capability of a TRS." }, { "@id": "trov:CanProvideInternetIsolation", @@ -80,7 +73,7 @@ "@type": "rdfs:Class", "rdfs:label": "EnforcesInternetIsolation", "rdfs:subClassOf": { "@id": "trov:TRSPolicy" }, - "rdfs:comment": "The policy of always preeventing Internet access during a TRP." + "rdfs:comment": "The policy of always preventing Internet access during a TRP." }, { "@id": "trov:TROAttribute", @@ -94,7 +87,14 @@ "@type": "rdfs:Class", "rdfs:label": "TRSAttribute", "rdfs:subClassOf": { "@id": "trov:TREAttribute" }, - "rdfs:comment": "A property of a particular TRS." + "rdfs:comment": "An attribute of a TRS." + }, + { + "@id": "trov:TRPAttribute", + "@type": "rdfs:Class", + "rdfs:label": "TRPAttribute", + "rdfs:subClassOf": { "@id": "trov:TREAttribute" }, + "rdfs:comment": "An attribute of a TRP." }, { "@id": "trov:IncludesAllInputData", @@ -103,6 +103,20 @@ "rdfs:subClassOf": { "@id": "trov:TROAttribute" }, "rdfs:comment": "TRO composition includes all input data employed in creating the TRO." }, + { + "@id": "trov:InternetIsolation", + "@type": "rdfs:Class", + "rdfs:label": "InternetIsolation", + "rdfs:subClassOf": { "@id": "trov:TRPAttribute" }, + "rdfs:comment": "A TRO requires internet isolation." + }, + { + "@id": "trov:InternetAccessRecording", + "@type": "rdfs:Class", + "rdfs:label": "InternetAccessRecording", + "rdfs:subClassOf": { "@id": "trov:TRPAttribute" }, + "rdfs:comment": "A TRO requires internet access recording." + }, { "@id": "trov:ResearchArtifact", "@type": "rdfs:Class", @@ -129,7 +143,7 @@ "rdfs:comment": "Unique fingerprint of a particular artifact composition" }, { - "@id": "trov:ArtifactLocus", + "@id": "trov:ArtifactLocation", "@type": "rdfs:Class", "rdfs:label": "ArtifactLocus", "rdfs:subClassOf": { "@id": "trov:ArtifactCollection" }, @@ -139,20 +153,77 @@ "@id": "trov:ArtifactArrangement", "@type": "rdfs:Class", "rdfs:label": "ArtifactArrangement", + "rdfs:subClassOf": { "@id": "trov:TransparentResearchObject" }, "rdfs:comment": "A set of loci describing the location of one or more artifacts" }, { - "@id": "trov:TrustedResearchPerformance", + "@id": "trov:TransparentResearchPerformance", "@type": "rdfs:Class", - "rdfs:label": "TrustedResearchPerformance", + "rdfs:label": "TransparentResearchPerformance", "rdfs:comment": "An execution of a research process" }, + { + "@id": "trov:hasCapability", + "@type": "rdf:Property", + "rdfs:label": "hasCapability", + "rdfs:domain": { "@id": "trov:TransparentResearchSystem" }, + "rdfs:range": { "@id": "trov:TRSCapability" } + }, + { + "@id": "trov:warrantedBy", + "@type": "rdf:Property", + "rdfs:label": "warrantedBy", + "rdfs:domain": { "@id": "trov:TRPAttribute" }, + "rdfs:range": { "@id": "trov:TRSCapability" } + }, + { + "@id": "trov:warrantedBy", + "@type": "rdf:Property", + "rdfs:label": "warrantedBy", + "rdfs:domain": { "@id": "trov:TROAttribute" }, + "rdfs:range": { "@id": "trov:TRPAttribute" } + }, { "@id": "trov:wasAssembledBy", "@type": "rdf:Property", "rdfs:label": "wasAssembledBy", "rdfs:domain": { "@id": "trov:TransparentResearchObject" }, - "rdfs:range": { "@id": "trov:TrustedResearchSystem" } + "rdfs:range": { "@id": "trov:TransparentResearchSystem" } + }, + { + "@id": "trov:wasConductedBy", + "@type": "rdf:Property", + "rdfs:label": "wasConductedBy", + "rdfs:domain": { "@id": "trov:TransparentResearchPerformance" }, + "rdfs:range": { "@id": "trov:TransparentResearchSystem" } + }, + { + "@id": "trov:hadPerformanceAttribute", + "@type": "rdf:Property", + "rdfs:label": "hadPerformanceAttribute", + "rdfs:domain": { "@id": "trov:TransparentResearchPerformance" }, + "rdfs:range": { "@id": "trov:TRPAttribute" } + }, + { + "@id": "trov:accessedArrangement", + "@type": "rdf:Property", + "rdfs:label": "accessedArrangement", + "rdfs:domain": { "@id": "trov:TransparentResearchPerformance" }, + "rdfs:range": { "@id": "trov:ArtifactArrangement" } + }, + { + "@id": "trov:contributedToArrangement", + "@type": "rdf:Property", + "rdfs:label": "contributedToArrangement", + "rdfs:domain": { "@id": "trov:TransparentResearchPerformance" }, + "rdfs:range": { "@id": "trov:ArtifactArrangement" } + }, + { + "@id": "trov:hasPerformance", + "@type": "rdf:Property", + "rdfs:label": "hasPerformance", + "rdfs:domain": { "@id": "trov:TransparentResearchObject" }, + "rdfs:range": { "@id": "trov:TransparentResearchPerformance" } }, { "@id": "trov:wasTimestampedBy", @@ -190,17 +261,17 @@ "rdfs:range": { "@id": "trov:ArtifactArrangement" } }, { - "@id": "trov:hasLocus", + "@id": "trov:hasArtifactLocation", "@type": "rdf:Property", "rdfs:label": "hasLocus", "rdfs:domain": { "@id": "trov:ArtifactArrangement" }, - "rdfs:range": { "@id": "trov:ArtifactLocus" } + "rdfs:range": { "@id": "trov:ArtifactLocation" } }, { "@id": "trov:hasLocation", "@type": "rdf:Property", "rdfs:label": "hasLocus", - "rdfs:domain": { "@id": "trov:ArtifactLocus" }, + "rdfs:domain": { "@id": "trov:ArtifactLocation" }, "rdfs:range": { "@id": "rdfs:Literal" } } ] diff --git a/pyproject.toml b/pyproject.toml index 439d6a6..0357362 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,11 +11,5 @@ dynamic = ["dependencies"] dependencies = {file = ["requirements.txt"]} [project.scripts] -format_string = "trace_model.format_string:cli" -tro_fingerprint = "trace_model.tro_fingerprint:cli" tro_fingerprint_state = "trace_model.tro_fingerprint_state:cli" merge_states = "trace_model.merge_states:cli" -jsonld2csv = "trace_model.jsonld2csv:cli" -validate_jsonld = "trace_model.validate_jsonld:cli" -validate_tro = "trace_model.validate_tro:cli" -#geist = "geist.__main__:cli" diff --git a/requirements.txt b/requirements.txt index ec97f3d..882a929 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,8 +4,9 @@ rdflib owlrl pyshacl pygraphviz -rdfvr +rdfvr==0.3.0 jinja2 jinja2_simple_tags tabulate -geist-p@git+https://github.com/CIRSS/geist-p \ No newline at end of file +PyLD +geist-p@git+https://github.com/CIRSS/geist-p@v0.2.0 \ No newline at end of file diff --git a/src/trace_model/format_string.py b/src/trace_model/format_string.py deleted file mode 100644 index 15cf5f5..0000000 --- a/src/trace_model/format_string.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python3 - -import argparse - -def format_string(string, convert_flag): - # Convert multiple lines to one line - if convert_flag == "MULTI2ONE": - formatted_string = string.replace("\n", "\\n") - # Convert one line to multiple lines - else: # ONE2MULTI - formatted_string = string.replace("\\n", "\n") - return formatted_string - -def cli(): - - # Parse input - parser = argparse.ArgumentParser() - parser.add_argument("--file", "-f", help="File path ( str )") - parser.add_argument("--string", "-s", help="Raw string ( str )") - parser.add_argument("--convertflag", "-cf", choices=["MULTI2ONE", "ONE2MULTI"], help="Convert flag. It must be MULTI2ONE or ONE2MULTI.") - arg_file, arg_string, arg_convertflag = parser.parse_args().file, parser.parse_args().string, parser.parse_args().convertflag - - if not (arg_file or arg_string): - parser.error("No action requested. Please add input: --file OR --string.") - if arg_file and (not arg_string): - with open(arg_file, encoding="utf-8", mode="r") as fin: - string = fin.read() - if (not arg_file) and arg_string: - string = arg_string - if arg_file and arg_string: - parser.error("Only support one type of input per time. Please add --file OR --string.") - formatted_string = format_string(string, arg_convertflag) - print(formatted_string) - -if __name__ == '__main__': - cli() diff --git a/src/trace_model/jsonld2csv.py b/src/trace_model/jsonld2csv.py deleted file mode 100644 index 894717e..0000000 --- a/src/trace_model/jsonld2csv.py +++ /dev/null @@ -1,79 +0,0 @@ -import pandas as pd -import json, argparse - -def jsonld2csv(data, arg_o): - # Parse the JSON-LD file and convert it into CSV files - # Composition & Arrangement Table - composition = data["trov:hasComposition"] - artifacts = pd.DataFrame(data=composition["trov:hasArtifact"])[["@id", "trov:sha256", "trov:mimeType"]] \ - .rename(columns={"@id": "ArtifactId", "trov:mimeType": "MimeType", "trov:sha256": "Digest"}) \ - .set_index("ArtifactId") - - for arrangement in data["trov:hasArrangement"]: - arrangement_id = arrangement["@id"] - artifacts[arrangement_id] = "" - for artifact in arrangement["trov:hasLocus"]: - artifact_id = artifact["trov:hasArtifact"]["@id"] - artifact_loc = artifact["trov:hasLocation"] - artifacts.loc[artifact_id, arrangement_id] = artifact_loc - - artifacts.to_csv(arg_o + "#composition_and_arrangement.csv", index=True) - - # Only if TRP exits, the following two tables will be available: - # 1) TRO Attribute Justification Table - # 2) TRP & Arrangement Table - if "trov:hasPerformance" in data.keys(): - - # TRS capability: mappings from @id to @type - trscapid2type = {} - for cap in data["trov:wasAssembledBy"]["trov:hasCapability"]: - trscapid2type[cap["@id"]] = cap["@type"] - - if "trov:hasAttribute" in data.keys(): - for tro_att in data["trov:hasAttribute"]: - tro_att_id = tro_att["@id"] - tro_att_type = tro_att["@type"] - justif = pd.DataFrame(tro_att["trov:warrantedBy"]).rename(columns={"@id": "TrpAttId"}).set_index("TrpAttId") - justif["TroAtt"] = tro_att_type - - trp_rows = [] - justif[["TrpAtt", "TrsAttId", "TrsAtt"]] = "" - for trp in data["trov:hasPerformance"]: - trp_att = trp["trov:hadPerformanceAttribute"] - justif.loc[trp_att["@id"], ["TrpAtt", "TrsAttId", "TrsAtt"]] = [trp_att["@type"], trp_att["trov:warrantedBy"]["@id"], trscapid2type[trp_att["trov:warrantedBy"]["@id"]]] - - trp_rows.append((trp["@id"], - trp["rdfs:comment"] if "rdfs:comment" in trp.keys() else None, - trp["trov:wasConductedBy"]["@id"], - trp["trov:startedAtTime"], - trp["trov:endedAtTime"], - trp["trov:accessedArrangement"]["@id"], - trp["trov:contributedToArrangement"]["@id"])) - perf = pd.DataFrame(data=trp_rows, columns=["TrpId", "TrpComment", "TrsId", "StartedAtTime", "EndedAtTime", "accessedArrangementId", "contributedToArrangementId"]) - - justif.reset_index(drop=False)[["TroAtt", "TrpAttId", "TrpAtt", "TrsAttId", "TrsAtt"]].to_csv(arg_o + "#tro_attribute_justification.csv", index=False) - perf.to_csv(arg_o + "#trp_and_arrangement.csv", index=False) - return - -def cli(): - # Parse input - parser = argparse.ArgumentParser() - parser.add_argument("--file", "-f", help="Files of the tro.jsonld (list[str] | str ): please use comma (no space) to split multiple file paths (e.g. file1,file2,file3).") - parser.add_argument("--output", "-o", help="Output folder path.") - arg_file, arg_o = parser.parse_args().file, parser.parse_args().output - - if not arg_file: - parser.error("No action requested. Please add input: --file.") - if not arg_o: - parser.error("Missing output folder path. Please add output file path: --output.") - - for file_path in arg_file.split(","): - tro_filename = file_path.split("/")[-1][:-7] - print(tro_filename) - # Load JSON-LD file - with open(file_path) as fin: - data = json.load(fin)["@graph"][0] - jsonld2csv(data, arg_o + "/" + tro_filename) - -if __name__ == '__main__': - cli() diff --git a/src/trace_model/tro_fingerprint.py b/src/trace_model/tro_fingerprint.py deleted file mode 100644 index 635b053..0000000 --- a/src/trace_model/tro_fingerprint.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python3 - -from hashlib import sha256 -import os, glob, argparse - -def compute_fingerprint(arg_dir, arg_file): - - # All input files - file_paths = [] - if arg_dir != None: - for dir in arg_dir.split(","): - for path in glob.glob(dir + "/**/*", recursive=True): # Include files in sub-directories as well - if not os.path.isdir(path): # Exclude directories - file_paths.append(path) - if arg_file != None: - file_paths.extend(arg_file.split(",")) - - # Compute digest per file and concat in alphabetical order - digests = [] - for file_path in file_paths: - with open(file_path, "rb") as fin: - digests.append(sha256(fin.read()).hexdigest()) - digest = "".join(sorted(digests)) - - # Fingerprint - fingerprint = sha256(digest.encode("utf-8")).hexdigest() - - return fingerprint - -def cli(): - # Parse input - parser = argparse.ArgumentParser() - parser.add_argument("--dir", "-d", help="Directories of the data (list[str] | str ): please use comma (no space) to split multiple directories (e.g. dir1,dir2,dir3).") - parser.add_argument("--file", "-f", help="Files of the data (list[str] | str ): please use comma (no space) to split multiple file paths (e.g. file1,file2,file3).") - parser.add_argument("--expectedfingerprint", "-ef", help="Expected fingerprint (str).") - arg_dir, arg_file, arg_ef = parser.parse_args().dir, parser.parse_args().file, parser.parse_args().expectedfingerprint - - if not (arg_dir or arg_file): - parser.error("No action requested. Please add input: --dir OR --file.") - fingerprint = compute_fingerprint(arg_dir, arg_file) - # If --expectedfingerprint is not specified, - # print the fingerprint of the given directories and/or files directly. - if not arg_ef: - print(fingerprint) - # If --expectedfingerprint is specified, - # we need to validate the fingerprint based on the given field and print True or False. - else: - print(fingerprint == arg_ef) - -if __name__ == '__main__': - cli() diff --git a/src/trace_model/tro_fingerprint_state.py b/src/trace_model/tro_fingerprint_state.py index aa08d4b..481946b 100644 --- a/src/trace_model/tro_fingerprint_state.py +++ b/src/trace_model/tro_fingerprint_state.py @@ -8,7 +8,7 @@ def compute_fingerprint_state(arg_dir, arg_file, arg_c): file_paths = [] if arg_dir != None: for dir in arg_dir.split(","): - for path in glob.glob(dir + "/**/*", recursive=True): # Include files in sub-directories as well + for path in sorted(glob.glob(dir + "/**/*", recursive=True)): # Include files in sub-directories as well if not os.path.isdir(path): # Exclude directories file_paths.append(path) if arg_file != None: diff --git a/src/trace_model/validate_jsonld.py b/src/trace_model/validate_jsonld.py deleted file mode 100644 index 6817b68..0000000 --- a/src/trace_model/validate_jsonld.py +++ /dev/null @@ -1,30 +0,0 @@ -import json, argparse -from jsonschema import Draft7Validator, FormatChecker - -def validate_tro(tro_jsonld_file_path, tro_schema_file_path): - with open(tro_jsonld_file_path) as fin: - tro_jsonld = json.load(fin) - with open(tro_schema_file_path) as fin: - tro_schema = json.load(fin) - validator = Draft7Validator(schema=tro_schema, format_checker=FormatChecker()) - - if validator.is_valid(tro_jsonld): - print("Is a valid TRO JSON-LD file.") - else: - validator.validate(instance=tro_jsonld) - return - -def cli(): - # Parse input - parser = argparse.ArgumentParser() - parser.add_argument("--jsonldpath", "-jp", help="TRO JSON-LD file path ( str ).") - parser.add_argument("--schemapath", "-sp", help="TRO Schema file path ( str ).") - tro_jsonld_file_path, tro_schema_file_path = parser.parse_args().jsonldpath, parser.parse_args().schemapath - if not tro_jsonld_file_path: - parser.error("No JSON-LD file provided. Please add input: --jsonldpath.") - if not tro_schema_file_path: - parser.error("No schema file provided. Please add input: --schemapath.") - validate_tro(tro_jsonld_file_path, tro_schema_file_path) - -if __name__ == '__main__': - cli() diff --git a/src/trace_model/validate_tro.py b/src/trace_model/validate_tro.py deleted file mode 100644 index 08ad227..0000000 --- a/src/trace_model/validate_tro.py +++ /dev/null @@ -1,200 +0,0 @@ -#!/usr/bin/env python3 - -from pyshacl import validate -from rdflib import Graph -import pygraphviz as pgv -import pandas as pd -import argparse, os - -mappings={ - "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf#", - "http://www.w3.org/2000/01/rdf-schema#": "rdfs#", - "https://w3id.org/trace/2023/05/trov#": "trov#", - "https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/": "" - } - -def ensure_dir_exists(file_path): - dir_path = os.path.split(file_path)[0] - if (dir_path != '') and (not os.path.isdir(dir_path)): - os.makedirs(dir_path) - return - -def load_tro_file(file_path, graph_format="json-ld"): - """ - This function is to load a file with a given format as a RDF Graph object supported by RDFLib - :param file_path: String. Path of the file - :param graph_format: Defaults to json-ld. It could be one of {xml, n3, turtle, nt, pretty-xml, trix, trig, nquads, json-ld, hext} - :return tro_graph: a RDF Graph object supported by RDFLib - """ - if graph_format not in {"xml", "n3", "turtle", "nt", "pretty-xml", "trix", "trig", "nquads", "json-ld", "hext"}: - raise ValueError("RDFLib .parse() only supports {xml, n3, turtle, nt, pretty-xml, trix, trig, nquads, json-ld, hext}, but '" + str(format) + "' was given.") - # Load the file (e.g., a JSON-LD file) as string - with open(file_path) as fin: - tro_str = fin.read() - # Parse string with RDFLib - tro_graph = Graph() - tro_graph.parse(data=tro_str, format=graph_format) - return tro_graph - -def validate_tro(tro, tro_schema, data_graph_format="json-ld", shacl_graph_format="ttl", flag=False): - """ - This function is validate the tro_jsonld_graph with tro_schema - :param tro: a RDF Graph object supported by RDFLib or a String - :param tro_schema: a RDF Graph object or a String - :param data_graph_format: format of tro, default value is json-ld - :param shacl_graph_format: format of tro_schema, default value is ttl - :return results_graph: a RDF Graph object showing all errors - """ - - r = validate(data_graph=tro, - shacl_graph=tro_schema, - data_graph_format=data_graph_format, - shacl_graph_format=shacl_graph_format, - inference="rdfs", - debug=True) - conforms, results_graph, results_text = r - - if flag: - print(results_text) - - return results_graph - -def extract_errors(results_graph): - """ - This function is to extract the most important errors - Ideally, all errors will be fixed once solve these errors - :param results_graph: a RDF Graph object showing all errors - :return errors: a Pandas data frame with node, msg, and path columns - """ - - q = """ - PREFIX : - - SELECT ?focus ?msg ?path - WHERE { - ?curr_node :focusNode ?focus . - ?curr_node :resultMessage ?msg . - ?curr_node :resultPath ?path. - OPTIONAL { ?curr_node :detail ?child_node. } - FILTER (!bound(?child_node)) - } - ORDER BY ?focus ?msg ?path - """ - rows = [] - for r in results_graph.query(q): - rows.append(r) - errors = pd.DataFrame(rows, columns=["node", "msg", "path"]).replace(mappings, regex=True).drop_duplicates() - return errors - -def process_graph(tro_graph, mappings, errors): - """ - This function is to process a RDF Graph object: - (1) make the node name shorter - (2) export as a Pandas data frame - (3) add suggested nodes to be updated to the errors data frame - :param tro_graph: a RDF Graph object - :param mappings: a dictionary used to make the node name shorter - :param errors: a Pandas data frame with node, msg, and path columns - :return tro_graph_processed: a Pandas data frame - :return errors_with_suggested_nodes: a Pandas data frame with node, msg, and target columns, where target column denotes suggested nodes to be updated - """ - # Query the imported triples in tro_graph - q = """ - SELECT ?s ?p ?o - WHERE { - ?s ?p ?o - } - ORDER BY ?s ?p ?o - """ - rows = [] - for r in tro_graph.query(q): - rows.append(r) - tro_graph_processed = pd.DataFrame(rows, columns=["source", "label", "target"]).replace(mappings, regex=True) - errors_with_suggested_nodes = errors.merge(tro_graph_processed, how="inner", left_on=["node", "path"], right_on=["source", "label"])[["node", "msg", "target"]] - return tro_graph_processed, errors_with_suggested_nodes - -def visualize_graph_as_dot(tro_graph_processed, errors_with_suggested_nodes): - # Create a directed graph - G = pgv.AGraph(directed=True) - # Add nodes and edges - for _, row in tro_graph_processed.iterrows(): - G.add_node(row["source"], shape="box", style="filled, rounded", fillcolor="#b3e2cd") - G.add_node(row["target"], shape="box", style="filled, rounded", fillcolor="#b3e2cd") - G.add_edge(row["source"], row["target"], label=row["label"]) - for _, row in errors_with_suggested_nodes[["node", "msg"]].drop_duplicates().iterrows(): - G.add_node(row["node"], shape="box", style="filled, rounded", fillcolor="#fdccac") - G.add_node(row["msg"], shape="box", style="filled, rounded, dashed", fillcolor="#fdccac") - G.add_edge(row["node"], row["msg"], label="ErrorMsg", style="dashed") - # Suggested nodes to be updated - for suggested_node in errors_with_suggested_nodes["target"].dropna().unique(): - G.add_node(suggested_node, shape="box", style="filled, rounded", fillcolor="#cbd5e8") - return G - -def report_graph_as_txt(errors_with_suggested_nodes): - report_text = "" - for _, row in errors_with_suggested_nodes.groupby(["node", "msg"])["target"].agg(list).reset_index().iterrows(): - report_text = report_text + "Node: {node} \nError Message: {msg}\nSuggested Node(s) to be Updated: {suggested_node}\n\n".format(node=row["node"], msg=row["msg"], suggested_node=", ".join(row["target"])) - return report_text - -def cli(): - # Parse input - parser = argparse.ArgumentParser() - parser.add_argument("--showerrors", "-se", default=False, help="Show all errors.") - parser.add_argument("--file", "-f", help="File(s) of the TRO Declarations to be validated (list[str] | str ): please use comma (no space) to split multiple file paths (e.g. file1,file2,file3).") - parser.add_argument("--schema", "-s", help="Schema of the TRO Declaration (str): path of the file.") - parser.add_argument("--fileformat", "-ff", help="File format(s) of the TRO Declarations to be validated (list[str] | str ). Orders should be consistent with the input of --file. Default format is json-ld. If all input files have the same format, only need to write once.") - parser.add_argument("--schemaformat", "-sf", default="ttl", choices=["xml", "n3", "turtle", "nt", "pretty-xml", "trix", "trig", "nquads", "json-ld", "hext"], help="File format of the schema (str). Default format is ttl.") - parser.add_argument("--output", "-o", help="File(s) of the validation report without extension (list[str] | str ). If no value, then output will be a string. Please use comma (no space) to split multiple file paths (e.g. file1,file2,file3).") - parser.add_argument("--outputformat", "-of", help="File format(s) of the output, validation report (list[str] | str ). Orders should be consistent with the input of --output. Default format is txt. Each item can only be one of {txt,png,gv}. Please use comma (no space) to split multiple formats (e.g. format1,format2,format3). If all output files have the same format, only need to write once.") - arg_showerrors, arg_file, arg_schema, arg_fileformat, arg_schemaformat, arg_outputformat, arg_output = parser.parse_args().showerrors, parser.parse_args().file, parser.parse_args().schema, parser.parse_args().fileformat, parser.parse_args().schemaformat, parser.parse_args().outputformat, parser.parse_args().output - - if not arg_file: - parser.error("File(s) of the TRO Declaration to be validated are missing. Please add: --file.") - if not arg_schema: - parser.error("Schema file is missing. Please add: --schema.") - file_paths = arg_file.split(",") - num_files = len(file_paths) - output_paths = [None] * num_files if not arg_output else arg_output.split(",") - file_formats = ["json-ld"] * num_files if not arg_fileformat else arg_fileformat.split(",") - output_formats = ["txt"] * num_files if not arg_outputformat else arg_outputformat.split(",") - if len(file_formats) == 1: - file_formats = file_formats * num_files - if len(output_formats) == 1: - output_formats = output_formats * num_files - - if num_files != len(file_formats) or num_files != len(output_formats) or num_files != len(output_paths): - raise ValueError("Please make sure the number of input files (and input formats) equals to the number of output files (and output formats): check the value of --file, --fileformat, --output, --outputformat.") - - for file_path, file_format, output_path, output_format in zip(file_paths, file_formats, output_paths, output_formats): - # Load TRO Declaration - tro_graph = load_tro_file(file_path, graph_format=file_format) - # Validate the TRO Declaration - results_graph = validate_tro(tro_graph, arg_schema, data_graph_format=file_format, shacl_graph_format=arg_schemaformat, flag=arg_showerrors) - # Find the most important errors - errors = extract_errors(results_graph) - # Find the suggested error nodes - (tro_graph_processed, errors_with_suggested_nodes) = process_graph(tro_graph, mappings, errors) - # Output - if output_format not in ["txt", "png", "gv"]: - raise ValueError("The output file format can only be one of {txt, png, gv}, but " + str(output_format) + " was given. Please check --outputformat.") - - output_path = output_path + "." + output_format if output_path else None - if output_path: - ensure_dir_exists(output_path) - if output_format == "png" or output_format == "gv": - G = visualize_graph_as_dot(tro_graph_processed, errors_with_suggested_nodes) - if output_format == "png": - G.draw(output_path, prog="dot") - else: # gv - G.write(output_path) - else: - report_text = report_graph_as_txt(errors_with_suggested_nodes) - if not output_path: - # If NO --output, print a string - print(report_text) - else: - with open(output_path, mode="w", encoding="utf-8") as fout: - fout.write(report_text) - -if __name__ == '__main__': - cli() \ No newline at end of file