tinkerpop - 在 Gremlinpython 中验证迭代边缘插入
问题描述
尝试迭代地添加顶点和边。它似乎有效,没有错误,但我希望验证边缘是否也正确添加。
下面的循环至少插入节点,如最后打印的列表长度所示,但边缘要么 1)未插入,要么 2)将它们收集到列表中的方式不正确。
任何帮助深表感谢!
def vertices01(nodename, rangelb, rangeub, prop1name, prop1val, prop2name):
t = g.addV(nodename).property(prop1name, prop1val).property(prop2name, rangelb)
for i in range(rangelb + 1, rangeub):
t.addV(nodename).property(prop1name, prop1val).property(prop2name, i)
t.iterate()
def edges01(from_propname, from_propval, to_propname, rangelb, rangeub, edge_name, edge_prop1name):
to_propval = rangelb
edge_prop1val = rangelb
t = g.V().has(from_propname, from_propval).as_("a").V().has(to_propname, to_propval).as_("b").addE(edge_name).from_("a").to("b").property(edge_prop1name, edge_prop1val)
for i in range(rangelb, rangeub):
to_propval = i + 1
edge_prop1val = i
# changing this to t.has(...) seems to not influence the results (still 0 picked up by the loop)
t.has(from_propname, from_propval).as_("a").V().has(to_propname, to_propval).as_("b").addE(edge_name).from_("a").to("b").property(edge_prop1name, edge_prop1val)
t.iterate()
vertices01("ABC", 1, 21, "aa01", 1, "bb01")
edges01("aa01", 1, "bb01", 1, 10 , "aa01-to-bb01", "aa01-to-bb01-propX")
ls1 = []
ls1 = g.V().outE("aa01-to-bb01").has("aa01-to-bb01-propX", 2).toList()
print(len(ls1))
ls2 = []
ls2 = g.V().has("aa01", 1).toList()
print(len(ls2))
> results:
0
20
预期成绩:
> results:
1
20
编辑:我在 edge01 循环中更改了这一点:
t = g.V().has(from_propname, from_propval) ...
至
t.has(from_propname, from_propval) ...
但是结果还是0。
解决方案
您每次都t = g.V()...
在添加边的代码中重新开始遍历。只有最后创建的遍历才会被迭代。在创建顶点的代码中,您正在扩展遍历。这就是区别。
更新
你应该能够按照这些思路做一些事情
t = g.V().has('some-property','some-value').as_('a').
V().has('some-property','some-value').as_('b')
然后在循环内
t.addE('myedge').from_('a').to('b')
推荐阅读
- gatsby - 如何在一个域中合并 2 个 Gatsby 站点?
- wordpress - Wordpress 产品属性自定义永久链接
- applescript - Automator (2.5) 脚本根据文件名创建文件夹并将文件移动到文件夹
- javascript - Javascript中的超时间隔:如何结束超时
- javascript - 解码 JSON,包括 JavaScript 中 URL 参数的数组
- node.js - 将数据从 Node.js 传递到 Vue.js
- python - Scikit Learn RFECV ValueError:不支持连续
- jquery - How to hide elements in jQuery until after the user starts scrolling
- python - 在python中以自己的方法将类实例作为一个整体传递
- vba - 传递复选框对象