我想在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/