Tinkerpop 在Gremlinpython中验证迭代边插入

Tinkerpop 在Gremlinpython中验证迭代边插入,tinkerpop,janusgraph,tinkerpop3,gremlinpython,Tinkerpop,Janusgraph,Tinkerpop3,Gremlinpython,尝试迭代添加顶点和边。这似乎是可行的,没有错误,但我希望验证是否也正确添加了边 下面的循环至少插入节点,如末端列表长度的打印所示,但边不是1)未插入,就是2)在列表中收集节点的方式不正确 非常感谢您的帮助 def vertices01(nodename, rangelb, rangeub, prop1name, prop1val, prop2name): t = g.addV(nodename).property(prop1name, prop1val).property(prop2na

尝试迭代添加顶点和边。这似乎是可行的,没有错误,但我希望验证是否也正确添加了边

下面的循环至少插入节点,如末端列表长度的打印所示,但边不是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
编辑:我已更改edges01循环中的此位:

    t = g.V().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')

每次使用添加边的代码中的
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')

谢谢你的回答,开尔文。我应该如何改进,我不确定我是否理解在顶点循环中扩展的区别,以及如何在边循环中实现类似的效果。再次感谢。如果我们后退一步,添加多个边的标准是什么?从本质上讲,是不是从同一起始顶点向同一结束顶点添加多条边,但每条边都有不同的(增量)属性?我用一个简单的模板更新了答案,您可以从中复制。希望有帮助。谢谢你的回复。我想知道循环外的遍历(t=g…)开始时的“as_uz('a')”是否在循环内更新?如果我将循环中的“a”分配给I,是否会将其反馈到“某个值”(假设我已经分配了“某个属性”,并且该属性不会更新)?我希望这有点清楚。。。再次感谢,谢谢你的回答,开尔文。我应该如何改进,我不确定我是否理解在顶点循环中扩展的区别,以及如何在边循环中实现类似的效果。再次感谢。如果我们后退一步,添加多个边的标准是什么?从本质上讲,是不是从同一起始顶点向同一结束顶点添加多条边,但每条边都有不同的(增量)属性?我用一个简单的模板更新了答案,您可以从中复制。希望有帮助。谢谢你的回复。我想知道循环外的遍历(t=g…)开始时的“as_uz('a')”是否在循环内更新?如果我将循环中的“a”分配给I,是否会将其反馈到“某个值”(假设我已经分配了“某个属性”,并且该属性不会更新)?我希望这有点清楚。。。再次感谢。