gpt4 book ai didi

graph-databases - Amazon Neptune - 使用 BothE() 时,不等于谓词不适用于边缘标签

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

我正在将 Amazon Neptune 与 Gremlin 查询语言结合使用。我试图找出给定的顶点除了具有特定标签的边之外是否有任何连接到它的边。

例如,如果有一个带有标签 Person 的顶点,并且我想查明该顶点是否有任何标签不等于 knows 的边。

我尝试了以下查询来获取结果:

g.V(<id of person>).bothE().hasLabel(neq('knows')).count();
g.V(<id of person>).bothE().has(label, neq('knows')).count();

g.V(<id of person>).bothE().hasLabel(not(eq('knows'))).count();
g.V(<id of person>).bothE().hasLabel(eq('knows').negate()).count();
g.V(<id of person>).bothE().has(label, not(eq('knows'))).count();

g.V(<id of person>).bothE().hasLabel(without('knows')).count();
g.V(<id of person>).bothE().hasLabel(not(within('knows'))).count();

上述所有查询都返回以下异常:

org.apache.tinkerpop.gremlin.driver.exception.ResponseException: {"requestId":"<id>","code":"UnsupportedOperationException",
"detailedMessage":"com.amazon.neptune.storage.volcano.ast.UnionNode cannot be cast to com.amazon.neptune.storage.volcano.ast.PatternNode"}

这个问题似乎仅在我尝试使用“不等于”子句时才会出现。如果我将这些条件更改为“等于”,它就可以正常工作。而且,仅当我尝试对标签属性进行比较,同时使用 bothE() 函数找到边缘时,才会发生这种情况。

例如,所有这些查询都可以正常工作:

g.E().hasLabel(neq('knows')).count();
g.V(<id of person>).bothE().hasLabel(eq('knows')).count();
g.V(<id of person>).bothE().hasLabel(within('knows')).count();

如果有人知道为什么会发生这种情况,或者有人知道解决这种情况的方法,请告诉我。

请注意:有多个边可以连接到 Person 节点。因此,可能很难检查具有任何可能的剩余标签的边是否连接到顶点。

谢谢。

最佳答案

关于:

g.V(<id of person>).bothE().not(hasLabel('knows')).count()

关于graph-databases - Amazon Neptune - 使用 BothE() 时,不等于谓词不适用于边缘标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59271449/

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