This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch gvalue
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit a97b66edc234883a6326861bb5f21ff4db34b0b9
Author: Stephen Mallette <[email protected]>
AuthorDate: Mon Aug 26 08:22:01 2024 -0400

    wip - translator fix for .NET
---
 .../translator/DotNetTranslateVisitor.java         | 37 ++++++++++++++++++++--
 .../language/translator/GremlinTranslatorTest.java | 20 +++++++++++-
 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 20 ++++++------
 .../gremlin-javascript/test/cucumber/gremlin.js    |  2 ++
 gremlin-python/src/main/python/radish/gremlin.py   |  2 ++
 5 files changed, 69 insertions(+), 12 deletions(-)

diff --git 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/translator/DotNetTranslateVisitor.java
 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/translator/DotNetTranslateVisitor.java
index 1dbef2042b..1a881e429c 100644
--- 
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/translator/DotNetTranslateVisitor.java
+++ 
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/translator/DotNetTranslateVisitor.java
@@ -746,10 +746,36 @@ public class DotNetTranslateVisitor extends 
AbstractTranslateVisitor {
             sb.append(")");
             return null;
         } else {
-            return super.visitTraversalMethod_hasLabel_String_String(ctx);
+            final String step = ctx.getChild(0).getText();
+            sb.append(convertToPascalCase(step));
+            sb.append("(");
+            tryAppendCastToString(ctx.stringNullableArgument());
+            visit(ctx.stringNullableArgument());
+
+            // more arguments to come
+            if (!ctx.stringLiteralVarargs().isEmpty())  sb.append(", ");
+            visit(ctx.stringLiteralVarargs());
+
+            sb.append(")");
+            return null;
         }
     }
 
