================================================== bash cell | available_commands ==================================================

geist --help

----------------------------------------------------------- cell outputs -----------------------------------------------------------
Usage: geist [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  create   Create a new RDF dataset
  destroy  Delete an RDF dataset
  export   Export an RDF graph
  graph    Visualize a dataset
  load     Import data into a RDF dataset
  query    Perform a SPARQL query on a dataset
  report   Expand a report using a dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


==================================================== bash cell | create_command ====================================================

geist create --help

----------------------------------------------------------- cell outputs -----------------------------------------------------------
Usage: geist create [OPTIONS]

  Create a new RDF dataset

Options:
  -d, --dataset TEXT              Name of RDF dataset to create (default "kb")
  -ifile, --inputfile FILENAME    Path of the file to be loaded as triples
                                  [required]
  -iformat, --inputformat [xml|n3|turtle|nt|pretty-xml|trix|trig|nquads|json-ld|hext|csv]
                                  Format of the file to be loaded as triples
                                  (default json-ld)
  --colnames TEXT                 Column names of triples with the format of
                                  [[subject1, predicate1, object1], [subject2,
                                  predicate2, object2], ...] when the input
                                  format is csv
  --infer [none|rdfs|owl|rdfs_owl]
                                  Inference to perform on update [none, rdfs,
                                  owl, rdfs_owl] (default "none")
  --help                          Show this message and exit.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


===================================================== bash cell | create_stdin =====================================================

geist create -d test -iformat nt << __END_INPUT__

<http://example.com/drewp> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
<http://example.com/drewp> <http://example.com/says> "Hello World" .

__END_INPUT__

geist export -d test | sort

geist destroy -d test

----------------------------------------------------------- cell outputs -----------------------------------------------------------

<http://example.com/drewp> <http://example.com/says> "Hello World" .
<http://example.com/drewp> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


===================================================== bash cell | create_file ======================================================

geist create -d test -ifile data/tro.jsonld

ls .geistdata

----------------------------------------------------------- cell outputs -----------------------------------------------------------
test.pkl
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


===================================================== bash cell | load_command =====================================================

geist load --help

----------------------------------------------------------- cell outputs -----------------------------------------------------------
Usage: geist load [OPTIONS]

  Import data into a RDF dataset

Options:
  -d, --dataset TEXT              Name of RDF dataset to create (default "kb")
  -ifile, --inputfile FILENAME    Path of the file to be loaded as triples
                                  [required]
  -iformat, --inputformat [xml|n3|turtle|nt|pretty-xml|trix|trig|nquads|json-ld|hext|csv]
                                  Format of the file to be loaded as triples
                                  (default json-ld)
  --colnames TEXT                 Column names of triples with the format of
                                  [[subject1, predicate1, object1], [subject2,
                                  predicate2, object2], ...] when the input
                                  format is csv
  --help                          Show this message and exit.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================== bash cell | load_dataset_test ===================================================

geist load -d test -ifile data/tro.jsonld

----------------------------------------------------------- cell outputs -----------------------------------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


=================================================== bash cell | destroy_command ====================================================

geist destroy --help

----------------------------------------------------------- cell outputs -----------------------------------------------------------
Usage: geist destroy [OPTIONS]

  Delete an RDF dataset

Options:
  -d, --dataset TEXT  Name of RDF dataset to be removed (default "kb")
  -q, --quiet         Suppress error messages if the provided dataset does not
                      exist
  --help              Show this message and exit.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================= bash cell | destroy_dataset_test =================================================

geist destroy -d test

ls .geistdata

----------------------------------------------------------- cell outputs -----------------------------------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================== bash cell | create_dataset_kb ===================================================

geist create -ifile data/tro.jsonld

ls .geistdata

----------------------------------------------------------- cell outputs -----------------------------------------------------------
kb.pkl
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


==================================================== bash cell | export_command ====================================================

geist export --help

----------------------------------------------------------- cell outputs -----------------------------------------------------------
Usage: geist export [OPTIONS]

  Export an RDF graph

Options:
  -d, --dataset TEXT              Name of RDF dataset to be exported (default
                                  "kb")
  -oroot, --outputroot TEXT       Path of the directory to store these
                                  exported triples (default: current
                                  directory). If the given path (i.e.,
                                  --outputfile) is None or a relative path, it
                                  will be ignored.
  -ofile, --outputfile TEXT       Path of the file to store these exported
                                  triples (default: None)
  -oformat, --outputformat [json-ld|n3|nquads|nt|hext|pretty-xml|trig|trix|turtle|longturtle|xml]
                                  Format of the exported triples (default nt)
  --help                          Show this message and exit.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================== bash cell | export_dataset_kb ===================================================

geist export | sort

----------------------------------------------------------- cell outputs -----------------------------------------------------------

<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/trace/2023/05/trov#ArtifactLocus> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1> <https://w3id.org/trace/2023/05/trov#hasArtifact> <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1> <https://w3id.org/trace/2023/05/trov#hasLocation> "filepath1" .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/trace/2023/05/trov#ArtifactLocus> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2> <https://w3id.org/trace/2023/05/trov#hasArtifact> <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/100> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2> <https://w3id.org/trace/2023/05/trov#hasLocation> "filepath2" .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/trace/2023/05/trov#ArtifactArrangement> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1> <https://w3id.org/trace/2023/05/trov#hasLocus> <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1> <https://w3id.org/trace/2023/05/trov#hasLocus> <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/trace/2023/05/trov#ResearchArtifact> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1> <https://w3id.org/trace/2023/05/trov#sha256> "art.sha256.1" .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/trace/2023/05/trov#ArtifactComposition> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1> <https://w3id.org/trace/2023/05/trov#hasArtifact> <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1> <https://w3id.org/trace/2023/05/trov#hasFingerprint> <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/trace/2023/05/trov#CompositionFingerprint> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1> <https://w3id.org/trace/2023/05/trov#sha256> "sha256.fp1" .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro/1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <https://w3id.org/trace/2023/05/trov#TransparentResearchObject> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro/1> <https://w3id.org/trace/2023/05/trov#hasArrangement> <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1> .
<https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro/1> <https://w3id.org/trace/2023/05/trov#hasComposition> <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1> .
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


==================================================== bash cell | graph_command =====================================================

geist graph --help

----------------------------------------------------------- cell outputs -----------------------------------------------------------
Usage: geist graph [OPTIONS]

  Visualize a dataset

Options:
  -d, --dataset TEXT              Name of RDF dataset to be visualized
                                  (default "kb")
  -r, --rankdir [TB|BT|LR|RL]     Direction of the graph (default TB): TB or
                                  BT or LR or RL
  -m, --mappings TEXT             File of the mappings to shorten text (str):
                                  path of a JSON file, where the key is the
                                  original text and the value is the shorter
                                  text.
  -on, --on TEXT                  Column(s) to be mapped.
  -oroot, --outputroot TEXT       Path of the directory to store the graph
                                  (default: current directory). If the given
                                  path (i.e., --outputfile) is a relative
                                  path, it will be ignored.
  -ofile, --outputfile TEXT       Path of the file without extension to store
                                  the graph (default: res)
  -oformat, --outputformat [none|svg|png|gv]
                                  Format of the graph (default: none): none or
                                  svg or png or gv
  --help                          Show this message and exit.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


=================================================== bash cell | graph_dataset_kb ===================================================

geist graph -m data/mappings.json -ofile products/kb -oformat none -oformat png -oformat gv

----------------------------------------------------------- cell outputs -----------------------------------------------------------
strict digraph "" {
	graph [rankdir=TB];
	"<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>];
	"<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="#b3e2cd",
		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>];
	"<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>];
}

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


