繁体   English   中英

如何识别Gremlin查询返回的内容? 像顶点或边或标签等

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM