This is an automated email from the ASF dual-hosted git repository. colegreer pushed a commit to branch from-to-id-fix in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit c4199638f4c8025424a46ea7dee147d8c57d6a7d Author: Cole-Greer <[email protected]> AuthorDate: Thu Oct 23 14:19:28 2025 -0700 Remove GenericArgument from from() and to(). from() and to() will now only accept Strings (alias for __.select()) and Traversals. If users wish to pass a vertex id, they may embed it in __.V() or __.constant(). The primary motivation here is to ensure consistent behaviour accross providers regardless of if their id types are numerics, strings, or other. --- .../grammar/DefaultGremlinBaseVisitor.java | 8 ---- .../language/grammar/TraversalMethodVisitor.java | 16 -------- .../traversal/dsl/graph/GraphTraversal.java | 48 ++++------------------ .../traversal/step/TraversalParentTest.java | 20 ++------- .../traversal/step/map/AddEdgeStartStepTest.java | 7 ++-- .../traversal/step/map/AddEdgeStepTest.java | 6 +-- .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 6 +-- gremlin-go/driver/cucumber/gremlin.go | 6 +-- .../gremlin-javascript/test/cucumber/gremlin.js | 6 +-- gremlin-language/src/main/antlr4/Gremlin.g4 | 2 - gremlin-python/src/main/python/radish/gremlin.py | 6 +-- .../gremlin/test/features/map/AddEdge.feature | 6 +-- .../TinkerGraphGremlinLangScriptEngineTest.java | 28 ++++++------- 13 files changed, 47 insertions(+), 118 deletions(-) diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java index 58a9652a33..ff13fd765b 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java @@ -407,10 +407,6 @@ public class DefaultGremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> im * {@inheritDoc} */ @Override public T visitTraversalMethod_from_String(final GremlinParser.TraversalMethod_from_StringContext ctx) { notImplemented(ctx); return null; } - /** - * {@inheritDoc} - */ - @Override public T visitTraversalMethod_from_GenricArgument(final GremlinParser.TraversalMethod_from_GenricArgumentContext ctx) { return null; } /** * {@inheritDoc} */ @@ -847,10 +843,6 @@ public class DefaultGremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> im * {@inheritDoc} */ @Override public T visitTraversalMethod_to_String(final GremlinParser.TraversalMethod_to_StringContext ctx) { notImplemented(ctx); return null; } - /** - * {@inheritDoc} - */ - @Override public T visitTraversalMethod_to_GenricArgument(final GremlinParser.TraversalMethod_to_GenricArgumentContext ctx) { notImplemented(ctx); return null; } /** * {@inheritDoc} */ diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java index 42a7cd42c5..d89aba6d16 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java @@ -1884,22 +1884,6 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal> antlr.tvisitor.visitNestedTraversal(ctx.nestedTraversal())); } - /** - * {@inheritDoc} - */ - @Override - public GraphTraversal visitTraversalMethod_from_GenricArgument(final GremlinParser.TraversalMethod_from_GenricArgumentContext ctx) { - return graphTraversal.from(antlr.argumentVisitor.visitGenericArgument(ctx.genericArgument())); - } - - /** - * {@inheritDoc} - */ - @Override - public Traversal visitTraversalMethod_to_GenricArgument(final GremlinParser.TraversalMethod_to_GenricArgumentContext ctx) { - return graphTraversal.to(antlr.argumentVisitor.visitGenericArgument(ctx.genericArgument())); - } - /** * {@inheritDoc} */ diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java index 11a186dce4..24cb94b9b0 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java @@ -1604,14 +1604,14 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> { * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#addedge-step" target="_blank">Reference Documentation - From Step</a> * @since 3.8.0 */ - public default GraphTraversal<S, E> from(final GValue<Vertex> fromVertex) { + public default GraphTraversal<S, E> from(final GValue<?> fromVertex) { final Step<?,?> prev = this.asAdmin().getEndStep(); if (!(prev instanceof FromToModulating)) throw new IllegalArgumentException(String.format( "The from() step cannot follow %s", prev.getClass().getSimpleName())); this.asAdmin().getBytecode().addStep(Symbols.from, fromVertex); - ((FromToModulating) prev).addFrom(new GValueConstantTraversal<S, Vertex>(fromVertex)); + ((FromToModulating) prev).addFrom(new GValueConstantTraversal<>(fromVertex)); return this; } @@ -1663,14 +1663,14 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> { * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#addedge-step" target="_blank">Reference Documentation - From Step</a> * @since 3.8.0 */ - public default GraphTraversal<S, E> to(final GValue<Vertex> toVertex) { + public default GraphTraversal<S, E> to(final GValue<?> toVertex) { final Step<?,?> prev = this.asAdmin().getEndStep(); if (!(prev instanceof FromToModulating)) throw new IllegalArgumentException(String.format( "The to() step cannot follow %s", prev.getClass().getSimpleName())); this.asAdmin().getBytecode().addStep(Symbols.to, toVertex); - ((FromToModulating) prev).addTo(new GValueConstantTraversal<S, Vertex>(toVertex)); + ((FromToModulating) prev).addTo(new GValueConstantTraversal<>(toVertex)); return this; } @@ -1683,7 +1683,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> { * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#addedge-step" target="_blank">Reference Documentation - From Step</a> * @since 3.1.0-incubating */ - public default GraphTraversal<S, E> to(final Traversal<?, Object> toVertex) { + public default GraphTraversal<S, E> to(final Traversal<?, ?> toVertex) { final Step<?,?> prev = this.asAdmin().getEndStep(); if (!(prev instanceof FromToModulating)) throw new IllegalArgumentException(String.format( @@ -1703,7 +1703,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> { * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#addedge-step" target="_blank">Reference Documentation - From Step</a> * @since 3.1.0-incubating */ - public default GraphTraversal<S, E> from(final Traversal<?, Object> fromVertex) { + public default GraphTraversal<S, E> from(final Traversal<?, ?> fromVertex) { final Step<?,?> prev = this.asAdmin().getEndStep(); if (!(prev instanceof FromToModulating)) throw new IllegalArgumentException(String.format( @@ -1723,13 +1723,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> { * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#addedge-step" target="_blank">Reference Documentation - From Step</a> * @since 3.3.0 */ - public default GraphTraversal<S, E> to(final Object toVertex) { - if (toVertex instanceof String) { - return this.to((String) toVertex); - } else if (toVertex instanceof Traversal) { - this.to((Traversal<?, Object>)toVertex); - return this; - } + public default GraphTraversal<S, E> to(final Vertex toVertex) { final Step<?,?> prev = this.asAdmin().getEndStep(); if (!(prev instanceof FromToModulating)) throw new IllegalArgumentException(String.format( @@ -1742,34 +1736,6 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> { return this; } - /** - * When used as a modifier to {@link #addE(String)} this method specifies the traversal to use for selecting the - * outgoing vertex of the newly added {@link Edge}. - * - * @param fromVertex the vertex for selecting the outgoing vertex - * @return the traversal with the modified {@link AddEdgeStepContract} - * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#addedge-step" target="_blank">Reference Documentation - From Step</a> - * @since 3.3.0 - */ - public default GraphTraversal<S, E> from(final Object fromVertex) { - if (fromVertex instanceof String) { - return this.from((String) fromVertex); - } else if (fromVertex instanceof Traversal) { - this.from((Traversal<?, Object>)fromVertex); - return this; - } - final Step<?,?> prev = this.asAdmin().getEndStep(); - if (!(prev instanceof FromToModulating)) - throw new IllegalArgumentException(String.format( - "The from() step cannot follow %s", prev.getClass().getSimpleName())); - - this.asAdmin().getBytecode().addStep(Symbols.from, fromVertex); - ((FromToModulating) prev).addFrom(fromVertex instanceof GValue ? - new GValueConstantTraversal<>((GValue<Object>) fromVertex) : - __.constant(fromVertex).asAdmin()); - return this; - } - /** * Map the {@link Traverser} to a {@link Double} according to the mathematical expression provided in the argument. * diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParentTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParentTest.java index c422f18b81..4a55bb6a39 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParentTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/TraversalParentTest.java @@ -208,12 +208,6 @@ public class TraversalParentTest { List.of(__.constant("name"), __.constant("cole")), null, null }, - {AddEdgeStepContract.class, - g.addE("label").from(1).to(2).property("name", __.constant("cole")), - List.of(), - List.of(__.constant("cole"), __.constant(1), __.constant(2)), - null, null - }, {AddEdgeStepContract.class, g.addE("label").from(__.V(1)).to(__.V(2)) .property("name", __.constant("cole")) @@ -235,15 +229,9 @@ public class TraversalParentTest { null, null }, {AddEdgeStepContract.class, - g.addE("label").from(1).to(2).property(__.constant("name"), __.constant("cole")), - List.of(), - List.of(__.constant("name"), __.constant("cole"), __.constant(1), __.constant(2)), - null, null - }, - {AddEdgeStepContract.class, - g.inject(1).addE("label").from(1).to(2).property("name", __.constant("cole")), + g.addE("label").from(__.V(1)).to(__.V(2)).property(__.constant("name"), __.constant("cole")), List.of(), - List.of(__.constant("cole"), __.constant(1), __.constant(2)), + List.of(__.constant("name"), __.constant("cole"), __.V(1), __.V(2)), null, null }, {AddEdgeStepContract.class, @@ -259,9 +247,9 @@ public class TraversalParentTest { null, null }, {AddEdgeStepContract.class, - g.inject(1).addE("label").from(1).to(2).property(__.constant("name"), __.constant("cole")), + g.inject(1).addE("label").from(__.V(1)).to(__.V(2)).property(__.constant("name"), __.constant("cole")), List.of(), - List.of(__.constant("name"), __.constant("cole"), __.constant(1), __.constant(2)), + List.of(__.constant("name"), __.constant("cole"), __.V(1), __.V(2)), null, null }, {CallStepContract.class, diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStepTest.java index 4fe528b85d..a4c5a09375 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStepTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStepTest.java @@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__; import org.apache.tinkerpop.gremlin.process.traversal.step.GValue; import org.apache.tinkerpop.gremlin.process.traversal.step.GValueStepTest; import org.apache.tinkerpop.gremlin.structure.Edge; @@ -55,7 +56,7 @@ public class AddEdgeStartStepTest extends GValueStepTest { g.addE("created").property("a", "b"), g.addE("knows").property("a", "b").property("c", "e"), g.addE("knows").property("c", "e"), - g.addE("knows").from(1).to(2).property("a", "b"), + g.addE("knows").from(__.V(1)).to(__.V(2)).property("a", "b"), g.addE(GValue.of("label", "knows")).property("a", "b"), g.addE(GValue.of("label", "created")).property("a", GValue.of("prop", "b")), g.addE(GValue.of("label", "knows")).property("a", GValue.of("prop1", "b")).property("c", GValue.of("prop2", "e")), @@ -213,8 +214,8 @@ public class AddEdgeStartStepTest extends GValueStepTest { @Test public void getGValuesNonShouldReturnEmptyCollection() { GraphTraversal.Admin<Edge, Edge> traversal = g.addE("likes") - .from(1) - .to(2) + .from(__.V(1)) + .to(__.V(2)) .property(T.id, "1234") .property("rating", "great") .asAdmin(); diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepTest.java index 0abec8d7fd..d5025bd20c 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStepTest.java @@ -60,7 +60,7 @@ public class AddEdgeStepTest extends GValueStepTest { __.addE("created").property("a", "b"), __.addE("knows").property("a", "b").property("c", "e"), __.addE("knows").property("c", "e"), - __.addE("knows").from(1).to(2).property("a", "b"), + __.addE("knows").from(__.V(1)).to(__.V(2)).property("a", "b"), __.addE(GValue.of("label", "knows")).property("a", "b"), __.addE(GValue.of("label", "created")).property("a", GValue.of("prop", "b")), __.addE(GValue.of("label", "knows")).property("a", GValue.of("prop1", "b")).property("c", GValue.of("prop2", "e")), @@ -306,8 +306,8 @@ public class AddEdgeStepTest extends GValueStepTest { @Test public void getGValuesNonShouldReturnEmptyCollection() { GraphTraversal.Admin<Object, Edge> traversal = __.addE("likes") - .from(1) - .to(2) + .from(__.V(1)) + .to(__.V(2)) .property(T.id, "1234") .property("rating", "great") .asAdmin(); diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs index e866092001..e1f9f95735 100644 --- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs +++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs @@ -704,9 +704,9 @@ namespace Gremlin.Net.IntegrationTest.Gherkin {"g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().As("first").Repeat(__.AddE("next").To(__.AddV()).InV()).Times(5).AddE("next").To(__.Select<object>("first")), (g,p) =>g.V(), (g,p) =>g.E(), (g,p) =>g.E().HasLabel("next"), (g,p) =>g.V().Limit<object>(1).BothE(), (g,p) =>g.V().Limit<object>(1).InE(), (g,p) =>g.V().Limit<object>(1).OutE()}}, {"g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("softwar [...] {"g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("nam [...] - {"g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ripple" [...] - {"g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ripp [...] - {"g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ripple").P [...] + {"g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ripple" [...] + {"g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ripp [...] + {"g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ripple").P [...] {"g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27), (g,p) =>g.AddE("knows").Property("weight", null).From(__.V().Has("name", "marko")).To(__.V().Has("name", "vadas")), (g,p) =>g.E().Has("knows", "weight", (object) null)}}, {"g_addEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27), (g,p) =>g.AddE((string) p["xx1"]).Property("weight", null).From(__.V().Has("name", "marko")).To(__.V().Has("name", "vadas")), (g,p) =>g.E().Has("knows", "weight", (object) null)}}, {"g_unionXaddEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27), (g,p) =>g.Union<object>(__.AddE((string) p["xx1"]).Property("weight", 1).From(__.V().Has("name", "marko")).To(__.V().Has("name", "vadas"))), (g,p) =>g.E().Has("knows", "we [...] diff --git a/gremlin-go/driver/cucumber/gremlin.go b/gremlin-go/driver/cucumber/gremlin.go index 6c04494f85..00af888eaa 100644 --- a/gremlin-go/driver/cucumber/gremlin.go +++ b/gremlin-go/driver/cucumber/gremlin.go @@ -674,9 +674,9 @@ var translationMap = map[string][]func(g *gremlingo.GraphTraversalSource, p map[ "g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV().As("first").Repeat(gremlingo.T__.AddE("next").To(gremlingo.T__.AddV()).InV()).Times(5).AddE("next").To(gremlingo.T__.Select("first"))}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V()}, func(g *gremlingo.GraphTraversalSource, p ma [...] "g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("softw [...] "g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("n [...] - "g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "rippl [...] - "g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ri [...] - "g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ripple") [...] + "g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "rippl [...] + "g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ri [...] + "g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).As("marko").AddV("person").Property("name", "vadas").Property("age", 27).As("vadas").AddV("software").Property("name", "lop").Property("lang", "java").As("lop").AddV("person").Property("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ripple") [...] "g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddE("knows").Property("weight", nil).From(gremlingo.T__.V().Has("name", "ma [...] "g_addEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddE(p["xx1"]).Property("weight", nil).From(gremlingo.T__.V().Has("name", [...] "g_unionXaddEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddV("person").Property("name", "marko").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.Union(gremlingo.T__.AddE(p["xx1"]).Property("weight", 1).From(grem [...] diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js index d0ddb78ba9..c1a513ede7 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js @@ -705,9 +705,9 @@ const gremlins = { g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX: [function({g}) { return g.addV().as("first").repeat(__.addE("next").to(__.addV()).inV()).times(5).addE("next").to(__.select("first")) }, function({g}) { return g.V() }, function({g}) { return g.E() }, function({g}) { return g.E().hasLabel("next") }, function({g}) { return g.V().limit(1).bothE() }, function({g}) { return g.V().limit(1).inE() }, function({g}) { return g.V().limit(1).outE() }], g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX: [function({g, vid1}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("name", "ripple").property("lang", "java").as("ripple").ad [...] g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX: [function({g, vid2}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("n [...] - g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X: [function({g, xx1, vid6, vid1}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("name", "ripple").property("lang", "java").as("ripple").addV("person").prope [...] - g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X: [function({g, xx1, vid6, xx2, vid1}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("name", "ripple").property("lang", "java").as("ripple").addV("person [...] - g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X: [function({g, xx1, vid6, vid1}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("name", "ripple").property("lang", "java").as("ripple").addV("person").property [...] + g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X: [function({g, xx1, vid6, vid1}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("name", "ripple").property("lang", "java").as("ripple").addV("person").prope [...] + g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X: [function({g, xx1, vid6, xx2, vid1}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("name", "ripple").property("lang", "java").as("ripple").addV("person [...] + g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X: [function({g, xx1, vid6, vid1}) { return g.addV("person").property("name", "marko").property("age", 29).as("marko").addV("person").property("name", "vadas").property("age", 27).as("vadas").addV("software").property("name", "lop").property("lang", "java").as("lop").addV("person").property("name", "josh").property("age", 32).as("josh").addV("software").property("name", "ripple").property("lang", "java").as("ripple").addV("person").property [...] g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX: [function({g}) { return g.addV("person").property("name", "marko").property("age", 29).addV("person").property("name", "vadas").property("age", 27) }, function({g}) { return g.addE("knows").property("weight", null).from_(__.V().has("name", "marko")).to(__.V().has("name", "vadas")) }, function({g}) { return g.E().has("knows", "weight", null) }], g_addEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29).addV("person").property("name", "vadas").property("age", 27) }, function({g, xx1}) { return g.addE(xx1).property("weight", null).from_(__.V().has("name", "marko")).to(__.V().has("name", "vadas")) }, function({g, xx1}) { return g.E().has("knows", "weight", null) }], g_unionXaddEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXXX: [function({g, xx1}) { return g.addV("person").property("name", "marko").property("age", 29).addV("person").property("name", "vadas").property("age", 27) }, function({g, xx1}) { return g.union(__.addE(xx1).property("weight", 1).from_(__.V().has("name", "marko")).to(__.V().has("name", "vadas"))) }, function({g, xx1}) { return g.E().has("knows", "weight", 1) }], diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 b/gremlin-language/src/main/antlr4/Gremlin.g4 index 8b17b61d36..6ccbf79800 100644 --- a/gremlin-language/src/main/antlr4/Gremlin.g4 +++ b/gremlin-language/src/main/antlr4/Gremlin.g4 @@ -532,7 +532,6 @@ traversalMethod_format traversalMethod_from : K_FROM LPAREN stringLiteral RPAREN #traversalMethod_from_String - | K_FROM LPAREN genericArgument RPAREN #traversalMethod_from_GenricArgument | K_FROM LPAREN nestedTraversal RPAREN #traversalMethod_from_Traversal ; @@ -887,7 +886,6 @@ traversalMethod_times traversalMethod_to : K_TO LPAREN traversalDirection (COMMA stringNullableArgumentVarargs)? RPAREN #traversalMethod_to_Direction_String | K_TO LPAREN stringLiteral RPAREN #traversalMethod_to_String - | K_TO LPAREN genericArgument RPAREN #traversalMethod_to_GenricArgument | K_TO LPAREN nestedTraversal RPAREN #traversalMethod_to_Traversal ; diff --git a/gremlin-python/src/main/python/radish/gremlin.py b/gremlin-python/src/main/python/radish/gremlin.py index 3f822f3701..74912b34ca 100644 --- a/gremlin-python/src/main/python/radish/gremlin.py +++ b/gremlin-python/src/main/python/radish/gremlin.py @@ -677,9 +677,9 @@ world.gremlins = { 'g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX': [(lambda g:g.add_v().as_('first').repeat(__.add_e('next').to(__.add_v()).in_v()).times(5).add_e('next').to(__.select('first'))), (lambda g:g.V()), (lambda g:g.E()), (lambda g:g.E().has_label('next')), (lambda g:g.V().limit(1).both_e()), (lambda g:g.V().limit(1).in_e()), (lambda g:g.V().limit(1).out_e())], 'g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX': [(lambda g, vid1=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('ripple' [...] 'g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX': [(lambda g, vid2=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property [...] - 'g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X': [(lambda g, xx1=None,vid6=None,vid1=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('ripple').add_v('p [...] - 'g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X': [(lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('rippl [...] - 'g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X': [(lambda g, xx1=None,vid6=None,vid1=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('ripple').add_v('pers [...] + 'g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X': [(lambda g, xx1=None,vid6=None,vid1=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('ripple').add_v('p [...] + 'g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X': [(lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('rippl [...] + 'g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X': [(lambda g, xx1=None,vid6=None,vid1=None:g.add_v('person').property('name', 'marko').property('age', 29).as_('marko').add_v('person').property('name', 'vadas').property('age', 27).as_('vadas').add_v('software').property('name', 'lop').property('lang', 'java').as_('lop').add_v('person').property('name', 'josh').property('age', 32).as_('josh').add_v('software').property('name', 'ripple').property('lang', 'java').as_('ripple').add_v('pers [...] 'g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX': [(lambda g:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g:g.add_e('knows').property('weight', None).from_(__.V().has('name', 'marko')).to(__.V().has('name', 'vadas'))), (lambda g:g.E().has('knows', 'weight', None))], 'g_addEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g, xx1=None:g.add_e(xx1).property('weight', None).from_(__.V().has('name', 'marko')).to(__.V().has('name', 'vadas'))), (lambda g, xx1=None:g.E().has('knows', 'weight', None))], 'g_unionXaddEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXXX': [(lambda g, xx1=None:g.add_v('person').property('name', 'marko').property('age', 29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda g, xx1=None:g.union(__.add_e(xx1).property('weight', 1).from_(__.V().has('name', 'marko')).to(__.V().has('name', 'vadas')))), (lambda g, xx1=None:g.E().has('knows', 'weight', 1))], diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddEdge.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddEdge.feature index aa04e6a6b8..3682335e5c 100644 --- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddEdge.feature +++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/AddEdge.feature @@ -381,7 +381,7 @@ Feature: Step - addE() And using the parameter xx1 defined as "d[0.1].d" And the traversal of """ - g.addE("knows").from(vid1).to(vid6).property("weight", xx1) + g.addE("knows").from(V(vid1)).to(V(vid6)).property("weight", xx1) """ When iterated to list Then the result should have a count of 1 @@ -412,7 +412,7 @@ Feature: Step - addE() And using the parameter xx2 defined as "d[0.1].d" And the traversal of """ - g.addE(xx1).from(vid1).to(vid6).property("weight", xx2) + g.addE(xx1).from(V(vid1)).to(V(vid6)).property("weight", xx2) """ When iterated to list Then the result should have a count of 1 @@ -442,7 +442,7 @@ Feature: Step - addE() And using the parameter xx1 defined as "d[0.1].d" And the traversal of """ - g.V(vid1).addE("knows").to(vid6).property("weight", xx1) + g.V(vid1).addE("knows").to(V(vid6)).property("weight", xx1) """ When iterated to list Then the result should have a count of 1 diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinLangScriptEngineTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinLangScriptEngineTest.java index 858d0aa6ed..47a422bf68 100644 --- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinLangScriptEngineTest.java +++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/jsr223/TinkerGraphGremlinLangScriptEngineTest.java @@ -278,45 +278,45 @@ public class TinkerGraphGremlinLangScriptEngineTest { TinkerFactory.createModern() }, { - "g.addE(\"knows\").from(v1).to(v2).project(\"from\", \"to\").by(outV()).by(inV())", + "g.addE(\"knows\").from(V(vid1)).to(V(vid2)).project(\"from\", \"to\").by(outV()).by(inV())", Arrays.asList( - Pair.of(createBindings("v1", V_MARKO, "v2", V_PETER), Arrays.asList( + Pair.of(createBindings("vid1", V_MARKO.id(), "vid2", V_PETER.id()), Arrays.asList( Map.of("from", V_MARKO, "to", V_PETER) )), - Pair.of(createBindings("v1", V_JOSH, "v2", V_MARKO), Arrays.asList( + Pair.of(createBindings("vid1", V_JOSH.id(), "vid2", V_MARKO.id()), Arrays.asList( Map.of("from", V_JOSH, "to", V_MARKO) )), - Pair.of(createBindings("v1", V_PETER, "v2", V_JOSH), Arrays.asList( + Pair.of(createBindings("vid1", V_PETER.id(), "vid2", V_JOSH.id()), Arrays.asList( Map.of("from", V_PETER, "to", V_JOSH) )) ), - TinkerGraph.open() + TinkerFactory.createModern() }, { - "g.addE(xx1).from(v1).to(v2).property(\"weight\", xx2).project(\"label\", \"from\", \"to\", \"weight\").by(label).by(outV()).by(inV()).by(\"weight\")", + "g.addE(xx1).from(V(vid1)).to(V(vid2)).property(\"weight\", xx2).project(\"label\", \"from\", \"to\", \"weight\").by(label).by(outV()).by(inV()).by(\"weight\")", Arrays.asList( - Pair.of(createBindings("xx1", "knows", "v1", V_MARKO, "v2", V_PETER, "xx2", 0.1d), Arrays.asList( + Pair.of(createBindings("xx1", "knows", "vid1", 1, "vid2", 6, "xx2", 0.1d), Arrays.asList( Map.of("label", "knows", "from", V_MARKO, "to", V_PETER, "weight", 0.1d) )), - Pair.of(createBindings("xx1", "created", "v1", V_JOSH, "v2", V_MARKO, "xx2", 0.2d), Arrays.asList( + Pair.of(createBindings("xx1", "created", "vid1", V_JOSH.id(), "vid2", V_MARKO.id(), "xx2", 0.2d), Arrays.asList( Map.of("label", "created", "from", V_JOSH, "to", V_MARKO, "weight", 0.2d) )), - Pair.of(createBindings("xx1", "knows", "v1", V_PETER, "v2", V_JOSH, "xx2", 0.3d), Arrays.asList( + Pair.of(createBindings("xx1", "knows", "vid1", V_PETER.id(), "vid2", V_JOSH.id(), "xx2", 0.3d), Arrays.asList( Map.of("label", "knows", "from", V_PETER, "to", V_JOSH, "weight", 0.3d) )) ), - TinkerGraph.open() + TinkerFactory.createModern() }, { - "g.V(v1).addE(\"knows\").to(v2).project(\"from\", \"to\").by(outV()).by(inV())", + "g.V(v1).addE(\"knows\").to(V(vid2)).project(\"from\", \"to\").by(outV()).by(inV())", Arrays.asList( - Pair.of(createBindings("v1", V_MARKO, "v2", V_PETER), Arrays.asList( + Pair.of(createBindings("v1", V_MARKO, "vid2", V_PETER.id()), Arrays.asList( Map.of("from", V_MARKO, "to", V_PETER) )), - Pair.of(createBindings("v1", V_JOSH, "v2", V_MARKO), Arrays.asList( + Pair.of(createBindings("v1", V_JOSH, "vid2", V_MARKO.id()), Arrays.asList( Map.of("from", V_JOSH, "to", V_MARKO) )), - Pair.of(createBindings("v1", V_PETER, "v2", V_JOSH), Arrays.asList( + Pair.of(createBindings("v1", V_PETER, "vid2", V_JOSH.id()), Arrays.asList( Map.of("from", V_PETER, "to", V_JOSH) )) ),
