This is an automated email from the ASF dual-hosted git repository. xiazcy pushed a commit to branch 3.8-dev in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit be0bc0fe960daa0b939d55cead30765b37b6f543 Merge: 3c04c9bb01 ef3658c43e Author: Yang Xia <[email protected]> AuthorDate: Wed Jul 22 14:50:29 2026 -0700 Merge branch '3.7-dev' into 3.8-dev CHANGELOG.asciidoc | 1 + docs/src/upgrade/release-3.7.x.asciidoc | 34 +++++++++++++++ .../traversal/dsl/graph/GraphTraversal.java | 49 ++++++++-------------- .../process/traversal/step/filter/HasStepTest.java | 3 +- .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 1 + gremlin-go/driver/cucumber/gremlin.go | 1 + .../gremlin-javascript/test/cucumber/gremlin.js | 1 + .../src/main/python/tests/feature/gremlin.py | 1 + .../gremlin/test/features/filter/HasId.feature | 16 ++++++- .../tinkergraph/structure/TinkerGraphTest.java | 32 ++++++++++++++ 10 files changed, 105 insertions(+), 34 deletions(-) diff --cc gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java index 6c4c90227b,32a2408bce..657dee940c --- 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 @@@ -2835,39 -2390,19 +2835,26 @@@ public interface GraphTraversal<S, E> e else { this.asAdmin().getBytecode().addStep(Symbols.hasId, id, otherIds); - //using ArrayList given P.within() turns all arguments into lists + // a collection/array is only unrolled when it is the single argument, aligning hasId() with g.V()/g.E() + // where multiple arguments are each treated as a literal id (TINKERPOP-3273) final List<Object> ids = new ArrayList<>(); - if (id instanceof Object[]) { - Collections.addAll(ids, (Object[]) id); - } else if (id instanceof Collection) { - // as ids are unrolled when it's in array, they should also be unrolled when it's a list. - // this also aligns with behavior of hasId() when it's pushed down to g.V() (TINKERPOP-2863) - ids.addAll((Collection<?>) id); - } else if (id instanceof GValue && ((GValue<?>) id).get() instanceof Object[]) { - // If a GValue is passed in containing an array or Collection, it is unrolled similarly to literal - // arguments. This comes at the expense of losing the GValue wrappings, but it necessary for consistency - Collections.addAll(ids, (Object[]) ((GValue<?>) id).get()); - } else if (id instanceof GValue && ((GValue<?>) id).get() instanceof Collection) { - ids.addAll((Collection<?>) ((GValue<?>) id).get()); - }else { - ids.add(id); - } - - // unrolling ids from lists works cleaner with Collection too, as otherwise they will need to - // be turned into array first - if (otherIds != null) { - for (final Object i : otherIds) { - if (i instanceof Object[]) { - Collections.addAll(ids, (Object[]) i); - } else if (i instanceof Collection) { - ids.addAll((Collection<?>) i); - } else if (i instanceof GValue && ((GValue<?>) i).get() instanceof Object[]) { - Collections.addAll(ids, (Object[]) ((GValue<?>) i).get()); - } else if (i instanceof GValue && ((GValue<?>) i).get() instanceof Collection) { - ids.addAll((Collection<?>) ((GValue<?>) i).get()); - } else - ids.add(i); + if (otherIds == null || otherIds.length == 0) { + if (id instanceof Object[]) { + Collections.addAll(ids, (Object[]) id); + } else if (id instanceof Collection) { + ids.addAll((Collection<?>) id); - } else ++ } else if (id instanceof GValue && ((GValue<?>) id).get() instanceof Object[]) { ++ // If a GValue is passed in containing an array or Collection, it is unrolled similarly to literal ++ // arguments. This comes at the expense of losing the GValue wrappings, but it is necessary for consistency. ++ Collections.addAll(ids, (Object[]) ((GValue<?>) id).get()); ++ } else if (id instanceof GValue && ((GValue<?>) id).get() instanceof Collection) { ++ ids.addAll((Collection<?>) ((GValue<?>) id).get()); ++ } else { + ids.add(id); + } + } else { + ids.add(id); + Collections.addAll(ids, otherIds); } return TraversalHelper.addHasContainer(this.asAdmin(), new HasContainer(T.id.getAccessor(), ids.size() == 1 ? P.eq(ids.get(0)) : P.within(ids))); diff --cc gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs index 66264fecd7,baf112b027..7f815650d1 --- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs +++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs @@@ -384,108 -200,98 +384,109 @@@ namespace Gremlin.Net.IntegrationTest.G {"g_V_bothE_properties_dedup_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().BothE().Properties<object>().Dedup().Count()}}, {"g_V_both_properties_dedup_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Properties<object>().Dedup().Count()}}, {"g_V_both_properties_properties_dedup_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Properties<object>().Properties<object>().Dedup().Count()}}, - {"g_V_order_byXname_descX_barrier_dedup_age_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Order().By("name",Order.Desc).Barrier().Dedup().By("age").Values<object>("name")}}, - {"g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Order().By("name",Order.Desc).Barrier().Dedup().By("age").Values<object>("name")}}, + {"g_V_order_byXname_descX_barrier_dedup_age_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Order().By("name", Order.Desc).Barrier().Dedup().By("age").Values<object>("name")}}, + {"g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy()).V().Order().By("name", Order.Desc).Barrier().Dedup().By("age").Values<object>("name")}}, {"g_V_both_dedup_age_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Dedup().By("age").Values<object>("name")}}, - {"g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).As("a").Both().As("b").Both().As("c").Dedup("a","b").By("age").Select<object>("a","b","c").By("name")}}, + {"g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).As("a").Both().As("b").Both().As("c").Dedup("a", "b").By("age").Select<object>("a", "b", "c").By("name")}}, {"g_VX1X_valuesXageX_dedupXlocalX_unfold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Values<object>("age").Dedup(Scope.Local).Unfold<object>()}}, - {"g_V_properties_dedup_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","josh").AddV("person").Property("name","josh").AddV("person").Property("name","josh"), (g,p) =>g.V().Properties<object>("name").Dedup().Count()}}, - {"g_V_properties_dedup_byXvalueX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name","josh").AddV("person").Property("name","josh").AddV("person").Property("name","josh"), (g,p) =>g.V().Properties<object>("name").Dedup().By(T.Value).Count()}}, + {"g_V_properties_dedup_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "josh").AddV("person").Property("name", "josh").AddV("person").Property("name", "josh"), (g,p) =>g.V().Properties<object>("name").Dedup().Count()}}, + {"g_V_properties_dedup_byXvalueX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("person").Property("name", "josh").AddV("person").Property("name", "josh").AddV("person").Property("name", "josh"), (g,p) =>g.V().Properties<object>("name").Dedup().By(T.Value).Count()}}, + {"g_V_both_hasXlabel_softwareX_dedup_byXlangX_byXnameX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Has(T.Label, "software").Dedup().By("lang").By("name").Values<object>("name")}}, + {"g_V_count_discard", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Count().Discard()}}, + {"g_V_hasLabelXpersonX_discard", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("person").Discard()}}, + {"g_VX1X_outXcreatedX_discard", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out("created").Discard()}}, + {"g_V_discard", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Discard()}}, + {"g_V_discard_discard", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Discard().Discard()}}, + {"g_V_discard_fold", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Discard().Fold()}}, + {"g_V_discard_fold_discard", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Discard().Fold().Discard()}}, + {"g_V_discard_fold_constantX1X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Discard().Fold().Constant<object>(1)}}, + {"g_V_projectXxX_byXcoalesceXage_isXgtX29XX_discardXX_selectXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Project<object>("x").By(__.Coalesce<object>(__.Values<object>("age").Is(P.Gt(29)), __.Discard())).Select<object>("x")}}, {"g_V_drop", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().As("a").AddV().As("b").AddE("knows").To("a"), (g,p) =>g.V().Drop(), (g,p) =>g.V(), (g,p) =>g.E()}}, {"g_V_outE_drop", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().As("a").AddV().As("b").AddE("knows").To("a"), (g,p) =>g.V().OutE().Drop(), (g,p) =>g.V(), (g,p) =>g.E()}}, - {"g_V_properties_drop", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().Property("name","bob").AddV().Property("name","alice"), (g,p) =>g.V().Properties<object>().Drop(), (g,p) =>g.V(), (g,p) =>g.V().Properties<object>()}}, - {"g_E_propertiesXweightX_drop", 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").Property("lang","java").As( [...] - {"g_V_properties_propertiesXstartTimeX_drop", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().Property("name","bob").Property(Cardinality.List,"location","ny","startTime",2014,"endTime",2016).Property(Cardinality.List,"location","va","startTime",2016).AddV().Property("name","alice").Property(Cardinality.List,"location","va","startTime",2014,"endTime",2016).Property(Cardinality.List,"location","ny","startTime",2016), (g,p) => [...] - {"g_V_filterXfalseX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Filter((IPredicate) p["pred1"])}}, - {"g_V_filterXtrueX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Filter((IPredicate) p["pred1"])}}, - {"g_V_filterXlang_eq_javaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Filter((IPredicate) p["pred1"])}}, - {"g_VX1X_filterXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Filter((IPredicate) p["pred1"])}}, - {"g_VX2X_filterXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid2"]).Filter((IPredicate) p["pred1"])}}, - {"g_VX1X_out_filterXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().Filter((IPredicate) p["pred1"])}}, - {"g_V_filterXname_startsWith_m_OR_name_startsWith_pX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Filter((IPredicate) p["pred1"])}}, - {"g_E_filterXfalseX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().Filter((IPredicate) p["pred1"])}}, - {"g_E_filterXtrueX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().Filter((IPredicate) p["pred1"])}}, - {"g_V_outXcreatedX_hasXname__mapXlengthX_isXgtX3XXX_name", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").Has("name",__.Map<object>((IFunction) p["l1"]).Is(P.Gt(3))).Values<object>("name")}}, + {"g_V_properties_drop", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().Property("name", "bob").AddV().Property("name", "alice"), (g,p) =>g.V().Properties<object>().Drop(), (g,p) =>g.V(), (g,p) =>g.V().Properties<object>()}}, + {"g_E_propertiesXweightX_drop", 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").Property("lang", " [...] + {"g_V_properties_propertiesXstartTimeX_drop", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().Property("name", "bob").Property(Cardinality.List, "location", "ny", "startTime", 2014, "endTime", 2016).Property(Cardinality.List, "location", "va", "startTime", 2016).AddV().Property("name", "alice").Property(Cardinality.List, "location", "va", "startTime", 2014, "endTime", 2016).Property(Cardinality.List, "location", "ny", "start [...] + {"g_V_filterXisX0XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Filter(__.Is(0))}}, + {"g_V_filterXconstantX0XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Filter(__.Constant<object>(0))}}, + {"g_V_filterXhasXlang_javaXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Filter(__.Has("lang", "java"))}}, + {"g_VX1X_filterXhasXage_gtX30XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Filter(__.Has("age", P.Gt(30)))}}, + {"g_VX2X_filterXhasXage_gtX30XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid2"]).Filter(__.Has("age", P.Gt(30)))}}, + {"g_VX1X_out_filterXhasXage_gtX30XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().Filter(__.Has("age", P.Gt(30)))}}, + {"g_V_filterXhasXname_startingWithXm_or_pXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Filter(__.Has("name", TextP.StartingWith("m").Or(TextP.StartingWith("p"))))}}, + {"g_E_filterXisX0XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().Filter(__.Is(0))}}, + {"g_E_filterXconstantX0XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().Filter(__.Constant<object>(0))}}, {"g_VX1X_hasXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("name")}}, {"g_VX1X_hasXcircumferenceX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("circumference")}}, - {"g_VX1X_hasXname_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("name","marko")}}, - {"g_VX2X_hasXname_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("name","marko")}}, - {"g_V_hasXname_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name","marko")}}, - {"g_V_hasXname_blahX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name","blah")}}, - {"g_V_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Gt(30))}}, - {"g_V_hasXage_isXgt_30XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",__.Is(P.Gt(30)))}}, - {"g_V_hasXlabel_isXsoftwareXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has(T.Label,__.Is("software"))}}, - {"g_VX1X_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("age",P.Gt(30))}}, - {"g_VX4X_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid4"]).Has("age",P.Gt(30))}}, - {"g_VXv1X_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V((Vertex) p["v1"]).Has("age",P.Gt(30))}}, - {"g_VXv4X_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V((Vertex) p["v4"]).Has("age",P.Gt(30))}}, - {"g_VX1X_out_hasXid_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V((Vertex) p["v2"]).Has("age",P.Gt(30))}}, + {"g_VX1X_hasXname_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("name", "marko")}}, + {"g_VX1X_hasXname_markovarX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("name", (object) p["xx1"])}}, + {"g_VX2X_hasXname_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("name", "marko")}}, + {"g_V_hasXname_markoX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", "marko")}}, + {"g_V_hasXname_blahX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", "blah")}}, + {"g_V_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age", P.Gt(30))}}, + {"g_VX1X_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("age", P.Gt(30))}}, + {"g_V_hasXpersonvar_age_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has((string) p["xx1"], "age", P.Gt(30))}}, + {"g_VX4X_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid4"]).Has("age", P.Gt(30))}}, + {"g_VXv1X_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Has("age", P.Gt(30))}}, + {"g_VXv4X_hasXage_gt_30X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid4"]).Has("age", P.Gt(30))}}, + {"g_VX1X_out_hasXid_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid2"]).Has("age", P.Gt(30))}}, {"g_V_hasXblahX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("blah")}}, - {"g_V_hasXperson_name_markoX_age", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person","name","marko").Values<object>("age")}}, - {"g_VX1X_outE_hasXweight_inside_0_06X_inV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).OutE().Has("weight",P.Gt(0.0).And(P.Lt(0.6))).InV()}}, - {"g_EX11X_outV_outE_hasXid_10X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E(p["eid11"]).OutV().OutE().Has(T.Id,p["eid10"])}}, - {"g_EX11X_outV_outE_hasXid_10AsStringX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E(p["eid11"]).OutV().OutE().Has(T.Id,p["eid10"])}}, + {"g_V_hasXperson_name_markoX_age", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person", "name", "marko").Values<object>("age")}}, + {"g_V_hasXperson_name_markovarX_age", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person", "name", (object) p["xx1"]).Values<object>("age")}}, + {"g_V_hasXpersonvar_name_markoX_age", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has((string) p["xx1"], "name", "marko").Values<object>("age")}}, + {"g_VX1X_outE_hasXweight_inside_0_06X_inV", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).OutE().Has("weight", P.Inside(0.0, 0.6)).InV()}}, + {"g_EX11X_outV_outE_hasXid_10X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E(p["eid11"]).OutV().OutE().Has(T.Id, (object) p["eid10"])}}, + {"g_EX11X_outV_outE_hasXid_10AsStringX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E(p["eid11"]).OutV().OutE().Has(T.Id, (object) p["eid10"])}}, {"g_V_hasXlocationX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("location")}}, - {"g_V_hasXage_withinX27X_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Within(new List<object> {27})).Count()}}, - {"g_V_hasXage_withinX27_nullX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Within(new List<object> {27, null})).Count()}}, - {"g_V_hasXage_withinX27_29X_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Within(new List<object> {27, 29})).Count()}}, - {"g_V_hasXage_withoutX27X_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Without(new List<object> {27})).Count()}}, - {"g_V_hasXage_withoutX27_29X_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Without(new List<object> {27, 29})).Count()}}, - {"g_V_hasXperson_age_withinX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person","age",P.Within(new List<object> {}))}}, - {"g_V_hasXperson_age_withoutX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person","age",P.Without(new List<object> {}))}}, - {"g_V_hasXname_containingXarkXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.Containing("ark"))}}, - {"g_V_hasXname_startingWithXmarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.StartingWith("mar"))}}, - {"g_V_hasXname_endingWithXasXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.EndingWith("as"))}}, - {"g_V_hasXperson_name_containingXoX_andXltXmXXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person","name",TextP.Containing("o").And(P.Lt("m")))}}, - {"g_V_hasXname_gtXmX_andXcontainingXoXXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",P.Gt("m").And(TextP.Containing("o")))}}, - {"g_V_hasXname_not_containingXarkXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotContaining("ark"))}}, - {"g_V_hasXname_not_startingWithXmarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotStartingWith("mar"))}}, - {"g_V_hasXname_not_endingWithXasXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotEndingWith("as"))}}, - {"g_V_hasXname_regexXrMarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.Regex("^mar"))}}, - {"g_V_hasXname_notRegexXrMarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",TextP.NotRegex("^mar"))}}, - {"g_V_hasXname_regexXTinkerXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("software").Property("name","Apache TinkerPop\u00A9"), (g,p) =>g.V().Has("name",TextP.Regex("Tinker")).Values<object>("name")}}, - {"g_V_hasXname_regexXTinkerUnicodeXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("software").Property("name","Apache TinkerPop\u00A9"), (g,p) =>g.V().Has("name",TextP.Regex("Tinker.*\u00A9")).Values<object>("name")}}, - {"g_V_hasXp_neqXvXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("p",P.Neq("v"))}}, - {"g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Gt(18).And(P.Lt(30)).Or(P.Gt(35)))}}, - {"g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age",P.Gt(18).And(P.Lt(30)).And(P.Lt(35)))}}, - {"g_V_hasXk_withinXcXX_valuesXkX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().Property("k","\u8F49\u6CE8").AddV().Property("k","\u2726").AddV().Property("k","\u2660").AddV().Property("k","A"), (g,p) =>g.V().Has("k",P.Within(new List<object> {"\u8F49\u6CE8", "\u2726", "\u2660"})).Values<object>("k")}}, + {"g_V_hasXage_withinX27X_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age", P.Within(27)).Count()}}, + {"g_V_hasXage_withinX27_nullX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age", P.Within(27, null)).Count()}}, + {"g_V_hasXage_withinX27_29X_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age", P.Within(27, 29)).Count()}}, + {"g_V_hasXage_withoutX27X_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age", P.Without(27)).Count()}}, + {"g_V_hasXage_withoutX27_29X_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age", P.Without(27, 29)).Count()}}, + {"g_V_hasXperson_age_withinX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person", "age", P.Within())}}, + {"g_V_hasXperson_age_withoutX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person", "age", P.Without())}}, + {"g_V_hasXname_containingXarkXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", TextP.Containing("ark"))}}, + {"g_V_hasXname_startingWithXmarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", TextP.StartingWith("mar"))}}, + {"g_V_hasXname_endingWithXasXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", TextP.EndingWith("as"))}}, + {"g_V_hasXperson_name_containingXoX_andXltXmXXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("person", "name", TextP.Containing("o").And(P.Lt("m")))}}, + {"g_V_hasXname_gtXmX_andXcontainingXoXXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", P.Gt("m").And(TextP.Containing("o")))}}, + {"g_V_hasXname_not_containingXarkXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", TextP.NotContaining("ark"))}}, + {"g_V_hasXname_not_startingWithXmarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", TextP.NotStartingWith("mar"))}}, + {"g_V_hasXname_not_endingWithXasXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", TextP.NotEndingWith("as"))}}, + {"g_V_hasXname_regexXrMarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", TextP.Regex("^mar"))}}, + {"g_V_hasXname_notRegexXrMarXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", TextP.NotRegex("^mar"))}}, + {"g_V_hasXname_regexXTinkerXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("software").Property("name", "Apache TinkerPop©"), (g,p) =>g.V().Has("name", TextP.Regex("Tinker")).Values<object>("name")}}, + {"g_V_hasXname_regexXTinkerUnicodeXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV("software").Property("name", "Apache TinkerPop©"), (g,p) =>g.V().Has("name", TextP.Regex("Tinker.*\u00A9")).Values<object>("name")}}, + {"g_V_hasXp_neqXvXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("p", P.Neq("v"))}}, + {"g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age", P.Gt(18).And(P.Lt(30)).Or(P.Gt(35)))}}, + {"g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("age", P.Gt(18).And(P.Lt(30)).And(P.Lt(35)))}}, + {"g_V_hasXk_withinXcXX_valuesXkX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV().Property("k", "轉注").AddV().Property("k", "✦").AddV().Property("k", "♠").AddV().Property("k", "A"), (g,p) =>g.V().Has("k", P.Within("轉注", "✦", "♠")).Values<object>("k")}}, {"g_V_hasXnullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has(null)}}, - {"g_V_hasXnull_testnullkeyX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has((string)null,"test-null-key")}}, + {"g_V_hasXnull_testnullkeyX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has((string) null, "test-null-key")}}, {"g_E_hasXnullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().Has(null)}}, - {"g_V_hasXlabel_personX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has(T.Label,"person")}}, - {"g_V_hasXlabel_eqXpersonXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has(T.Label,P.Eq("person"))}}, - {"g_V_hasXlabel_isXpersonXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has(T.Label,__.Is("person"))}}, - {"g_V_hasXname_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name",(object) null)}}, + {"g_V_hasXlabel_personX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has(T.Label, "person")}}, + {"g_V_hasXlabel_eqXpersonXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has(T.Label, P.Eq("person"))}}, + {"g_V_hasXname_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("name", (object) null)}}, {"g_V_hasIdXemptyX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["xx1"]).Count()}}, - {"g_V_hasIdXwithinXemptyXX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["xx1"]).Count()}}, - {"g_V_hasIdXwithoutXemptyXX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["xx1"]).Count()}}, - {"g_V_notXhasIdXwithinXemptyXXX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Not(__.HasId(p["xx1"])).Count()}}, + {"g_V_hasIdXwithinXemptyXX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(P.Within(new List<object> { })).Count()}}, + {"g_V_hasIdXwithoutXemptyXX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(P.Without(new List<object> { })).Count()}}, + {"g_V_notXhasIdXwithinXemptyXXX_count", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Not(__.HasId(P.Within(new List<object> { }))).Count()}}, {"g_V_hasIdXnullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(null)}}, {"g_V_hasIdXeqXnullXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(P.Eq(null))}}, - {"g_V_hasIdX2_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid2"],null)}}, - {"g_V_hasIdX2AsString_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid2"],null)}}, - {"g_V_hasIdX1AsString_2AsString_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid1"],p["vid2"],null)}}, - {"g_V_hasIdXnull_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(null,p["vid2"])}}, + {"g_V_hasIdX2_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid2"], null)}}, + {"g_V_hasIdXmarkovar_vadasvarX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid1"], p["vid2"])}}, + {"g_V_hasIdX2AsString_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid2"], null)}}, + {"g_V_hasIdX1AsString_2AsString_nullX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid1"], p["vid2"], null)}}, + {"g_V_hasIdXnull_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(null, p["vid2"])}}, {"g_V_hasIdX1X_hasIdX2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid1"]).HasId(p["vid2"])}}, - {"g_V_in_hasIdXneqX1XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().In().HasId(p["xx1"])}}, + {"g_V_in_hasIdXneqX1XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().In().HasId(P.Neq(p["xx1"]))}}, {"g_VX1X_out_hasIdX2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().HasId(p["vid2"])}}, - {"g_VX1X_out_hasXid_2_3X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().HasId(p["vid2"],p["vid3"])}}, - {"g_VX1X_out_hasXid_2AsString_3AsStringX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().HasId(p["vid2"],p["vid3"])}}, + {"g_VX1X_out_hasXid_2_3X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().HasId(p["vid2"], p["vid3"])}}, + {"g_VX1X_out_hasXid_2AsString_3AsStringX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().HasId(p["vid2"], p["vid3"])}}, {"g_VX1AsStringX_out_hasXid_2AsStringX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().HasId(p["vid2"])}}, {"g_VX1X_out_hasXid_2_3X_inList", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().HasId(p["xx1"])}}, - {"g_V_hasXid_1_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid1"],p["vid2"])}}, + {"g_V_hasXid_1_2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["vid1"], p["vid2"])}}, {"g_V_hasXid_1_2X_inList", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasId(p["xx1"])}}, - {"g_VX1X_out_hasIdX2_listXid3_id4XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().HasId(p["vid2"],p["xx1"])}}, ++ {"g_VX1X_out_hasIdX2_listXid3_id4XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Out().HasId(p["vid2"], p["xx1"])}}, {"g_V_both_dedup_properties_hasKeyXageX_value", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Properties<object>().Dedup().HasKey("age").Value<object>()}}, {"g_V_both_properties_dedup_hasKeyXageX_hasValueXgtX30XX_value", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Both().Properties<object>().Dedup().HasKey("age").HasValue(P.Gt(30)).Value<object>(), (g,p) =>g.V().Both().Properties<object>().Dedup().HasKey("age").HasValue(P.Gt(30)).Value<object>()}}, {"g_V_bothE_properties_dedup_hasKeyXweightX_value", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().BothE().Properties<object>().Dedup().HasKey("weight").Value<object>()}}, diff --cc gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js index 0a05e0e011,b49f992762..2858d4760b --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js @@@ -385,108 -191,98 +385,109 @@@ const gremlins = g_V_bothE_properties_dedup_count: [function({g}) { return g.V().bothE().properties().dedup().count() }], g_V_both_properties_dedup_count: [function({g}) { return g.V().both().properties().dedup().count() }], g_V_both_properties_properties_dedup_count: [function({g}) { return g.V().both().properties().properties().dedup().count() }], - g_V_order_byXname_descX_barrier_dedup_age_name: [function({g}) { return g.V().order().by("name",Order.desc).barrier().dedup().by("age").values("name") }], - g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().order().by("name",Order.desc).barrier().dedup().by("age").values("name") }], + g_V_order_byXname_descX_barrier_dedup_age_name: [function({g}) { return g.V().order().by("name", Order.desc).barrier().dedup().by("age").values("name") }], + g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name: [function({g}) { return g.withStrategies(new ProductiveByStrategy()).V().order().by("name", Order.desc).barrier().dedup().by("age").values("name") }], g_V_both_dedup_age_name: [function({g}) { return g.V().both().dedup().by("age").values("name") }], - g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name: [function({g, vid1}) { return g.V(vid1).as("a").both().as("b").both().as("c").dedup("a","b").by("age").select("a","b","c").by("name") }], + g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name: [function({g, vid1}) { return g.V(vid1).as("a").both().as("b").both().as("c").dedup("a", "b").by("age").select("a", "b", "c").by("name") }], g_VX1X_valuesXageX_dedupXlocalX_unfold: [function({g, vid1}) { return g.V(vid1).values("age").dedup(Scope.local).unfold() }], - g_V_properties_dedup_count: [function({g}) { return g.addV("person").property("name","josh").addV("person").property("name","josh").addV("person").property("name","josh") }, function({g}) { return g.V().properties("name").dedup().count() }], - g_V_properties_dedup_byXvalueX_count: [function({g}) { return g.addV("person").property("name","josh").addV("person").property("name","josh").addV("person").property("name","josh") }, function({g}) { return g.V().properties("name").dedup().by(T.value).count() }], + g_V_properties_dedup_count: [function({g}) { return g.addV("person").property("name", "josh").addV("person").property("name", "josh").addV("person").property("name", "josh") }, function({g}) { return g.V().properties("name").dedup().count() }], + g_V_properties_dedup_byXvalueX_count: [function({g}) { return g.addV("person").property("name", "josh").addV("person").property("name", "josh").addV("person").property("name", "josh") }, function({g}) { return g.V().properties("name").dedup().by(T.value).count() }], + g_V_both_hasXlabel_softwareX_dedup_byXlangX_byXnameX_name: [function({g}) { return g.V().both().has(T.label, "software").dedup().by("lang").by("name").values("name") }], + g_V_count_discard: [function({g}) { return g.V().count().discard() }], + g_V_hasLabelXpersonX_discard: [function({g}) { return g.V().hasLabel("person").discard() }], + g_VX1X_outXcreatedX_discard: [function({g, vid1}) { return g.V(vid1).out("created").discard() }], + g_V_discard: [function({g}) { return g.V().discard() }], + g_V_discard_discard: [function({g}) { return g.V().discard().discard() }], + g_V_discard_fold: [function({g}) { return g.V().discard().fold() }], + g_V_discard_fold_discard: [function({g}) { return g.V().discard().fold().discard() }], + g_V_discard_fold_constantX1X: [function({g}) { return g.V().discard().fold().constant(1) }], + g_V_projectXxX_byXcoalesceXage_isXgtX29XX_discardXX_selectXxX: [function({g}) { return g.V().project("x").by(__.coalesce(__.values("age").is(P.gt(29)), __.discard())).select("x") }], g_V_drop: [function({g}) { return g.addV().as("a").addV().as("b").addE("knows").to("a") }, function({g}) { return g.V().drop() }, function({g}) { return g.V() }, function({g}) { return g.E() }], g_V_outE_drop: [function({g}) { return g.addV().as("a").addV().as("b").addE("knows").to("a") }, function({g}) { return g.V().outE().drop() }, function({g}) { return g.V() }, function({g}) { return g.E() }], - g_V_properties_drop: [function({g}) { return g.addV().property("name","bob").addV().property("name","alice") }, function({g}) { return g.V().properties().drop() }, function({g}) { return g.V() }, function({g}) { return g.V().properties() }], - g_E_propertiesXweightX_drop: [function({g}) { 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("pete [...] - g_V_properties_propertiesXstartTimeX_drop: [function({g}) { return g.addV().property("name","bob").property(Cardinality.list,"location","ny","startTime",2014,"endTime",2016).property(Cardinality.list,"location","va","startTime",2016).addV().property("name","alice").property(Cardinality.list,"location","va","startTime",2014,"endTime",2016).property(Cardinality.list,"location","ny","startTime",2016) }, function({g}) { return g.V().properties().properties("startTime").drop() }, functio [...] - g_V_filterXfalseX: [function({g, pred1}) { return g.V().filter(pred1) }], - g_V_filterXtrueX: [function({g, pred1}) { return g.V().filter(pred1) }], - g_V_filterXlang_eq_javaX: [function({g, pred1}) { return g.V().filter(pred1) }], - g_VX1X_filterXage_gt_30X: [function({g, vid1, pred1}) { return g.V(vid1).filter(pred1) }], - g_VX2X_filterXage_gt_30X: [function({g, vid2, pred1}) { return g.V(vid2).filter(pred1) }], - g_VX1X_out_filterXage_gt_30X: [function({g, vid1, pred1}) { return g.V(vid1).out().filter(pred1) }], - g_V_filterXname_startsWith_m_OR_name_startsWith_pX: [function({g, pred1}) { return g.V().filter(pred1) }], - g_E_filterXfalseX: [function({g, pred1}) { return g.E().filter(pred1) }], - g_E_filterXtrueX: [function({g, pred1}) { return g.E().filter(pred1) }], - g_V_outXcreatedX_hasXname__mapXlengthX_isXgtX3XXX_name: [function({g, l1}) { return g.V().out("created").has("name",__.map(l1).is(P.gt(3))).values("name") }], + g_V_properties_drop: [function({g}) { return g.addV().property("name", "bob").addV().property("name", "alice") }, function({g}) { return g.V().properties().drop() }, function({g}) { return g.V() }, function({g}) { return g.V().properties() }], + g_E_propertiesXweightX_drop: [function({g}) { 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", [...] + g_V_properties_propertiesXstartTimeX_drop: [function({g}) { return g.addV().property("name", "bob").property(Cardinality.list, "location", "ny", "startTime", 2014, "endTime", 2016).property(Cardinality.list, "location", "va", "startTime", 2016).addV().property("name", "alice").property(Cardinality.list, "location", "va", "startTime", 2014, "endTime", 2016).property(Cardinality.list, "location", "ny", "startTime", 2016) }, function({g}) { return g.V().properties().properties("startTi [...] + g_V_filterXisX0XX: [function({g}) { return g.V().filter(__.is(0)) }], + g_V_filterXconstantX0XX: [function({g}) { return g.V().filter(__.constant(0)) }], + g_V_filterXhasXlang_javaXX: [function({g}) { return g.V().filter(__.has("lang", "java")) }], + g_VX1X_filterXhasXage_gtX30XXX: [function({g, vid1}) { return g.V(vid1).filter(__.has("age", P.gt(30))) }], + g_VX2X_filterXhasXage_gtX30XXX: [function({g, vid2}) { return g.V(vid2).filter(__.has("age", P.gt(30))) }], + g_VX1X_out_filterXhasXage_gtX30XXX: [function({g, vid1}) { return g.V(vid1).out().filter(__.has("age", P.gt(30))) }], + g_V_filterXhasXname_startingWithXm_or_pXX: [function({g}) { return g.V().filter(__.has("name", TextP.startingWith("m").or(TextP.startingWith("p")))) }], + g_E_filterXisX0XX: [function({g}) { return g.E().filter(__.is(0)) }], + g_E_filterXconstantX0XX: [function({g}) { return g.E().filter(__.constant(0)) }], g_VX1X_hasXnameX: [function({g, vid1}) { return g.V(vid1).has("name") }], g_VX1X_hasXcircumferenceX: [function({g, vid1}) { return g.V(vid1).has("circumference") }], - g_VX1X_hasXname_markoX: [function({g, vid1}) { return g.V(vid1).has("name","marko") }], - g_VX2X_hasXname_markoX: [function({g, vid1}) { return g.V(vid1).has("name","marko") }], - g_V_hasXname_markoX: [function({g}) { return g.V().has("name","marko") }], - g_V_hasXname_blahX: [function({g}) { return g.V().has("name","blah") }], - g_V_hasXage_gt_30X: [function({g}) { return g.V().has("age",P.gt(30)) }], - g_V_hasXage_isXgt_30XX: [function({g}) { return g.V().has("age",__.is(P.gt(30))) }], - g_V_hasXlabel_isXsoftwareXX: [function({g}) { return g.V().has(T.label,__.is("software")) }], - g_VX1X_hasXage_gt_30X: [function({g, vid1}) { return g.V(vid1).has("age",P.gt(30)) }], - g_VX4X_hasXage_gt_30X: [function({g, vid4}) { return g.V(vid4).has("age",P.gt(30)) }], - g_VXv1X_hasXage_gt_30X: [function({g, v1}) { return g.V(v1).has("age",P.gt(30)) }], - g_VXv4X_hasXage_gt_30X: [function({g, v4}) { return g.V(v4).has("age",P.gt(30)) }], - g_VX1X_out_hasXid_2X: [function({g, v2}) { return g.V(v2).has("age",P.gt(30)) }], + g_VX1X_hasXname_markoX: [function({g, vid1}) { return g.V(vid1).has("name", "marko") }], + g_VX1X_hasXname_markovarX: [function({g, xx1, vid1}) { return g.V(vid1).has("name", xx1) }], + g_VX2X_hasXname_markoX: [function({g, vid1}) { return g.V(vid1).has("name", "marko") }], + g_V_hasXname_markoX: [function({g}) { return g.V().has("name", "marko") }], + g_V_hasXname_blahX: [function({g}) { return g.V().has("name", "blah") }], + g_V_hasXage_gt_30X: [function({g}) { return g.V().has("age", P.gt(30)) }], + g_VX1X_hasXage_gt_30X: [function({g, vid1}) { return g.V(vid1).has("age", P.gt(30)) }], + g_V_hasXpersonvar_age_gt_30X: [function({g, xx1}) { return g.V().has(xx1, "age", P.gt(30)) }], + g_VX4X_hasXage_gt_30X: [function({g, vid4}) { return g.V(vid4).has("age", P.gt(30)) }], + g_VXv1X_hasXage_gt_30X: [function({g, vid1}) { return g.V(vid1).has("age", P.gt(30)) }], + g_VXv4X_hasXage_gt_30X: [function({g, vid4}) { return g.V(vid4).has("age", P.gt(30)) }], + g_VX1X_out_hasXid_2X: [function({g, vid2}) { return g.V(vid2).has("age", P.gt(30)) }], g_V_hasXblahX: [function({g}) { return g.V().has("blah") }], - g_V_hasXperson_name_markoX_age: [function({g}) { return g.V().has("person","name","marko").values("age") }], - g_VX1X_outE_hasXweight_inside_0_06X_inV: [function({g, vid1}) { return g.V(vid1).outE().has("weight",P.gt(0.0).and(P.lt(0.6))).inV() }], - g_EX11X_outV_outE_hasXid_10X: [function({g, eid11, eid10}) { return g.E(eid11).outV().outE().has(T.id,eid10) }], - g_EX11X_outV_outE_hasXid_10AsStringX: [function({g, eid11, eid10}) { return g.E(eid11).outV().outE().has(T.id,eid10) }], + g_V_hasXperson_name_markoX_age: [function({g}) { return g.V().has("person", "name", "marko").values("age") }], + g_V_hasXperson_name_markovarX_age: [function({g, xx1}) { return g.V().has("person", "name", xx1).values("age") }], + g_V_hasXpersonvar_name_markoX_age: [function({g, xx1}) { return g.V().has(xx1, "name", "marko").values("age") }], + g_VX1X_outE_hasXweight_inside_0_06X_inV: [function({g, vid1}) { return g.V(vid1).outE().has("weight", P.inside(0.0, 0.6)).inV() }], + g_EX11X_outV_outE_hasXid_10X: [function({g, eid11, eid10}) { return g.E(eid11).outV().outE().has(T.id, eid10) }], + g_EX11X_outV_outE_hasXid_10AsStringX: [function({g, eid11, eid10}) { return g.E(eid11).outV().outE().has(T.id, eid10) }], g_V_hasXlocationX: [function({g}) { return g.V().has("location") }], - g_V_hasXage_withinX27X_count: [function({g}) { return g.V().has("age",P.within([27])).count() }], - g_V_hasXage_withinX27_nullX_count: [function({g}) { return g.V().has("age",P.within([27, null])).count() }], - g_V_hasXage_withinX27_29X_count: [function({g}) { return g.V().has("age",P.within([27, 29])).count() }], - g_V_hasXage_withoutX27X_count: [function({g}) { return g.V().has("age",P.without([27])).count() }], - g_V_hasXage_withoutX27_29X_count: [function({g}) { return g.V().has("age",P.without([27, 29])).count() }], - g_V_hasXperson_age_withinX: [function({g}) { return g.V().has("person","age",P.within([])) }], - g_V_hasXperson_age_withoutX: [function({g}) { return g.V().has("person","age",P.without([])) }], - g_V_hasXname_containingXarkXX: [function({g}) { return g.V().has("name",TextP.containing("ark")) }], - g_V_hasXname_startingWithXmarXX: [function({g}) { return g.V().has("name",TextP.startingWith("mar")) }], - g_V_hasXname_endingWithXasXX: [function({g}) { return g.V().has("name",TextP.endingWith("as")) }], - g_V_hasXperson_name_containingXoX_andXltXmXXX: [function({g}) { return g.V().has("person","name",TextP.containing("o").and(P.lt("m"))) }], - g_V_hasXname_gtXmX_andXcontainingXoXXX: [function({g}) { return g.V().has("name",P.gt("m").and(TextP.containing("o"))) }], - g_V_hasXname_not_containingXarkXX: [function({g}) { return g.V().has("name",TextP.notContaining("ark")) }], - g_V_hasXname_not_startingWithXmarXX: [function({g}) { return g.V().has("name",TextP.notStartingWith("mar")) }], - g_V_hasXname_not_endingWithXasXX: [function({g}) { return g.V().has("name",TextP.notEndingWith("as")) }], - g_V_hasXname_regexXrMarXX: [function({g}) { return g.V().has("name",TextP.regex("^mar")) }], - g_V_hasXname_notRegexXrMarXX: [function({g}) { return g.V().has("name",TextP.notRegex("^mar")) }], - g_V_hasXname_regexXTinkerXX: [function({g}) { return g.addV("software").property("name","Apache TinkerPop\u00A9") }, function({g}) { return g.V().has("name",TextP.regex("Tinker")).values("name") }], - g_V_hasXname_regexXTinkerUnicodeXX: [function({g}) { return g.addV("software").property("name","Apache TinkerPop\u00A9") }, function({g}) { return g.V().has("name",TextP.regex("Tinker.*\u00A9")).values("name") }], - g_V_hasXp_neqXvXX: [function({g}) { return g.V().has("p",P.neq("v")) }], - g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).or(P.gt(35))) }], - g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX: [function({g}) { return g.V().has("age",P.gt(18).and(P.lt(30)).and(P.lt(35))) }], - g_V_hasXk_withinXcXX_valuesXkX: [function({g}) { return g.addV().property("k","\u8F49\u6CE8").addV().property("k","\u2726").addV().property("k","\u2660").addV().property("k","A") }, function({g}) { return g.V().has("k",P.within(["\u8F49\u6CE8", "\u2726", "\u2660"])).values("k") }], + g_V_hasXage_withinX27X_count: [function({g}) { return g.V().has("age", P.within(27)).count() }], + g_V_hasXage_withinX27_nullX_count: [function({g}) { return g.V().has("age", P.within(27, null)).count() }], + g_V_hasXage_withinX27_29X_count: [function({g}) { return g.V().has("age", P.within(27, 29)).count() }], + g_V_hasXage_withoutX27X_count: [function({g}) { return g.V().has("age", P.without(27)).count() }], + g_V_hasXage_withoutX27_29X_count: [function({g}) { return g.V().has("age", P.without(27, 29)).count() }], + g_V_hasXperson_age_withinX: [function({g}) { return g.V().has("person", "age", P.within()) }], + g_V_hasXperson_age_withoutX: [function({g}) { return g.V().has("person", "age", P.without()) }], + g_V_hasXname_containingXarkXX: [function({g}) { return g.V().has("name", TextP.containing("ark")) }], + g_V_hasXname_startingWithXmarXX: [function({g}) { return g.V().has("name", TextP.startingWith("mar")) }], + g_V_hasXname_endingWithXasXX: [function({g}) { return g.V().has("name", TextP.endingWith("as")) }], + g_V_hasXperson_name_containingXoX_andXltXmXXX: [function({g}) { return g.V().has("person", "name", TextP.containing("o").and(P.lt("m"))) }], + g_V_hasXname_gtXmX_andXcontainingXoXXX: [function({g}) { return g.V().has("name", P.gt("m").and(TextP.containing("o"))) }], + g_V_hasXname_not_containingXarkXX: [function({g}) { return g.V().has("name", TextP.notContaining("ark")) }], + g_V_hasXname_not_startingWithXmarXX: [function({g}) { return g.V().has("name", TextP.notStartingWith("mar")) }], + g_V_hasXname_not_endingWithXasXX: [function({g}) { return g.V().has("name", TextP.notEndingWith("as")) }], + g_V_hasXname_regexXrMarXX: [function({g}) { return g.V().has("name", TextP.regex("^mar")) }], + g_V_hasXname_notRegexXrMarXX: [function({g}) { return g.V().has("name", TextP.notRegex("^mar")) }], + g_V_hasXname_regexXTinkerXX: [function({g}) { return g.addV("software").property("name", "Apache TinkerPop©") }, function({g}) { return g.V().has("name", TextP.regex("Tinker")).values("name") }], + g_V_hasXname_regexXTinkerUnicodeXX: [function({g}) { return g.addV("software").property("name", "Apache TinkerPop©") }, function({g}) { return g.V().has("name", TextP.regex("Tinker.*\u00A9")).values("name") }], + g_V_hasXp_neqXvXX: [function({g}) { return g.V().has("p", P.neq("v")) }], + g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX: [function({g}) { return g.V().has("age", P.gt(18).and(P.lt(30)).or(P.gt(35))) }], + g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX: [function({g}) { return g.V().has("age", P.gt(18).and(P.lt(30)).and(P.lt(35))) }], + g_V_hasXk_withinXcXX_valuesXkX: [function({g}) { return g.addV().property("k", "轉注").addV().property("k", "✦").addV().property("k", "♠").addV().property("k", "A") }, function({g}) { return g.V().has("k", P.within("轉注", "✦", "♠")).values("k") }], g_V_hasXnullX: [function({g}) { return g.V().has(null) }], - g_V_hasXnull_testnullkeyX: [function({g}) { return g.V().has(null,"test-null-key") }], + g_V_hasXnull_testnullkeyX: [function({g}) { return g.V().has(null, "test-null-key") }], g_E_hasXnullX: [function({g}) { return g.E().has(null) }], - g_V_hasXlabel_personX: [function({g}) { return g.V().has(T.label,"person") }], - g_V_hasXlabel_eqXpersonXX: [function({g}) { return g.V().has(T.label,P.eq("person")) }], - g_V_hasXlabel_isXpersonXX: [function({g}) { return g.V().has(T.label,__.is("person")) }], - g_V_hasXname_nullX: [function({g}) { return g.V().has("name",null) }], + g_V_hasXlabel_personX: [function({g}) { return g.V().has(T.label, "person") }], + g_V_hasXlabel_eqXpersonXX: [function({g}) { return g.V().has(T.label, P.eq("person")) }], + g_V_hasXname_nullX: [function({g}) { return g.V().has("name", null) }], g_V_hasIdXemptyX_count: [function({g, xx1}) { return g.V().hasId(xx1).count() }], - g_V_hasIdXwithinXemptyXX_count: [function({g, xx1}) { return g.V().hasId(xx1).count() }], - g_V_hasIdXwithoutXemptyXX_count: [function({g, xx1}) { return g.V().hasId(xx1).count() }], - g_V_notXhasIdXwithinXemptyXXX_count: [function({g, xx1}) { return g.V().not(__.hasId(xx1)).count() }], + g_V_hasIdXwithinXemptyXX_count: [function({g}) { return g.V().hasId(P.within([])).count() }], + g_V_hasIdXwithoutXemptyXX_count: [function({g}) { return g.V().hasId(P.without([])).count() }], + g_V_notXhasIdXwithinXemptyXXX_count: [function({g}) { return g.V().not(__.hasId(P.within([]))).count() }], g_V_hasIdXnullX: [function({g}) { return g.V().hasId(null) }], g_V_hasIdXeqXnullXX: [function({g}) { return g.V().hasId(P.eq(null)) }], - g_V_hasIdX2_nullX: [function({g, vid2}) { return g.V().hasId(vid2,null) }], - g_V_hasIdX2AsString_nullX: [function({g, vid2}) { return g.V().hasId(vid2,null) }], - g_V_hasIdX1AsString_2AsString_nullX: [function({g, vid2, vid1}) { return g.V().hasId(vid1,vid2,null) }], - g_V_hasIdXnull_2X: [function({g, vid2}) { return g.V().hasId(null,vid2) }], + g_V_hasIdX2_nullX: [function({g, vid2}) { return g.V().hasId(vid2, null) }], + g_V_hasIdXmarkovar_vadasvarX: [function({g, vid2, vid1}) { return g.V().hasId(vid1, vid2) }], + g_V_hasIdX2AsString_nullX: [function({g, vid2}) { return g.V().hasId(vid2, null) }], + g_V_hasIdX1AsString_2AsString_nullX: [function({g, vid2, vid1}) { return g.V().hasId(vid1, vid2, null) }], + g_V_hasIdXnull_2X: [function({g, vid2}) { return g.V().hasId(null, vid2) }], g_V_hasIdX1X_hasIdX2X: [function({g, vid2, vid1}) { return g.V().hasId(vid1).hasId(vid2) }], - g_V_in_hasIdXneqX1XX: [function({g, xx1}) { return g.V().in_().hasId(xx1) }], + g_V_in_hasIdXneqX1XX: [function({g, xx1}) { return g.V().in_().hasId(P.neq(xx1)) }], g_VX1X_out_hasIdX2X: [function({g, vid2, vid1}) { return g.V(vid1).out().hasId(vid2) }], - g_VX1X_out_hasXid_2_3X: [function({g, vid3, vid2, vid1}) { return g.V(vid1).out().hasId(vid2,vid3) }], - g_VX1X_out_hasXid_2AsString_3AsStringX: [function({g, vid3, vid2, vid1}) { return g.V(vid1).out().hasId(vid2,vid3) }], + g_VX1X_out_hasXid_2_3X: [function({g, vid3, vid2, vid1}) { return g.V(vid1).out().hasId(vid2, vid3) }], + g_VX1X_out_hasXid_2AsString_3AsStringX: [function({g, vid3, vid2, vid1}) { return g.V(vid1).out().hasId(vid2, vid3) }], g_VX1AsStringX_out_hasXid_2AsStringX: [function({g, vid2, vid1}) { return g.V(vid1).out().hasId(vid2) }], g_VX1X_out_hasXid_2_3X_inList: [function({g, xx1, vid1}) { return g.V(vid1).out().hasId(xx1) }], - g_V_hasXid_1_2X: [function({g, vid2, vid1}) { return g.V().hasId(vid1,vid2) }], + g_V_hasXid_1_2X: [function({g, vid2, vid1}) { return g.V().hasId(vid1, vid2) }], g_V_hasXid_1_2X_inList: [function({g, xx1}) { return g.V().hasId(xx1) }], - g_VX1X_out_hasIdX2_listXid3_id4XX: [function({g, xx1, vid2, vid1}) { return g.V(vid1).out().hasId(vid2,xx1) }], ++ g_VX1X_out_hasIdX2_listXid3_id4XX: [function({g, xx1, vid2, vid1}) { return g.V(vid1).out().hasId(vid2, xx1) }], g_V_both_dedup_properties_hasKeyXageX_value: [function({g}) { return g.V().both().properties().dedup().hasKey("age").value() }], g_V_both_properties_dedup_hasKeyXageX_hasValueXgtX30XX_value: [function({g}) { return g.V().both().properties().dedup().hasKey("age").hasValue(P.gt(30)).value() }, function({g}) { return g.V().both().properties().dedup().hasKey("age").hasValue(P.gt(30)).value() }], g_V_bothE_properties_dedup_hasKeyXweightX_value: [function({g}) { return g.V().bothE().properties().dedup().hasKey("weight").value() }], diff --cc gremlin-python/src/main/python/tests/feature/gremlin.py index 5be980433c,22e51e7b4b..c9ca7ebd30 --- a/gremlin-python/src/main/python/tests/feature/gremlin.py +++ b/gremlin-python/src/main/python/tests/feature/gremlin.py @@@ -357,108 -173,98 +357,109 @@@ world.gremlins = 'g_V_bothE_properties_dedup_count': [(lambda g:g.V().both_e().properties().dedup().count())], 'g_V_both_properties_dedup_count': [(lambda g:g.V().both().properties().dedup().count())], 'g_V_both_properties_properties_dedup_count': [(lambda g:g.V().both().properties().properties().dedup().count())], - 'g_V_order_byXname_descX_barrier_dedup_age_name': [(lambda g:g.V().order().by('name',Order.desc).barrier().dedup().by('age').name)], - 'g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name': [(lambda g:g.with_strategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().order().by('name',Order.desc).barrier().dedup().by('age').name)], - 'g_V_both_dedup_age_name': [(lambda g:g.V().both().dedup().by('age').name)], - 'g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name': [(lambda g, vid1=None:g.V(vid1).as_('a').both().as_('b').both().as_('c').dedup('a','b').by('age').select('a','b','c').by('name'))], - 'g_VX1X_valuesXageX_dedupXlocalX_unfold': [(lambda g, vid1=None:g.V(vid1).age.dedup(Scope.local).unfold())], - 'g_V_properties_dedup_count': [(lambda g:g.add_v('person').property('name','josh').add_v('person').property('name','josh').add_v('person').property('name','josh')), (lambda g:g.V().properties('name').dedup().count())], - 'g_V_properties_dedup_byXvalueX_count': [(lambda g:g.add_v('person').property('name','josh').add_v('person').property('name','josh').add_v('person').property('name','josh')), (lambda g:g.V().properties('name').dedup().by(T.value).count())], + 'g_V_order_byXname_descX_barrier_dedup_age_name': [(lambda g:g.V().order().by('name', Order.desc).barrier().dedup().by('age').values('name'))], + 'g_withStrategiesXProductiveByStrategyX_V_order_byXname_descX_barrier_dedup_age_name': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().order().by('name', Order.desc).barrier().dedup().by('age').values('name'))], + 'g_V_both_dedup_age_name': [(lambda g:g.V().both().dedup().by('age').values('name'))], + 'g_VX1X_asXaX_both_asXbX_both_asXcX_dedupXa_bX_age_selectXa_b_cX_name': [(lambda g, vid1=None:g.V(vid1).as_('a').both().as_('b').both().as_('c').dedup('a', 'b').by('age').select('a', 'b', 'c').by('name'))], + 'g_VX1X_valuesXageX_dedupXlocalX_unfold': [(lambda g, vid1=None:g.V(vid1).values('age').dedup(Scope.local).unfold())], + 'g_V_properties_dedup_count': [(lambda g:g.add_v('person').property('name', 'josh').add_v('person').property('name', 'josh').add_v('person').property('name', 'josh')), (lambda g:g.V().properties('name').dedup().count())], + 'g_V_properties_dedup_byXvalueX_count': [(lambda g:g.add_v('person').property('name', 'josh').add_v('person').property('name', 'josh').add_v('person').property('name', 'josh')), (lambda g:g.V().properties('name').dedup().by(T.value).count())], + 'g_V_both_hasXlabel_softwareX_dedup_byXlangX_byXnameX_name': [(lambda g:g.V().both().has(T.label, 'software').dedup().by('lang').by('name').values('name'))], + 'g_V_count_discard': [(lambda g:g.V().count().discard())], + 'g_V_hasLabelXpersonX_discard': [(lambda g:g.V().has_label('person').discard())], + 'g_VX1X_outXcreatedX_discard': [(lambda g, vid1=None:g.V(vid1).out('created').discard())], + 'g_V_discard': [(lambda g:g.V().discard())], + 'g_V_discard_discard': [(lambda g:g.V().discard().discard())], + 'g_V_discard_fold': [(lambda g:g.V().discard().fold())], + 'g_V_discard_fold_discard': [(lambda g:g.V().discard().fold().discard())], + 'g_V_discard_fold_constantX1X': [(lambda g:g.V().discard().fold().constant(1))], + 'g_V_projectXxX_byXcoalesceXage_isXgtX29XX_discardXX_selectXxX': [(lambda g:g.V().project('x').by(__.coalesce(__.values('age').is_(P.gt(29)), __.discard())).select('x'))], 'g_V_drop': [(lambda g:g.add_v().as_('a').add_v().as_('b').add_e('knows').to('a')), (lambda g:g.V().drop()), (lambda g:g.V()), (lambda g:g.E())], 'g_V_outE_drop': [(lambda g:g.add_v().as_('a').add_v().as_('b').add_e('knows').to('a')), (lambda g:g.V().out_e().drop()), (lambda g:g.V()), (lambda g:g.E())], - 'g_V_properties_drop': [(lambda g:g.add_v().property('name','bob').add_v().property('name','alice')), (lambda g:g.V().properties().drop()), (lambda g:g.V()), (lambda g:g.V().properties())], - 'g_E_propertiesXweightX_drop': [(lambda g: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_('pet [...] - 'g_V_properties_propertiesXstartTimeX_drop': [(lambda g:g.add_v().property('name','bob').property(Cardinality.list_,'location','ny','startTime',2014,'endTime',2016).property(Cardinality.list_,'location','va','startTime',2016).add_v().property('name','alice').property(Cardinality.list_,'location','va','startTime',2014,'endTime',2016).property(Cardinality.list_,'location','ny','startTime',2016)), (lambda g:g.V().properties().properties('startTime').drop()), (lambda g:g.V().properties( [...] - 'g_V_filterXfalseX': [(lambda g, pred1=None:g.V().filter_(pred1))], - 'g_V_filterXtrueX': [(lambda g, pred1=None:g.V().filter_(pred1))], - 'g_V_filterXlang_eq_javaX': [(lambda g, pred1=None:g.V().filter_(pred1))], - 'g_VX1X_filterXage_gt_30X': [(lambda g, vid1=None,pred1=None:g.V(vid1).filter_(pred1))], - 'g_VX2X_filterXage_gt_30X': [(lambda g, vid2=None,pred1=None:g.V(vid2).filter_(pred1))], - 'g_VX1X_out_filterXage_gt_30X': [(lambda g, vid1=None,pred1=None:g.V(vid1).out().filter_(pred1))], - 'g_V_filterXname_startsWith_m_OR_name_startsWith_pX': [(lambda g, pred1=None:g.V().filter_(pred1))], - 'g_E_filterXfalseX': [(lambda g, pred1=None:g.E().filter_(pred1))], - 'g_E_filterXtrueX': [(lambda g, pred1=None:g.E().filter_(pred1))], - 'g_V_outXcreatedX_hasXname__mapXlengthX_isXgtX3XXX_name': [(lambda g, l1=None:g.V().out('created').has('name',__.map(l1).is_(P.gt(3))).name)], + 'g_V_properties_drop': [(lambda g:g.add_v().property('name', 'bob').add_v().property('name', 'alice')), (lambda g:g.V().properties().drop()), (lambda g:g.V()), (lambda g:g.V().properties())], + 'g_E_propertiesXweightX_drop': [(lambda g: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', [...] + 'g_V_properties_propertiesXstartTimeX_drop': [(lambda g:g.add_v().property('name', 'bob').property(Cardinality.list_, 'location', 'ny', 'startTime', 2014, 'endTime', 2016).property(Cardinality.list_, 'location', 'va', 'startTime', 2016).add_v().property('name', 'alice').property(Cardinality.list_, 'location', 'va', 'startTime', 2014, 'endTime', 2016).property(Cardinality.list_, 'location', 'ny', 'startTime', 2016)), (lambda g:g.V().properties().properties('startTime').drop()), (lamb [...] + 'g_V_filterXisX0XX': [(lambda g:g.V().filter_(__.is_(0)))], + 'g_V_filterXconstantX0XX': [(lambda g:g.V().filter_(__.constant(0)))], + 'g_V_filterXhasXlang_javaXX': [(lambda g:g.V().filter_(__.has('lang', 'java')))], + 'g_VX1X_filterXhasXage_gtX30XXX': [(lambda g, vid1=None:g.V(vid1).filter_(__.has('age', P.gt(30))))], + 'g_VX2X_filterXhasXage_gtX30XXX': [(lambda g, vid2=None:g.V(vid2).filter_(__.has('age', P.gt(30))))], + 'g_VX1X_out_filterXhasXage_gtX30XXX': [(lambda g, vid1=None:g.V(vid1).out().filter_(__.has('age', P.gt(30))))], + 'g_V_filterXhasXname_startingWithXm_or_pXX': [(lambda g:g.V().filter_(__.has('name', TextP.starting_with('m').or_(TextP.starting_with('p')))))], + 'g_E_filterXisX0XX': [(lambda g:g.E().filter_(__.is_(0)))], + 'g_E_filterXconstantX0XX': [(lambda g:g.E().filter_(__.constant(0)))], 'g_VX1X_hasXnameX': [(lambda g, vid1=None:g.V(vid1).has('name'))], 'g_VX1X_hasXcircumferenceX': [(lambda g, vid1=None:g.V(vid1).has('circumference'))], - 'g_VX1X_hasXname_markoX': [(lambda g, vid1=None:g.V(vid1).has('name','marko'))], - 'g_VX2X_hasXname_markoX': [(lambda g, vid1=None:g.V(vid1).has('name','marko'))], - 'g_V_hasXname_markoX': [(lambda g:g.V().has('name','marko'))], - 'g_V_hasXname_blahX': [(lambda g:g.V().has('name','blah'))], - 'g_V_hasXage_gt_30X': [(lambda g:g.V().has('age',P.gt(30)))], - 'g_V_hasXage_isXgt_30XX': [(lambda g:g.V().has('age',__.is_(P.gt(30))))], - 'g_V_hasXlabel_isXsoftwareXX': [(lambda g:g.V().has(T.label,__.is_('software')))], - 'g_VX1X_hasXage_gt_30X': [(lambda g, vid1=None:g.V(vid1).has('age',P.gt(30)))], - 'g_VX4X_hasXage_gt_30X': [(lambda g, vid4=None:g.V(vid4).has('age',P.gt(30)))], - 'g_VXv1X_hasXage_gt_30X': [(lambda g, v1=None:g.V(v1).has('age',P.gt(30)))], - 'g_VXv4X_hasXage_gt_30X': [(lambda g, v4=None:g.V(v4).has('age',P.gt(30)))], - 'g_VX1X_out_hasXid_2X': [(lambda g, v2=None:g.V(v2).has('age',P.gt(30)))], + 'g_VX1X_hasXname_markoX': [(lambda g, vid1=None:g.V(vid1).has('name', 'marko'))], + 'g_VX1X_hasXname_markovarX': [(lambda g, xx1=None,vid1=None:g.V(vid1).has('name', xx1))], + 'g_VX2X_hasXname_markoX': [(lambda g, vid1=None:g.V(vid1).has('name', 'marko'))], + 'g_V_hasXname_markoX': [(lambda g:g.V().has('name', 'marko'))], + 'g_V_hasXname_blahX': [(lambda g:g.V().has('name', 'blah'))], + 'g_V_hasXage_gt_30X': [(lambda g:g.V().has('age', P.gt(30)))], + 'g_VX1X_hasXage_gt_30X': [(lambda g, vid1=None:g.V(vid1).has('age', P.gt(30)))], + 'g_V_hasXpersonvar_age_gt_30X': [(lambda g, xx1=None:g.V().has(xx1, 'age', P.gt(30)))], + 'g_VX4X_hasXage_gt_30X': [(lambda g, vid4=None:g.V(vid4).has('age', P.gt(30)))], + 'g_VXv1X_hasXage_gt_30X': [(lambda g, vid1=None:g.V(vid1).has('age', P.gt(30)))], + 'g_VXv4X_hasXage_gt_30X': [(lambda g, vid4=None:g.V(vid4).has('age', P.gt(30)))], + 'g_VX1X_out_hasXid_2X': [(lambda g, vid2=None:g.V(vid2).has('age', P.gt(30)))], 'g_V_hasXblahX': [(lambda g:g.V().has('blah'))], - 'g_V_hasXperson_name_markoX_age': [(lambda g:g.V().has('person','name','marko').age)], - 'g_VX1X_outE_hasXweight_inside_0_06X_inV': [(lambda g, vid1=None:g.V(vid1).out_e().has('weight',P.gt(float(0.0)).and_(P.lt(float(0.6)))).in_v())], - 'g_EX11X_outV_outE_hasXid_10X': [(lambda g, eid11=None,eid10=None:g.E(eid11).out_v().out_e().has(T.id_,eid10))], - 'g_EX11X_outV_outE_hasXid_10AsStringX': [(lambda g, eid11=None,eid10=None:g.E(eid11).out_v().out_e().has(T.id_,eid10))], + 'g_V_hasXperson_name_markoX_age': [(lambda g:g.V().has('person', 'name', 'marko').values('age'))], + 'g_V_hasXperson_name_markovarX_age': [(lambda g, xx1=None:g.V().has('person', 'name', xx1).values('age'))], + 'g_V_hasXpersonvar_name_markoX_age': [(lambda g, xx1=None:g.V().has(xx1, 'name', 'marko').values('age'))], + 'g_VX1X_outE_hasXweight_inside_0_06X_inV': [(lambda g, vid1=None:g.V(vid1).out_e().has('weight', P.inside(0.0, 0.6)).in_v())], + 'g_EX11X_outV_outE_hasXid_10X': [(lambda g, eid11=None,eid10=None:g.E(eid11).out_v().out_e().has(T.id_, eid10))], + 'g_EX11X_outV_outE_hasXid_10AsStringX': [(lambda g, eid11=None,eid10=None:g.E(eid11).out_v().out_e().has(T.id_, eid10))], 'g_V_hasXlocationX': [(lambda g:g.V().has('location'))], - 'g_V_hasXage_withinX27X_count': [(lambda g:g.V().has('age',P.within([27])).count())], - 'g_V_hasXage_withinX27_nullX_count': [(lambda g:g.V().has('age',P.within([27,None])).count())], - 'g_V_hasXage_withinX27_29X_count': [(lambda g:g.V().has('age',P.within([27,29])).count())], - 'g_V_hasXage_withoutX27X_count': [(lambda g:g.V().has('age',P.without([27])).count())], - 'g_V_hasXage_withoutX27_29X_count': [(lambda g:g.V().has('age',P.without([27,29])).count())], - 'g_V_hasXperson_age_withinX': [(lambda g:g.V().has('person','age',P.within([])))], - 'g_V_hasXperson_age_withoutX': [(lambda g:g.V().has('person','age',P.without([])))], - 'g_V_hasXname_containingXarkXX': [(lambda g:g.V().has('name',TextP.containing('ark')))], - 'g_V_hasXname_startingWithXmarXX': [(lambda g:g.V().has('name',TextP.startingWith('mar')))], - 'g_V_hasXname_endingWithXasXX': [(lambda g:g.V().has('name',TextP.endingWith('as')))], - 'g_V_hasXperson_name_containingXoX_andXltXmXXX': [(lambda g:g.V().has('person','name',TextP.containing('o').and_(P.lt('m'))))], - 'g_V_hasXname_gtXmX_andXcontainingXoXXX': [(lambda g:g.V().has('name',P.gt('m').and_(TextP.containing('o'))))], - 'g_V_hasXname_not_containingXarkXX': [(lambda g:g.V().has('name',TextP.notContaining('ark')))], - 'g_V_hasXname_not_startingWithXmarXX': [(lambda g:g.V().has('name',TextP.notStartingWith('mar')))], - 'g_V_hasXname_not_endingWithXasXX': [(lambda g:g.V().has('name',TextP.notEndingWith('as')))], - 'g_V_hasXname_regexXrMarXX': [(lambda g:g.V().has('name',TextP.regex('^mar')))], - 'g_V_hasXname_notRegexXrMarXX': [(lambda g:g.V().has('name',TextP.not_regex('^mar')))], - 'g_V_hasXname_regexXTinkerXX': [(lambda g:g.add_v('software').property('name','Apache TinkerPop©')), (lambda g:g.V().has('name',TextP.regex('Tinker')).name)], - 'g_V_hasXname_regexXTinkerUnicodeXX': [(lambda g:g.add_v('software').property('name','Apache TinkerPop©')), (lambda g:g.V().has('name',TextP.regex('Tinker.*©')).name)], - 'g_V_hasXp_neqXvXX': [(lambda g:g.V().has('p',P.neq('v')))], - 'g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).or_(P.gt(35))))], - 'g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX': [(lambda g:g.V().has('age',P.gt(18).and_(P.lt(30)).and_(P.lt(35))))], - 'g_V_hasXk_withinXcXX_valuesXkX': [(lambda g:g.add_v().property('k','轉注').add_v().property('k','✦').add_v().property('k','♠').add_v().property('k','A')), (lambda g:g.V().has('k',P.within(['轉注','✦','♠'])).k)], + 'g_V_hasXage_withinX27X_count': [(lambda g:g.V().has('age', P.within(27)).count())], + 'g_V_hasXage_withinX27_nullX_count': [(lambda g:g.V().has('age', P.within(27, None)).count())], + 'g_V_hasXage_withinX27_29X_count': [(lambda g:g.V().has('age', P.within(27, 29)).count())], + 'g_V_hasXage_withoutX27X_count': [(lambda g:g.V().has('age', P.without(27)).count())], + 'g_V_hasXage_withoutX27_29X_count': [(lambda g:g.V().has('age', P.without(27, 29)).count())], + 'g_V_hasXperson_age_withinX': [(lambda g:g.V().has('person', 'age', P.within()))], + 'g_V_hasXperson_age_withoutX': [(lambda g:g.V().has('person', 'age', P.without()))], + 'g_V_hasXname_containingXarkXX': [(lambda g:g.V().has('name', TextP.containing('ark')))], + 'g_V_hasXname_startingWithXmarXX': [(lambda g:g.V().has('name', TextP.starting_with('mar')))], + 'g_V_hasXname_endingWithXasXX': [(lambda g:g.V().has('name', TextP.ending_with('as')))], + 'g_V_hasXperson_name_containingXoX_andXltXmXXX': [(lambda g:g.V().has('person', 'name', TextP.containing('o').and_(P.lt('m'))))], + 'g_V_hasXname_gtXmX_andXcontainingXoXXX': [(lambda g:g.V().has('name', P.gt('m').and_(TextP.containing('o'))))], + 'g_V_hasXname_not_containingXarkXX': [(lambda g:g.V().has('name', TextP.not_containing('ark')))], + 'g_V_hasXname_not_startingWithXmarXX': [(lambda g:g.V().has('name', TextP.not_starting_with('mar')))], + 'g_V_hasXname_not_endingWithXasXX': [(lambda g:g.V().has('name', TextP.not_ending_with('as')))], + 'g_V_hasXname_regexXrMarXX': [(lambda g:g.V().has('name', TextP.regex('^mar')))], + 'g_V_hasXname_notRegexXrMarXX': [(lambda g:g.V().has('name', TextP.not_regex('^mar')))], + 'g_V_hasXname_regexXTinkerXX': [(lambda g:g.add_v('software').property('name', 'Apache TinkerPop©')), (lambda g:g.V().has('name', TextP.regex('Tinker')).values('name'))], + 'g_V_hasXname_regexXTinkerUnicodeXX': [(lambda g:g.add_v('software').property('name', 'Apache TinkerPop©')), (lambda g:g.V().has('name', TextP.regex('Tinker.*\u00A9')).values('name'))], + 'g_V_hasXp_neqXvXX': [(lambda g:g.V().has('p', P.neq('v')))], + 'g_V_hasXage_gtX18X_andXltX30XXorXgtx35XXX': [(lambda g:g.V().has('age', P.gt(18).and_(P.lt(30)).or_(P.gt(35))))], + 'g_V_hasXage_gtX18X_andXltX30XXorXltx35XXX': [(lambda g:g.V().has('age', P.gt(18).and_(P.lt(30)).and_(P.lt(35))))], + 'g_V_hasXk_withinXcXX_valuesXkX': [(lambda g:g.add_v().property('k', '轉注').add_v().property('k', '✦').add_v().property('k', '♠').add_v().property('k', 'A')), (lambda g:g.V().has('k', P.within('轉注', '✦', '♠')).values('k'))], 'g_V_hasXnullX': [(lambda g:g.V().has(None))], - 'g_V_hasXnull_testnullkeyX': [(lambda g:g.V().has(None,'test-null-key'))], + 'g_V_hasXnull_testnullkeyX': [(lambda g:g.V().has(None, 'test-null-key'))], 'g_E_hasXnullX': [(lambda g:g.E().has(None))], - 'g_V_hasXlabel_personX': [(lambda g:g.V().has(T.label,'person'))], - 'g_V_hasXlabel_eqXpersonXX': [(lambda g:g.V().has(T.label,P.eq('person')))], - 'g_V_hasXlabel_isXpersonXX': [(lambda g:g.V().has(T.label,__.is_('person')))], - 'g_V_hasXname_nullX': [(lambda g:g.V().has('name',None))], + 'g_V_hasXlabel_personX': [(lambda g:g.V().has(T.label, 'person'))], + 'g_V_hasXlabel_eqXpersonXX': [(lambda g:g.V().has(T.label, P.eq('person')))], + 'g_V_hasXname_nullX': [(lambda g:g.V().has('name', None))], 'g_V_hasIdXemptyX_count': [(lambda g, xx1=None:g.V().has_id(xx1).count())], - 'g_V_hasIdXwithinXemptyXX_count': [(lambda g, xx1=None:g.V().has_id(xx1).count())], - 'g_V_hasIdXwithoutXemptyXX_count': [(lambda g, xx1=None:g.V().has_id(xx1).count())], - 'g_V_notXhasIdXwithinXemptyXXX_count': [(lambda g, xx1=None:g.V().not_(__.has_id(xx1)).count())], + 'g_V_hasIdXwithinXemptyXX_count': [(lambda g:g.V().has_id(P.within([])).count())], + 'g_V_hasIdXwithoutXemptyXX_count': [(lambda g:g.V().has_id(P.without([])).count())], + 'g_V_notXhasIdXwithinXemptyXXX_count': [(lambda g:g.V().not_(__.has_id(P.within([]))).count())], 'g_V_hasIdXnullX': [(lambda g:g.V().has_id(None))], 'g_V_hasIdXeqXnullXX': [(lambda g:g.V().has_id(P.eq(None)))], - 'g_V_hasIdX2_nullX': [(lambda g, vid2=None:g.V().has_id(vid2,None))], - 'g_V_hasIdX2AsString_nullX': [(lambda g, vid2=None:g.V().has_id(vid2,None))], - 'g_V_hasIdX1AsString_2AsString_nullX': [(lambda g, vid2=None,vid1=None:g.V().has_id(vid1,vid2,None))], - 'g_V_hasIdXnull_2X': [(lambda g, vid2=None:g.V().has_id(None,vid2))], + 'g_V_hasIdX2_nullX': [(lambda g, vid2=None:g.V().has_id(vid2, None))], + 'g_V_hasIdXmarkovar_vadasvarX': [(lambda g, vid2=None,vid1=None:g.V().has_id(vid1, vid2))], + 'g_V_hasIdX2AsString_nullX': [(lambda g, vid2=None:g.V().has_id(vid2, None))], + 'g_V_hasIdX1AsString_2AsString_nullX': [(lambda g, vid2=None,vid1=None:g.V().has_id(vid1, vid2, None))], + 'g_V_hasIdXnull_2X': [(lambda g, vid2=None:g.V().has_id(None, vid2))], 'g_V_hasIdX1X_hasIdX2X': [(lambda g, vid2=None,vid1=None:g.V().has_id(vid1).has_id(vid2))], - 'g_V_in_hasIdXneqX1XX': [(lambda g, xx1=None:g.V().in_().has_id(xx1))], + 'g_V_in_hasIdXneqX1XX': [(lambda g, xx1=None:g.V().in_().has_id(P.neq(xx1)))], 'g_VX1X_out_hasIdX2X': [(lambda g, vid2=None,vid1=None:g.V(vid1).out().has_id(vid2))], - 'g_VX1X_out_hasXid_2_3X': [(lambda g, vid3=None,vid2=None,vid1=None:g.V(vid1).out().has_id(vid2,vid3))], - 'g_VX1X_out_hasXid_2AsString_3AsStringX': [(lambda g, vid3=None,vid2=None,vid1=None:g.V(vid1).out().has_id(vid2,vid3))], + 'g_VX1X_out_hasXid_2_3X': [(lambda g, vid3=None,vid2=None,vid1=None:g.V(vid1).out().has_id(vid2, vid3))], + 'g_VX1X_out_hasXid_2AsString_3AsStringX': [(lambda g, vid3=None,vid2=None,vid1=None:g.V(vid1).out().has_id(vid2, vid3))], 'g_VX1AsStringX_out_hasXid_2AsStringX': [(lambda g, vid2=None,vid1=None:g.V(vid1).out().has_id(vid2))], 'g_VX1X_out_hasXid_2_3X_inList': [(lambda g, xx1=None,vid1=None:g.V(vid1).out().has_id(xx1))], - 'g_V_hasXid_1_2X': [(lambda g, vid2=None,vid1=None:g.V().has_id(vid1,vid2))], + 'g_V_hasXid_1_2X': [(lambda g, vid2=None,vid1=None:g.V().has_id(vid1, vid2))], 'g_V_hasXid_1_2X_inList': [(lambda g, xx1=None:g.V().has_id(xx1))], - 'g_VX1X_out_hasIdX2_listXid3_id4XX': [(lambda g, xx1=None,vid2=None,vid1=None:g.V(vid1).out().has_id(vid2,xx1))], ++ 'g_VX1X_out_hasIdX2_listXid3_id4XX': [(lambda g, xx1=None,vid2=None,vid1=None:g.V(vid1).out().has_id(vid2, xx1))], 'g_V_both_dedup_properties_hasKeyXageX_value': [(lambda g:g.V().both().properties().dedup().has_key('age').value())], 'g_V_both_properties_dedup_hasKeyXageX_hasValueXgtX30XX_value': [(lambda g:g.V().both().properties().dedup().has_key('age').has_value(P.gt(30)).value()), (lambda g:g.V().both().properties().dedup().has_key('age').has_value(P.gt(30)).value())], 'g_V_bothE_properties_dedup_hasKeyXweightX_value': [(lambda g:g.V().both_e().properties().dedup().has_key('weight').value())],
