gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:08:13 25 4
gpt4 key购买 nike

我有一个 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 ???

分析整个查询来识别返回的对象并不是一种明智且万无一失的方法。

识别返回类型的最佳方法是什么?除了用 try...catch 尝试所有内容,然后选择成功的地方。

最佳答案

您确实没有太多选择,只能测试结果以查看其类型。 Gremlin 结果也不总是均匀的。例如,某人可以发送以下内容:

g.V(1).outE().path().
unfold().
inject(1, [1L, "xyz", [x:"don't care that this traversal is crazy"]], Double.NaN)

忘记没有人会这样做,只要认为他们可以。你会得到顶点、边、带有长 double 和嵌入 map 的列表的混合。在获得结果之前您不会知道结果,即使这样您也可能需要检测容器集合内部的类型。如果您的 UI 中对每种类型有不同类型的渲染,您别无选择,只能递归地进行类型检测。您可能还需要某种默认渲染来处理您不知道如何渲染的事情。

如果您从 Gryo 序列化(我假设您使用它作为客户端的默认值)切换到 GraphSON,您确实会得到一组更加精简的类型。您可以在 IO documentation 中看到这些内容.

关于java - 如何识别 Gremlin 查询返回的内容?如顶点、边或标签等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56704339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com