将图形遍历的一部分的属性用作其他过滤器

问题描述 投票:2回答:1

我想要下一个:

  1. 图形的遍历部分
  2. 从第一个导线获取属性
  3. 将其作为过滤器放入其他遍历中
  4. 获取过滤值

当我在Gremlin控制台中下次运行时:

g = TinkerGraph.open().traversal()
g.addV('a').property(id, 1).property('b',2)
g.addV('a').property(id, 2).property('b',2).property('c',3)
g.V(2).properties().key().limit(1).as('q').select('q')
g.V(2).properties().key().limit(1).as('q').V(1).properties().key()
g.V(2).properties().key().limit(1).as('q').V(1).properties().key().select('q')
g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is('b'))
g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is(select('q')))

我得到:

gremlin>     g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin>     g.addV('a').property(id, 1).property('b',2)
==>v[1]
gremlin>     g.addV('a').property(id, 2).property('b',2).property('c',3)
==>v[2]
gremlin>     g.V(2).properties().key().limit(1).as('q').select('q')
==>b
gremlin>     g.V(2).properties().key().limit(1).as('q').V(1).properties().key()
==>b
gremlin>     g.V(2).properties().key().limit(1).as('q').V(1).properties().key().select('q')
==>b
gremlin>     g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is('b'))
==>b
gremlin>     g.V(2).properties().key().limit(1).as('q').V(1).properties().key().where(__.is(select('q')))
gremlin>

所以我可以看到:

  1. 我的第一个遍历路径的属性为'b'
  2. 直接使用文字'b'的作品进行选择
  3. 使用投影来过滤'b'无效。

所以问题是-在上述情况下,如何使用遍历的一部分的值作为其他遍历的过滤器?

我的用例是我有prototype个顶点。我想掌握其所有属性(可能是值),并找到与prototype相似的所有顶点。

另一种选择是将查询存储在prototype的属性内,对其进行读取并求值以获取由其过滤的顶点。

我知道我可以在应用程序端进行字符串连接,但我只希望保留在代码中而不是Gremlin的一部分以具有适当的提供程序可移植性。

UPDATE:

官方文档中的示例:

gremlin> firstYear = g.V().hasLabel('person').
                           local(properties('location').values('startTime').min()).
                           max().next()
==>2004
gremlin> l = g.V().hasLabel('person').as('person').
                   properties('location').or(has('endTime',gt(firstYear)),hasNot('endTime')).as('location').
                   valueMap().as('times').
                   select('person','location','times').by('name').by(value).by().toList()

我如何在控制台中没有变量的情况下使用firstYear,而是从查询中引用它?

[我想要下一个:图的遍历部分]从第一个遍历获取属性将其作为过滤器放入其他遍历中获取筛选值当我在Gremlin控制台中下一步运行时:g = TinkerGraph.open()。traversal()...

gremlin tinkerpop3
1个回答
2
投票

我看到您的问题在“ Gremlin用户”列表中得到了回答。 [1]在此处将答案复制给可能搜索同一问题的其他人。

您正在寻找的是:

© www.soinside.com 2019 - 2024. All rights reserved.