![](/img/trans.png)
[英]gremlin query to retrieve vertices which are having multiple edges between them
[英]How can I identify what is being returned from a Gremlin query? Like vertices or edges or labels, etc
我有一个Java应用程序,允许用户从UI推送Gremlin查询,这些查询在后端gremlin服务器上执行。
我想知道ResultSet中返回的内容。 它可以是顶点列表或边缘列表,也可以是字符串列表(也可以是标签)。 这样我就可以显示与返回的那种对象有关的适当UI。
只是在查看查询的初始部分时,无法确定返回的内容。 例如:
g.V() // returns list of Vertices
g.V().outE() // returns list of Edges
g.E().outV() // returns list of Vertices
g.E().outV().label() // returns list of Strings
String query = "g.E().outV().label()";
ResultSet resultSet = client.submit(query);
resultSet.forEach(result -> result.getString()); // getString or getVertex or getEdge ???
分析整个查询以识别返回的对象并不是一种智能且简单的方法。
什么是识别返回类型的最佳方法? 除了尝试所有尝试...捕获然后选择它成功的地方。
您真的没有太多选择,只能测试结果以查看其类型。 Gremlin结果也不总是同质的。 例如,有人可以发送:
g.V(1).outE().path().
unfold().
inject(1, [1L, "xyz", [x:"don't care that this traversal is crazy"]], Double.NaN)
忘记没有人会这样做,只考虑他们可以。 您可以混合使用顶点,边缘,带有长双精度和嵌入式映射的列表。 在获得结果之前,您不知道结果,即便如此,您可能需要检测容器集合中的类型。 如果在UI中为每种类型提供不同类型的渲染,则别无选择,只能递归进行类型检测。 您可能还需要某种默认渲染,它可以处理您不知道如何渲染的内容。
如果您从Gryo序列化(我认为您将其用作client
的默认设置)切换到GraphSON,您可以获得更多减少的类型。 您可以在IO文档中看到这些内容 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.