我想在gremlin中重复一下遍历,像这样:

g.V(1).repeat(out()).times(1)


使用python的goblin软件包和默认的titan11安装(我认为是titan + casssandra + gremlin + elasticsearch,但是,这些东西令人困惑)。

在python中,我做了一些特殊的导入,或多或少地写了与上面完全相同的东西:

from gremlin_python import statics
from gremlin_python.process.graph_traversal import __
statics.load_statics(globals())

# ... lots of other badass async python stuff and some networkx stuff etc

sg = g.V(seed_id).repeat(out()).times(1)


(如果您认为其他有用的话,请参见https://github.com/mikedewar/graphLearning/blob/master/conditional_traversal.py#L107,了解所有其他信息)

当我使用地精遍历sg遍历时,我认为从gremlin收到了Java错误:

goblin.exception.GremlinServerError: 597: No signature of method: org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.times() is applicable for argument types: (java.lang.Long) values: [1]
Possible solutions: toSet(), size(), min(), take(int), sleep(long), is(java.lang.Object)


所以我认为也许它不喜欢我传递给它的整数。

请帮忙!我希望能够重复使用gremlin。

最佳答案

这是Goblin随附的旧Groovy转换器实现中的一个错误,目的是向后兼容GraphSON版本1。这导致所有整数被序列化为long。因为times方法签名需要一个整数,所以导致错误。我用这个commit修复了它。此修复程序将包含在下一个版本中。现在,请从Github安装:

pip install git+https://github.com/ZEROFAIL/goblin.git


我知道您不确定这个问题的根源,但也许将来Github问题会是一个更好的起点。

关于python - 通过妖精在Python中将数字传递到gremlin,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40459566/

10-13 02:11