What makes it very compelling is the fact that Element has `keys()` and
`values()` methods.  It would be intuitive for `hasKey()` and `hasValue()`
to work on things that have key(s) and value(s) - Element, Property, and
even Map.

Robert Dale

On Fri, Jul 14, 2017 at 6:28 AM, Stephen Mallette <[email protected]>
wrote:

> hasKey() and hasValue() are for vertex properties only . so technically -
> bad javadoc.
>
> on the other hand I can't say I like this - it's bitten me enough times now
> that i know how to use it, but is there any reason why hasKey() shouldn't
> just work with any Element?
>
> On Thu, Jul 13, 2017 at 5:01 PM, Robert Dale <[email protected]> wrote:
>
> > hasKey/hasValue javadocs state:
> >
> > Filters vertices, edges and vertex properties based on their key.
> >
> > Am I misinterpreting, misusing, or misinformed?
> >
> > gremlin> graph = TinkerFactory.createModern()
> > ==>tinkergraph[vertices:6 edges:6]
> > gremlin> g = graph.traversal(
> > traversal(    traversal()
> > gremlin> g = graph.traversal()
> > ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
> >
> > // Does NOT appear to filter vertices
> > gremlin> g.V().valueMap()
> > ==>[name:[marko],age:[29]]
> > ==>[name:[vadas],age:[27]]
> > ==>[name:[lop],lang:[java]]
> > ==>[name:[josh],age:[32]]
> > ==>[name:[ripple],lang:[java]]
> > ==>[name:[peter],age:[35]]
> > gremlin> g.V().hasKey('name')
> > gremlin> g.V().hasValue('marko')
> >
> > // Does NOT appear to filter edges
> > gremlin> g.E().valueMap()
> > ==>[weight:0.5]
> > ==>[weight:1.0]
> > ==>[weight:0.4]
> > ==>[weight:1.0]
> > ==>[weight:0.4]
> > ==>[weight:0.2]
> > gremlin> g.E().hasKey('weight')
> > gremlin> g.E().hasValue(1.0)
> >
> > // Does NOT appear to filter edge properties (although was not claimed)
> > gremlin> g.E().properties().hasKey('weight')
> > org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerProperty cannot
> > be
> > cast to org.apache.tinkerpop.gremlin.structure.Element
> > Type ':help' or ':h' for help.
> > Display stack trace? [yN]
> > gremlin> g.E().properties().hasValue(1.0)
> > org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerProperty cannot
> > be
> > cast to org.apache.tinkerpop.gremlin.structure.Element
> > Type ':help' or ':h' for help.
> > Display stack trace? [yN]
> >
> > // Does filter Vertex Properties!
> > gremlin> g.V().properties().hasKey('name')
> > ==>vp[name->marko]
> > ==>vp[name->vadas]
> > ==>vp[name->lop]
> > ==>vp[name->josh]
> > ==>vp[name->ripple]
> > ==>vp[name->peter]
> > gremlin> g.V().properties().hasValue('marko')
> > ==>vp[name->marko]
> >
> >
> >
> > Robert Dale
> >
>

Reply via email to