Exception thrown in Gremlin-Java on choose step with predicate

190 views
Skip to first unread message

Srdjan Kovacevic

unread,
May 3, 2017, 10:10:04 AM5/3/17
to Gremlin-users
Hi, i am using Gremlin-Java for my project and have run into problem with choose step. Here is the simplified query (not the original one) that has the same problem:

GraphTraversal<Vertex, Vertex> example_query = g.V().choose(t -> true, value());

and here is the stack trace:

Exception in thread "main" java.lang.ClassCastException: org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex cannot be cast to org.apache.tinkerpop.gremlin.structure.Property
at org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyValueStep.map(PropertyValueStep.java:40)
at org.apache.tinkerpop.gremlin.process.traversal.step.map.MapStep.processNextStart(MapStep.java:37)
at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143)
at org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50)
at org.apache.tinkerpop.gremlin.process.traversal.step.util.ComputerAwareStep$EndStep.processNextStart(ComputerAwareStep.java:76)
at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143)
at org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.hasNext(DefaultTraversal.java:184)
at org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchStep.standardAlgorithm(BranchStep.java:94)
at org.apache.tinkerpop.gremlin.process.traversal.step.util.ComputerAwareStep.processNextStart(ComputerAwareStep.java:46)
at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143)
at org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.hasNext(DefaultTraversal.java:184)
at Main.main(Main.java:71)

Query is using the basic choose step with java predicate:

public default <E2> GraphTraversal<S, E2> choose(final Predicate<E> choosePredicate,
                                                     final Traversal<?, E2> trueChoice)

What is the problem with his query?
Thanks!

Robert Dale

unread,
May 3, 2017, 10:25:02 AM5/3/17
to gremli...@googlegroups.com
value() works on a Property.  You probably want to use identity() if you want the vertex.

gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().choose({t -> true}, identity())
==>v[1]
==>v[2]
==>v[3]
==>v[4]
==>v[5]
==>v[6]

Other examples:

To get the Property values

gremlin> g.V().choose({t -> true}, properties('name').value())
==>marko
==>vadas
==>lop
==>josh
==>ripple
==>peter

To choose on a property

gremlin> g.V().properties('name').choose({t -> true}, identity())
==>vp[name->marko]
==>vp[name->vadas]
==>vp[name->lop]
==>vp[name->josh]
==>vp[name->ripple]
==>vp[name->peter]

To choose on a property but pass just the value

gremlin> g.V().properties('name').choose({t -> true}, value())
==>marko
==>vadas
==>lop
==>josh
==>ripple
==>peter


Robert Dale

--
You received this message because you are subscribed to the Google Groups "Gremlin-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gremlin-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/gremlin-users/b73729f2-9761-41f2-ab84-831e3311c9e3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Srdjan Kovacevic

unread,
May 3, 2017, 12:18:56 PM5/3/17
to Gremlin-users
Thanks a lot!

Robert Dale

To unsubscribe from this group and stop receiving emails from it, send an email to gremlin-user...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages