diff --git a/docs/src/dev/provider/gremlin-semantics.asciidoc b/docs/src/dev/provider/gremlin-semantics.asciidoc index 12bcf641073..4695fcbf941 100644 --- a/docs/src/dev/provider/gremlin-semantics.asciidoc +++ b/docs/src/dev/provider/gremlin-semantics.asciidoc @@ -535,6 +535,12 @@ The `addE()` step can be used as both a start step and a mid-traversal step. Whe and `to()` must be specified. When used as a mid-traversal step, the current traverser becomes the source vertex and only `to()` needs to be specified. +The gremlin-lang grammar only permits `Traversal` and `String` (alias for `__.select(String)`) arguments in `from()` and +`to()`. The `Traversal` must either produce a `Vertex` which is attachable to the graph, or it must produce the id of an +existing `Vertex` in the graph. `GraphTraversal` implementations in GLVs may optionally support `from(Vertex)` and +`to(Vertex)` as syntactic sugar. If translating to gremlin-lang scripts, these sugared modulators must be converted to +`from(__.V(vertex.id()))` or `from(__.constant(vertex.id()))` (and equivalents for `to()`). + *Exceptions* * If the edge label is null, an `IllegalArgumentException` will be thrown. diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc index d563c38b3d5..dc32bc791b7 100644 --- a/docs/src/reference/the-traversal.asciidoc +++ b/docs/src/reference/the-traversal.asciidoc @@ -553,6 +553,7 @@ vMarko = g.V().has('name','marko').next() vPeter = g.V().has('name','peter').next() g.V(vMarko).addE('knows').to(vPeter) <6> g.addE('knows').from(vMarko).to(vPeter) <7> +g.addE('knows').from(__.V(1)).to(__.constant(6)) <8> ---- <1> Add a co-developer edge with a year-property between marko and his collaborators. @@ -563,6 +564,7 @@ g.addE('knows').from(vMarko).to(vPeter) <7> supports user provided ids. <6> Add an edge between marko and peter given the directed (detached) vertex references. <7> Add an edge between marko and peter given the directed (detached) vertex references. +<8> Use child traversals producing either a vertex, or vertex id to add an edge between marko and peter. *Additional References* diff --git a/docs/src/upgrade/release-3.8.x.asciidoc b/docs/src/upgrade/release-3.8.x.asciidoc index b1dbae99b45..9f254b581dd 100644 --- a/docs/src/upgrade/release-3.8.x.asciidoc +++ b/docs/src/upgrade/release-3.8.x.asciidoc @@ -737,41 +737,44 @@ after construction. All usages of `P.getOriginalValue()` should be replaced with A number of changes have been introduced to the Gremlin grammar to help make it be more consistent and easier to use. -*Removed Vertex References for Grammar* +*Removed StructureVertex from Grammar* The grammar allowed the construction of a `Vertex` by way of syntax like `new Vertex(1,'person')` (or with similar arguments to `ReferenceVertex`). This syntax has been removed as it served little purpose within the grammar as it merely adds more characters to wrap around the identifier, which could simply be used by itself. The `V()` step, as well as the `from()` and `to()` modulators used with `addE()`, previously accepted `Vertex` as -arguments in the grammar. In its place, the `from()` and `to()` modulators can now directly accept a vertex id in place -of a `Vertex` when used with `addE()` (`V()` has always accepted ids in addition to vertices). When using these steps in -`gremlin-lang` scripts, the vertex id must be used directly. +arguments in the grammar. The `V()` step has always accepted vertex ids as arguments, and continues to do so. The +`from()` and `to()` modulators for `addE()` continue to accept `String` arguments (which are a shorthand for +`__.select(String)`), as well as `Traversal` arguments. As always, these `Traversal` arguments may produce `Vertex` +objects (such as `__.V(1)`) to directly bind to from/to. Newly added in 3.8.0, the `Traversal` may also produce the id +of a vertex present in the graph (such as `__.constant(1)`), which will then bind to from/to. -This change has no effect on the `GraphTraversal` API, nor on `gremlin-groovy` scripts. Vertices can continue to be used -directly in those contexts. +When using these steps in `gremlin-lang` scripts, a `Traversal` or `String` argument must be used directly. This change +has no effect on the `GraphTraversal` API, nor on `gremlin-groovy` scripts. Vertices can continue to be used directly in +those contexts. [source,text] ---- -// 3.7.3 +// 3.7.4 gremlin> v1 = g.V(1).next() ==>v[1] -gremlin> v2 = g.V(2).next() -==>v[2] -gremlin> script = String.format("g.V(new Vertex(%s)).outE().where(inV().is(new Vertex(%s)))", v1.id(), v2.id()) -==>g.V(new Vertex(1)).outE().where(inV().is(new Vertex(2))) +gremlin> v6 = g.V(6).next() +==>v[6] +gremlin> script = String.format("g.addE('knows').from(new Vertex(%s)).to(new ReferenceVertex(%s))", v1.id(), v6.id()) +==>g.addE('knows').from(new Vertex(1)).to(new ReferenceVertex(6)) gremlin> client.submit(script).all().get().get(0).getEdge() -==>e[7][1-knows->2] +==>e[0][1-knows->6] // 3.8.0 gremlin> v1 = g.V(1).next() ==>v[1] -gremlin> v2 = g.V(2).next() -==>v[2] -gremlin> script = String.format("g.V(%s).outE().where(inV().id().is(%s))", v1.id(), v2.id()) -==>g.V(1).outE().where(inV().id().is(2)) +gremlin> v6 = g.V(6).next() +==>v[6] +gremlin> script = String.format("g.addE('knows').from(__.V(%s)).to(__.constant(%s))", v1.id(), v6.id()) +==>g.addE('knows').from(__.V(1)).to(__.constant(6)) gremlin> client.submit(script).all().get().get(0).getEdge() -==>e[7][1-knows->2] +==>e[0][1-knows->6] ---- *`new` keyword is now optional* 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 8227c1830b0..923edda0fb9 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 @@ -403,10 +403,6 @@ protected void notImplemented(final ParseTree ctx) { * {@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} */ @@ -839,10 +835,6 @@ protected void notImplemented(final ParseTree ctx) { * {@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 0b038cfd8b1..2393b0b4879 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 @@ -1865,22 +1865,6 @@ public Traversal visitTraversalMethod_option_Predicate_Traversal(final GremlinPa 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 53af3f463a2..4ef2d82e24a 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 @@ -1603,14 +1603,14 @@ public default GraphTraversal from(final String fromStepLabel) { * @see Reference Documentation - From Step * @since 3.8.0 */ - public default GraphTraversal from(final GValue fromVertex) { + public default GraphTraversal 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(fromVertex)); + ((FromToModulating) prev).addFrom(new GValueConstantTraversal<>(fromVertex)); return this; } @@ -1662,14 +1662,14 @@ public default GraphTraversal to(final String toStepLabel) { * @see Reference Documentation - From Step * @since 3.8.0 */ - public default GraphTraversal to(final GValue toVertex) { + public default GraphTraversal 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(toVertex)); + ((FromToModulating) prev).addTo(new GValueConstantTraversal<>(toVertex)); return this; } @@ -1682,7 +1682,7 @@ public default GraphTraversal to(final GValue toVertex) { * @see Reference Documentation - From Step * @since 3.1.0-incubating */ - public default GraphTraversal to(final Traversal toVertex) { + public default GraphTraversal to(final Traversal toVertex) { final Step prev = this.asAdmin().getEndStep(); if (!(prev instanceof FromToModulating)) throw new IllegalArgumentException(String.format( @@ -1702,7 +1702,7 @@ public default GraphTraversal to(final Traversal toVertex) { * @see Reference Documentation - From Step * @since 3.1.0-incubating */ - public default GraphTraversal from(final Traversal fromVertex) { + public default GraphTraversal from(final Traversal fromVertex) { final Step prev = this.asAdmin().getEndStep(); if (!(prev instanceof FromToModulating)) throw new IllegalArgumentException(String.format( @@ -1722,13 +1722,7 @@ public default GraphTraversal from(final Traversal fromVertex) * @see Reference Documentation - From Step * @since 3.3.0 */ - public default GraphTraversal to(final Object toVertex) { - if (toVertex instanceof String) { - return this.to((String) toVertex); - } else if (toVertex instanceof Traversal) { - this.to((Traversal)toVertex); - return this; - } + public default GraphTraversal to(final Vertex toVertex) { final Step prev = this.asAdmin().getEndStep(); if (!(prev instanceof FromToModulating)) throw new IllegalArgumentException(String.format( @@ -1741,34 +1735,6 @@ public default GraphTraversal to(final Object toVertex) { 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 Reference Documentation - From Step - * @since 3.3.0 - */ - public default GraphTraversal from(final Object fromVertex) { - if (fromVertex instanceof String) { - return this.from((String) fromVertex); - } else if (fromVertex instanceof Traversal) { - this.from((Traversal)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) 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/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddElementStepPlaceholder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddElementStepPlaceholder.java index 66a3fca8fe5..82e1b39f939 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddElementStepPlaceholder.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AbstractAddElementStepPlaceholder.java @@ -20,7 +20,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; -import org.apache.tinkerpop.gremlin.process.traversal.lambda.ConstantTraversal; import org.apache.tinkerpop.gremlin.process.traversal.lambda.GValueConstantTraversal; import org.apache.tinkerpop.gremlin.process.traversal.step.GValue; import org.apache.tinkerpop.gremlin.process.traversal.step.GValueHolder; 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 1ed4d14bcd1..d69eef00298 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 @@ -207,12 +207,6 @@ public static Iterable data() { 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")) @@ -234,15 +228,9 @@ public static Iterable data() { 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, @@ -258,9 +246,9 @@ public static Iterable data() { 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 4fe528b85d2..8df6682b5a4 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.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 @@ protected List getTraversals() { 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")), @@ -211,10 +212,10 @@ public void getGValuesShouldReturnAllGValues() { } @Test - public void getGValuesNonShouldReturnEmptyCollection() { + public void getGValuesNoneShouldReturnEmptyCollection() { GraphTraversal.Admin 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 0abec8d7fdf..76a9e82f476 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 @@ protected List getTraversals() { __.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")), @@ -304,10 +304,10 @@ public void getGValuesShouldReturnAllGValues() { } @Test - public void getGValuesNonShouldReturnEmptyCollection() { + public void getGValuesNoneShouldReturnEmptyCollection() { GraphTraversal.Admin 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 174c7c385b3..abb46e1776c 100644 --- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs +++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs @@ -879,9 +879,9 @@ private static IDictionary, ITraversal>> {(g,p) =>g.AddV().As("first").Repeat(__.AddE("next").To(__.AddV()).InV()).Times(5).AddE("next").To(__.Select("first")), (g,p) =>g.V(), (g,p) =>g.E(), (g,p) =>g.E().HasLabel("next"), (g,p) =>g.V().Limit(1).BothE(), (g,p) =>g.V().Limit(1).InE(), (g,p) =>g.V().Limit(1).OutE()}}, {"g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX", new List, 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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5d).AddE("knows").From("marko").To("josh").Property("weight", 1.0d).AddE("created").From("marko").To("lop").Property("weight", 0.4d).AddE("created").From("josh").To("ripple").Property("weight", 1.0d).AddE("created").From("josh").To("lop").Property("weight", 0.4d).AddE("created").From("peter").To("lop").Property("weight", 0.2d), (g,p) =>g.V().Has("name", "marko").As("a").OutE("created").As("b").InV().AddE(__.Select("b").Label()).To("a"), (g,p) =>g.E(), (g,p) =>g.V(p["vid1"]).BothE(), (g,p) =>g.V(p["vid1"]).InE("created"), (g,p) =>g.V(p["vid1"]).In("created").Has("name", "lop"), (g,p) =>g.V(p["vid1"]).OutE("created")}}, {"g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX", new List, 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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5d).AddE("knows").From("marko").To("josh").Property("weight", 1.0d).AddE("created").From("marko").To("lop").Property("weight", 0.4d).AddE("created").From("josh").To("ripple").Property("weight", 1.0d).AddE("created").From("josh").To("lop").Property("weight", 0.4d).AddE("created").From("peter").To("lop").Property("weight", 0.2d), (g,p) =>g.AddE(__.V().OutE().Label().GroupCount().Order(Scope.Local).By(Column.Values, Order.Desc).Select(Column.Keys).Unfold().Limit(1)).From(__.V().Has("name", "vadas")).To(__.V().Has("name", "lop")), (g,p) =>g.E(), (g,p) =>g.V(p["vid2"]).BothE(), (g,p) =>g.V(p["vid2"]).InE("knows"), (g,p) =>g.V(p["vid2"]).OutE("created"), (g,p) =>g.V(p["vid2"]).Out("created").Has("name", "lop")}}, - {"g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X", new List, 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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5d).AddE("knows").From("marko").To("josh").Property("weight", 1.0d).AddE("created").From("marko").To("lop").Property("weight", 0.4d).AddE("created").From("josh").To("ripple").Property("weight", 1.0d).AddE("created").From("josh").To("lop").Property("weight", 0.4d).AddE("created").From("peter").To("lop").Property("weight", 0.2d), (g,p) =>g.AddE("knows").From(p["vid1"]).To(p["vid6"]).Property("weight", p["xx1"]), (g,p) =>g.E(), (g,p) =>g.V(p["vid1"]).OutE("knows"), (g,p) =>g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, - {"g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X", new List, 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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5d).AddE("knows").From("marko").To("josh").Property("weight", 1.0d).AddE("created").From("marko").To("lop").Property("weight", 0.4d).AddE("created").From("josh").To("ripple").Property("weight", 1.0d).AddE("created").From("josh").To("lop").Property("weight", 0.4d).AddE("created").From("peter").To("lop").Property("weight", 0.2d), (g,p) =>g.AddE((string) p["xx1"]).From(p["vid1"]).To(p["vid6"]).Property("weight", p["xx2"]), (g,p) =>g.E(), (g,p) =>g.V(p["vid1"]).OutE("knows"), (g,p) =>g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, - {"g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X", new List, 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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5d).AddE("knows").From("marko").To("josh").Property("weight", 1.0d).AddE("created").From("marko").To("lop").Property("weight", 0.4d).AddE("created").From("josh").To("ripple").Property("weight", 1.0d).AddE("created").From("josh").To("lop").Property("weight", 0.4d).AddE("created").From("peter").To("lop").Property("weight", 0.2d), (g,p) =>g.V(p["vid1"]).AddE("knows").To(p["vid6"]).Property("weight", p["xx1"]), (g,p) =>g.E(), (g,p) =>g.V(p["vid1"]).OutE("knows"), (g,p) =>g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, + {"g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X", new List, 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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5d).AddE("knows").From("marko").To("josh").Property("weight", 1.0d).AddE("created").From("marko").To("lop").Property("weight", 0.4d).AddE("created").From("josh").To("ripple").Property("weight", 1.0d).AddE("created").From("josh").To("lop").Property("weight", 0.4d).AddE("created").From("peter").To("lop").Property("weight", 0.2d), (g,p) =>g.AddE("knows").From(__.V(p["vid1"])).To(__.V(p["vid6"])).Property("weight", p["xx1"]), (g,p) =>g.E(), (g,p) =>g.V(p["vid1"]).OutE("knows"), (g,p) =>g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, + {"g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X", new List, 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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5d).AddE("knows").From("marko").To("josh").Property("weight", 1.0d).AddE("created").From("marko").To("lop").Property("weight", 0.4d).AddE("created").From("josh").To("ripple").Property("weight", 1.0d).AddE("created").From("josh").To("lop").Property("weight", 0.4d).AddE("created").From("peter").To("lop").Property("weight", 0.2d), (g,p) =>g.AddE((string) p["xx1"]).From(__.V(p["vid1"])).To(__.V(p["vid6"])).Property("weight", p["xx2"]), (g,p) =>g.E(), (g,p) =>g.V(p["vid1"]).OutE("knows"), (g,p) =>g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, + {"g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X", new List, 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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5d).AddE("knows").From("marko").To("josh").Property("weight", 1.0d).AddE("created").From("marko").To("lop").Property("weight", 0.4d).AddE("created").From("josh").To("ripple").Property("weight", 1.0d).AddE("created").From("josh").To("lop").Property("weight", 0.4d).AddE("created").From("peter").To("lop").Property("weight", 0.2d), (g,p) =>g.V(p["vid1"]).AddE("knows").To(__.V(p["vid6"])).Property("weight", p["xx1"]), (g,p) =>g.E(), (g,p) =>g.V(p["vid1"]).OutE("knows"), (g,p) =>g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, {"g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX", new List, 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, 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, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "marko").Property("age", 29).AddV("person").Property("name", "vadas").Property("age", 27), (g,p) =>g.Union(__.AddE((string) p["xx1"]).Property("weight", 1).From(__.V().Has("name", "marko")).To(__.V().Has("name", "vadas"))), (g,p) =>g.E().Has("knows", "weight", 1)}}, diff --git a/gremlin-go/driver/cucumber/gremlin.go b/gremlin-go/driver/cucumber/gremlin.go index 2db3eaa1114..5f80cdf7bcd 100644 --- a/gremlin-go/driver/cucumber/gremlin.go +++ b/gremlin-go/driver/cucumber/gremlin.go @@ -849,9 +849,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 map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E().HasLabel("next")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Limit(1).BothE()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Limit(1).InE()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Limit(1).OutE()}}, "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("software").Property("name", "ripple").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5).AddE("knows").From("marko").To("josh").Property("weight", 1.0).AddE("created").From("marko").To("lop").Property("weight", 0.4).AddE("created").From("josh").To("ripple").Property("weight", 1.0).AddE("created").From("josh").To("lop").Property("weight", 0.4).AddE("created").From("peter").To("lop").Property("weight", 0.2)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Has("name", "marko").As("a").OutE("created").As("b").InV().AddE(gremlingo.T__.Select("b").Label()).To("a")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).BothE()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).InE("created")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).In("created").Has("name", "lop")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).OutE("created")}}, "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("name", "josh").Property("age", 32).As("josh").AddV("software").Property("name", "ripple").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5).AddE("knows").From("marko").To("josh").Property("weight", 1.0).AddE("created").From("marko").To("lop").Property("weight", 0.4).AddE("created").From("josh").To("ripple").Property("weight", 1.0).AddE("created").From("josh").To("lop").Property("weight", 0.4).AddE("created").From("peter").To("lop").Property("weight", 0.2)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddE(gremlingo.T__.V().OutE().Label().GroupCount().Order(gremlingo.Scope.Local).By(gremlingo.Column.Values, gremlingo.Order.Desc).Select(gremlingo.Column.Keys).Unfold().Limit(1)).From(gremlingo.T__.V().Has("name", "vadas")).To(gremlingo.T__.V().Has("name", "lop"))}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid2"]).BothE()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid2"]).InE("knows")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid2"]).OutE("created")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid2"]).Out("created").Has("name", "lop")}}, - "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", "ripple").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5).AddE("knows").From("marko").To("josh").Property("weight", 1.0).AddE("created").From("marko").To("lop").Property("weight", 0.4).AddE("created").From("josh").To("ripple").Property("weight", 1.0).AddE("created").From("josh").To("lop").Property("weight", 0.4).AddE("created").From("peter").To("lop").Property("weight", 0.2)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddE("knows").From(p["vid1"]).To(p["vid6"]).Property("weight", p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).OutE("knows")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, - "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", "ripple").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5).AddE("knows").From("marko").To("josh").Property("weight", 1.0).AddE("created").From("marko").To("lop").Property("weight", 0.4).AddE("created").From("josh").To("ripple").Property("weight", 1.0).AddE("created").From("josh").To("lop").Property("weight", 0.4).AddE("created").From("peter").To("lop").Property("weight", 0.2)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddE(p["xx1"]).From(p["vid1"]).To(p["vid6"]).Property("weight", p["xx2"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).OutE("knows")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, - "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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5).AddE("knows").From("marko").To("josh").Property("weight", 1.0).AddE("created").From("marko").To("lop").Property("weight", 0.4).AddE("created").From("josh").To("ripple").Property("weight", 1.0).AddE("created").From("josh").To("lop").Property("weight", 0.4).AddE("created").From("peter").To("lop").Property("weight", 0.2)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).AddE("knows").To(p["vid6"]).Property("weight", p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).OutE("knows")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, + "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", "ripple").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5).AddE("knows").From("marko").To("josh").Property("weight", 1.0).AddE("created").From("marko").To("lop").Property("weight", 0.4).AddE("created").From("josh").To("ripple").Property("weight", 1.0).AddE("created").From("josh").To("lop").Property("weight", 0.4).AddE("created").From("peter").To("lop").Property("weight", 0.2)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddE("knows").From(gremlingo.T__.V(p["vid1"])).To(gremlingo.T__.V(p["vid6"])).Property("weight", p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).OutE("knows")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, + "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", "ripple").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5).AddE("knows").From("marko").To("josh").Property("weight", 1.0).AddE("created").From("marko").To("lop").Property("weight", 0.4).AddE("created").From("josh").To("ripple").Property("weight", 1.0).AddE("created").From("josh").To("lop").Property("weight", 0.4).AddE("created").From("peter").To("lop").Property("weight", 0.2)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.AddE(p["xx1"]).From(gremlingo.T__.V(p["vid1"])).To(gremlingo.T__.V(p["vid6"])).Property("weight", p["xx2"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).OutE("knows")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, + "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").Property("lang", "java").As("ripple").AddV("person").Property("name", "peter").Property("age", 35).As("peter").AddE("knows").From("marko").To("vadas").Property("weight", 0.5).AddE("knows").From("marko").To("josh").Property("weight", 1.0).AddE("created").From("marko").To("lop").Property("weight", 0.4).AddE("created").From("josh").To("ripple").Property("weight", 1.0).AddE("created").From("josh").To("lop").Property("weight", 0.4).AddE("created").From("peter").To("lop").Property("weight", 0.2)}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).AddE("knows").To(gremlingo.T__.V(p["vid6"])).Property("weight", p["xx1"])}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E()}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).OutE("knows")}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Out("knows").Has("name", "peter")}}, "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", "marko")).To(gremlingo.T__.V().Has("name", "vadas"))}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E().Has("knows", "weight", nil)}}, "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", "marko")).To(gremlingo.T__.V().Has("name", "vadas"))}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E().Has("knows", "weight", nil)}}, "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(gremlingo.T__.V().Has("name", "marko")).To(gremlingo.T__.V().Has("name", "vadas")))}, func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.E().Has("knows", "weight", 1)}}, 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 7412f18ec46..72140c39efd 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 @@ -880,9 +880,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").addV("person").property("name", "peter").property("age", 35).as("peter").addE("knows").from_("marko").to("vadas").property("weight", 0.5).addE("knows").from_("marko").to("josh").property("weight", 1.0).addE("created").from_("marko").to("lop").property("weight", 0.4).addE("created").from_("josh").to("ripple").property("weight", 1.0).addE("created").from_("josh").to("lop").property("weight", 0.4).addE("created").from_("peter").to("lop").property("weight", 0.2) }, function({g, vid1}) { return g.V().has("name", "marko").as("a").outE("created").as("b").inV().addE(__.select("b").label()).to("a") }, function({g, vid1}) { return g.E() }, function({g, vid1}) { return g.V(vid1).bothE() }, function({g, vid1}) { return g.V(vid1).inE("created") }, function({g, vid1}) { return g.V(vid1).in_("created").has("name", "lop") }, function({g, vid1}) { return g.V(vid1).outE("created") }], 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("name", "ripple").property("lang", "java").as("ripple").addV("person").property("name", "peter").property("age", 35).as("peter").addE("knows").from_("marko").to("vadas").property("weight", 0.5).addE("knows").from_("marko").to("josh").property("weight", 1.0).addE("created").from_("marko").to("lop").property("weight", 0.4).addE("created").from_("josh").to("ripple").property("weight", 1.0).addE("created").from_("josh").to("lop").property("weight", 0.4).addE("created").from_("peter").to("lop").property("weight", 0.2) }, function({g, vid2}) { return g.addE(__.V().outE().label().groupCount().order(Scope.local).by(Column.values, Order.desc).select(Column.keys).unfold().limit(1)).from_(__.V().has("name", "vadas")).to(__.V().has("name", "lop")) }, function({g, vid2}) { return g.E() }, function({g, vid2}) { return g.V(vid2).bothE() }, function({g, vid2}) { return g.V(vid2).inE("knows") }, function({g, vid2}) { return g.V(vid2).outE("created") }, function({g, vid2}) { return g.V(vid2).out("created").has("name", "lop") }], - 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").property("name", "peter").property("age", 35).as("peter").addE("knows").from_("marko").to("vadas").property("weight", 0.5).addE("knows").from_("marko").to("josh").property("weight", 1.0).addE("created").from_("marko").to("lop").property("weight", 0.4).addE("created").from_("josh").to("ripple").property("weight", 1.0).addE("created").from_("josh").to("lop").property("weight", 0.4).addE("created").from_("peter").to("lop").property("weight", 0.2) }, function({g, xx1, vid6, vid1}) { return g.addE("knows").from_(vid1).to(vid6).property("weight", xx1) }, function({g, xx1, vid6, vid1}) { return g.E() }, function({g, xx1, vid6, vid1}) { return g.V(vid1).outE("knows") }, function({g, xx1, vid6, vid1}) { return g.V(vid1).out("knows").has("name", "peter") }], - 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").property("name", "peter").property("age", 35).as("peter").addE("knows").from_("marko").to("vadas").property("weight", 0.5).addE("knows").from_("marko").to("josh").property("weight", 1.0).addE("created").from_("marko").to("lop").property("weight", 0.4).addE("created").from_("josh").to("ripple").property("weight", 1.0).addE("created").from_("josh").to("lop").property("weight", 0.4).addE("created").from_("peter").to("lop").property("weight", 0.2) }, function({g, xx1, vid6, xx2, vid1}) { return g.addE(xx1).from_(vid1).to(vid6).property("weight", xx2) }, function({g, xx1, vid6, xx2, vid1}) { return g.E() }, function({g, xx1, vid6, xx2, vid1}) { return g.V(vid1).outE("knows") }, function({g, xx1, vid6, xx2, vid1}) { return g.V(vid1).out("knows").has("name", "peter") }], - 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("name", "peter").property("age", 35).as("peter").addE("knows").from_("marko").to("vadas").property("weight", 0.5).addE("knows").from_("marko").to("josh").property("weight", 1.0).addE("created").from_("marko").to("lop").property("weight", 0.4).addE("created").from_("josh").to("ripple").property("weight", 1.0).addE("created").from_("josh").to("lop").property("weight", 0.4).addE("created").from_("peter").to("lop").property("weight", 0.2) }, function({g, xx1, vid6, vid1}) { return g.V(vid1).addE("knows").to(vid6).property("weight", xx1) }, function({g, xx1, vid6, vid1}) { return g.E() }, function({g, xx1, vid6, vid1}) { return g.V(vid1).outE("knows") }, function({g, xx1, vid6, vid1}) { return g.V(vid1).out("knows").has("name", "peter") }], + 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").property("name", "peter").property("age", 35).as("peter").addE("knows").from_("marko").to("vadas").property("weight", 0.5).addE("knows").from_("marko").to("josh").property("weight", 1.0).addE("created").from_("marko").to("lop").property("weight", 0.4).addE("created").from_("josh").to("ripple").property("weight", 1.0).addE("created").from_("josh").to("lop").property("weight", 0.4).addE("created").from_("peter").to("lop").property("weight", 0.2) }, function({g, xx1, vid6, vid1}) { return g.addE("knows").from_(__.V(vid1)).to(__.V(vid6)).property("weight", xx1) }, function({g, xx1, vid6, vid1}) { return g.E() }, function({g, xx1, vid6, vid1}) { return g.V(vid1).outE("knows") }, function({g, xx1, vid6, vid1}) { return g.V(vid1).out("knows").has("name", "peter") }], + 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").property("name", "peter").property("age", 35).as("peter").addE("knows").from_("marko").to("vadas").property("weight", 0.5).addE("knows").from_("marko").to("josh").property("weight", 1.0).addE("created").from_("marko").to("lop").property("weight", 0.4).addE("created").from_("josh").to("ripple").property("weight", 1.0).addE("created").from_("josh").to("lop").property("weight", 0.4).addE("created").from_("peter").to("lop").property("weight", 0.2) }, function({g, xx1, vid6, xx2, vid1}) { return g.addE(xx1).from_(__.V(vid1)).to(__.V(vid6)).property("weight", xx2) }, function({g, xx1, vid6, xx2, vid1}) { return g.E() }, function({g, xx1, vid6, xx2, vid1}) { return g.V(vid1).outE("knows") }, function({g, xx1, vid6, xx2, vid1}) { return g.V(vid1).out("knows").has("name", "peter") }], + 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("name", "peter").property("age", 35).as("peter").addE("knows").from_("marko").to("vadas").property("weight", 0.5).addE("knows").from_("marko").to("josh").property("weight", 1.0).addE("created").from_("marko").to("lop").property("weight", 0.4).addE("created").from_("josh").to("ripple").property("weight", 1.0).addE("created").from_("josh").to("lop").property("weight", 0.4).addE("created").from_("peter").to("lop").property("weight", 0.2) }, function({g, xx1, vid6, vid1}) { return g.V(vid1).addE("knows").to(__.V(vid6)).property("weight", xx1) }, function({g, xx1, vid6, vid1}) { return g.E() }, function({g, xx1, vid6, vid1}) { return g.V(vid1).outE("knows") }, function({g, xx1, vid6, vid1}) { return g.V(vid1).out("knows").has("name", "peter") }], 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 395eb0b8f4c..b11ca3aa3bd 100644 --- a/gremlin-language/src/main/antlr4/Gremlin.g4 +++ b/gremlin-language/src/main/antlr4/Gremlin.g4 @@ -530,7 +530,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 ; @@ -881,7 +880,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 9e9c26988de..1d4dad5b72e 100644 --- a/gremlin-python/src/main/python/radish/gremlin.py +++ b/gremlin-python/src/main/python/radish/gremlin.py @@ -852,9 +852,9 @@ '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').add_v('person').property('name', 'peter').property('age', 35).as_('peter').add_e('knows').from_('marko').to('vadas').property('weight', 0.5).add_e('knows').from_('marko').to('josh').property('weight', 1.0).add_e('created').from_('marko').to('lop').property('weight', 0.4).add_e('created').from_('josh').to('ripple').property('weight', 1.0).add_e('created').from_('josh').to('lop').property('weight', 0.4).add_e('created').from_('peter').to('lop').property('weight', 0.2)), (lambda g, vid1=None:g.V().has('name', 'marko').as_('a').out_e('created').as_('b').in_v().add_e(__.select('b').label()).to('a')), (lambda g, vid1=None:g.E()), (lambda g, vid1=None:g.V(vid1).both_e()), (lambda g, vid1=None:g.V(vid1).in_e('created')), (lambda g, vid1=None:g.V(vid1).in_('created').has('name', 'lop')), (lambda g, vid1=None:g.V(vid1).out_e('created'))], '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('name', 'ripple').property('lang', 'java').as_('ripple').add_v('person').property('name', 'peter').property('age', 35).as_('peter').add_e('knows').from_('marko').to('vadas').property('weight', 0.5).add_e('knows').from_('marko').to('josh').property('weight', 1.0).add_e('created').from_('marko').to('lop').property('weight', 0.4).add_e('created').from_('josh').to('ripple').property('weight', 1.0).add_e('created').from_('josh').to('lop').property('weight', 0.4).add_e('created').from_('peter').to('lop').property('weight', 0.2)), (lambda g, vid2=None:g.add_e(__.V().out_e().label().group_count().order(Scope.local).by(Column.values, Order.desc).select(Column.keys).unfold().limit(1)).from_(__.V().has('name', 'vadas')).to(__.V().has('name', 'lop'))), (lambda g, vid2=None:g.E()), (lambda g, vid2=None:g.V(vid2).both_e()), (lambda g, vid2=None:g.V(vid2).in_e('knows')), (lambda g, vid2=None:g.V(vid2).out_e('created')), (lambda g, vid2=None:g.V(vid2).out('created').has('name', 'lop'))], - '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('person').property('name', 'peter').property('age', 35).as_('peter').add_e('knows').from_('marko').to('vadas').property('weight', 0.5).add_e('knows').from_('marko').to('josh').property('weight', 1.0).add_e('created').from_('marko').to('lop').property('weight', 0.4).add_e('created').from_('josh').to('ripple').property('weight', 1.0).add_e('created').from_('josh').to('lop').property('weight', 0.4).add_e('created').from_('peter').to('lop').property('weight', 0.2)), (lambda g, xx1=None,vid6=None,vid1=None:g.add_e('knows').from_(vid1).to(vid6).property('weight', xx1)), (lambda g, xx1=None,vid6=None,vid1=None:g.E()), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).out_e('knows')), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).out('knows').has('name', 'peter'))], - '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_('ripple').add_v('person').property('name', 'peter').property('age', 35).as_('peter').add_e('knows').from_('marko').to('vadas').property('weight', 0.5).add_e('knows').from_('marko').to('josh').property('weight', 1.0).add_e('created').from_('marko').to('lop').property('weight', 0.4).add_e('created').from_('josh').to('ripple').property('weight', 1.0).add_e('created').from_('josh').to('lop').property('weight', 0.4).add_e('created').from_('peter').to('lop').property('weight', 0.2)), (lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.add_e(xx1).from_(vid1).to(vid6).property('weight', xx2)), (lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.E()), (lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.V(vid1).out_e('knows')), (lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.V(vid1).out('knows').has('name', 'peter'))], - '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('person').property('name', 'peter').property('age', 35).as_('peter').add_e('knows').from_('marko').to('vadas').property('weight', 0.5).add_e('knows').from_('marko').to('josh').property('weight', 1.0).add_e('created').from_('marko').to('lop').property('weight', 0.4).add_e('created').from_('josh').to('ripple').property('weight', 1.0).add_e('created').from_('josh').to('lop').property('weight', 0.4).add_e('created').from_('peter').to('lop').property('weight', 0.2)), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).add_e('knows').to(vid6).property('weight', xx1)), (lambda g, xx1=None,vid6=None,vid1=None:g.E()), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).out_e('knows')), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).out('knows').has('name', 'peter'))], + '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('person').property('name', 'peter').property('age', 35).as_('peter').add_e('knows').from_('marko').to('vadas').property('weight', 0.5).add_e('knows').from_('marko').to('josh').property('weight', 1.0).add_e('created').from_('marko').to('lop').property('weight', 0.4).add_e('created').from_('josh').to('ripple').property('weight', 1.0).add_e('created').from_('josh').to('lop').property('weight', 0.4).add_e('created').from_('peter').to('lop').property('weight', 0.2)), (lambda g, xx1=None,vid6=None,vid1=None:g.add_e('knows').from_(__.V(vid1)).to(__.V(vid6)).property('weight', xx1)), (lambda g, xx1=None,vid6=None,vid1=None:g.E()), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).out_e('knows')), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).out('knows').has('name', 'peter'))], + '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_('ripple').add_v('person').property('name', 'peter').property('age', 35).as_('peter').add_e('knows').from_('marko').to('vadas').property('weight', 0.5).add_e('knows').from_('marko').to('josh').property('weight', 1.0).add_e('created').from_('marko').to('lop').property('weight', 0.4).add_e('created').from_('josh').to('ripple').property('weight', 1.0).add_e('created').from_('josh').to('lop').property('weight', 0.4).add_e('created').from_('peter').to('lop').property('weight', 0.2)), (lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.add_e(xx1).from_(__.V(vid1)).to(__.V(vid6)).property('weight', xx2)), (lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.E()), (lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.V(vid1).out_e('knows')), (lambda g, xx1=None,vid6=None,xx2=None,vid1=None:g.V(vid1).out('knows').has('name', 'peter'))], + '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('person').property('name', 'peter').property('age', 35).as_('peter').add_e('knows').from_('marko').to('vadas').property('weight', 0.5).add_e('knows').from_('marko').to('josh').property('weight', 1.0).add_e('created').from_('marko').to('lop').property('weight', 0.4).add_e('created').from_('josh').to('ripple').property('weight', 1.0).add_e('created').from_('josh').to('lop').property('weight', 0.4).add_e('created').from_('peter').to('lop').property('weight', 0.2)), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).add_e('knows').to(__.V(vid6)).property('weight', xx1)), (lambda g, xx1=None,vid6=None,vid1=None:g.E()), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).out_e('knows')), (lambda g, xx1=None,vid6=None,vid1=None:g.V(vid1).out('knows').has('name', 'peter'))], '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 aa04e6a6b89..aa07d72dcca 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 @@ -359,7 +359,7 @@ Feature: Step - addE() And the graph should return 1 for count of "g.V(vid2).outE(\"created\")" And the graph should return 1 for count of "g.V(vid2).out(\"created\").has(\"name\",\"lop\")" - Scenario: g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X + Scenario: g_addEXknowsX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X Given the empty graph And the graph initializer of """ @@ -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 @@ -389,7 +389,7 @@ Feature: Step - addE() And the graph should return 3 for count of "g.V(vid1).outE(\"knows\")" And the graph should return 1 for count of "g.V(vid1).out(\"knows\").has(\"name\",\"peter\")" - Scenario: g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X + Scenario: g_addEXknowsvarX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X Given the empty graph And the graph initializer of """ @@ -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 858d0aa6ed6..47a422bf68e 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 static Iterable generateTestParameters() { 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) )) ),