Query Apache Tinkerpop GraphDB using Gremlin -- Explain the "As" Step

2019年06月19日

*
This post experiment is based on TinkerPop Gremlin sample dataset "modern toy graph".

as_()所代表的集合中的元素会随着and(),where()等判断条件而被去除。
寻找发起created但是没有发起knows的V。

from gremlin_python.process.graph_traversal import __

g.V().as_('a').where(
    __.as_('a').outE('created').and_().not_(__.as_('a').outE('knows'))
).as_('a').values('name').toList()
结果:
['josh', 'peter']

g.V().as_('a').values('name').toList()
结果:
['marko', 'vadas', 'lop', 'josh', 'ripple', 'peter']

前后有对应关系
g.V().as_('a').where(
    __.as_('a').outE('created').and_().not_(__.as_('a').outE('knows'))
).as_('b').select('a', 'b').by('name').toList()
结果:
[{'a': 'josh', 'b': 'josh'}, {'a': 'peter', 'b': 'peter'}]

g.V().as_('a').out('created').as_('b').select('a','b').toList()
结果:
[{'a': v[1], 'b': v[3]}, {'a': v[4], 'b': v[3]}, {'a': v[6], 'b': v[3]}, {'a': v[4], 'b': v[5]}]

g.V().as_('a').out('created').as_('b').select('a','b').by('name').toList()
结果:
[{'a': 'marko', 'b': 'lop'}, {'a': 'josh', 'b': 'lop'}, {'a': 'peter', 'b': 'lop'}, {'a': 'josh', 'b': 'ripple'}]

g.V().hasLabel('software').as_('a','b','c').select('a','b','c').by('name').by('lang').by(__.in_('created').values('name').fold()).toList()
结果:
[{'a': 'lop', 'b': 'java', 'c': ['marko', 'josh', 'peter']}, {'a': 'ripple', 'b': 'java', 'c': ['josh']}]


NB
The term as is a reserved word in Python, and therefore must be referred to in Gremlin with as_().


References

As Step

Category: GraphDB Tags: public

Upvote


Downvote