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
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user