In cases like this, the where...by syntax comes in handy. If the Vertex with an ID of '3' has a property called 'target' which has a value of '8', we can do:
g.V('3').as('a').
out().
where(eq('a')).
by(id).
by('target')
It's possible that one day the `has` step will be expanded to work with a traversal instead of just basic predicates, but until then, using the `where...by` construct is probably the easiest way to go.
Kelvin.