Java GraphTraversal 输出 Gremlin 查询
Java GraphTraversal output Gremlin query
如何从 Java GraphTraversal
对象输出 Gremlin 查询?默认输出 (graphTraversal.toString()
) 看起来像 [HasStep([~label.eq(brand), name.eq(Nike), status.within([VALID])])]
这样不容易阅读。
Gremlin 提供了 GroovyTranslator class 来帮助解决这个问题。这是一个例子。
// Simple traversal we can use for testing a few things
Traversal t =
g.V().has("airport","region","US-TX").
local(values("code","city").
fold());
// Generate the text form of the query from a Traversal
String query;
query = GroovyTranslator.of("g").
translate(t.asAdmin().getBytecode());
System.out.println("\nResults from GroovyTranslator on a traversal");
System.out.println(query);
这取自此处的一组示例:https://github.com/krlawrence/graph/blob/master/sample-code/RemoteWriteText.java
您可以在 DefaultGraphTraversal
上使用 getByteCode()
方法来获取输出 gremlin 查询。
例如,考虑下图
Graph graph = TinkerGraph.open();
Vertex a = graph.addVertex(label, "person", "name", "Alex", "Age", "23");
Vertex b = graph.addVertex(label, "person", "name", "Jennifer", "Age", "20");
Vertex c = graph.addVertex(label, "person", "name", "Sophia", "Age", "22");
a.addEdge("friends_with", b);
a.addEdge("friends_with", c);
得到图遍历如下:
GraphTraversalSource gts = graph.traversal();
GraphTraversal graphTraversal =
gts.V().has("name","Alex").outE("friends_with").inV().has("age", P.lt(20));
现在您可以将遍历作为字符串作为:
String traversalAsString = graphTraversal.asAdmin().getBytecode().toString();
它给你的输出是:
[[], [V(), has(name, Alex), outE(friends_with), inV(), has(age, lt(20))]]
它更具可读性,几乎与您作为查询提供的那个一样。如果你想替换 [,]
,你现在可以 modify/parse 字符串来获取实际查询,就像在实际查询中一样添加 .
加入它们。
如何从 Java GraphTraversal
对象输出 Gremlin 查询?默认输出 (graphTraversal.toString()
) 看起来像 [HasStep([~label.eq(brand), name.eq(Nike), status.within([VALID])])]
这样不容易阅读。
Gremlin 提供了 GroovyTranslator class 来帮助解决这个问题。这是一个例子。
// Simple traversal we can use for testing a few things
Traversal t =
g.V().has("airport","region","US-TX").
local(values("code","city").
fold());
// Generate the text form of the query from a Traversal
String query;
query = GroovyTranslator.of("g").
translate(t.asAdmin().getBytecode());
System.out.println("\nResults from GroovyTranslator on a traversal");
System.out.println(query);
这取自此处的一组示例:https://github.com/krlawrence/graph/blob/master/sample-code/RemoteWriteText.java
您可以在 DefaultGraphTraversal
上使用 getByteCode()
方法来获取输出 gremlin 查询。
例如,考虑下图
Graph graph = TinkerGraph.open();
Vertex a = graph.addVertex(label, "person", "name", "Alex", "Age", "23");
Vertex b = graph.addVertex(label, "person", "name", "Jennifer", "Age", "20");
Vertex c = graph.addVertex(label, "person", "name", "Sophia", "Age", "22");
a.addEdge("friends_with", b);
a.addEdge("friends_with", c);
得到图遍历如下:
GraphTraversalSource gts = graph.traversal();
GraphTraversal graphTraversal =
gts.V().has("name","Alex").outE("friends_with").inV().has("age", P.lt(20));
现在您可以将遍历作为字符串作为:
String traversalAsString = graphTraversal.asAdmin().getBytecode().toString();
它给你的输出是:
[[], [V(), has(name, Alex), outE(friends_with), inV(), has(age, lt(20))]]
它更具可读性,几乎与您作为查询提供的那个一样。如果你想替换 [,]
,你现在可以 modify/parse 字符串来获取实际查询,就像在实际查询中一样添加 .
加入它们。