+    @Override
+    public Void visitStringLiteralVarargs(final 
GremlinParser.StringLiteralVarargsContext ctx) {
+        for (int ix = 0; ix < ctx.getChildCount(); ix++) {
+            final ParseTree pt = ctx.getChild(ix);
+            if (pt instanceof GremlinParser.StringNullableArgumentContext) {
+                GremlinParser.StringNullableArgumentContext sna = 
(GremlinParser.StringNullableArgumentContext) pt;
+                tryAppendCastToString(sna);
+                visit(sna);
+            } else {
+                visit(pt);
+            }
+        };
+        return null;
+    }
+
     @Override
     public Void visitTraversalMethod_index(final 
GremlinParser.TraversalMethod_indexContext ctx) {
         return handleGenerics(ctx);
@@ -939,7 +965,8 @@ public class DotNetTranslateVisitor extends 
AbstractTranslateVisitor {
     public Void visitTraversalMethod_conjoin_String(final 
GremlinParser.TraversalMethod_conjoin_StringContext ctx) {
         final String step = ctx.getChild(0).getText();
         sb.append(convertToPascalCase(step));
-        sb.append("((string) ");
+        sb.append("(");
+        tryAppendCastToString(ctx.stringArgument());
         visit(ctx.stringArgument());
         sb.append(")");
         return null;
@@ -1160,6 +1187,12 @@ public class DotNetTranslateVisitor extends 
AbstractTranslateVisitor {
         }
     }
 
+    private void tryAppendCastToString(final 
GremlinParser.StringArgumentContext ctx) {
+        if (ctx.variable() != null || ctx.stringLiteral() != null) {
+            sb.append("(string) ");
+        }
+    }
+
     private void tryAppendCastToString(final 
GremlinParser.StringNullableArgumentContext ctx) {
         if (ctx.variable() != null || 
ctx.stringNullableLiteral().NullLiteral() != null) {
             sb.append("(string) ");
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/translator/GremlinTranslatorTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/translator/GremlinTranslatorTest.java
index 7c920f2613..919eecb664 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/translator/GremlinTranslatorTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/translator/GremlinTranslatorTest.java
@@ -724,7 +724,7 @@ public class GremlinTranslatorTest {
                     {"g.V().hasLabel(null, 'software', 'class')",
                             null,
                             "g.V().hasLabel(string0, string1, string2)",
-                            "g.V().HasLabel(null, \"software\", \"class\")",
+                            "g.V().HasLabel((string) null, \"software\", 
\"class\")",
                             "g.V().HasLabel(nil, \"software\", \"class\")",
                             "g.V().hasLabel(null, 'software', 'class')",
                             "g.V().hasLabel(null, \"software\", \"class\")",
@@ -1045,6 +1045,24 @@ public class GremlinTranslatorTest {
                             null,
                             null,
                             null},
+                    {"g.V().hasLabel(x, y)",
+                            null,
+                            null,
+                            "g.V().HasLabel((string) x, (string) y)",
+                            "g.V().HasLabel(x, y)",
+                            null,
+                            null,
+                            null,
+                            "g.V().has_label(x, y)"},
+                    {"g.V().conjoin(x)",
+                            null,
+                            null,
+                            "g.V().Conjoin((string) x)",
+                            "g.V().Conjoin(x)",
+                            null,
+                            null,
+                            null,
+                            null},
                     {"g.mergeV([name:\"alice\", 
T.label:\"person\"]).option(Merge.onCreate, [age:Cardinality.single(81)])",
                             null,
                             "g.mergeV(map0).option(Merge.onCreate, map1)",
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs 
b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index 6264b23da7..49eb11fe5d 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -292,21 +292,23 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"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>()}},
 
                
{"g_V_bothE_properties_dedup_hasKeyXweightX_hasValueXltX0d3XX_value", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().BothE().Properties<object>().Dedup().HasKey("weight").HasValue(P.Lt(0.3)).Value<object>(),
 (g,p) 
=>g.V().BothE().Properties<object>().Dedup().HasKey("weight").HasValue(P.Lt(0.3)).Value<object>()}},
 
                {"g_V_properties_hasKeyXnullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>().HasKey((string) null)}}, 
-               {"g_V_properties_hasKeyXnull_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>().HasKey(null, null)}}, 
+               {"g_V_properties_hasKeyXnull_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>().HasKey(null, (string) null)}}, 
                {"g_V_properties_hasKeyXnull_ageX_value", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>().HasKey(null, "age").Value<object>()}}, 
                {"g_E_properties_hasKeyXnullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.E().Properties<object>().HasKey((string) null)}}, 
-               {"g_E_properties_hasKeyXnull_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.E().Properties<object>().HasKey(null, null)}}, 
+               {"g_E_properties_hasKeyXnull_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.E().Properties<object>().HasKey(null, (string) null)}}, 
                {"g_E_properties_hasKeyXnull_weightX_value", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.E().Properties<object>().HasKey(null, "weight").Value<object>()}}, 
                {"g_EX7X_hasLabelXknowsX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.E(p["eid7"]).HasLabel("knows")}}, 
                {"g_E_hasLabelXknowsX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().HasLabel("knows")}}, 
                {"g_E_hasLabelXuses_traversesX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.E().HasLabel("uses", "traverses")}}, 
                {"g_V_hasLabelXperson_software_blahX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel("person", "software", "blah")}}, 
                {"g_V_hasLabelXpersonX_hasLabelXsoftwareX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel("person").HasLabel("software")}}, 
+               {"g_V_hasLabelXpersonvarX_hasLabelXsoftwareX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel((string) p["xx1"]).HasLabel("software")}}, 
+               {"g_V_hasLabelXpersonvar_softwarevarX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel((string) p["xx1"], (string) p["xx2"])}}, 
                
{"g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name",
 new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel("person").Has("age", 
P.Not(P.Lte(10).And(P.Not(P.Between(11, 
20)))).And(P.Lt(29).Or(P.Eq(35)))).Values<object>("name")}}, 
                {"g_V_hasLabelXnullX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel((string) 
null)}}, 
                {"g_V_hasXlabel_nullX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has(T.Label, (object) 
null)}}, 
-               {"g_V_hasLabelXnull_nullX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel(null, 
null)}}, 
-               {"g_V_hasLabelXnull_personX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel(null, "person")}}, 
+               {"g_V_hasLabelXnull_nullX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel((string) 
null, (string) null)}}, 
+               {"g_V_hasLabelXnull_personX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel((string) null, "person")}}, 
                {"g_E_hasLabelXnullX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().HasLabel((string) 
null)}}, 
                {"g_E_hasXlabel_nullX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.E().Has(T.Label, (object) 
null)}}, 
                {"g_V_properties_hasLabelXnullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>().HasLabel((string) null)}}, 
@@ -695,7 +697,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_injectXaX_concat_Xinject_List_b_cX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>("a").Concat(__.Inject(p["xx1"]))}}, 
                {"g_injectXListXa_bXcX_concat_XdX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>(p["xx1"], "c").Concat("d")}}, 
                {"g_injectXnullX_concat_XinjectX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>(null).Concat()}}, 
-               {"g_injectXnull_aX_concat_Xnull_bX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>(null, "a").Concat(null, "b")}}, 
+               {"g_injectXnull_aX_concat_Xnull_bX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>(null, "a").Concat((string) null, "b")}}, 
                {"g_injectXhello_hiX_concat_XV_valuesXnameXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>("hello", 
"hi").Concat(__.V().Order().By(T.Id).Values<object>("name"))}}, 
                {"g_V_hasLabel_value_concat_X_X_concat_XpersonX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel("person").Values<object>("name").Concat(" 
").Concat("person")}}, 
                
{"g_hasLabelXpersonX_valuesXnameX_asXaX_constantXMrX_concatXselectXaX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.V().HasLabel("person").Values<object>("name").As("a").Constant<object>("Mr.").Concat(__.Select<object>("a"))}},
 
@@ -798,7 +800,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_V_elementMap", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.V().ElementMap<object>()}}, 
                {"g_V_elementMapXname_ageX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().ElementMap<object>("name", "age")}}, 
                {"g_EX11X_elementMap", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.E(p["eid11"]).ElementMap<object>()}}, 
-               {"g_V_elementMapXname_age_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().ElementMap<object>("name", "age", null)}}, 
+               {"g_V_elementMapXname_age_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().ElementMap<object>("name", "age", (string) null)}}, 
                {"g_V_asXaX_flatMapXselectXaXX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().As("a").FlatMap<object>(__.Select<object>("a"))}}, 
                {"g_V_fold", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Fold()}}, 
                {"g_V_fold_unfold", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.V().Fold().Unfold<object>()}}, 
@@ -1170,8 +1172,8 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_V_hasXageX_propertiesXnameX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("age").Properties<object>("name").Value<object>()}}, 
                {"g_V_hasXageX_propertiesXname_ageX_value", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("age").Properties<object>("name", "age").Value<object>()}}, 
                {"g_V_hasXageX_propertiesXage_nameX_value", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Has("age").Properties<object>("age", "name").Value<object>()}}, 
-               {"g_V_propertiesXname_age_nullX_value", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>("name", "age", null).Value<object>()}}, 
-               {"g_V_valuesXname_age_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Values<object>("name", "age", null)}}, 
+               {"g_V_propertiesXname_age_nullX_value", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Properties<object>("name", "age", (string) 
null).Value<object>()}}, 
+               {"g_V_valuesXname_age_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().Values<object>("name", "age", (string) null)}}, 
                {"g_injectX__feature___test__nullX_rTrim", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>("feature  ", "one test ", null, "", " ", " abc", "abc 
", " abc ", "  ").RTrim()}}, 
                {"g_injectX__feature___test__nullX_rTrimXlocalX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>(new List<object> { "  feature  ", " one test ", null, 
"", " ", " abc", "abc ", " abc ", "  " }).RTrim<object>(Scope.Local)}}, 
                {"g_injectX__feature__X_rTrim", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.Inject<object>("  feature  ").RTrim()}}, 
@@ -1357,7 +1359,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
                {"g_V_hasLabelXpersonX_filterXoutEXcreatedXX_valueMapXtrueX", 
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel("person").Filter(__.OutE("created")).ValueMap<object, 
object>(true)}}, 
                
{"g_V_hasLabelXpersonX_filterXoutEXcreatedXX_valueMap_withXtokensX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().HasLabel("person").Filter(__.OutE("created")).ValueMap<object, 
object>().With(WithOptions.Tokens)}}, 
                {"g_VX1X_valueMapXname_locationX_byXunfoldX_by", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V(p["vid1"]).ValueMap<object, object>("name", 
"location").By(__.Unfold<object>()).By()}}, 
-               {"g_V_valueMapXname_age_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().ValueMap<object, object>("name", "age", null)}}, 
+               {"g_V_valueMapXname_age_nullX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().ValueMap<object, object>("name", "age", (string) null)}}, 
                {"g_V_valueMapXname_ageX_byXisXxXXbyXunfoldX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.V().ValueMap<object, object>("name", 
"age").By(__.Is("x")).By(__.Unfold<object>())}}, 
                {"g_VXnullX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(null)}}, 
                {"g_VXlistXnullXX", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["xx1"])}}, 
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 b8e81d76da..273d2b6da8 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
@@ -293,6 +293,8 @@ const gremlins = {
     g_E_hasLabelXuses_traversesX: [function({g}) { return 
g.E().hasLabel("uses", "traverses") }], 
     g_V_hasLabelXperson_software_blahX: [function({g}) { return 
g.V().hasLabel("person", "software", "blah") }], 
     g_V_hasLabelXpersonX_hasLabelXsoftwareX: [function({g}) { return 
g.V().hasLabel("person").hasLabel("software") }], 
+    g_V_hasLabelXpersonvarX_hasLabelXsoftwareX: [function({g, xx1}) { return 
g.V().hasLabel(xx1).hasLabel("software") }], 
+    g_V_hasLabelXpersonvar_softwarevarX: [function({g, xx1, xx2}) { return 
g.V().hasLabel(xx1, xx2) }], 
     
g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name:
 [function({g}) { return g.V().hasLabel("person").has("age", 
P.not(P.lte(10).and(P.not(P.between(11, 
20)))).and(P.lt(29).or(P.eq(35)))).values("name") }], 
     g_V_hasLabelXnullX: [function({g}) { return g.V().hasLabel(null) }], 
     g_V_hasXlabel_nullX: [function({g}) { return g.V().has(T.label, null) }], 
diff --git a/gremlin-python/src/main/python/radish/gremlin.py 
b/gremlin-python/src/main/python/radish/gremlin.py
index 5cddea94f5..044b366215 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -275,6 +275,8 @@ world.gremlins = {
     'g_E_hasLabelXuses_traversesX': [(lambda g:g.E().has_label('uses', 
'traverses'))], 
     'g_V_hasLabelXperson_software_blahX': [(lambda g:g.V().has_label('person', 
'software', 'blah'))], 
     'g_V_hasLabelXpersonX_hasLabelXsoftwareX': [(lambda 
g:g.V().has_label('person').has_label('software'))], 
+    'g_V_hasLabelXpersonvarX_hasLabelXsoftwareX': [(lambda g, 
xx1=None:g.V().has_label(xx1).has_label('software'))], 
+    'g_V_hasLabelXpersonvar_softwarevarX': [(lambda g, 
xx1=None,xx2=None:g.V().has_label(xx1, xx2))], 
     
'g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name':
 [(lambda g:g.V().has_label('person').has('age', 
P.not_(P.lte(10).and_(P.not_(P.between(11, 
20)))).and_(P.lt(29).or_(P.eq(35)))).values('name'))], 
     'g_V_hasLabelXnullX': [(lambda g:g.V().has_label(None))], 
     'g_V_hasXlabel_nullX': [(lambda g:g.V().has(T.label, None))], 

Reply via email to