graph: Add Cypher backend.
* guix/graph.scm (%cypher-backend): New variable. * doc/guix.texi: Add documentation for the Cypher backend of 'guix graph'.
This commit is contained in:
parent
70cb7610ca
commit
5899fafbfe
|
@ -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
|
@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
|
directly to the @command{dot} command of Graphviz. It can also emit an
|
||||||
HTML page with embedded JavaScript code to display a ``chord diagram''
|
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:
|
The general syntax is:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
|
|
|
@ -229,6 +229,35 @@ nodeArray.push(nodes[\"~a\"]);~%"
|
||||||
emit-d3js-prologue emit-d3js-epilogue
|
emit-d3js-prologue emit-d3js-epilogue
|
||||||
emit-d3js-node emit-d3js-edge))
|
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.
|
;;; Shared.
|
||||||
|
@ -236,7 +265,8 @@ nodeArray.push(nodes[\"~a\"]);~%"
|
||||||
|
|
||||||
(define %graph-backends
|
(define %graph-backends
|
||||||
(list %graphviz-backend
|
(list %graphviz-backend
|
||||||
%d3js-backend))
|
%d3js-backend
|
||||||
|
%cypher-backend))
|
||||||
|
|
||||||
(define* (export-graph sinks port
|
(define* (export-graph sinks port
|
||||||
#:key
|
#:key
|
||||||
|
|
Loading…
Reference in New Issue