如何识别从 Gremlin 查询返回的内容?像顶点或边或标签等
How can I identify what is being returned from a Gremlin query? Like vertices or edges or labels, etc
我有一个 Java 应用程序,它允许用户从 UI 推送 Gremlin 查询,并且这些查询在后端 gremlin 服务器上执行。
我想知道 returnResultSet 中的内容。它可以是顶点列表或边列表,也可以是字符串列表(可能是标签)。这样我就可以显示与被 returned.
对象类型相关的正确 UI
不确定return编辑的是什么,只是查看查询的初始部分。例如:
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 ???
分析整个查询以识别 returned 对象并不是一种智能且万无一失的方法。
识别 return 类型的最佳方法是什么?除了用 try...catch 尝试所有,然后选择成功的地方。
您真的别无选择,只能测试结果以查看其类型。 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 documentation.
中看到这些
我有一个 Java 应用程序,它允许用户从 UI 推送 Gremlin 查询,并且这些查询在后端 gremlin 服务器上执行。
我想知道 returnResultSet 中的内容。它可以是顶点列表或边列表,也可以是字符串列表(可能是标签)。这样我就可以显示与被 returned.
对象类型相关的正确 UI不确定return编辑的是什么,只是查看查询的初始部分。例如:
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 ???
分析整个查询以识别 returned 对象并不是一种智能且万无一失的方法。
识别 return 类型的最佳方法是什么?除了用 try...catch 尝试所有,然后选择成功的地方。
您真的别无选择,只能测试结果以查看其类型。 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 documentation.