gpt4 book ai didi

azure - Gremlin 查询检查顶点上的边对

转载 作者:行者123 更新时间:2023-12-03 02:15:33 24 4
gpt4 key购买 nike

对于某些上下文:我目前正在使用带有 gremlin api 的 azure cosmos db,由于存储扩展架构的原因,执行“.out()”操作比执行“.out()”操作要便宜得多。 .in()' 操作,因此我总是创建双向边,因此我根据我要查询的方向选择与 '.out()' 操作一起使用哪一个。

我们使用图表将事件与用户关联起来。每当用户“U”引发事件“E”时,我们都会创建两条边:

g.V('U').addE('raisedEvent').to(g.V('E'))
g.V('E').addE('raisedByUser').to(g.V('U'))

极少数情况下,其中一个查询会因某种原因失败,最终导致两个顶点之间只有一条边。我一直在尝试找到一种方法来查询给定一组“配对”边标签的仅具有单向关系的所有顶点,以便找到这些错误并重新创建丢失的边。

基本上我需要查询...

  • 给定一对边缘标签 E1(用于传出,V1-->V2),E2(用于传入 V1<--V2)
  • finds 查找所有顶点 V1,其中对于到另一个顶点 V2 的每条出边 E1,V2 没有返回 V1 的边 E2;反之亦然

示例:

// given a graph
g.addV('user').property('id','user_1')
g.addV('user').property('id','user_2')
g.addV('user').property('id','user_3')
g.addV('user').property('id','user_4')
g.addV('event').property('id','event_1')
g.addV('event').property('id','event_2')
g.addV('event').property('id','event_3')
g.addV('event').property('id','event_4')

g.V('user_1').addE('raisedEvent').to(g.V('event_1')).V('event_1').addE('raisedByUser').to(g.V('user1'))
g.V('user_2').addE('raisedEvent').to(g.V('event_2')).V('event_1').addE('raisedByUser').to(g.V('user1'))
g.V('user_2').addE('raisedEvent').to(g.V('event_3'))
g.V('event_4').addE('raisedByUser').to(g.V('user_3'))

// i.e.
// (user_1) <--> (event_1)
// (event_2) <--> (user_2) ---> (event_3)
// (event_4) ---> (user_3)
// (user_4)

// Then, the query should match with user_2 and user_3...
// ...as they contain uni-directional links to events

编辑:注意 - “is()”操作的 cosmosdb 实现不支持将遍历结果作为输入查询例如


where(_.outE('raisedEvent').count().is(__.out('raisedEvent').outE('raisedByUser').count()))

cosmosdb 目前不支持。

如果可能的话,获得哪些顶点对具有不良链接的列表也很棒(例如,在本例中为 [(user_2, event_3), (user_3, event_4)]),但只需知道哪些顶点具有不良链接一个坏链接已经非常有用了。

最佳答案

感谢Kelvin Lawrence ,我最终使用此模式来获取仅从 a 到 b 单向连接的顶点 id 对的列表:

g.V().haslabel("user").as('a').out('raisedEvent').where(__.not(out('raisedByUser').as('a'))).as('b').select('a','b').by('id')

关于azure - Gremlin 查询检查顶点上的边对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71350627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com