Browse Source
graph: Add Cypher backend.
* guix/graph.scm (%cypher-backend): New variable.
* doc/guix.texi: Add documentation for the Cypher backend of 'guix graph'.
version-0.13.0
Roel Janssen
5 years ago
No known key found for this signature in database
GPG Key ID: C3EC1DCA843072E1
2 changed files with
34 additions and
2 deletions
-
doc/guix.texi
-
guix/graph.scm
|
|
@ -6197,7 +6197,9 @@ provides a visual representation of the DAG. By default, |
|
|
|
@uref{http://www.graphviz.org/, Graphviz}, so its output can be passed |
|
|
|
directly to the @command{dot} command of Graphviz. It can also emit an |
|
|
|
HTML page with embedded JavaScript code to display a ``chord diagram'' |
|
|
|
in a Web browser, using the @uref{https://d3js.org/, d3.js} library. |
|
|
|
in a Web browser, using the @uref{https://d3js.org/, d3.js} library, or |
|
|
|
emit Cypher queries to construct a graph in a graph database supporting |
|
|
|
the @uref{http://www.opencypher.org/, openCypher} query language. |
|
|
|
The general syntax is: |
|
|
|
|
|
|
|
@example |
|
|
|
|
|
@ -229,6 +229,35 @@ nodeArray.push(nodes[\"~a\"]);~%" |
|
|
|
emit-d3js-prologue emit-d3js-epilogue |
|
|
|
emit-d3js-node emit-d3js-edge)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;; |
|
|
|
;;; Cypher export. |
|
|
|
;;; |
|
|
|
|
|
|
|
(define (emit-cypher-prologue name port) |
|
|
|
(format port "")) |
|
|
|
|
|
|
|
(define (emit-cypher-epilogue port) |
|
|
|
(format port "")) |
|
|
|
|
|
|
|
(define (emit-cypher-node id label port) |
|
|
|
(format port "MERGE (p:Package { id: ~s }) SET p.name = ~s;~%" |
|
|
|
id label )) |
|
|
|
|
|
|
|
(define (emit-cypher-edge id1 id2 port) |
|
|
|
(format port "MERGE (a:Package { id: ~s });~%" id1) |
|
|
|
(format port "MERGE (b:Package { id: ~s });~%" id2) |
|
|
|
(format port "MATCH (a:Package { id: ~s }), (b:Package { id: ~s }) CREATE UNIQUE (a)-[:NEEDS]->(b);~%" |
|
|
|
id1 id2)) |
|
|
|
|
|
|
|
(define %cypher-backend |
|
|
|
(graph-backend "cypher" |
|
|
|
"Generate Cypher queries." |
|
|
|
emit-cypher-prologue emit-cypher-epilogue |
|
|
|
emit-cypher-node emit-cypher-edge)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;; |
|
|
|
;;; Shared. |
|
|
@ -236,7 +265,8 @@ nodeArray.push(nodes[\"~a\"]);~%" |
|
|
|
|
|
|
|
(define %graph-backends |
|
|
|
(list %graphviz-backend |
|
|
|
%d3js-backend)) |
|
|
|
%d3js-backend |
|
|
|
%cypher-backend)) |
|
|
|
|
|
|
|
(define* (export-graph sinks port |
|
|
|
#:key |
|
|
|