TinkerPop Gremlin server: 3.3.3 Remote Client: v 3.3.3 It seems like the groovy closure is applied on the Property Name as well in gremlin query. This indicates that the query responds with all Vertices that match the Label alone. When I apply below query; I get
gremlin> client.submit("g.V().hasLabel('XYZ').filter{it.get().property('SCOPE').toString().contains('SCOPE')}") ==>result{object=v[352] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==>result{object=v[325] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==>result{object=v[267] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==>result{object=v[306] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==>result{object=v[371] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==>result{object=v[248] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex} ==>result{object=v[287] class=org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex}
I'm not clear what you're trying to accomplish here, but if "SCOPE" is a property key on all of those returned vertices then filter()
is working as expected. Consider your traversal in the context of the "modern" toy graph:
gremlin> g.V().hasLabel('person').map{it.get().property('name').toString()}
==>vp[name->marko]
==>vp[name->vadas]
==>vp[name->josh]
==>vp[name->peter]
gremlin> g.V().hasLabel('person').filter{it.get().property('name').toString().contains('name')}
==>v[1]
==>v[2]
==>v[4]
==>v[6]
The "name" property is available as a key on all of those vertices so it allows all "person" vertices past the filter()
.