================================================== 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 dataset
  destroy  Delete a dataset
  export   Export a dataset
  graph    Visualize a dataset
  load     Import data into a dataset
  query    Perform a query on a dataset
  report   Expand a report using dataset(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

geist create --help

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

  Create a new dataset

Options:
  --help  Show this message and exit.

Commands:
  duckdb  Create a new SQL dataset using DuckDB
  rdflib  Create a new RDF dataset using RDFLib
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

geist create rdflib -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 rdflib -d test | sort

geist destroy rdflib -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 rdflib -d test -ifile data/tro.jsonld

ls -R .geistdata

----------------------------------------------------------- cell outputs -----------------------------------------------------------
.geistdata:
rdflib

.geistdata/rdflib:
test.pkl
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

geist load --help

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

  Import data into a dataset

Options:
  --help  Show this message and exit.

Commands:
  duckdb  Import data into a SQL dataset
  rdflib  Import data into a RDF dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

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

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


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

geist destroy --help

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

  Delete a dataset

Options:
  --help  Show this message and exit.

Commands:
  duckdb  Delete a SQL dataset
  rdflib  Delete an RDF dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

geist destroy rdflib -d test

ls -R .geistdata

----------------------------------------------------------- cell outputs -----------------------------------------------------------
.geistdata:
rdflib

.geistdata/rdflib:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

geist create rdflib -ifile data/tro.jsonld

ls -R .geistdata

----------------------------------------------------------- cell outputs -----------------------------------------------------------
.geistdata:
rdflib

.geistdata/rdflib:
kb.pkl
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

geist export --help

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

  Export a dataset

Options:
  --help  Show this message and exit.

Commands:
  duckdb  Export a SQL dataset
  rdflib  Export an RDF dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

geist export rdflib | 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] COMMAND [ARGS]...

  Visualize a dataset

Options:
  --help  Show this message and exit.

Commands:
  rdflib  Visualize an RDF dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

geist graph rdflib -m data/mappings.json -oroot products -ofile 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] COMMAND [ARGS]...

  Perform a query on a dataset

Options:
  --help  Show this message and exit.

Commands:
  duckdb  Perform a SQL query on a dataset
  rdflib  Perform a SPARQL query on a dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


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

geist query rdflib --inputfile 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 rdflib << __END_QUERY__

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

__END_QUERY__

geist destroy rdflib -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 rdflib -d kb -ifile data/tro.jsonld

geist query rdflib -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 rdflib -d newkb -ifile products/qres.csv -iformat csv --colnames "[['s','p','o']]"

geist query rdflib -d newkb << __END_QUERY__

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

__END_QUERY__

geist destroy rdflib -d newkb
geist destroy rdflib -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 dataset(s)

Options:
  -ifile, --inputfile 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 datastore="rdflib", 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 datastore="rdflib", isfilepath=False as all_triples %}
    SELECT ?s ?p ?o
    WHERE {
        ?s ?p ?o
    }
    ORDER BY ?s ?p ?o
{% endquery %}

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

{% destroy datastore="rdflib" %}

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 "test", datastore="rdflib", 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", datastore="rdflib", isfilepath=False as all_triples %}
    SELECT ?s ?p ?o
    WHERE {
        ?s ?p ?o
    }
    ORDER BY ?s ?p ?o
{% endquery %}

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

{% destroy "test", datastore="rdflib" %}

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 -oroot products << END_TEMPLATE

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

{% query datastore="rdflib" as all_triples %} data/query {% endquery %}

{%- html "report.html" %}
<body>
    <u>List</u>
    {% for _, row in all_triples.iterrows() %}
        {%- set s = row["s"] | process_str_for_html %}
        {%- set p = row["p"] | process_str_for_html %}
        {%- set o = row["o"] | process_str_for_html %}
        <li>Subject: {{ s }}, Predicate: {{ p }}, Object: {{ o }}.</li>
    {% endfor -%}<br>
    <u>Visualization</u><br>
    {% img src="rdf.svg" %}
        {% graph datastore="rdflib" %}
    {% endimg %}
</body>
{%- endhtml %}

{% destroy datastore="rdflib" %}

END_TEMPLATE

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



<!DOCTYPE html>
<html>
<body>
    <u>List</u>
            <li>Subject: &lthttp://example.com/drewp&gt, Predicate: &lthttp://example.com/says&gt, Object: Hello World.</li>
            <li>Subject: &lthttp://example.com/drewp&gt, Predicate: &lthttp://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt, Object: &lthttp://xmlns.com/foaf/0.1/Person&gt.</li>
    <br>
    <u>Visualization</u><br>
    <img src="rdf.svg" ></body>
</html>


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


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

geist report << END_TEMPLATE

{%- use "templates.geist" %}

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

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

{%- query_with_args %}

{%- destroy "kb1", datastore="rdflib" %}
{%- destroy "kb2", datastore="rdflib" %}

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
        
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


