gpt4 book ai didi

java - 为什么用 Java 解析 Gremlin 查询不通用?

转载 作者:行者123 更新时间:2023-11-30 08:07:57 25 4
gpt4 key购买 nike

我正在用 Java 解析 Gremlin 查询(好吧,实际上我正在编写 Scala,并使用 Groovy 编译的 JAR,就像使用 Java 一样)。

查询是由用户输入给出的字符串变量。换句话说 - 我无法判断查询是什么,我只是假设它是一个有效的 Gremlin 查询(语法和逻辑上)。

我从一个简单的 Gremlin.compile(query) 开始返回 Pipe我正在迭代。然而,根据the example ,必须调用 .setStarts在迭代 Pipe 之前。我必须知道运行时类型 S 是什么在我的Pipe<S,E> .

感觉这个 API 不够通用,示例中的以下行

pipe.setStarts(new SingleIterator<Vertex>(graph.getVertex(1)));

适用于某些情况,但对于顶点迭代(g.V())来说,它将抛出 CastException。

有办法解决吗?

也许使用底层脚本引擎(如上面链接中的下一个示例)将帮助我实现更通用的代码?

最佳答案

我找到了解决方法。感觉有点难看,但它确实有效。

  1. 我将 ScriptEngine 与“g”的 绑定(bind) 用于图表,因此用户可以使用 g 启动他/她的查询。 。 (对泛型没有帮助,但通过不让用户在查询开始时使用身份管道(_())使其更加用户友好)。

    <
  2. (我知道有点难看)我从查询字符串(使用正则表达式)中提取起始顶点(如果存在),以编程方式找到它并(如果找到)调用set 从它开始。如果没有找到,我将把图形本身作为 setStarts 的参数,假设它是一个顶点迭代查询。

关于java - 为什么用 Java 解析 Gremlin 查询不通用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30827109/

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