【问题标题】:How do I multiply a vertex property with an edge weight from an edge pointing to it?如何将顶点属性与指向它的边缘的边缘权重相乘?
【发布时间】:2020-09-17 08:50:57
【问题描述】:

我被困在我似乎遇到的图形遍历问题上。我使用 gremlinpython,我的数据库存储在 AWS Neptune 中。

该图类似于此示例:

g = TinkerGraph.open().traversal()
o1 = g.addV('o').property('order','order1').next()
r1 = g.addV('r').property('recipe', 'recipe1').property('price', 3).next()
r2 = g.addV('r').property('recipe', 'recipe2').property('price', 3).next()
r3 = g.addV('r').property('recipe', 'recipe3').property('price', 3).next()
g.V(o1).addE('orders').to(r1).property('amount',2)
g.V(o1).addE('orders').to(r2).property('amount',3)
g.V(o1).addE('orders').to(r2).property('amount',4)

现在我想通过将配方值乘以它们各自的边缘量并将它们相加来计算订单的总成本。

到目前为止,我的代码如下所示:

g.withSack(0).V('o1')\
.out()\
.sack(Operator.sum).by('price')\
.sack(Operator.mult)\
.by(g.V('o1').outE().values('amount')).sack().toList()
==>[6,6,6]

我注意到这段代码只会将每个配方值与第一个边的数量相乘,而不是各自的数量。 我不确定如何在 sack().by() 操作中指定每个顶点应乘以各自的边量。

【问题讨论】:

    标签: graph gremlin tinkerpop amazon-neptune gremlinpython


    【解决方案1】:

    您用于创建数据的 Gremlin 脚本需要一些修复:

    g = TinkerGraph.open().traversal()
    o1 = g.addV('o').property('order','order1').next()
    r1 = g.addV('r').property('recipe', 'recipe1').property('price', 3).next()
    r2 = g.addV('r').property('recipe', 'recipe2').property('price', 3).next()
    r3 = g.addV('r').property('recipe', 'recipe3').property('price', 3).next()
    g.V(o1).addE('orders').to(r1).property('amount',2)
    g.V(o1).addE('orders').to(r2).property('amount',3)
    g.V(o1).addE('orders').to(r2).property('amount',4)
    

    你的方法非常接近,所以希望我的小改动对你有意义:

    gremlin> g.withSack(0).V(o1).
    ......1>   outE().
    ......2>   sack(Operator.assign).by('amount').
    ......3>   inV().
    ......4>   sack(Operator.mult).by('price').
    ......5>   sack().
    ......6>   sum()
    ==>27
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 2017-09-24
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多