gremlin python子图始终为空

gremlin python子图始终为空,gremlin,subgraph,gremlinpython,Gremlin,Subgraph,Gremlinpython,我使用gremlin python连接gremlin服务器,如下所示: g = traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin', 'g')) 但当我使用子图(此处引用)时: 结果总是空的,如下所示:[{}] 我错在哪里?如何使用gremlin python获取子图?gremlin语言变体(GLV)()中尚不支持树()和子图()步骤。主要的问题是glv不是完整的Gremlin虚拟机实现,因此没

我使用gremlin python连接gremlin服务器,如下所示:

g = traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin', 'g'))
但当我使用子图(此处引用)时:

结果总是空的,如下所示:
[{}]

我错在哪里?如何使用gremlin python获取子图?

gremlin语言变体(GLV)()中尚不支持
树()
子图()
步骤。主要的问题是glv不是完整的Gremlin虚拟机实现,因此没有一个
实例将子图反序列化到其中

为了克服这个限制,您需要自己捕获子图作为副作用来收集其数据。例如,您可以为此使用
store()
,如下面的示例所示,其中我获取了一个“knows”子图:

gremlin> g.V().hasLabel('person').store('v').by(elementMap()).
......1>   outE('knows').store('e').by(elementMap()).
......2>   inV().store('v').by(elementMap()).
......3>   cap('v').dedup().
......4>   project('vertices','edges').
......5>     by().
......6>     by(cap('e')).next()
==>vertices={{id=1, label=person, myid=1, name=marko, age=29}=1, {id=2, label=person, myid=2, name=vadas, age=27}=2, {id=4, label=person, myid=4, name=josh, age=32}=2, {id=6, label=person, myid=6, name=peter, age=35}=1}
==>edges={{id=7, label=knows, IN={id=2, label=person}, OUT={id=1, label=person}, weight=0.5}=1, {id=8, label=knows, IN={id=4, label=person}, OUT={id=1, label=person}, weight=1.0}=1}
如果出于某种原因您必须使用
subgraph()
,那么唯一的其他选择就是发送一个Gremlin脚本(而不是字节码)。脚本将首先使用
subgraph()
执行遍历,如您的示例所示,但在同一脚本中,将子图写入GraphSON字符串(或类似内容)。Python随后将获得图形的字符串表示形式。当然,您必须在客户端以某种方式处理该格式

gremlin> g.V().hasLabel('person').store('v').by(elementMap()).
......1>   outE('knows').store('e').by(elementMap()).
......2>   inV().store('v').by(elementMap()).
......3>   cap('v').dedup().
......4>   project('vertices','edges').
......5>     by().
......6>     by(cap('e')).next()
==>vertices={{id=1, label=person, myid=1, name=marko, age=29}=1, {id=2, label=person, myid=2, name=vadas, age=27}=2, {id=4, label=person, myid=4, name=josh, age=32}=2, {id=6, label=person, myid=6, name=peter, age=35}=1}
==>edges={{id=7, label=knows, IN={id=2, label=person}, OUT={id=1, label=person}, weight=0.5}=1, {id=8, label=knows, IN={id=4, label=person}, OUT={id=1, label=person}, weight=1.0}=1}