==================================================== bash cell | query_command =====================================================

geist query --help

----------------------------------------------------------- cell outputs -----------------------------------------------------------
Usage: geist query [OPTIONS]

  Perform a SPARQL query on a dataset

Options:
  -d, --dataset TEXT         Name of RDF dataset to be queried (default "kb")
  --file FILENAME            Path of the file containing the SPARQL query to
                             execute  [required]
  -oroot, --outputroot TEXT  Path of the directory to store the query results
                             (default: current directory). If the given path
                             (i.e., --outputfile) is None or a relative path,
                             it will be ignored.
  -ofile, --outputfile TEXT  Path of the file to store the query results
                             (default: None)
  --help                     Show this message and exit.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================ bash cell | file_query_dataset_kb =================================================

geist query --file data/query

----------------------------------------------------------- cell outputs -----------------------------------------------------------
|    | s                                                                                                                                          | p                                                    | o                                                                                                                                            |
|---:|:-------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------|
|  0 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1>            | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ArtifactArrangement>                                                                                    |
|  1 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1>            | <https://w3id.org/trace/2023/05/trov#hasLocus>       | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1>      |
|  2 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1>            | <https://w3id.org/trace/2023/05/trov#hasLocus>       | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2>      |
|  3 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1>    | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ArtifactLocus>                                                                                          |
|  4 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1>    | <https://w3id.org/trace/2023/05/trov#hasArtifact>    | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1>   |
|  5 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1>    | <https://w3id.org/trace/2023/05/trov#hasLocation>    | filepath1                                                                                                                                    |
|  6 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2>    | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ArtifactLocus>                                                                                          |
|  7 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2>    | <https://w3id.org/trace/2023/05/trov#hasArtifact>    | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/100> |
|  8 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2>    | <https://w3id.org/trace/2023/05/trov#hasLocation>    | filepath2                                                                                                                                    |
|  9 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1>            | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ArtifactComposition>                                                                                    |
| 10 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1>            | <https://w3id.org/trace/2023/05/trov#hasArtifact>    | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1>   |
| 11 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1>            | <https://w3id.org/trace/2023/05/trov#hasFingerprint> | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1>                        |
| 12 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1> | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ResearchArtifact>                                                                                       |
| 13 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1> | <https://w3id.org/trace/2023/05/trov#sha256>         | art.sha256.1                                                                                                                                 |
| 14 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1>                      | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#CompositionFingerprint>                                                                                 |
| 15 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1>                      | <https://w3id.org/trace/2023/05/trov#sha256>         | sha256.fp1                                                                                                                                   |
| 16 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro/1>                    | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#TransparentResearchObject>                                                                              |
| 17 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro/1>                    | <https://w3id.org/trace/2023/05/trov#hasArrangement> | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1>              |
| 18 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro/1>                    | <https://w3id.org/trace/2023/05/trov#hasComposition> | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1>              |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================ bash cell | stdin_query_dataset_kb ================================================

