Поскольку все ваши фильтры в значительной степени зависят от s
, имеет смысл использовать match()
step.
g.V().hasLabel('states').
match(__.as('s').in().hasLabel('url').as('u'),
__.as('s').inE('exporting').has('forward','states'),
__.as('s').inE('release').has('forward','states')).
select('u')
Это, по крайней мере, облегчает чтение. Однако есть еще более простой способ написания запроса, который вообще не требует никаких меток:
g.V().hasLabel('states').
and(inE('exporting').has('forward','states'),
inE('release').has('forward','states')).
in().hasLabel('url')