TINKERPOP-1878 Test for FILTER Also fixed how the SparqlStrategy was being added to the TraversalStrategies in SparqlTraversalSource...it was adding it globally and all spawned TraversalSource instances were getting that strategy.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/808a0475 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/808a0475 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/808a0475 Branch: refs/heads/TINKERPOP-1878 Commit: 808a047553b08d0a93644867f47f25f0ba678e1b Parents: 9f84825 Author: Stephen Mallette <sp...@genoprime.com> Authored: Fri Jan 26 16:29:55 2018 -0500 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Wed Aug 8 07:47:30 2018 -0400 ---------------------------------------------------------------------- .../dsl/sparql/SparqlTraversalSource.java | 2 +- .../dsl/sparql/SparqlTraversalSourceTest.java | 23 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/808a0475/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java ---------------------------------------------------------------------- diff --git a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java index cc54aa5..f78708b 100644 --- a/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java +++ b/sparql-gremlin/src/main/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSource.java @@ -47,7 +47,6 @@ public class SparqlTraversalSource implements TraversalSource { public SparqlTraversalSource(final Graph graph, final TraversalStrategies traversalStrategies) { this.graph = graph; this.strategies = traversalStrategies; - this.strategies.addStrategies(SparqlStrategy.instance()); } public SparqlTraversalSource(final Graph graph) { @@ -126,6 +125,7 @@ public class SparqlTraversalSource implements TraversalSource { */ public <S> SparqlTraversal<S,?> sparql(final String query) { final SparqlTraversalSource clone = this.clone(); + clone.getStrategies().addStrategies(SparqlStrategy.instance()); // this is a bit of a hack to get remote traversals to work cleanly. on the remote side, we'd expect a // GraphTraversalSource not a SparqlTraversalSource (given that sparql-gremlin is to be implemented in the http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/808a0475/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java ---------------------------------------------------------------------- diff --git a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java b/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java index 1b39813..4092e58 100644 --- a/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java +++ b/sparql-gremlin/src/test/java/org/apache/tinkerpop/gremlin/sparql/process/traversal/dsl/sparql/SparqlTraversalSourceTest.java @@ -18,16 +18,21 @@ */ package org.apache.tinkerpop.gremlin.sparql.process.traversal.dsl.sparql; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; +import org.apache.tinkerpop.gremlin.sparql.process.traversal.strategy.SparqlStrategy; import org.apache.tinkerpop.gremlin.structure.Graph; +import org.apache.tinkerpop.gremlin.structure.Vertex; import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory; import org.junit.Test; import java.util.HashMap; import java.util.List; +import java.util.Map; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder; import static org.hamcrest.collection.IsIterableContainingInOrder.contains; +import static org.junit.Assert.assertEquals; /** * @author Stephen Mallette (http://stephen.genoprime.com) @@ -36,6 +41,7 @@ public class SparqlTraversalSourceTest { private static final Graph graph = TinkerFactory.createModern(); private static final SparqlTraversalSource g = graph.traversal(SparqlTraversalSource.class); + private static final GraphTraversalSource _g = graph.traversal(); @Test public void shouldFindAllPersonsNamesAndAges() { @@ -88,4 +94,21 @@ public class SparqlTraversalSourceTest { final List<?> x = g.sparql("SELECT ?name WHERE { ?person v:name ?name } ORDER BY DESC(?name)").toList(); assertThat(x, contains("vadas", "ripple", "peter", "marko", "lop", "josh")); } + + @Test + public void shouldFilter() { + final Map<String,Vertex> x = (Map) g.sparql( "SELECT ?a ?b ?c\n" + + "WHERE {\n" + + " ?a v:label \"person\" .\n" + + " ?a e:knows ?b .\n" + + " ?a e:created ?c .\n" + + " ?b e:created ?c .\n" + + " ?a v:age ?d .\n" + + " FILTER (?d < 30)\n" + + "}").next(); + + assertEquals(x.get("a"), _g.V(1).next()); + assertEquals(x.get("b"), _g.V(4).next()); + assertEquals(x.get("c"), _g.V(3).next()); + } }