geist query << __END_QUERY__

SELECT ?s ?p ?o
WHERE {
    ?s ?p ?o
}
ORDER BY ?s ?p ?o

__END_QUERY__

geist destroy -d kb

----------------------------------------------------------- cell outputs -----------------------------------------------------------
|    | s                                                                                                                                          | p                                                    | o                                                                                                                                            |
|---:|:-------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------|
|  0 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1>            | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ArtifactArrangement>                                                                                    |
|  1 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1>            | <https://w3id.org/trace/2023/05/trov#hasLocus>       | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1>      |
|  2 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1>            | <https://w3id.org/trace/2023/05/trov#hasLocus>       | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2>      |
|  3 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1>    | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ArtifactLocus>                                                                                          |
|  4 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1>    | <https://w3id.org/trace/2023/05/trov#hasArtifact>    | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1>   |
|  5 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/1>    | <https://w3id.org/trace/2023/05/trov#hasLocation>    | filepath1                                                                                                                                    |
|  6 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2>    | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ArtifactLocus>                                                                                          |
|  7 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2>    | <https://w3id.org/trace/2023/05/trov#hasArtifact>    | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/100> |
|  8 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1/locus/2>    | <https://w3id.org/trace/2023/05/trov#hasLocation>    | filepath2                                                                                                                                    |
|  9 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1>            | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ArtifactComposition>                                                                                    |
| 10 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1>            | <https://w3id.org/trace/2023/05/trov#hasArtifact>    | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1>   |
| 11 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1>            | <https://w3id.org/trace/2023/05/trov#hasFingerprint> | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1>                        |
| 12 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1> | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#ResearchArtifact>                                                                                       |
| 13 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1> | <https://w3id.org/trace/2023/05/trov#sha256>         | art.sha256.1                                                                                                                                 |
| 14 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1>                      | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#CompositionFingerprint>                                                                                 |
| 15 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1>                      | <https://w3id.org/trace/2023/05/trov#sha256>         | sha256.fp1                                                                                                                                   |
| 16 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro/1>                    | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>    | <https://w3id.org/trace/2023/05/trov#TransparentResearchObject>                                                                              |
| 17 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro/1>                    | <https://w3id.org/trace/2023/05/trov#hasArrangement> | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/arrangement/1>              |
| 18 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/tro/1>                    | <https://w3id.org/trace/2023/05/trov#hasComposition> | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1>              |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================ bash cell | query_dataset_to_newkb ================================================

