This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class SideEffectCapTraversalStrategy implements TraversalStrategy.FinalTraversalStrategy { | |
public void apply(final Traversal traversal) { | |
if (TraversalHelper.getEnd(traversal) instanceof SideEffectCapable) | |
traversal.cap(SideEffectCapable.CAP_VARIABLE); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Test | |
public void testPlay2() throws Exception { | |
Graph g = TinkerGraph.open(); | |
/*GraphMLReader reader = GraphMLReader.create().build(); | |
reader.readGraph(new FileInputStream("data/grateful-dead.xml"), g);*/ | |
for(int i=0; i<1000; i++) { | |
g.addVertex(Element.ID, i); | |
} | |
for(int i=0; i<999; i++) { | |
g.v(i).addEdge("knows", g.v(i + 1)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final GraphTraversal traversal = new DefaultGraphTraversal<Object, Edge>() { | |
public GraphTraversal<Object, Edge> submit(final TraversalEngine engine) { | |
if (engine instanceof GraphComputer) TinkerHelper.prepareTraversalForComputer(this); | |
return super.submit(engine); | |
} | |
}; | |
//////////////// | |
public class TinkerGraphTraversal<S, E> extends DefaultGraphTraversal<S, E> { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
GREMLIN 3 | |
gremlin> g.v(1).as('x').out.jump('x'){println it.loops + " " + it.get();it.loops < 4} | |
1 v[3] | |
1 v[2] | |
1 v[4] | |
2 v[5] | |
2 v[3] | |
GREMLIN 2 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
EXISTING JUMP STEP | |
gremlin> t = System.currentTimeMillis(); g.V().out().out().out().iterate(); System.currentTimeMillis() - t | |
==>900 | |
gremlin> t = System.currentTimeMillis(); g.V.as('x').out().jump('x'){it.loops < 3}.iterate(); System.currentTimeMillis() - t | |
==>5513 | |
gremlin> g.V().out().out().out().count() | |
==>14465066 | |
gremlin> g.V.as('x').out().jump('x'){it.loops < 3}.count() | |
==>14465066 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class IfThenElseStep<S, E> extends FlatMapStep<S, E> { | |
public final SPredicate<S> ifPredicate; | |
public final Traversal<S, E> thenTraversal; | |
public final Traversal<S, E> elseTraversal; | |
public IfThenElseStep(final Traversal traversal, final SPredicate<S> ifPredicate, final Traversal<S, E> thenTraversal, final Traversal<S, E> elseTraversal) { | |
super(traversal); | |
this.ifPredicate = ifPredicate; | |
this.thenTraversal = thenTraversal; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class IfThenElseStep<S, E> extends FlatMapStep<S, E> { | |
public final SPredicate<Traverser<S>> ifPredicate; | |
public final Traversal<S, E> thenTraversal; | |
public final Traversal<S, E> elseTraversal; | |
public IfThenElseStep(final Traversal traversal, final SPredicate<Traverser<S>> ifPredicate, final Traversal<S, E> thenTraversal, final Traversal<S, E> elseTraversal) { | |
super(traversal); | |
this.ifPredicate = ifPredicate; | |
this.thenTraversal = thenTraversal; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
gremlin> g.V.filter{it.get().value('name').length() == 5}.out.name | |
==>lop | |
==>vadas | |
==>josh | |
==>lop | |
gremlin> g.V.filter{it.get().value('name').length() != 5}.in.name | |
==>marko | |
==>josh | |
==>peter | |
==>marko |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
gremlin> g = TinkerFactory.createClassic() | |
==>tinkergraph[vertices:6 edges:6] | |
gremlin> | |
gremlin> g.V.filter{it.get().value('name').length() == 5}.out.name | |
==>lop | |
==>vadas | |
==>josh | |
==>lop | |
gremlin> g.V.filter{it.get().value('name').length() != 5}.in.name | |
==>marko |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
gremlin> g.V.choose({it.get().value('name').length() - 3}, g.of().identity, g.of().out, g.of.in).name | |
==>marko | |
==>lop | |
==>ripple | |
==>lop | |
The following choice index does not reference a traversal: 3 | |
Display stack trace? [yN] | |
gremlin> |