java - 使用 gremlin 语法时对 Amazon neptune 有任何限制吗?

标签 java gremlin graph-databases amazon-neptune

我正在为我的项目 Neptune by AWS 使用图形数据库。 Neptune 使用 gremlin 语法进行图形查询。我试图执行一个场景,在这个场景中,我必须根据边上的属性过滤来自顶点的传出边。让我们称该属性为“x”。此属性“x”的值的形式为“abc::xyz::ref”。这是为了在边上存储多个值,因为 Neptune 不允许在边上存储多个值。我必须对三个组合和一个完全匹配项进行包含检查:-

  • 'abc::'
  • '::abc'
  • '::abc::'
  • 与“abc”完全匹配

我试图在我的 java 代码中的 gremlin 中使用过滤器命令。下面的代码在内存中的 TinkerGraph 上运行良好,但是当我将它与 Neptune 连接并运行相同的查询时,它会抛出一些解析异常。

 String valueToCheck = "abc";
 List<String> listOfValuesToCheck = new ArrayList<>();
 listOfValuesToCheck.add("::abc");
 listOfValuesToCheck.add("abc::");
 listOfValuesToCheck.add("::abc::");
 GraphTraversal<Vertex, Map<Object, Object>> gt24 = g.V().outE().has("x").filter(it -> { 
      String value = String.valueOf(it.get().value("x"));
      if(value.equals(valueToCheck)){
      return true;
      }else {
        for(String s: listOfValuesToCheck){
            if(value.contains(s){
            return true;
            }
        }
      }
    }).valueMap().with(WithOptions.tokens);
    
    while (gt24.hasNext()) {
      System.out.println(gt24.next());
    }

有人知道为什么海王星会发生这种情况吗?是否有更好的方法可以与 Neptune 配合使用。
我又看到一个例子,Neptune 没有抛出错误,但也没有返回任何结果,但与 TinkerGraph 的工作相同。

y - 边上的属性
z - 顶点属性

GraphTraversal<Vertex, Map<String, Object>> gt13 = g.V(1, 2).project("id", "summary").by(T.id)
        .by(__.outE().has("y", "e").inV().group().by("z"));

最佳答案

Neptune doesn't support lambdas steps.

您应该尝试用其他 gremlin 步骤替换您的 lambda 代码。

g.V().outE().has("x").or(
        __.has('prop', 'abc'),
        __.has('prop', TextP.containing('abc::')),
        __.has('prop', TextP.containing('::abc')),
    ).valueMap().with(WithOptions.tokens)

示例:https://gremlify.com/sjrd9lrwfr

关于java - 使用 gremlin 语法时对 Amazon neptune 有任何限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62637015/

相关文章:

java - 查找和模式之间的区别

java - 从 ExecutorService 获取当前正在运行的线程对象

Gremlin 图遍历,使用先前的边属性值来过滤后面的边

rdf - RDF 可以对具有边缘属性的标记属性图进行建模吗?

azure - 将 Azure CosmosDB 移至本地环境

java - 如何将 Neo4j 节点转换为蓝图顶点?

java - 有没有办法将 jpa 谓词数组传递给 KOTLIN 中的 criteriabuilder?

java - 无法加载 GLPK for Java 的动态链接库

neo4j - 为什么关系作为一个概念通常存在于 neo4j 或图形数据库中?

graph-databases - 如何从 Gremlin 中的特定顶点找到没有特定边的顶点?