geist create -d kb -ifile data/tro.jsonld

geist query -d kb --outputfile products/qres.csv << __END_QUERY__

SELECT ?s ?p ?o
WHERE {
    ?s ?p ?o .
    FILTER ( ?p = trov:sha256 ) .
}
ORDER BY ?s ?p ?o

__END_QUERY__

geist create -d newkb -ifile products/qres.csv -iformat csv --colnames "[['s','p','o']]"

geist query -d newkb << __END_QUERY__

SELECT ?s ?p ?o
WHERE {
    ?s ?p ?o
}
ORDER BY ?s ?p ?o

__END_QUERY__

geist destroy -d newkb
geist destroy -d kb

----------------------------------------------------------- cell outputs -----------------------------------------------------------
|    | s                                                                                                                                          | p                                            | o            |
|---:|:-------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------|:-------------|
|  0 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/composition/1/artifact/1> | <https://w3id.org/trace/2023/05/trov#sha256> | art.sha256.1 |
|  1 | <https://github.com/transparency-certified/trace-model/tree/master/demo/01-trov-examples/01-two-artifacts-no-trp/fp1>                      | <https://w3id.org/trace/2023/05/trov#sha256> | sha256.fp1   |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


==================================================== bash cell | report_command ====================================================

geist report --help

----------------------------------------------------------- cell outputs -----------------------------------------------------------
Usage: geist report [OPTIONS]

  Expand a report using a dataset

Options:
  -f, --file FILENAME            Path of the file containing the report
                                 template to expand  [required]
  -oroot, --outputroot TEXT      Path of the directory to store the expanded
                                 report (default: current directory)
  -so, --suppressoutput BOOLEAN  Suppress output or not (default: False)
  --help                         Show this message and exit.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


=================================================== bash cell | report_create_kb ===================================================

geist report << END_TEMPLATE

{% create inputformat="nt", isfilepath=False %}
    <http://example.com/drewp> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
    <http://example.com/drewp> <http://example.com/says> "Hello World" .
{% endcreate %}

{% query isfilepath=False as res %}
    SELECT ?s ?p ?o
    WHERE {
        ?s ?p ?o
    }
    ORDER BY ?s ?p ?o
{% endquery %}
{% set all_triples = res | json2df %}

{% for _, row in all_triples.iterrows() %}
    Subject: {{ row["s"] }}, Predicate: {{ row["p"] }}, Object: {{ row["o"] }}.
{% endfor %}

{% destroy %}

END_TEMPLATE

----------------------------------------------------------- cell outputs -----------------------------------------------------------



    Subject: <http://example.com/drewp>, Predicate: <http://example.com/says>, Object: Hello World.
    Subject: <http://example.com/drewp>, Predicate: <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>, Object: <http://xmlns.com/foaf/0.1/Person>.


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================== bash cell | report_create_test ==================================================

