> "products = g.idx('vertices')[[name: 'Foo', parentName: 'Bar']].next()",
A traversal might be better suited for this.
Instead of storing parentName as a property, try modeling it with a "parent" edge from Foo to Bar...
Foo -- parent --> Bar
...then do...
start = g.idx('vertices')[[name: 'Foo']].as('products')
parent = start.out('parent').filter(
it.name == 'Bar')
products = parent.back('products').iterate()
Or as a one-liner...
products = g.idx('vertices')[[name: 'Foo']].as('products').out('parent').filter(
it.name == 'Bar').back('products').iterate()
-James