Software to draw the topology of a TREE view.
The processing can be divided into 4 steps;
- Query the TREE view to get the tree:relation
- Build a graph from the
tree:relation
- Build a graphviz graph
- Generate a graph file (supported file types:
dot
,svg
,png
,jpg
)
We use the Link Traversal Query Processessing modules of the SPARQL query engine Comunica
to execute the following SPARQL query to collect information about the tree:Relation
and the current tree:Node
s.
PREFIX tree: <https://w3id.org/tree#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?node ?nextNode ?operator ?value WHERE {
?node tree:relation ?relation .
?relation tree:node ?nextNode .
?relation rdf:type ?operator.
?relation tree:value ?value .
} LIMIT {limit}
We then build a graph from the query response where the vertices are composed of the variables from the SPARQL query ?node
and ?nextNode
and the edges are characterized by the pair (?node
, ?nextNode
) and are "weighted" with the boolean expression composes with the SPARQL variable ?operator
?value
.
The graph is forwarded to the go-graphviz
library which handles the generation of the graph file.
- go version 1.20
- nodejs v16
- yarn
- Make Optional for building
To build the software for a first time
make build-all
It will build the main source code and the javascript
code used to instantiate Comunica.
To only build the main source code
make build
The binary will be located in ./build/tree-visualizer
To build the code and then run it with the default parameters
make build-run
To run with the default parameters
make run
The binary is located inside the ./build/tree-visualizer
.
To display the help prompt use -h
.
The file type is inferred from the extension of the path passed to -p
.
Usage of ./build/tree-visualizer:
-l uint
The maximum number of relations (default 18446744073709551615)
-p string
Resulting path of the graph (default "./generated/graph.svg")
-t string
URL of the TREE document (default "http://localhost:3000/ldes/test")
-u Make the graph unlabeled
To run all the tests
make test
- Make a streaming version of the program where the graph is generated has the relations are discovered.
- Make a mode to handle simpler
tree:relation
without using optional statements in the SPARQL query has it greatly slows down the execution time. - Include an option to track the nodes that are traversed when executing a SPARQL query from an outsider Query engine.
- Option to output an
html
file, with an interactive graph using JavaScript. - Create a web assembly binary.
@software{Tam_tree-document-topology-visualizer_2023,
author = {Tam, Bryan-Elliott},
doi = {10.5281/zenodo.1234},
month = {4},
title = {{tree-document-topology-visualizer}},
url = {https://github.com/constraintAutomaton/tree-document-topology-visualizer},
version = {1.0.0},
year = {2023}
}