geist report << END_TEMPLATE

{% create dataset="test", inputformat="csv", colnames="[['s', 'p', 'o']]", isfilepath=False %}
s,p,o
<http://example.com/drewp>,<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>,<http://xmlns.com/foaf/0.1/Person>
<http://example.com/drewp>,<http://example.com/says>,"Hello World"
{% endcreate %}

{% query "test", isfilepath=False as res %}
    SELECT ?s ?p ?o
    WHERE {
        ?s ?p ?o
    }
    ORDER BY ?s ?p ?o
{% endquery %}
{% set all_triples = res | json2df %}

{% for _, row in all_triples.iterrows() %}
    Subject: {{ row["s"] }}, Predicate: {{ row["p"] }}, Object: {{ row["o"] }}.
{% endfor %}

{% destroy "test" %}

END_TEMPLATE

----------------------------------------------------------- cell outputs -----------------------------------------------------------



    Subject: <http://example.com/drewp>, Predicate: <http://example.com/says>, Object: Hello World.
    Subject: <http://example.com/drewp>, Predicate: <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>, Object: <http://xmlns.com/foaf/0.1/Person>.


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


================================================ bash cell | report_create_kb_file =================================================

geist report << END_TEMPLATE

{% create inputformat="csv", colnames="[['s', 'p', 'o']]" %} data/kb.csv {% endcreate %}

{% query as res %} data/query {% endquery %}
{% set all_triples = res | json2df %}

{% for _, row in all_triples.iterrows() %}
    Subject: {{ row["s"] }}, Predicate: {{ row["p"] }}, Object: {{ row["o"] }}.
{% endfor %}

{% destroy %}

END_TEMPLATE

----------------------------------------------------------- cell outputs -----------------------------------------------------------



    Subject: <http://example.com/drewp>, Predicate: <http://example.com/says>, Object: Hello World.
    Subject: <http://example.com/drewp>, Predicate: <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>, Object: <http://xmlns.com/foaf/0.1/Person>.


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


=============================================== bash cell | report_with_nested_rules ===============================================

geist report << END_TEMPLATE

{%- use "templates.geist" %}

{%- create "kb1", inputformat="nt", isfilepath=False %}
    <http://example.com/drewp> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
    <http://example.com/drewp> <http://example.com/says> "Hello World" .
    <http://example.com/drewp> <http://example.com/says> "What a Nice Day" .
    <http://example.com/drewp> <http://example.com/feels> "Happy" .
{% endcreate %}

{%- create "kb2", inputformat="nt", isfilepath=False %}
    <http://example.com/test> <http://example.com/p1> <http://example.com/says>.
    <http://example.com/test> <http://example.com/p2> <http://example.com/feels>.
{% endcreate %}

{%- query "kb1", isfilepath=False as res %}
    SELECT ?s ?o
    WHERE {
        ?s ?p ?o
        FILTER (?p IN ({% query "kb2", isfilepath=False as res %}
                            SELECT ?p 
                            WHERE {?s <http://example.com/p1> ?p}
                        {% endquery %}
                        {% set p = res | json2df %}
                        {{", ".join(p["p"])}}))
    }
    ORDER BY ?s ?o
{% endquery %}
{% set all_triples = res | json2df %}

{% for _, row in all_triples.iterrows() %}
    {% format_output row["s"], row["o"] %}.
{%- endfor %}

{%- query_with_args %}

{%- destroy "kb1" %}
{%- destroy "kb2" %}

END_TEMPLATE

----------------------------------------------------------- cell outputs -----------------------------------------------------------

    
    <http://example.com/drewp> says Hello World.    
    <http://example.com/drewp> says What a Nice Day.
                    
        <http://example.com/drewp> -- <http://example.com/says> --> Hello World
        <http://example.com/drewp> -- <http://example.com/says> --> What a Nice Day
                        
        <http://example.com/drewp> -- <http://example.com/feels> --> Happy
        
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


