You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2020/12/18 18:32:29 UTC
[tinkerpop] branch TINKERPOP-2451 updated (e00abdb -> c843051)
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a change to branch TINKERPOP-2451
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git.
discard e00abdb wip
add 730d349 TINKERPOP-2436 The gremlin server starts even if all graphs instantiation has failed
add b3aeea8 Merge branch 'pr-1342' into 3.4-dev
add 079cb1a A few minor fixes to #1342
add c8c37cb Merge branch '3.4-dev'
add 3707fcf Merge branch 'TINKERPOP-2443'
add ff56844 Tinkerpop-2437 Do not leave statusAttributes future dangling (#1347)
add ef09603 Merge branch '3.4-dev'
add 371f447 Minor version bumps on depenencies/plugins CTR
add 61c14e7 Merge branch '3.4-dev'
add e8e3955 gremlin.py regenerated for some reason
add 8cdcd92 TINKERPOP-2460 Made groovy provided scope for gremlin-driver
add 7f4d041 Merge branch 'TINKERPOP-2460'
add 2f5d57a Added HugeGraph to provider listings
add 9262a62 Fixed TestSupport file handling to work on windows.
add 0024651 Added some comments.
add 25364f7 Merge branch '3.4-dev'
add aea5d9a Added README for sample data files in Gremlin Server CTR
add 7325846 TINKERPOP-2462 Removed some duplication of concerns
add f64c1f9 Merge branch '3.4-dev'
add 6e47f53 Removed previously deprecated BytecodeUtil CTR
add 551e47f TINKERPOP-2470 Bumped to tornado 6.x for gremlinpython CTR
add 687d301 TINKERPOP-2469 Improved exception handling out of KdcFixture
add a6d90ea Merge branch '3.4-dev'
add 19411e2 TINKERPOP-2466 Provided more succinct syntax for withStrategies()
add c666e0b TINKERPOP-2461 Aligned CoreImports with GroovyTranslator
add 9145537 TINKERPOP-2461 Added upgrade docs
add 127821e TINKERPOP-2461 Added reference documentation for Translator
add 89529de Merge branch 'TINKERPOP-2461' into 3.4-dev
add 88704e9 Merge branch '3.4-dev'
add 6c353df Updated Gremlin Server start scripts to use revised withStrategies() syntax
add a0d35c2 Merge branch '3.4-dev'
add 70ade8c TINKERPOP-2474 Refactored withSack() script processing
add 914d21b Merge branch '3.4-dev'
add 325d772 TINKERPOP-2475 Barrier step touches one more element of next loop
add 70d2ba8 Merge branch '3.4-dev'
add 1ecd8b4 CHANGELOG update CTR
add a9aad30 Merge branch '3.4-dev'
add c6f2f59 TINKERPOP-2001 Add lambda support in gremlin-javascript
add ef6a078 Merge branch 'TINKERPOP-2001' into 3.4-dev
add cf29e58 Merge branch '3.4-dev'
add fc23fab TINKERPOP-2453 Enable websocket compression for python
add 733b33a Merge branch 'TINKERPOP-2453' into 3.4-dev
add 0c1a32f Merge branch '3.4-dev'
add 8b1faa6 Fixed some header formatting problems in upgrade docs CTR
add 5f79663 Merge branch '3.4-dev'
add 449caf6 Minor update to javadoc CTR
add 4d6538f Fixed small bug in configuration for ReservedKeysVerificationStrategy and made all configuration key tokens public
add 8273915 Merge branch '3.4-dev'
add c9b4ee7 Fixed compile error with imports after merge CTR
add 1ed50ee HasStep implements configuring
add bd75c0b add Configuring to TraversalFilterStep
add 7723585 Merge branch 'pr-1358' into 3.4-dev
add 59e5bc9 Final some member variables CTR
add f96f554 Fix compile problems with gremlin-python due to changes in third-party libraries. CTR
add b6234e2 Merge branch '3.4-dev'
add 4624355 TINKERPOP-2445 Remove unnecessary initialization of serializers (#1355)
add 43f7292 TINKERPOP-2445 Parallelize connection creation (#1360)
add 245a83d Merge branch '3.4-dev'
add 3ba50ed CTR - Fix failing build by fixing dependencies
add 8ea559e Fixed build problems after inclusion of powermock from merge from 3.4-dev
add a6ebe54 TINKERPOP-2479 Adds config/reset options to :bytecode command
add 563ac97 Merge branch 'TINKERPOP-2479' into 3.4-dev
add 8aa3c9d Merge branch '3.4-dev'
add e8c4714 Throw error from DriverRemoteConnection on connection error
add e8cb3c9 TINKERPOP-2409 added a test for expected sockerError behavior
add 37d19c7 Call reject on open promise if Websicket connection error.
add ab43b03 Call handleError before rejecting open promise on Websocket error.
add ffc3d92 Merge branch 'TINKERPOP-2409' into 3.4-dev
add 2c3ae37 Merge branch '3.4-dev'
add b4928e1 Minor format fixes to upgrade docs CTR
add 710d573 Fix stochastic nature of shouldProcessSessionRequestsInOrder (#1365)
add 6e67b3e TINKERPOP-2445 Remove quiet time when shutting down Java client (#1363)
add 6f5b558 Merge branch '3.4-dev'
add daad70b TINKERPOP-2438 Reverted a portion of #1346 which has some performance issues.
add 7fe4a8d Merge branch '3.4-dev'
add 5b1b508 Use anonymous traversal for child in test CTR
add 921171e Merge branch '3.4-dev'
add 8a55978 Fixed console test issues related to python dependencies upgrading quietly behind the scenes CTR
add c6f88be Merge branch '3.4-dev'
add 0bf3fc6 Added a new benchmark for GremlinGroovyScriptEngine. CTR
add 587bb9d Merge branch '3.4-dev'
add e242460 TINKERPOP-2482 Rename wsConnectionTimeout to connectionSetupTimeout (#1367)
add cb2007e Merge branch '3.4-dev'
add 96054b5 Added upgrade docs around java driver performance improvement CTR
add 327a97d Merge branch '3.4-dev'
add f41fa10 TINKERPOP-2438 Improved performance of GremlinASTChecker
add cb34aae Merge branch 'TINKERPOP-2438' into 3.4-dev
add 2d6f0a4 Merge branch '3.4-dev'
add d51253a Fixed broken link in upgrade docs CTR
add 79b4d5b Merge branch '3.4-dev'
add a81195d TinkerPop 3.4.9 release
add 9b16261 Hide binary files that were showing up in source distribution CTR
add 546562e Merge branch '3.4-dev'
add f5df923 Modified the python/jython exclusions for master/3.5.0 CTR
add 33850cc Updated website for 3.4.9 release CTR
add c1a2e3d Bump to 3.4.9-SNAPSHOT
add 62457b5 Merge branch '3.4-dev'
add b56ec83 Bumped to gmavenplus plugin 1.12.0. CTR
add f49b603 Merge branch '3.4-dev'
add 856f3a5 Removed gremlin-python dependency for gmavenplus.
add a8396e8 Revert gmavenplus to 1.11.0.
add 3f55514 Merge branch '3.4-dev'
add fbb5a34 Fix broken link CTR
add 1497704 Merge branch '3.4-dev'
add a9deecb Fixed bug in Lambda translation for PythonTranslator. CTR
add 7685b54 Merge branch '3.4-dev'
new c843051 TINKERPOP-2451 Added JavascriptTranslator for Java
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (e00abdb)
\
N -- N -- N refs/heads/TINKERPOP-2451 (c843051)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
CHANGELOG.asciidoc | 96 ++-
docs/site/home/downloads.html | 53 +-
docs/site/home/img/logos/hugegraph-logo.png | Bin 0 -> 34843 bytes
docs/site/home/index.html | 11 +-
docs/site/home/providers.html | 38 +-
docs/site/home/template/header-footer.html | 4 +-
docs/src/reference/gremlin-applications.asciidoc | 23 +-
docs/src/reference/gremlin-variants.asciidoc | 58 +-
docs/src/reference/the-traversal.asciidoc | 69 ++
docs/src/upgrade/release-3.4.x.asciidoc | 171 +++-
docs/src/upgrade/release-3.5.x.asciidoc | 63 +-
docs/static/images/gremlin-translator.png | Bin 0 -> 998775 bytes
.../console/commands/BytecodeCommand.groovy | 70 +-
.../console/commands/BytecodeCommand.properties | 2 +-
gremlin-console/src/test/python/setup.py | 9 +-
.../tinkerpop/gremlin/jsr223/CoreImports.java | 13 +
.../tinkerpop/gremlin/process/computer/Memory.java | 6 +-
.../gremlin/process/traversal/Translator.java | 16 +-
.../process/traversal/step/filter/HasStep.java | 15 +-
.../traversal/step/filter/TraversalFilterStep.java | 15 +-
.../traversal/step/map/NoOpBarrierStep.java | 2 +-
.../strategy/decoration/EventStrategy.java | 12 +-
.../strategy/decoration/SackStrategy.java | 4 +
.../AbstractWarningVerificationStrategy.java | 4 +-
.../ReservedKeysVerificationStrategy.java | 9 +-
.../traversal/translator/GroovyTranslator.java | 109 +--
.../traversal/translator/JavascriptTranslator.java | 43 +-
.../traversal/translator/PythonTranslator.java | 3 +-
.../process/traversal/util/BytecodeHelper.java | 20 +-
.../process/traversal/util/BytecodeUtil.java | 46 --
.../apache/tinkerpop/gremlin/util/TestSupport.java | 69 +-
.../ReservedKeysVerificationStrategyTest.java | 18 +-
.../traversal/translator/GroovyTranslatorTest.java | 68 +-
.../translator/JavascriptTranslatorTest.java | 4 +-
.../ParameterizedGroovyTranslatorTest.java | 18 +-
.../traversal/translator/PythonTranslatorTest.java | 14 +-
.../process/traversal/util/BytecodeHelperTest.java | 97 +++
.../process/traversal/util/BytecodeUtilTest.java | 62 --
gremlin-driver/pom.xml | 12 +
.../tinkerpop/gremlin/driver/Channelizer.java | 15 +-
.../apache/tinkerpop/gremlin/driver/Client.java | 124 +--
.../apache/tinkerpop/gremlin/driver/Cluster.java | 36 +-
.../tinkerpop/gremlin/driver/Connection.java | 20 +-
.../tinkerpop/gremlin/driver/ConnectionPool.java | 53 +-
.../apache/tinkerpop/gremlin/driver/Handler.java | 2 +-
.../apache/tinkerpop/gremlin/driver/ResultSet.java | 26 +-
.../apache/tinkerpop/gremlin/driver/Settings.java | 12 +-
.../driver/exception/ConnectionException.java | 10 +-
.../driver/exception/NoHostAvailableException.java | 21 +-
.../driver/handler/WebSocketClientHandler.java | 14 +-
.../driver/remote/DriverRemoteConnection.java | 4 +-
.../ser/AbstractGraphSONMessageSerializerV2d0.java | 1 -
.../gremlin/driver/AbstractResultQueueTest.java | 11 +-
.../tinkerpop/gremlin/driver/ClientTest.java | 82 ++
.../gremlin/driver/ClusterBuilderTest.java | 2 +-
.../tinkerpop/gremlin/driver/ResultSetTest.java | 38 +-
.../tinkerpop/gremlin/driver/SettingsTest.java | 4 +-
.../groovy/jsr223/ast/GremlinASTChecker.groovy | 35 +-
.../gremlin/groovy/loaders/GremlinLoader.groovy | 4 +-
.../gremlin/groovy/loaders/ObjectLoader.groovy | 2 +-
.../gremlin/groovy/loaders/StepLoader.groovy | 29 +-
.../gremlin/groovy/loaders/StrategyLoader.groovy | 92 +++
.../gremlin/groovy/loaders/SugarLoader.groovy | 2 +-
.../engine/GremlinExecutorOverGraphTest.java | 1 +
.../GremlinGroovyScriptEngineOverGraphTest.java | 16 +
.../jsr223/GremlinGroovyScriptEngineTest.java | 31 +
.../groovy/jsr223/ast/GremlinASTCheckerTest.java | 205 +++++
gremlin-javascript/build/generate.groovy | 126 +++
gremlin-javascript/pom.xml | 18 +
.../gremlin-javascript/lib/driver/connection.js | 5 +-
.../lib/structure/io/type-serializers.js | 18 +-
.../test/cucumber/feature-steps.js | 32 +-
.../gremlin-javascript/test/cucumber/gremlin.js | 678 ++++++++++++++++
.../test/integration/traversal-test.js | 35 +-
.../gremlin-javascript/test/unit/graphson-test.js | 12 +
gremlin-python/build/generate.groovy | 4 +-
.../gremlin_python/driver/tornado/transport.py | 7 +-
gremlin-python/src/main/python/radish/gremlin.py | 890 ++++++++++-----------
gremlin-python/src/main/python/setup.py | 10 +-
gremlin-server/data/README.asciidoc | 26 +
gremlin-server/scripts/empty-sample-secure.groovy | 2 +-
gremlin-server/scripts/empty-sample.groovy | 2 +-
gremlin-server/scripts/generate-classic.groovy | 2 +-
.../scripts/generate-modern-readonly.groovy | 2 +-
gremlin-server/scripts/generate-modern.groovy | 2 +-
gremlin-server/scripts/load-sample.groovy | 2 +-
gremlin-server/scripts/spark.groovy | 2 +-
gremlin-server/src/assembly/standalone.xml | 3 +
.../gremlin/server/handler/OpSelectorHandler.java | 4 +-
.../gremlin/server/util/CheckedGraphManager.java | 96 +++
.../gremlin/server/util/DefaultGraphManager.java | 31 +-
.../gremlin/server/GremlinDriverIntegrateTest.java | 56 +-
.../server/GremlinServerAuthIntegrateTest.java | 4 +-
.../GremlinServerShutdownIntegrationTest.java | 42 +-
.../server/GremlinServerSslIntegrateTest.java | 11 +-
...seScriptForTesting.java => KdcFixtureTest.java} | 23 +-
.../tinkerpop/gremlin/server/ServerTestHelper.java | 2 +-
.../server/util/CheckedGraphManagerTest.java | 82 ++
...ate-shouldRebindTraversalSourceVariables.groovy | 4 +-
.../src/test/scripts/generate-all.groovy | 21 +-
gremlin-shaded/pom.xml | 3 +-
.../tinkerpop/gremlin/AbstractGraphProvider.java | 2 +-
.../tinkerpop/gremlin/server/KdcFixture.java | 33 +-
gremlin-tools/gremlin-benchmark/pom.xml | 14 +-
.../jsr223/GremlinGroovyScriptEngineBenchmark.java | 120 +++
.../src/test/resources/log4j-silent.properties | 0
.../src/test/resources/log4j-test.properties | 0
gremlin-tools/gremlin-io-test/pom.xml | 19 +
neo4j-gremlin/pom.xml | 2 +-
pom.xml | 61 +-
source-release.xml | 7 +
111 files changed, 3680 insertions(+), 1073 deletions(-)
create mode 100644 docs/site/home/img/logos/hugegraph-logo.png
create mode 100644 docs/static/images/gremlin-translator.png
delete mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeUtil.java
create mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeHelperTest.java
delete mode 100644 gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/util/BytecodeUtilTest.java
copy spark-gremlin/src/main/java/org/apache/tinkerpop/gremlin/spark/process/computer/payload/MessagePayload.java => gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/exception/NoHostAvailableException.java (67%)
create mode 100644 gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ClientTest.java
create mode 100644 gremlin-groovy/src/main/groovy/org/apache/tinkerpop/gremlin/groovy/loaders/StrategyLoader.groovy
create mode 100644 gremlin-javascript/build/generate.groovy
create mode 100644 gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
create mode 100644 gremlin-server/data/README.asciidoc
create mode 100644 gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/CheckedGraphManager.java
copy gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/{BaseScriptForTesting.java => KdcFixtureTest.java} (50%)
create mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/util/CheckedGraphManagerTest.java
create mode 100644 gremlin-tools/gremlin-benchmark/src/main/java/org/apache/tinkerpop/jsr223/GremlinGroovyScriptEngineBenchmark.java
copy {sparql-gremlin => gremlin-tools/gremlin-benchmark}/src/test/resources/log4j-silent.properties (100%)
copy gremlin-tools/{gremlin-io-test => gremlin-benchmark}/src/test/resources/log4j-test.properties (100%)
[tinkerpop] 01/01: TINKERPOP-2451 Added JavascriptTranslator for
Java
Posted by sp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
spmallette pushed a commit to branch TINKERPOP-2451
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit c843051524e6a769d19f94862c8a1eb89a41f41e
Author: Stephen Mallette <st...@amazon.com>
AuthorDate: Wed Oct 28 11:04:02 2020 -0400
TINKERPOP-2451 Added JavascriptTranslator for Java
Re-factored cucumber tests to match the Python pattern, which uses the Translator to generate the code that is used by the GLV to execute the cucumber tests. In this way, we test the Translator and the GLV natively.
---
CHANGELOG.asciidoc | 1 +
docs/src/reference/the-traversal.asciidoc | 13 +-
docs/src/upgrade/release-3.5.x.asciidoc | 23 +
.../traversal/translator/JavascriptTranslator.java | 369 +++++++++++
.../translator/JavascriptTranslatorTest.java | 182 ++++++
gremlin-javascript/build/generate.groovy | 126 ++++
gremlin-javascript/pom.xml | 18 +
.../test/cucumber/feature-steps.js | 28 +-
.../gremlin-javascript/test/cucumber/gremlin.js | 678 +++++++++++++++++++++
gremlin-python/build/generate.groovy | 4 +-
10 files changed, 1418 insertions(+), 24 deletions(-)
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index c599a59..19d8846 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -51,6 +51,7 @@ This release also includes changes from <<release-3-4-3, 3.4.3>>.
* Configured GraphBinary as the default binary serialization format for the Java Driver.
* Configured GraphSON 3.0 as the default text serialization format when no serializer can be determined.
* Configured GraphSON 3.0 as the default setting for the `GraphSONMapper`.
+* Added `JavascriptTranslator` for Java.
* Fixed bug in `PythonTranslator` for processing `TraversalStrategy` instances in GraphBinary.
* Fixed bug in bytecode `Bindings` where calling `of()` prior to calling a child traversal in the same parent would cause the initial binding to be lost.
* Bumped to tornado 6.1 for gremlinpython.
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index ee0662c..ee7a8f4 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -4241,8 +4241,8 @@ The following translators are available:
[width="100%",cols="<,^,^,^,^,^",options="header"]
|=========================================================
| |Java |Groovy |Javascript |.NET |Python
-|*Java* |- |X | | |X
-|*Groovy* | |- | | |X
+|*Java* |- |X |X | |X
+|*Groovy* | |X |X | |X
|*Javascript* | |X |- | |
|*.NET* | | | |- |
|*Python* | | | | |-
@@ -4257,6 +4257,7 @@ an interface perspective. API changes may occur in the near future.
----
// gremlin-core module
import org.apache.tinkerpop.gremlin.process.traversal.translator.*;
+
GraphTraversalSource g = ...;
Traversal<Vertex,Integer> t = g.V().has("person","name","marko").
where(in("knows")).
@@ -4264,12 +4265,16 @@ Traversal<Vertex,Integer> t = g.V().has("person","name","marko").
map(Lambda.Function("it.get() + 1");
Translator.ScriptTranslator groovyTranslator = GroovyTranslator.of("g");
-System.out.println(groovyTranslator.translate(t);
+System.out.println(groovyTranslator.translate(t).getScript());
// OUTPUT: g.V().has("person","name","marko").where(__.in("knows")).values("age").map({it.get() + 1})
Translator.ScriptTranslator pythonTranslator = PythonTranslator.of("g");
-System.out.println(pythonTranslator.translate(t);
+System.out.println(pythonTranslator.translate(t).getScript());
// OUTPUT: g.V().has('person','name','marko').where(__.in_('knows')).age.map(lambda: "it.get() + 1")
+
+Translator.ScriptTranslator javascriptTranslator = JavascriptTranslator.of("g");
+System.out.println(javascriptTranslator.translate(t).getScript());
+// OUTPUT: g.V().has("person","name","marko").where(__.in_("knows")).values("age").map(() => "it.get() + 1")
----
[source,javascript]
----
diff --git a/docs/src/upgrade/release-3.5.x.asciidoc b/docs/src/upgrade/release-3.5.x.asciidoc
index bfe7405..751fef5 100644
--- a/docs/src/upgrade/release-3.5.x.asciidoc
+++ b/docs/src/upgrade/release-3.5.x.asciidoc
@@ -98,6 +98,29 @@ link:https://github.com/apache/tinkerpop/blob/3.4.8/pom.xml[pom.xml].
See: link:https://issues.apache.org/jira/browse/TINKERPOP-2460[TINKERPOP-2460]
+==== JavascriptTranslator
+
+Introduced a `JavascriptTranslator` for Java, which is in `gremlin-core` with the other language translators. It
+generates a Javascript representation of Gremlin from bytecode.
+
+[source,java]
+----
+// gremlin-core module
+import org.apache.tinkerpop.gremlin.process.traversal.translator.JavascriptTranslator;
+
+GraphTraversalSource g = ...;
+Traversal<Vertex,Integer> t = g.V().has("person","name","marko").
+ where(in("knows")).
+ values("age").
+ map(Lambda.Function("it.get() + 1");
+
+Translator.ScriptTranslator javascriptTranslator = JavascriptTranslator.of("g");
+System.out.println(javascriptTranslator.translate(t).getScript());
+// OUTPUT: g.V().has("person","name","marko").where(__.in_("knows")).values("age").map(() => "it.get() + 1")
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-2451[TINKERPOP-2451]
+
==== Gryo Usage
Since the first release of TinkerPop 3.x, Gryo has been the default serialization format for Gremlin Server and
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslator.java
new file mode 100644
index 0000000..b612c0c
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslator.java
@@ -0,0 +1,369 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.translator;
+
+import org.apache.commons.configuration2.ConfigurationConverter;
+import org.apache.commons.text.StringEscapeUtils;
+import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.SackFunctions;
+import org.apache.tinkerpop.gremlin.process.traversal.Script;
+import org.apache.tinkerpop.gremlin.process.traversal.TextP;
+import org.apache.tinkerpop.gremlin.process.traversal.Translator;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyProxy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP;
+import org.apache.tinkerpop.gremlin.process.traversal.util.OrP;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+import org.apache.tinkerpop.gremlin.util.function.Lambda;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.function.BinaryOperator;
+import java.util.function.Supplier;
+import java.util.function.UnaryOperator;
+
+/**
+ * Converts bytecode to a Javascript string of Gremlin.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class JavascriptTranslator implements Translator.ScriptTranslator {
+
+ private final String traversalSource;
+ private final TypeTranslator typeTranslator;
+
+ private JavascriptTranslator(final String traversalSource, final TypeTranslator typeTranslator) {
+ this.traversalSource = traversalSource;
+ this.typeTranslator = typeTranslator;
+ }
+
+ /**
+ * Creates the translator with a {@code false} argument to {@code withParameters} using
+ * {@link #of(String, boolean)}.
+ */
+ public static JavascriptTranslator of(final String traversalSource) {
+ return of(traversalSource, false);
+ }
+
+ /**
+ * Creates the translator with the {@link DefaultTypeTranslator} passing the {@code withParameters} option to it
+ * which will handle type translation in a fashion that should typically increase cache hits and reduce
+ * compilation times if enabled at the sacrifice to rewriting of the script that could reduce readability.
+ */
+ public static JavascriptTranslator of(final String traversalSource, final boolean withParameters) {
+ return of(traversalSource, new DefaultTypeTranslator(withParameters));
+ }
+
+ /**
+ * Creates the translator with a custom {@link TypeTranslator} instance.
+ */
+ public static JavascriptTranslator of(final String traversalSource, final TypeTranslator typeTranslator) {
+ return new JavascriptTranslator(traversalSource, typeTranslator);
+ }
+
+ @Override
+ public Script translate(final Bytecode bytecode) {
+ return typeTranslator.apply(traversalSource, bytecode);
+ }
+
+ @Override
+ public String getTargetLanguage() {
+ return "gremlin-javascript";
+ }
+
+ @Override
+ public String toString() {
+ return StringFactory.translatorString(this);
+ }
+
+ @Override
+ public String getTraversalSource() {
+ return this.traversalSource;
+ }
+
+ /**
+ * Performs standard type translation for the TinkerPop types to Javascript.
+ */
+ public static class DefaultTypeTranslator extends AbstractTypeTranslator {
+
+ public DefaultTypeTranslator(final boolean withParameters) {
+ super(withParameters);
+ }
+
+ @Override
+ protected String getNullSyntax() {
+ return "null";
+ }
+
+ @Override
+ protected String getSyntax(final String o) {
+ return (o.contains("\"") ? "\"\"\"" + StringEscapeUtils.escapeJava(o) + "\"\"\"" : "\"" + StringEscapeUtils.escapeJava(o) + "\"")
+ .replace("$", "\\$");
+ }
+
+ @Override
+ protected String getSyntax(final Boolean o) {
+ return o.toString();
+ }
+
+ @Override
+ protected String getSyntax(final Date o) {
+ return "new Date(" + o.getTime() + ")";
+ }
+
+ @Override
+ protected String getSyntax(final Timestamp o) {
+ return "new Date(" + o.getTime() + ")";
+ }
+
+ @Override
+ protected String getSyntax(final UUID o) {
+ return "'" + o.toString() + "'";
+ }
+
+ @Override
+ protected String getSyntax(final Lambda o) {
+ return "() => \"" + StringEscapeUtils.escapeEcmaScript(o.getLambdaScript().trim()) + "\"";
+ }
+
+ @Override
+ protected String getSyntax(final SackFunctions.Barrier o) {
+ return "Barrier." + o.toString();
+ }
+
+ @Override
+ protected String getSyntax(final VertexProperty.Cardinality o) {
+ return "Cardinality." + o.toString();
+ }
+
+ @Override
+ protected String getSyntax(final TraversalOptionParent.Pick o) {
+ return "Pick." + o.toString();
+ }
+
+ @Override
+ protected String getSyntax(final Number o) {
+ return o.toString();
+ }
+
+ @Override
+ protected Script produceScript(final Set<?> o) {
+ return produceScript(new ArrayList<>(o));
+ }
+
+ @Override
+ protected Script produceScript(final List<?> o) {
+ final Iterator<?> iterator = ((List<?>) o).iterator();
+ script.append("[");
+
+ while (iterator.hasNext()) {
+ final Object nextItem = iterator.next();
+ convertToScript(nextItem);
+ if (iterator.hasNext())
+ script.append(",").append(" ");
+ }
+
+ return script.append("]");
+ }
+
+ @Override
+ protected Script produceScript(final Map<?, ?> o) {
+ script.append("new Map([");
+ final Iterator<? extends Map.Entry<?, ?>> itty = ((Map<?, ?>) o).entrySet().iterator();
+ while (itty.hasNext()) {
+ final Map.Entry<?,?> entry = itty.next();
+ script.append("[");
+ convertToScript(entry.getKey());
+ script.append(",");
+ convertToScript(entry.getValue());
+ script.append("]");
+ if (itty.hasNext())
+ script.append(",");
+ }
+ return script.append("])");
+ }
+
+ @Override
+ protected Script produceScript(final Class<?> o) {
+ return script.append(o.getCanonicalName());
+ }
+
+ @Override
+ protected Script produceScript(final Enum<?> o) {
+ return script.append(o.getDeclaringClass().getSimpleName() + "." + o.toString());
+ }
+
+ @Override
+ protected Script produceScript(final Vertex o) {
+ script.append("new Vertex(");
+ convertToScript(o.id());
+ script.append(",");
+ convertToScript(o.label());
+ return script.append(", null)");
+ }
+
+ @Override
+ protected Script produceScript(final Edge o) {
+ script.append("new Edge(");
+ convertToScript(o.id());
+ script.append(", Vertex(");
+ convertToScript(o.outVertex().id());
+ script.append(",");
+ convertToScript(o.outVertex().label());
+ script.append(", null),");
+ convertToScript(o.label());
+ script.append(", Vertex(");
+ convertToScript(o.inVertex().id());
+ script.append(",");
+ convertToScript(o.inVertex().label());
+ return script.append(",null),null)");
+ }
+
+ @Override
+ protected Script produceScript(final VertexProperty<?> o) {
+ script.append("new Property(");
+ convertToScript(o.id());
+ script.append(",");
+ convertToScript(o.label());
+ script.append(",");
+ convertToScript(o.value());
+ script.append(",");
+ return script.append("null)");
+ }
+
+ @Override
+ protected Script produceScript(final TraversalStrategyProxy<?> o) {
+ if (o.getConfiguration().isEmpty()) {
+ return script.append("new " + o.getStrategyClass().getSimpleName() + "()");
+ } else {
+ script.append("new " + o.getStrategyClass().getSimpleName() + "(");
+ convertToScript(ConfigurationConverter.getMap(o.getConfiguration()));
+ return script.append(")");
+ }
+ }
+
+ @Override
+ protected Script produceScript(final String traversalSource, final Bytecode o) {
+ script.append(traversalSource);
+ for (final Bytecode.Instruction instruction : o.getInstructions()) {
+ final String methodName = instruction.getOperator();
+ if (0 == instruction.getArguments().length) {
+ script.append(".").append(resolveSymbol(methodName)).append("()");
+ } else {
+ script.append(".").append(resolveSymbol(methodName)).append("(");
+
+ // have to special case withSack() for Groovy because UnaryOperator and BinaryOperator signatures
+ // make it impossible for the interpreter to figure out which function to call. specifically we need
+ // to discern between:
+ // withSack(A initialValue, UnaryOperator<A> splitOperator)
+ // withSack(A initialValue, BinaryOperator<A> splitOperator)
+ // and:
+ // withSack(Supplier<A> initialValue, UnaryOperator<A> mergeOperator)
+ // withSack(Supplier<A> initialValue, BinaryOperator<A> mergeOperator)
+ if (methodName.equals(TraversalSource.Symbols.withSack) &&
+ instruction.getArguments().length == 2 && instruction.getArguments()[1] instanceof Lambda) {
+ final String castFirstArgTo = instruction.getArguments()[0] instanceof Lambda ?
+ Supplier.class.getName() : "";
+ final Lambda secondArg = (Lambda) instruction.getArguments()[1];
+ final String castSecondArgTo = secondArg.getLambdaArguments() == 1 ? UnaryOperator.class.getName() :
+ BinaryOperator.class.getName();
+ if (!castFirstArgTo.isEmpty())
+ script.append(String.format("(%s) ", castFirstArgTo));
+ convertToScript(instruction.getArguments()[0]);
+ script.append(", (").append(castSecondArgTo).append(") ");
+ convertToScript(instruction.getArguments()[1]);
+ script.append(",");
+ } else {
+ for (final Object object : instruction.getArguments()) {
+ convertToScript(object);
+ script.append(",");
+ }
+ }
+ script.setCharAtEnd(')');
+ }
+ }
+ return script;
+ }
+
+ @Override
+ protected Script produceScript(final P<?> p) {
+ if (p instanceof TextP) {
+ script.append("TextP.").append(p.getBiPredicate().toString()).append("(");
+ convertToScript(p.getValue());
+ } else if (p instanceof ConnectiveP) {
+ final List<P<?>> list = ((ConnectiveP) p).getPredicates();
+ for (int i = 0; i < list.size(); i++) {
+ produceScript(list.get(i));
+ if (i < list.size() - 1) {
+ script.append(p instanceof OrP ? ".or(" : ".and(");
+ }
+ }
+ } else {
+ script.append("P.").append(p.getBiPredicate().toString()).append("(");
+ convertToScript(p.getValue());
+ }
+ script.append(")");
+ return script;
+ }
+
+ protected String resolveSymbol(final String methodName) {
+ return SymbolHelper.toJavascript(methodName);
+ }
+ }
+
+ static final class SymbolHelper {
+
+ private final static Map<String, String> TO_JS_MAP = new HashMap<>();
+ private final static Map<String, String> FROM_JS_MAP = new HashMap<>();
+
+ static {
+ TO_JS_MAP.put("from", "from_");
+ TO_JS_MAP.put("in", "in_");
+ TO_JS_MAP.put("with", "with_");
+ //
+ TO_JS_MAP.forEach((k, v) -> FROM_JS_MAP.put(v, k));
+ }
+
+ private SymbolHelper() {
+ // static methods only, do not instantiate
+ }
+
+ public static String toJavascript(final String symbol) {
+ return TO_JS_MAP.getOrDefault(symbol, symbol);
+ }
+
+ public static String toJava(final String symbol) {
+ return FROM_JS_MAP.getOrDefault(symbol, symbol);
+ }
+
+ }
+}
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslatorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslatorTest.java
new file mode 100644
index 0000000..46ed2e3
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/translator/JavascriptTranslatorTest.java
@@ -0,0 +1,182 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.translator;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.traversal.Translator;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
+import org.apache.tinkerpop.gremlin.structure.Column;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.UUID;
+
+import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.hasLabel;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class JavascriptTranslatorTest {
+ private static final GraphTraversalSource g = traversal().withEmbedded(EmptyGraph.instance());
+ private static final Translator.ScriptTranslator translator = JavascriptTranslator.of("g");
+
+ @Test
+ public void shouldTranslateStrategies() throws Exception {
+ assertEquals("g.withStrategies(new ReadOnlyStrategy()," +
+ "new SubgraphStrategy(new Map([[\"checkAdjacentVertices\",false],[\"vertices\",__.hasLabel(\"person\")]]))).V().has(\"name\")",
+ translator.translate(g.withStrategies(ReadOnlyStrategy.instance(),
+ SubgraphStrategy.build().checkAdjacentVertices(false).vertices(hasLabel("person")).create()).
+ V().has("name").asAdmin().getBytecode()).getScript());
+ }
+
+ @Test
+ public void shouldTranslateMaps() {
+ final String script = translator.translate(g.V().id().is(new LinkedHashMap<Object,Object>() {{
+ put(3, "32");
+ put(Arrays.asList(1, 2, 3.1d), 4);
+ }}).asAdmin().getBytecode()).getScript();
+ assertEquals("g.V().id().is(new Map([[3,\"32\"],[[1, 2, 3.1],4]]))", script);
+ }
+
+ @Test
+ public void shouldTranslateDate() {
+ final Calendar c = Calendar.getInstance();
+ c.set(1975, Calendar.SEPTEMBER, 7);
+ final Date d = c.getTime();
+ assertTranslation(String.format("new Date(%s)", d.getTime()), d);
+ }
+
+ @Test
+ public void shouldTranslateUuid() {
+ final UUID uuid = UUID.fromString("ffffffff-fd49-1e4b-0000-00000d4b8a1d");
+ assertTranslation(String.format("'%s'", uuid), uuid);
+ }
+
+ @Test
+ public void shouldTranslateColumn() {
+ assertTranslation("Column.keys", Column.keys);
+ }
+
+ @Test
+ public void shouldTranslateDirection() {
+ assertTranslation("Direction.BOTH", Direction.BOTH);
+ }
+
+ @Test
+ public void shouldTranslateOrder() {
+ assertTranslation("Order.desc", Order.desc);
+ }
+
+ @Test
+ public void shouldTranslatePop() {
+ assertTranslation("Pop.last", Pop.last);
+ }
+
+ @Test
+ public void shouldTranslateScope() {
+ assertTranslation("Scope.local", Scope.local);
+ }
+
+ @Test
+ public void shouldHaveValidToString() {
+ assertEquals("translator[h:gremlin-javascript]", JavascriptTranslator.of("h").toString());
+ }
+
+ @Test
+ public void shouldEscapeStrings() {
+ final String script = translator.translate(g.addV("customer")
+ .property("customer_id", 501L)
+ .property("name", "Foo\u0020Bar")
+ .property("age", 25)
+ .property("special", "`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/?")
+ .asAdmin().getBytecode()).getScript();
+
+ assertEquals("g.addV(\"customer\")" +
+ ".property(\"customer_id\",501)" +
+ ".property(\"name\",\"Foo Bar\")" +
+ ".property(\"age\",25)" +
+ ".property(\"special\",\"\"\"`~!@#\\$%^&*()-_=+[{]}\\\\|;:'\\\",<.>/?\"\"\")",
+ script);
+ }
+
+ @Test
+ public void shouldTranslateVertexAndEdge() {
+ final Object id1 = "customer:10:foo\u0020bar\u0020\u0024100#90"; // customer:10:foo bar $100#90
+ final Vertex vertex1 = DetachedVertex.build().setLabel("customer").setId(id1)
+ .create();
+ final String script1 = translator.translate(g.inject(vertex1).asAdmin().getBytecode()).getScript();
+ assertEquals("g.inject(new Vertex(" +
+ "\"customer:10:foo bar \\$100#90\"," +
+ "\"customer\", null))",
+ script1);
+
+ final Object id2 = "user:20:foo\\u0020bar\\u005c\\u0022mr\\u005c\\u0022\\u00241000#50"; // user:20:foo\u0020bar\u005c\u0022mr\u005c\u0022\u00241000#50
+ final Vertex vertex2 = DetachedVertex.build().setLabel("user").setId(id2)
+ .create();
+ final String script2 = translator.translate(g.inject(vertex2).asAdmin().getBytecode()).getScript();
+ assertEquals("g.inject(new Vertex(" +
+ "\"user:20:foo\\\\u0020bar\\\\u005c\\\\u0022mr\\\\u005c\\\\u0022\\\\u00241000#50\"," +
+ "\"user\", null))",
+ script2);
+
+ final Object id3 = "knows:30:foo\u0020bar\u0020\u0024100:\\u0020\\u0024500#70";
+ final Edge edge = DetachedEdge.build().setLabel("knows").setId(id3)
+ .setOutV((DetachedVertex) vertex1)
+ .setInV((DetachedVertex) vertex2)
+ .create();
+ final String script3 = translator.translate(g.inject(edge).asAdmin().getBytecode()).getScript();
+ assertEquals("g.inject(" +
+ "new Edge(\"knows:30:foo bar \\$100:\\\\u0020\\\\u0024500#70\", " +
+ "Vertex(\"customer:10:foo bar \\$100#90\",\"customer\", null)," +
+ "\"knows\", " +
+ "Vertex(\"user:20:foo\\\\u0020bar\\\\u005c\\\\u0022mr\\\\u005c\\\\u0022\\\\u00241000#50\",\"user\",null)," +
+ "null))",
+ script3);
+
+ final String script4 = translator.translate(
+ g.addE("knows").from(vertex1).to(vertex2).property("when", "2018/09/21")
+ .asAdmin().getBytecode()).getScript();
+ assertEquals("g.addE(\"knows\")" +
+ ".from_(new Vertex(\"customer:10:foo bar \\$100#90\",\"customer\", null))" +
+ ".to(new Vertex(\"user:20:foo\\\\u0020bar\\\\u005c\\\\u0022mr\\\\u005c\\\\u0022\\\\u00241000#50\",\"user\", null))" +
+ ".property(\"when\",\"2018/09/21\")",
+ script4);
+ }
+
+ private void assertTranslation(final String expectedTranslation, final Object... objs) {
+ final String script = translator.translate(g.inject(objs).asAdmin().getBytecode()).getScript();
+ assertEquals(String.format("g.inject(%s)", expectedTranslation), script);
+ }
+}
diff --git a/gremlin-javascript/build/generate.groovy b/gremlin-javascript/build/generate.groovy
new file mode 100644
index 0000000..7a374c0
--- /dev/null
+++ b/gremlin-javascript/build/generate.groovy
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph
+import org.apache.tinkerpop.gremlin.process.traversal.translator.JavascriptTranslator
+import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine
+import org.apache.tinkerpop.gremlin.groovy.jsr223.ast.VarAsBindingASTTransformation
+import org.apache.tinkerpop.gremlin.groovy.jsr223.ast.RepeatASTTransformationCustomizer
+import org.apache.tinkerpop.gremlin.groovy.jsr223.GroovyCustomizer
+import org.codehaus.groovy.control.customizers.CompilationCustomizer
+import org.apache.tinkerpop.gremlin.features.FeatureReader
+
+import javax.script.SimpleBindings
+
+import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal
+
+// file is overwritten on each generation
+radishGremlinFile = new File("${projectBaseDir}/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js")
+
+// assumes globally unique scenario names for keys with list of Gremlin traversals as they appear
+gremlins = FeatureReader.parse("${projectBaseDir}")
+
+gremlinGroovyScriptEngine = new GremlinGroovyScriptEngine(new GroovyCustomizer() {
+ public CompilationCustomizer create() {
+ return new RepeatASTTransformationCustomizer(new VarAsBindingASTTransformation())
+ }
+})
+translator = JavascriptTranslator.of('g')
+g = traversal().withGraph(EmptyGraph.instance())
+bindings = new SimpleBindings()
+bindings.put('g', g)
+
+radishGremlinFile.withWriter('UTF-8') { Writer writer ->
+ writer.writeLine('/*\n' +
+ '* Licensed to the Apache Software Foundation (ASF) under one\n' +
+ '* or more contributor license agreements. See the NOTICE file\n' +
+ '* distributed with this work for additional information\n' +
+ '* regarding copyright ownership. The ASF licenses this file\n' +
+ '* to you under the Apache License, Version 2.0 (the\n' +
+ '* "License"); you may not use this file except in compliance\n' +
+ '* with the License. You may obtain a copy of the License at\n' +
+ '* \n' +
+ '* http://www.apache.org/licenses/LICENSE-2.0\n' +
+ '* \n' +
+ '* Unless required by applicable law or agreed to in writing,\n' +
+ '* software distributed under the License is distributed on an\n' +
+ '* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n' +
+ '* KIND, either express or implied. See the License for the\n' +
+ '* specific language governing permissions and limitations\n' +
+ '* under the License.\n' +
+ '*/\n')
+
+ writer.writeLine("\n\n//********************************************************************************")
+ writer.writeLine("//* Do NOT edit this file directly - generated by build/generate.groovy")
+ writer.writeLine("//********************************************************************************\n\n")
+
+ writer.writeLine(
+ 'const graphTraversalModule = require(\'../../lib/process/graph-traversal\');\n' +
+ 'const traversalModule = require(\'../../lib/process/traversal\');\n' +
+ 'const { TraversalStrategies, VertexProgramStrategy, OptionsStrategy } = require(\'../../lib/process/traversal-strategy\');\n' +
+ 'const __ = graphTraversalModule.statics;\n' +
+ 'const Barrier = traversalModule.barrier\n' +
+ 'const Cardinality = traversalModule.cardinality\n' +
+ 'const Column = traversalModule.column\n' +
+ 'const Direction = {\n' +
+ ' BOTH: traversalModule.direction.both,\n' +
+ ' IN: traversalModule.direction.in,\n' +
+ ' OUT: traversalModule.direction.out\n' +
+ '};\n' +
+ 'const P = traversalModule.P;\n' +
+ 'const Pick = traversalModule.pick\n' +
+ 'const Pop = traversalModule.pop\n' +
+ 'const Order = traversalModule.order\n' +
+ 'const Operator = traversalModule.operator\n' +
+ 'const Scope = traversalModule.scope\n' +
+ 'const T = traversalModule.t\n' +
+ 'const TextP = traversalModule.TextP\n' +
+ 'const WithOptions = traversalModule.withOptions\n')
+
+ writer.writeLine('const gremlins = {')
+ gremlins.each { k,v ->
+ writer.write(" ")
+ writer.write(k)
+ writer.write(": [")
+ def collected = v.collect{
+ def t = gremlinGroovyScriptEngine.eval(it, bindings)
+ [t, t.bytecode.bindings.keySet()]
+ }
+ def uniqueBindings = collected.collect{it[1]}.flatten().unique()
+ def gremlinItty = collected.iterator()
+ while (gremlinItty.hasNext()) {
+ def t = gremlinItty.next()[0]
+ writer.write("function({g")
+ if (!uniqueBindings.isEmpty()) {
+ writer.write(", ")
+ writer.write(uniqueBindings.join(", "))
+ }
+ writer.write("}) { return ")
+ writer.write(translator.translate(t.bytecode).script)
+ writer.write(" }")
+ if (gremlinItty.hasNext()) writer.write(', ')
+ }
+ writer.writeLine('], ')
+ }
+ writer.writeLine('}\n')
+
+ writer.writeLine('exports.gremlin = gremlins')
+}
+
+
diff --git a/gremlin-javascript/pom.xml b/gremlin-javascript/pom.xml
index 2e8b355..a504b80 100644
--- a/gremlin-javascript/pom.xml
+++ b/gremlin-javascript/pom.xml
@@ -80,6 +80,24 @@ limitations under the License.
</dependencies>
<executions>
<execution>
+ <id>generate-radish-support</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <properties>
+ <property>
+ <name>projectBaseDir</name>
+ <value>${project.basedir}/../</value>
+ </property>
+ </properties>
+ <scripts>
+ <script>${project.basedir}/build/generate.groovy</script>
+ </scripts>
+ </configuration>
+ </execution>
+ <execution>
<id>update-version</id>
<phase>generate-sources</phase>
<goals>
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
index 62f2bf5..07be9f9 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js
@@ -23,9 +23,9 @@
'use strict';
const {Given, Then, When} = require('cucumber');
-const vm = require('vm');
const expect = require('chai').expect;
const util = require('util');
+const gremlin = require('./gremlin').gremlin;
const graphModule = require('../../lib/structure/graph');
const graphTraversalModule = require('../../lib/process/graph-traversal');
const traversalModule = require('../../lib/process/traversal');
@@ -86,14 +86,18 @@ Given(/^the (.+) graph$/, function (graphName) {
});
Given('the graph initializer of', function (traversalText) {
- const traversal = vm.runInNewContext(translate(traversalText), getSandbox(this.g, this.parameters));
+ const p = Object.assign({}, this.parameters);
+ p.g = this.g;
+ const traversal = gremlin[this.scenario].shift()(p);
return traversal.toList();
});
Given('an unsupported test', () => {});
Given('the traversal of', function (traversalText) {
- this.traversal = vm.runInNewContext(translate(traversalText), getSandbox(this.g, this.parameters));
+ const p = Object.assign({}, this.parameters);
+ p.g = this.g;
+ this.traversal = gremlin[this.scenario].shift()(p);
});
Given(/^using the parameter (.+) of P\.(.+)\("(.+)"\)$/, function (paramName, pval, stringValue) {
@@ -155,7 +159,9 @@ Then(/^the result should be (\w+)$/, function assertResult(characterizedAs, resu
});
Then(/^the graph should return (\d+) for count of "(.+)"$/, function (stringCount, traversalText) {
- const traversal = vm.runInNewContext(translate(traversalText), getSandbox(this.g, this.parameters));
+ const p = Object.assign({}, this.parameters);
+ p.g = this.g;
+ const traversal = gremlin[this.scenario].shift()(p);
return traversal.toList().then(list => {
expect(list).to.have.lengthOf(parseInt(stringCount, 10));
});
@@ -211,20 +217,6 @@ function getSandbox(g, parameters) {
return sandbox;
}
-function translate(traversalText) {
- // clean up trailing period/spaces so that it's easier to match newline with() to convert to with_() below
- traversalText = traversalText.replace(/\)\.\s*/g, ').');
- // Remove escaped chars
- traversalText = traversalText.replace(/\\"/g, '"');
- // Replace long suffix with Long instance
- traversalText = traversalText.replace(/\b(\d+)l\b/gi, 'toLong($1)');
- // Change according to naming convention
- traversalText = traversalText.replace(/\.in\(/g, '.in_(');
- traversalText = traversalText.replace(/\.from\(/g, '.from_(');
- traversalText = traversalText.replace(/\.with\(/g, '.with_(');
- return traversalText;
-}
-
function parseRow(row) {
return parseValue.call(this, row[0]);
}
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
new file mode 100644
index 0000000..b69bb3b
--- /dev/null
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -0,0 +1,678 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+
+
+//********************************************************************************
+//* Do NOT edit this file directly - generated by build/generate.groovy
+//********************************************************************************
+
+
+const graphTraversalModule = require('../../lib/process/graph-traversal');
+const traversalModule = require('../../lib/process/traversal');
+const { TraversalStrategies, VertexProgramStrategy, OptionsStrategy } = require('../../lib/process/traversal-strategy');
+const __ = graphTraversalModule.statics;
+const Barrier = traversalModule.barrier
+const Cardinality = traversalModule.cardinality
+const Column = traversalModule.column
+const Direction = {
+ BOTH: traversalModule.direction.both,
+ IN: traversalModule.direction.in,
+ OUT: traversalModule.direction.out
+};
+const P = traversalModule.P;
+const Pick = traversalModule.pick
+const Pop = traversalModule.pop
+const Order = traversalModule.order
+const Operator = traversalModule.operator
+const Scope = traversalModule.scope
+const T = traversalModule.t
+const TextP = traversalModule.TextP
+const WithOptions = traversalModule.withOptions
+
+const gremlins = {
+ g_V_branchXlabel_eq_person__a_bX_optionXa__ageX_optionXb__langX_optionXb__nameX: [function({g, l1}) { return g.V().branch(l1).option("a",__.values("age")).option("b",__.values("lang")).option("b",__.values("name")) }],
+ g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX: [function({g, zero, one}) { return g.V().branch(__.label().is("person").count()).option(one,__.values("age")).option(zero,__.values("lang")).option(zero,__.values("name")) }],
+ g_V_branchXlabel_isXpersonX_countX_optionX1__ageX_optionX0__langX_optionX0__nameX_optionXany__labelX: [function({g, zero, one}) { return g.V().branch(__.label().is("person").count()).option(one,__.values("age")).option(zero,__.values("lang")).option(zero,__.values("name")).option(Pick.any,__.label()) }],
+ g_V_branchXageX_optionXltX30X__youngX_optionXgtX30X__oldX_optionXnone__on_the_edgeX: [function({g}) { return g.V().hasLabel("person").branch(__.values("age")).option(P.lt(30),__.constant("young")).option(P.gt(30),__.constant("old")).option(Pick.none,__.constant("on the edge")) }],
+ g_V_branchXidentityX_optionXhasLabelXsoftwareX__inXcreatedX_name_order_foldX_optionXhasXname_vadasX__ageX_optionXneqX123X__bothE_countX: [function({g}) { return g.V().branch(__.identity()).option(__.hasLabel("software"),__.in_("created").values("name").order().fold()).option(__.has("name","vadas"),__.values("age")).option(P.neq(123),__.bothE().count()) }],
+ g_V_chooseXout_countX_optionX2L_nameX_optionX3L_ageX: [function({g, two, three}) { return g.V().choose(__.out().count()).option(two,__.values("name")).option(three,__.values("age")) }],
+ g_V_chooseXlabel_eqXpersonX__outXknowsX__inXcreatedXX_name: [function({g, l1}) { return g.V().choose(l1,__.out("knows"),__.in_("created")).values("name") }],
+ g_V_chooseXhasLabelXpersonX_and_outXcreatedX__outXknowsX__identityX_name: [function({g}) { return g.V().choose(__.hasLabel("person").and().out("created"),__.out("knows"),__.identity()).values("name") }],
+ g_V_chooseXlabelX_optionXblah__outXknowsXX_optionXbleep__outXcreatedXX_optionXnone__identityX_name: [function({g}) { return g.V().choose(__.label()).option("blah",__.out("knows")).option("bleep",__.out("created")).option(Pick.none,__.identity()).values("name") }],
+ g_V_chooseXoutXknowsX_count_isXgtX0XX__outXknowsXX_name: [function({g}) { return g.V().choose(__.out("knows").count().is(P.gt(0)),__.out("knows")).values("name") }],
+ g_V_hasLabelXpersonX_asXp1X_chooseXoutEXknowsX__outXknowsXX_asXp2X_selectXp1_p2X_byXnameX: [function({g}) { return g.V().hasLabel("person").as("p1").choose(__.outE("knows"),__.out("knows")).as("p2").select("p1","p2").by("name") }],
+ g_V_hasLabelXpersonX_chooseXageX__optionX27L__constantXyoungXX_optionXnone__constantXoldXX_groupCount: [function({g, d27}) { return g.V().hasLabel("person").choose(__.values("age")).option(d27,__.constant("young")).option(Pick.none,__.constant("old")).groupCount() }],
+ g_injectX1X_chooseXisX1X__constantX10Xfold__foldX: [function({g, d10, d1}) { return g.inject(d1).choose(__.is(d1),__.constant(d10).fold(),__.fold()) }],
+ g_injectX2X_chooseXisX1X__constantX10Xfold__foldX: [function({g, d10, d1, d2}) { return g.inject(d2).choose(__.is(d1),__.constant(d10).fold(),__.fold()) }],
+ g_V_localXpropertiesXlocationX_order_byXvalueX_limitX2XX_value: [function({g}) { return g.V().local(__.properties("location").order().by(T.value,Order.asc).range(0,2)).value() }],
+ g_V_hasXlabel_personX_asXaX_localXoutXcreatedX_asXbXX_selectXa_bX_byXnameX_byXidX: [function({g}) { return g.V().has(T.label,"person").as("a").local(__.out("created").as("b")).select("a","b").by("name").by(T.id) }],
+ g_V_localXoutE_countX: [function({g}) { return g.V().local(__.outE().count()) }],
+ g_VX1X_localXoutEXknowsX_limitX1XX_inV_name: [function({g, v1Id}) { return g.V(v1Id).local(__.outE("knows").limit(1)).inV().values("name") }],
+ g_V_localXbothEXcreatedX_limitX1XX_otherV_name: [function({g}) { return g.V().local(__.bothE("created").limit(1)).otherV().values("name") }],
+ g_VX4X_localXbothEX1_createdX_limitX1XX: [function({g, v4Id}) { return g.V(v4Id).local(__.bothE("created").limit(1)) }],
+ g_VX4X_localXbothEXknows_createdX_limitX1XX: [function({g, v4Id}) { return g.V(v4Id).local(__.bothE("knows","created").limit(1)) }],
+ g_VX4X_localXbothE_limitX1XX_otherV_name: [function({g, v4Id}) { return g.V(v4Id).local(__.bothE().limit(1)).otherV().values("name") }],
+ g_VX4X_localXbothE_limitX2XX_otherV_name: [function({g, v4Id}) { return g.V(v4Id).local(__.bothE().limit(2)).otherV().values("name") }],
+ g_V_localXinEXknowsX_limitX2XX_outV_name: [function({g}) { return g.V().local(__.inE("knows").limit(2)).outV().values("name") }],
+ g_V_localXmatchXproject__created_person__person_name_nameX_selectXname_projectX_by_byXnameX: [function({g}) { return g.V().local(__.match(__.as("project").in_("created").as("person"),__.as("person").values("name").as("name"))).select("name","project").by().by("name") }],
+ g_VX2X_optionalXoutXknowsXX: [function({g, v2Id}) { return g.V(v2Id).optional(__.out("knows")) }],
+ g_VX2X_optionalXinXknowsXX: [function({g, v2Id}) { return g.V(v2Id).optional(__.in_("knows")) }],
+ g_V_hasLabelXpersonX_optionalXoutXknowsX_optionalXoutXcreatedXXX_path: [function({g}) { return g.V().hasLabel("person").optional(__.out("knows").optional(__.out("created"))).path() }],
+ g_V_optionalXout_optionalXoutXX_path: [function({g}) { return g.V().optional(__.out().optional(__.out())).path() }],
+ g_VX1X_optionalXaddVXdogXX_label: [function({g, v1Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property( [...]
+ g_V_repeatXoutX_timesX2X_emit_path: [function({g}) { return g.V().repeat(__.out()).times(2).emit().path() }],
+ g_V_repeatXoutX_timesX2X_repeatXinX_timesX2X_name: [function({g}) { return g.V().repeat(__.out()).times(2).repeat(__.in_()).times(2).values("name") }],
+ g_V_repeatXoutX_timesX2X: [function({g}) { return g.V().repeat(__.out()).times(2) }],
+ g_V_repeatXoutX_timesX2X_emit: [function({g}) { return g.V().repeat(__.out()).times(2).emit() }],
+ g_VX1X_timesX2X_repeatXoutX_name: [function({g, v1Id}) { return g.V(v1Id).times(2).repeat(__.out()).values("name") }],
+ g_V_emit_timesX2X_repeatXoutX_path: [function({g}) { return g.V().emit().times(2).repeat(__.out()).path() }],
+ g_V_emit_repeatXoutX_timesX2X_path: [function({g}) { return g.V().emit().repeat(__.out()).times(2).path() }],
+ g_VX1X_emitXhasXlabel_personXX_repeatXoutX_name: [function({g, v1Id}) { return g.V(v1Id).emit(__.has(T.label,"person")).repeat(__.out()).values("name") }],
+ g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX: [function({g}) { return g.V().repeat(__.groupCount("m").by("name").out()).times(2).cap("m") }],
+ g_VX1X_repeatXgroupCountXmX_byXloopsX_outX_timesX3X_capXmX: [function({g, v1Id}) { return g.V(v1Id).repeat(__.groupCount("m").by(__.loops()).out()).times(3).cap("m") }],
+ g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX: [function({g}) { return g.V().repeat(__.both()).times(10).as("a").out().as("b").select("a","b").count() }],
+ g_VX1X_repeatXoutX_untilXoutE_count_isX0XX_name: [function({g, v1Id}) { return g.V(v1Id).repeat(__.out()).until(__.outE().count().is(0)).values("name") }],
+ g_V_repeatXbothX_untilXname_eq_marko_or_loops_gt_1X_groupCount_byXnameX: [function({g, l}) { return g.V().repeat(__.both()).until(l).groupCount().by("name") }],
+ g_V_hasXname_markoX_repeatXoutE_inV_simplePathX_untilXhasXname_rippleXX_path_byXnameX_byXlabelX: [function({g}) { return g.V().has("name","marko").repeat(__.outE().inV().simplePath()).until(__.has("name","ripple")).path().by("name").by(T.label) }],
+ g_V_hasXloop_name_loopX_repeatXinX_timesX5X_path_by_name: [function({g}) { return g.V().has("loops","name","loop").repeat(__.in_()).times(5).path().by("name") }],
+ g_V_repeatXout_repeatXoutX_timesX1XX_timesX1X_limitX1X_path_by_name: [function({g}) { return g.V().repeat(__.out().repeat(__.out()).times(1)).times(1).limit(1).path().by("name") }],
+ g_V_repeatXoutXknowsXX_untilXrepeatXoutXcreatedXX_emitXhasXname_lopXXX_path_byXnameX: [function({g}) { return g.V().repeat(__.out("knows")).until(__.repeat(__.out("created")).emit(__.has("name","lop"))).path().by("name") }],
+ g_V_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang: [function({g}) { return g.V().repeat(__.repeat(__.out("created")).until(__.has("name","ripple"))).emit().values("lang") }],
+ g_V_untilXconstantXtrueXX_repeatXrepeatXout_createdXX_untilXhasXname_rippleXXXemit_lang: [function({g}) { return g.V().until(__.constant(true)).repeat(__.repeat(__.out("created")).until(__.has("name","ripple"))).emit().values("lang") }],
+ g_V_emit_repeatXa_outXknows_filterXloops_isX0XX_lang: [function({g}) { return g.V().emit().repeat("a",__.out("knows").filter(__.loops("a").is(0))).values("lang") }],
+ g_VX3X_repeatXbothX_createdXX_untilXloops_is_40XXemit_repeatXin_knowsXX_emit_loopsXisX1Xdedup_values: [function({g, v3Id}) { return g.V(v3Id).repeat(__.both("created")).until(__.loops().is(40)).emit(__.repeat(__.in_("knows")).emit(__.loops().is(1))).dedup().values("name") }],
+ g_VX1X_repeatXrepeatXunionXout_uses_out_traversesXX_whereXloops_isX0X_timesX1X_timeX2X_name: [function({g, v1Id}) { return g.V(v1Id).repeat(__.repeat(__.union(__.out("uses"),__.out("traverses")).where(__.loops().is(0))).times(1)).times(2).values("name") }],
+ g_V_repeatXa_outXknows_repeatXb_outXcreatedX_filterXloops_isX0XX_emit_lang: [function({g}) { return g.V().repeat("a",__.out("knows").repeat("b",__.out("created").filter(__.loops("a").is(0))).emit()).emit().values("lang") }],
+ g_VX6X_repeatXa_bothXcreatedX_simplePathX_emitXrepeatXb_bothXknowsXX_untilXloopsXbX_asXb_whereXloopsXaX_asXbX_hasXname_vadasXX_dedup_name: [function({g, v6Id}) { return g.V(v6Id).repeat("a",__.both("created").simplePath()).emit(__.repeat("b",__.both("knows")).until(__.loops("b").as("b").where(__.loops("a").as("b"))).has("name","vadas")).dedup().values("name") }],
+ g_V_unionXout__inX_name: [function({g}) { return g.V().union(__.out(),__.in_()).values("name") }],
+ g_VX1X_unionXrepeatXoutX_timesX2X__outX_name: [function({g, v1Id}) { return g.V(v1Id).union(__.repeat(__.out()).times(2),__.out()).values("name") }],
+ g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX: [function({g}) { return g.V().choose(__.label().is("person"),__.union(__.out().values("lang"),__.out().values("name")),__.in_().label()) }],
+ g_V_chooseXlabel_is_person__unionX__out_lang__out_nameX__in_labelX_groupCount: [function({g}) { return g.V().choose(__.label().is("person"),__.union(__.out().values("lang"),__.out().values("name")),__.in_().label()).groupCount() }],
+ g_V_unionXrepeatXunionXoutXcreatedX__inXcreatedXX_timesX2X__repeatXunionXinXcreatedX__outXcreatedXX_timesX2XX_label_groupCount: [function({g}) { return g.V().union(__.repeat(__.union(__.out("created"),__.in_("created"))).times(2),__.repeat(__.union(__.in_("created"),__.out("created"))).times(2)).label().groupCount() }],
+ g_VX1_2X_unionXoutE_count__inE_count__outE_weight_sumX: [function({g, v1Id, v2Id}) { return g.V(v1Id,v2Id).union(__.outE().count(),__.inE().count(),__.outE().values("weight").sum()) }],
+ g_VX1_2X_localXunionXoutE_count__inE_count__outE_weight_sumXX: [function({g, v1Id, v2Id}) { return g.V(v1Id,v2Id).local(__.union(__.outE().count(),__.inE().count(),__.outE().values("weight").sum())) }],
+ g_VX1_2X_localXunionXcountXX: [function({g, v1Id, v2Id}) { return g.V(v1Id,v2Id).local(__.union(__.count())) }],
+ g_V_andXhasXage_gt_27X__outE_count_gte_2X_name: [function({g}) { return g.V().and(__.has("age",P.gt(27)),__.outE().count().is(P.gte(2))).values("name") }],
+ g_V_andXoutE__hasXlabel_personX_and_hasXage_gte_32XX_name: [function({g}) { return g.V().and(__.outE(),__.has(T.label,"person").and().has("age",P.gte(32))).values("name") }],
+ g_V_asXaX_outXknowsX_and_outXcreatedX_inXcreatedX_asXaX_name: [function({g}) { return g.V().as("a").out("knows").and().out("created").in_("created").as("a").values("name") }],
+ g_V_asXaX_andXselectXaX_selectXaXX: [function({g}) { return g.V().as("a").and(__.select("a"),__.select("a")) }],
+ g_V_hasXname_markoX_and_hasXname_markoX_and_hasXname_markoX: [function({g}) { return g.V().has("name","marko").and().has("name","marko").and().has("name","marko") }],
+ g_V_coinX1X: [function({g}) { return g.V().coin(1.0) }],
+ g_V_coinX0X: [function({g}) { return g.V().coin(0.0) }],
+ g_VX1X_outXcreatedX_inXcreatedX_cyclicPath: [function({g, v1Id}) { return g.V(v1Id).out("created").in_("created").cyclicPath() }],
+ g_VX1X_outXcreatedX_inXcreatedX_cyclicPath_path: [function({g, v1Id}) { return g.V(v1Id).out("created").in_("created").cyclicPath().path() }],
+ g_VX1X_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_cyclicPath_fromXaX_toXbX_path: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").as("b").in_("created").as("c").cyclicPath().from_("a").to("b").path() }],
+ g_V_out_in_valuesXnameX_fold_dedupXlocalX_unfold: [function({g}) { return g.V().out().in_().values("name").fold().dedup(Scope.local).unfold() }],
+ g_V_out_asXxX_in_asXyX_selectXx_yX_byXnameX_fold_dedupXlocal_x_yX_unfold: [function({g}) { return g.V().out().as("x").in_().as("y").select("x","y").by("name").fold().dedup(Scope.local,"x","y").unfold() }],
+ g_V_both_dedup_name: [function({g}) { return g.V().both().dedup().values("name") }],
+ g_V_both_hasXlabel_softwareX_dedup_byXlangX_name: [function({g}) { return g.V().both().has(T.label,"software").dedup().by("lang").values("name") }],
+ g_V_both_name_order_byXa_bX_dedup_value: [function({g, l}) { return g.V().both().properties("name").order().by(l).dedup().value() }],
+ g_V_both_both_name_dedup: [function({g}) { return g.V().both().both().values("name").dedup() }],
+ g_V_both_both_dedup: [function({g}) { return g.V().both().both().dedup() }],
+ g_V_both_both_dedup_byXlabelX: [function({g}) { return g.V().both().both().dedup().by(T.label) }],
+ g_V_group_byXlabelX_byXbothE_weight_dedup_foldX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().values("weight").dedup().fold()) }],
+ g_V_asXaX_both_asXbX_dedupXa_bX_byXlabelX_selectXa_bX: [function({g}) { return g.V().as("a").both().as("b").dedup("a","b").by(T.label).select("a","b") }],
+ g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_dedupXa_bX_path: [function({g}) { return g.V().as("a").out("created").as("b").in_("created").as("c").dedup("a","b").path() }],
+ g_V_outE_asXeX_inV_asXvX_selectXeX_order_byXweight_ascX_selectXvX_valuesXnameX_dedup: [function({g}) { return g.V().outE().as("e").inV().as("v").select("e").order().by("weight",Order.asc).select("v").values("name").dedup() }],
+ g_V_both_both_dedup_byXoutE_countX_name: [function({g}) { return g.V().both().both().dedup().by(__.outE().count()).values("name") }],
+ g_V_groupCount_selectXvaluesX_unfold_dedup: [function({g}) { return g.V().groupCount().select(Column.values).unfold().dedup() }],
+ g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup: [function({g}) { return g.V().as("a").repeat(__.both()).times(3).emit().values("name").as("b").group().by(__.select("a")).by(__.select("b").dedup().order().fold()).select(Column.values).unfold().dedup() }],
+ g_V_repeatXdedupX_timesX2X_count: [function({g}) { return g.V().repeat(__.dedup()).times(2).count() }],
+ 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_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(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property("lang","jav [...]
+ 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() }, function [...]
+ g_V_filterXfalseX: [function({g, l1}) { return g.V().filter(l1) }],
+ g_V_filterXtrueX: [function({g, l1}) { return g.V().filter(l1) }],
+ g_V_filterXlang_eq_javaX: [function({g, l1}) { return g.V().filter(l1) }],
+ g_VX1X_filterXage_gt_30X: [function({g, v1Id, l1}) { return g.V(v1Id).filter(l1) }],
+ g_VX2X_filterXage_gt_30X: [function({g, v2Id, l1}) { return g.V(v2Id).filter(l1) }],
+ g_VX1X_out_filterXage_gt_30X: [function({g, v1Id, l1}) { return g.V(v1Id).out().filter(l1) }],
+ g_V_filterXname_startsWith_m_OR_name_startsWith_pX: [function({g, l1}) { return g.V().filter(l1) }],
+ g_E_filterXfalseX: [function({g, l1}) { return g.E().filter(l1) }],
+ g_E_filterXtrueX: [function({g, l1}) { return g.E().filter(l1) }],
+ 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_VX1X_hasXnameX: [function({g, v1Id}) { return g.V(v1Id).has("name") }],
+ g_VX1X_hasXcircumferenceX: [function({g, v1Id}) { return g.V(v1Id).has("circumference") }],
+ g_VX1X_hasXname_markoX: [function({g, v1Id}) { return g.V(v1Id).has("name","marko") }],
+ g_VX2X_hasXname_markoX: [function({g, v1Id}) { return g.V(v1Id).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, v1Id}) { return g.V(v1Id).has("age",P.gt(30)) }],
+ g_VX4X_hasXage_gt_30X: [function({g, v4Id}) { return g.V(v4Id).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_lt_3X: [function({g, v1Id, ltXv3IdX}) { return g.V(v1Id).out().has(T.id,ltXv3IdX) }],
+ g_VX1AsStringX_out_hasXid_2AsStringX: [function({g, v1Id, v2Id}) { return g.V(v1Id).out().hasId(v2Id) }],
+ g_VX1X_out_hasXid_2X: [function({g, v2}) { return g.V(v2).has("age",P.gt(30)) }],
+ g_VX1X_out_hasIdX2X: [function({g, v1Id, v2Id}) { return g.V(v1Id).out().hasId(v2Id) }],
+ g_VX1X_out_hasXid_2_3X: [function({g, v1Id, v2Id, v3Id}) { return g.V(v1Id).out().hasId(v2Id,v3Id) }],
+ g_VX1X_out_hasXid_2AsString_3AsStringX: [function({g, v1Id, v2Id, v3Id}) { return g.V(v1Id).out().hasId(v2Id,v3Id) }],
+ g_V_hasXblahX: [function({g}) { return g.V().has("blah") }],
+ g_EX7X_hasXlabelXknowsX: [function({g, e7Id}) { return g.E(e7Id).hasLabel("knows") }],
+ g_E_hasXlabelXknowsX: [function({g}) { return g.E().hasLabel("knows") }],
+ 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_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, v1Id}) { return g.V(v1Id).outE().has("weight",P.gt(0.0).and(P.lt(0.6))).inV() }],
+ g_EX11X_outV_outE_hasXid_10X: [function({g, e11Id, e10Id}) { return g.E(e11Id).outV().outE().has(T.id,e10Id) }],
+ g_EX11X_outV_outE_hasXid_10AsStringX: [function({g, e11Id, e10Id}) { return g.E(e11Id).outV().outE().has(T.id,e10Id) }],
+ g_V_hasXlocationX: [function({g}) { return g.V().has("location") }],
+ g_V_hasLabelXpersonX_hasXage_notXlteX10X_andXnotXbetweenX11_20XXXX_andXltX29X_orXeqX35XXXX_name: [function({g}) { return g.V().hasLabel("person").has("age",P.gt(10).or(P.gte(11).and(P.lt(20))).and(P.lt(29).or(P.eq(35)))).values("name") }],
+ g_V_in_hasIdXneqX1XX: [function({g, neqXv1IdX}) { return g.V().in_().hasId(neqXv1IdX) }],
+ g_V_hasXage_withinX27X_count: [function({g}) { return g.V().has("age",P.within([27])).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_both_dedup_properties_hasKeyXageX_value: [function({g}) { return g.V().both().properties().dedup().hasKey("age").value() }],
+ g_V_both_dedup_properties_hasKeyXageX_hasValueXgtX30XX_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() }],
+ g_V_bothE_properties_dedup_hasKeyXweightX_hasValueXltX0d3XX_value: [function({g}) { return g.V().bothE().properties().dedup().hasKey("weight").hasValue(P.lt(0.3)).value() }],
+ g_V_hasNotXageX_name: [function({g}) { return g.V().hasNot("age").values("name") }],
+ g_V_hasIdX1X_hasIdX2X: [function({g, v1Id, v2Id}) { return g.V().hasId(v1Id).hasId(v2Id) }],
+ g_V_hasLabelXpersonX_hasLabelXsoftwareX: [function({g}) { return g.V().hasLabel("person").hasLabel("software") }],
+ g_V_hasIdXemptyX_count: [function({g, l}) { return g.V().hasId(l).count() }],
+ g_V_hasIdXwithinXemptyXX_count: [function({g, withinXlX}) { return g.V().hasId(withinXlX).count() }],
+ g_V_hasIdXwithoutXemptyXX_count: [function({g, withoutXlX}) { return g.V().hasId(withoutXlX).count() }],
+ g_V_notXhasIdXwithinXemptyXXX_count: [function({g, withinXlX}) { return g.V().not(__.hasId(withinXlX)).count() }],
+ 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_hasXp_neqXvXX: [function({g}) { return g.V().has("p",P.neq("v")) }],
+ g_V_valuesXageX_isX32X: [function({g}) { return g.V().values("age").is(32) }],
+ g_V_valuesXageX_isXlte_30X: [function({g}) { return g.V().values("age").is(P.lte(30)) }],
+ g_V_valuesXageX_isXgte_29X_isXlt_34X: [function({g}) { return g.V().values("age").is(P.gte(29)).is(P.lt(34)) }],
+ g_V_whereXinXcreatedX_count_isX1XX_valuesXnameX: [function({g}) { return g.V().where(__.in_("created").count().is(1)).values("name") }],
+ g_V_whereXinXcreatedX_count_isXgte_2XX_valuesXnameX: [function({g}) { return g.V().where(__.in_("created").count().is(P.gte(2))).values("name") }],
+ g_V_orXhasXage_gt_27X__outE_count_gte_2X_name: [function({g}) { return g.V().or(__.has("age",P.gt(27)),__.outE().count().is(P.gte(2))).values("name") }],
+ g_V_orXoutEXknowsX__hasXlabel_softwareX_or_hasXage_gte_35XX_name: [function({g}) { return g.V().or(__.outE("knows"),__.has(T.label,"software").or().has("age",P.gte(35))).values("name") }],
+ g_V_asXaX_orXselectXaX_selectXaXX: [function({g}) { return g.V().as("a").or(__.select("a"),__.select("a")) }],
+ g_VX1X_out_limitX2X: [function({g, v1Id}) { return g.V(v1Id).out().limit(2) }],
+ g_V_localXoutE_limitX1X_inVX_limitX3X: [function({g}) { return g.V().local(__.outE().limit(1)).inV().limit(3) }],
+ g_VX1X_outXknowsX_outEXcreatedX_rangeX0_1X_inV: [function({g, v1Id}) { return g.V(v1Id).out("knows").outE("created").range(0,1).inV() }],
+ g_VX1X_outXknowsX_outXcreatedX_rangeX0_1X: [function({g, v1Id}) { return g.V(v1Id).out("knows").out("created").range(0,1) }],
+ g_VX1X_outXcreatedX_inXcreatedX_rangeX1_3X: [function({g, v1Id}) { return g.V(v1Id).out("created").in_("created").range(1,3) }],
+ g_VX1X_outXcreatedX_inEXcreatedX_rangeX1_3X_outV: [function({g, v1Id}) { return g.V(v1Id).out("created").inE("created").range(1,3).outV() }],
+ g_V_repeatXbothX_timesX3X_rangeX5_11X: [function({g}) { return g.V().repeat(__.both()).times(3).range(5,11) }],
+ g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_2X: [function({g}) { return g.V().as("a").in_().as("b").in_().as("c").select("a","b","c").by("name").limit(Scope.local,2) }],
+ g_V_asXaX_in_asXbX_in_asXcX_selectXa_b_cX_byXnameX_limitXlocal_1X: [function({g}) { return g.V().as("a").in_().as("b").in_().as("c").select("a","b","c").by("name").limit(Scope.local,1) }],
+ g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_3X: [function({g}) { return g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local,1,3) }],
+ g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_rangeXlocal_1_2X: [function({g}) { return g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").range(Scope.local,1,2) }],
+ g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_3X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).range(Scope.local,1,3) }],
+ g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_rangeXlocal_1_2X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).range(Scope.local,1,2) }],
+ g_V_hasLabelXpersonX_order_byXageX_skipX1X_valuesXnameX: [function({g}) { return g.V().hasLabel("person").order().by("age").skip(1).values("name") }],
+ g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_rangeXlocal_4_5X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).range(Scope.local,4,5) }],
+ g_V_outE_valuesXweightX_fold_orderXlocalX_skipXlocal_2X: [function({g}) { return g.V().outE().values("weight").fold().order(Scope.local).skip(Scope.local,2) }],
+ g_V_asXaX_in_asXaX_in_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_limitXlocal_1X: [function({g}) { return g.V().as("a").in_().as("a").in_().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).limit(Scope.local,1) }],
+ g_V_asXaX_in_asXaX_in_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_limitXlocal_2X: [function({g}) { return g.V().as("a").in_().as("a").in_().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).limit(Scope.local,2) }],
+ g_V_hasLabelXpersonX_order_byXageX_valuesXnameX_skipX1X: [function({g}) { return g.V().hasLabel("person").order().by("age").values("name").skip(1) }],
+ g_E_sampleX1X: [function({g}) { return g.E().sample(1) }],
+ g_E_sampleX2X_byXweightX: [function({g}) { return g.E().sample(2).by("weight") }],
+ g_V_localXoutE_sampleX1X_byXweightXX: [function({g}) { return g.V().local(__.outE().sample(1).by("weight")) }],
+ g_V_group_byXlabelX_byXbothE_weight_sampleX2X_foldX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().values("weight").sample(2).fold()) }],
+ g_V_group_byXlabelX_byXbothE_weight_fold_sampleXlocal_5XX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().values("weight").fold().sample(Scope.local,5)) }],
+ g_VX1X_outXcreatedX_inXcreatedX_simplePath: [function({g, v1Id}) { return g.V(v1Id).out("created").in_("created").simplePath() }],
+ g_V_repeatXboth_simplePathX_timesX3X_path: [function({g}) { return g.V().repeat(__.both().simplePath()).times(3).path() }],
+ g_V_asXaX_out_asXbX_out_asXcX_simplePath_byXlabelX_fromXbX_toXcX_path_byXnameX: [function({g}) { return g.V().as("a").out().as("b").out().as("c").simplePath().by(T.label).from_("b").to("c").path().by("name") }],
+ g_V_valuesXnameX_order_tailXglobal_2X: [function({g}) { return g.V().values("name").order().tail(Scope.global,2) }],
+ g_V_valuesXnameX_order_tailX2X: [function({g}) { return g.V().values("name").order().tail(2) }],
+ g_V_valuesXnameX_order_tail: [function({g}) { return g.V().values("name").order().tail() }],
+ g_V_valuesXnameX_order_tailX7X: [function({g}) { return g.V().values("name").order().tail(7) }],
+ g_V_repeatXbothX_timesX3X_tailX7X: [function({g}) { return g.V().repeat(__.both()).times(3).tail(7) }],
+ g_V_repeatXin_outX_timesX3X_tailX7X_count: [function({g}) { return g.V().repeat(__.in_().out()).times(3).tail(7).count() }],
+ g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocal_1X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local,1) }],
+ g_V_asXaX_out_asXaX_out_asXaX_selectXaX_byXunfold_valuesXnameX_foldX_tailXlocalX: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select("a").by(__.unfold().values("name").fold()).tail(Scope.local) }],
+ g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_2X: [function({g}) { return g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local,2) }],
+ g_V_asXaX_out_asXbX_out_asXcX_selectXa_b_cX_byXnameX_tailXlocal_1X: [function({g}) { return g.V().as("a").out().as("b").out().as("c").select("a","b","c").by("name").tail(Scope.local,1) }],
+ g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_tailXlocal_1X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).tail(Scope.local,1) }],
+ g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_tailXlocalX: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).tail(Scope.local) }],
+ g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXlimitXlocal_0XX_tailXlocal_1X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.limit(Scope.local,0)).tail(Scope.local,1) }],
+ g_V_asXaX_out_asXaX_out_asXaX_selectXmixed_aX_byXunfold_valuesXnameX_foldX_tailXlocal_2X: [function({g}) { return g.V().as("a").out().as("a").out().as("a").select(Pop.mixed,"a").by(__.unfold().values("name").fold()).tail(Scope.local,2) }],
+ g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_eqXbXX: [function({g}) { return g.V().has("age").as("a").out().in_().has("age").as("b").select("a","b").where("a",P.eq("b")) }],
+ g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_neqXbXX: [function({g}) { return g.V().has("age").as("a").out().in_().has("age").as("b").select("a","b").where("a",P.neq("b")) }],
+ g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXb_hasXname_markoXX: [function({g}) { return g.V().has("age").as("a").out().in_().has("age").as("b").select("a","b").where(__.as("b").has("name","marko")) }],
+ g_V_hasXageX_asXaX_out_in_hasXageX_asXbX_selectXa_bX_whereXa_outXknowsX_bX: [function({g}) { return g.V().has("age").as("a").out().in_().has("age").as("b").select("a","b").where(__.as("a").out("knows").as("b")) }],
+ g_V_asXaX_outXcreatedX_whereXasXaX_name_isXjoshXX_inXcreatedX_name: [function({g}) { return g.V().as("a").out("created").where(__.as("a").values("name").is("josh")).in_("created").values("name") }],
+ g_withSideEffectXa_josh_peterX_VX1X_outXcreatedX_inXcreatedX_name_whereXwithinXaXX: [function({g, v1Id, l}) { return g.withSideEffect("a",l).V(v1Id).out("created").in_("created").values("name").where(P.within(["a"])) }],
+ g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXa_neqXbXX_name: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").in_("created").as("b").where("a",P.neq("b")).values("name") }],
+ g_VX1X_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXasXbX_outXcreatedX_hasXname_rippleXX_valuesXage_nameX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").in_("created").as("b").where(__.as("b").out("created").has("name","ripple")).values("age","name") }],
+ g_VX1X_asXaX_outXcreatedX_inXcreatedX_whereXeqXaXX_name: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").in_("created").where(P.eq("a")).values("name") }],
+ g_VX1X_asXaX_outXcreatedX_inXcreatedX_whereXneqXaXX_name: [function({g, v1Id}) { return g.V(v1Id).as("a").out("created").in_("created").where(P.neq("a")).values("name") }],
+ g_VX1X_out_aggregateXxX_out_whereXnotXwithinXaXXX: [function({g, v1Id}) { return g.V(v1Id).out().aggregate("x").out().where(P.without(["x"])) }],
+ g_withSideEffectXa_g_VX2XX_VX1X_out_whereXneqXaXX: [function({g, v1Id, v2}) { return g.withSideEffect("a",v2).V(v1Id).out().where(P.neq("a")) }],
+ g_VX1X_repeatXbothEXcreatedX_whereXwithoutXeXX_aggregateXeX_otherVX_emit_path: [function({g, v1Id}) { return g.V(v1Id).repeat(__.bothE("created").where(P.without(["e"])).aggregate("e").otherV()).emit().path() }],
+ g_V_whereXnotXoutXcreatedXXX_name: [function({g}) { return g.V().where(__.not(__.out("created"))).values("name") }],
+ g_V_asXaX_out_asXbX_whereXandXasXaX_outXknowsX_asXbX__orXasXbX_outXcreatedX_hasXname_rippleX__asXbX_inXknowsX_count_isXnotXeqX0XXXXX_selectXa_bX: [function({g}) { return g.V().as("a").out().as("b").where(__.and(__.as("a").out("knows").as("b"),__.or(__.as("b").out("created").has("name","ripple"),__.as("b").in_("knows").count().is(P.neq(0))))).select("a","b") }],
+ g_V_whereXoutXcreatedX_and_outXknowsX_or_inXknowsXX_valuesXnameX: [function({g}) { return g.V().where(__.out("created").and().out("knows").or().in_("knows")).values("name") }],
+ g_V_asXaX_outXcreatedX_asXbX_whereXandXasXbX_in__notXasXaX_outXcreatedX_hasXname_rippleXXX_selectXa_bX: [function({g}) { return g.V().as("a").out("created").as("b").where(__.and(__.as("b").in_(),__.not(__.as("a").out("created").has("name","ripple")))).select("a","b") }],
+ g_V_asXaX_outXcreatedX_asXbX_inXcreatedX_asXcX_bothXknowsX_bothXknowsX_asXdX_whereXc__notXeqXaX_orXeqXdXXXX_selectXa_b_c_dX: [function({g}) { return g.V().as("a").out("created").as("b").in_("created").as("c").both("knows").both("knows").as("d").where("c",P.neq("a").and(P.neq("d"))).select("a","b","c","d") }],
+ g_V_asXaX_out_asXbX_whereXin_count_isXeqX3XX_or_whereXoutXcreatedX_and_hasXlabel_personXXX_selectXa_bX: [function({g}) { return g.V().as("a").out().as("b").where(__.as("b").in_().count().is(P.eq(3)).or().where(__.as("b").out("created").and().as("b").has(T.label,"person"))).select("a","b") }],
+ g_V_asXaX_outXcreatedX_inXcreatedX_asXbX_whereXa_gtXbXX_byXageX_selectXa_bX_byXnameX: [function({g}) { return g.V().as("a").out("created").in_("created").as("b").where("a",P.gt("b")).by("age").select("a","b").by("name") }],
+ g_V_asXaX_outEXcreatedX_asXbX_inV_asXcX_whereXa_gtXbX_orXeqXbXXX_byXageX_byXweightX_byXweightX_selectXa_cX_byXnameX: [function({g}) { return g.V().as("a").outE("created").as("b").inV().as("c").where("a",P.gt("b").or(P.eq("b"))).by("age").by("weight").by("weight").select("a","c").by("name") }],
+ g_V_asXaX_outEXcreatedX_asXbX_inV_asXcX_inXcreatedX_asXdX_whereXa_ltXbX_orXgtXcXX_andXneqXdXXX_byXageX_byXweightX_byXinXcreatedX_valuesXageX_minX_selectXa_c_dX: [function({g}) { return g.V().as("a").outE("created").as("b").inV().as("c").in_("created").as("d").where("a",P.lt("b").or(P.gt("c")).and(P.neq("d"))).by("age").by("weight").by(__.in_("created").values("age").min()).select("a","c","d").by("name") }],
+ g_VX1X_asXaX_out_hasXageX_whereXgtXaXX_byXageX_name: [function({g, v1Id}) { return g.V(v1Id).as("a").out().has("age").where(P.gt("a")).by("age").values("name") }],
+ g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX: [function({g, v1Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","rip [...]
+ g_VX1X_asXaX_outXcreatedX_addEXcreatedByX_toXaX_propertyXweight_2X: [function({g, v1Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).p [...]
+ g_V_outE_propertyXweight_nullX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property("lang"," [...]
+ g_V_aggregateXxX_asXaX_selectXxX_unfold_addEXexistsWithX_toXaX_propertyXtime_nowX: [function({g, v1Id, v2Id, v3Id, v4Id, v5Id, v6Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).a [...]
+ g_V_asXaX_outXcreatedX_inXcreatedX_whereXneqXaXX_asXbX_addEXcodeveloperX_fromXaX_toXbX_propertyXyear_2009X: [function({g, v1Id, v2Id, v4Id, v6Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").propert [...]
+ g_V_asXaX_inXcreatedX_addEXcreatedByX_fromXaX_propertyXyear_2009X_propertyXacl_publicX: [function({g, v1Id, v2Id, v3Id, v4Id, v5Id, v6Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age", [...]
+ g_withSideEffectXb_bX_VXaX_addEXknowsX_toXbX_propertyXweight_0_5X: [function({g, v6, v1}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5). [...]
+ g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX: [function({g}) { return g.addV().as("first").repeat(__.addE("next").to(__.addV()).inV()).times(5).addE("next").to(__.select("first")) }, function({g}) { return g.V() }, function({g}) { return g.E() }, function({g}) { return g.E().hasLabel("next") }, function({g}) { return g.V().limit(1).bothE() }, function({g}) { return g.V().limit(1).inE() }, function({g}) { return g.V().limit(1).outE() }],
+ g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX: [function({g, v1}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property( [...]
+ g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX: [function({g, v2}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh"). [...]
+ g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X: [function({g, v6, v1, dotOne}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property( [...]
+ g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X: [function({g, v6, v1, dotOne}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("na [...]
+ g_VX1X_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX: [function({g, v1Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.i [...]
+ g_V_addVXanimalX_propertyXage_0X: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property("lang" [...]
+ g_addVXpersonX_propertyXname_stephenX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").property(" [...]
+ g_V_hasLabelXpersonX_propertyXname_nullX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripple").propert [...]
+ g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenmX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5 [...]
+ get_g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenm_since_2010X: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software"). [...]
+ g_V_hasXname_markoX_propertyXfriendWeight_outEXknowsX_weight_sum__acl_privateX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.i [...]
+ g_addVXanimalX_propertyXname_mateoX_propertyXname_gateoX_propertyXname_cateoX_propertyXage_5X: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software [...]
+ g_withSideEffectXa_markoX_addV_propertyXname_selectXaXX_name: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("nam [...]
+ g_addVXpersonX_propertyXsingle_name_stephenX_propertyXsingle_name_stephenm_since_2010X: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").prop [...]
+ g_V_addVXanimalX_propertyXname_valuesXnameXX_propertyXname_an_animalX_propertyXvaluesXnameX_labelX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("sof [...]
+ g_withSideEffectXa_testX_V_hasLabelXsoftwareX_propertyXtemp_selectXaXX_valueMapXname_tempX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software"). [...]
+ g_withSideEffectXa_nameX_addV_propertyXselectXaX_markoX_name: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("nam [...]
+ g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMap_withXtokensX: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32) [...]
+ g_addVXV_hasXname_markoX_propertiesXnameX_keyX_label: [function({g}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("software").property(T.id,5).property("name","ripp [...]
+ g_addVXnullX_propertyXid_nullX: [function({g}) { return g.addV(null).property(T.id,null) }, function({g}) { return g.V().hasLabel("vertex") }],
+ g_addV_propertyXlabel_personX: [function({g}) { return g.addV().property(T.label,"person") }, function({g}) { return g.V().hasLabel("person") }],
+ g_V_coalesceXoutXfooX_outXbarXX: [function({g}) { return g.V().coalesce(__.out("foo"),__.out("bar")) }],
+ g_VX1X_coalesceXoutXknowsX_outXcreatedXX_valuesXnameX: [function({g, v1Id}) { return g.V(v1Id).coalesce(__.out("knows"),__.out("created")).values("name") }],
+ g_VX1X_coalesceXoutXcreatedX_outXknowsXX_valuesXnameX: [function({g, v1Id}) { return g.V(v1Id).coalesce(__.out("created"),__.out("knows")).values("name") }],
+ g_V_coalesceXoutXlikesX_outXknowsX_inXcreatedXX_groupCount_byXnameX: [function({g}) { return g.V().coalesce(__.out("likes"),__.out("knows"),__.out("created")).groupCount().by("name") }],
+ g_V_coalesceXoutEXknowsX_outEXcreatedXX_otherV_path_byXnameX_byXlabelX: [function({g}) { return g.V().coalesce(__.outE("knows"),__.outE("created")).otherV().path().by("name").by(T.label) }],
+ g_V_outXcreatedX_order_byXnameX_coalesceXname_constantXxXX: [function({g}) { return g.V().out("created").order().by("name").coalesce(__.values("name"),__.constant("x")) }],
+ g_V_connectedComponent_hasXcomponentX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().connectedComponent().has("gremlin.connectedComponentVertexProgram.component") }],
+ g_V_dedup_connectedComponent_hasXcomponentX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().dedup().connectedComponent().has("gremlin.connectedComponentVertexProgram.component") }],
+ g_V_hasLabelXsoftwareX_connectedComponent_project_byXnameX_byXcomponentX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().hasLabel("software").connectedComponent().project("name","component").by("name").by("gremlin.connectedComponentVertexProgram.component") }],
+ g_V_connectedComponent_withXEDGES_bothEXknowsXX_withXPROPERTY_NAME_clusterX_project_byXnameX_byXclusterX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().hasLabel("person").connectedComponent().with_("~tinkerpop.connectedComponent.edges",__.bothE("knows")).with_("~tinkerpop.connectedComponent.propertyName","cluster").project("name","cluster").by("name").by("cluster") }],
+ g_V_constantX123X: [function({g}) { return g.V().constant(123) }],
+ g_V_constantXnullX: [function({g}) { return g.V().constant(null) }],
+ g_V_chooseXhasLabelXpersonX_valuesXnameX_constantXinhumanXX: [function({g}) { return g.V().choose(__.hasLabel("person"),__.values("name"),__.constant("inhuman")) }],
+ g_V_count: [function({g}) { return g.V().count() }],
+ g_V_out_count: [function({g}) { return g.V().out().count() }],
+ g_V_both_both_count: [function({g}) { return g.V().both().both().count() }],
+ g_V_fold_countXlocalX: [function({g}) { return g.V().fold().count(Scope.local) }],
+ g_V_hasXnoX_count: [function({g}) { return g.V().has("no").count() }],
+ g_V_whereXinXkknowsX_outXcreatedX_count_is_0XX_name: [function({g}) { return g.V().where(__.in_("knows").out("created").count().is(0)).values("name") }],
+ g_V_repeatXoutX_timesX8X_count: [function({g}) { return g.V().repeat(__.out()).times(8).count() }],
+ g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count: [function({g}) { return g.V().repeat(__.out()).times(5).as("a").out("writtenBy").as("b").select("a","b").count() }],
+ g_V_repeatXoutX_timesX3X_count: [function({g}) { return g.V().repeat(__.out()).times(3).count() }],
+ g_V_elementMap: [function({g}) { return g.V().elementMap() }],
+ g_V_elementMapXname_ageX: [function({g}) { return g.V().elementMap("name","age") }],
+ g_EX11X_elementMap: [function({g, e11Id}) { return g.E(e11Id).elementMap() }],
+ g_V_asXaX_flatMapXselectXaXX: [function({g}) { return g.V().as("a").flatMap(__.select("a")) }],
+ g_V_fold: [function({g}) { return g.V().fold() }],
+ g_V_fold_unfold: [function({g}) { return g.V().fold().unfold() }],
+ g_V_age_foldX0_plusX: [function({g}) { return g.V().values("age").fold(0,Operator.sum) }],
+ g_VX1X_V_valuesXnameX: [function({g, v1Id}) { return g.V(v1Id).V().values("name") }],
+ g_V_outXknowsX_V_name: [function({g}) { return g.V().out("knows").V().values("name") }],
+ g_V_hasXname_GarciaX_inXsungByX_asXsongX_V_hasXname_Willie_DixonX_inXwrittenByX_whereXeqXsongXX_name: [function({g}) { return g.V().has("artist","name","Garcia").in_("sungBy").as("song").V().has("artist","name","Willie_Dixon").in_("writtenBy").where(P.eq("song")).values("name") }],
+ g_V_hasLabelXpersonX_asXpX_VXsoftwareX_addInEXuses_pX: [function({g, software, v1Id, v2Id, v3Id, v4Id, v5Id, v6Id}) { return g.addV("person").property(T.id,1).property("name","marko").property("age",29).as("marko").addV("person").property(T.id,2).property("name","vadas").property("age",27).as("vadas").addV("software").property(T.id,3).property("name","lop").property("lang","java").as("lop").addV("person").property(T.id,4).property("name","josh").property("age",32).as("josh").addV("so [...]
+ g_V_hasLabelXsoftwareX_index_unfold: [function({g}) { return g.V().hasLabel("software").index().unfold() }],
+ g_V_hasLabelXsoftwareX_order_byXnameX_index_withXmapX: [function({g}) { return g.V().hasLabel("software").order().by("name").index().with_("~tinkerpop.index.indexer",1) }],
+ g_V_hasLabelXsoftwareX_name_fold_orderXlocalX_index_unfold_order_byXtailXlocal_1XX: [function({g}) { return g.V().hasLabel("software").values("name").fold().order(Scope.local).index().unfold().order().by(__.tail(Scope.local,1)) }],
+ g_V_hasLabelXpersonX_name_fold_orderXlocalX_index_withXmapX: [function({g}) { return g.V().hasLabel("person").values("name").fold().order(Scope.local).index().with_("~tinkerpop.index.indexer",1) }],
+ g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX: [function({g, v1Id}) { return g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name","peter").or().loops().is(3)).has("name","peter").path().by("name") }],
+ g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX: [function({g, v1Id}) { return g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name","peter").or().loops().is(2)).has("name","peter").path().by("name") }],
+ g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX: [function({g, v1Id}) { return g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name","peter").and().loops().is(3)).has("name","peter").path().by("name") }],
+ g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX: [function({g}) { return g.V().emit(__.has("name","marko").or().loops().is(2)).repeat(__.out()).values("name") }],
+ g_VX1X_mapXnameX: [function({g, v1Id, l}) { return g.V(v1Id).map(l) }],
+ g_VX1X_outE_label_mapXlengthX: [function({g, v1Id, l}) { return g.V(v1Id).outE().label().map(l) }],
+ g_VX1X_out_mapXnameX_mapXlengthX: [function({g, v1Id, l1, l2}) { return g.V(v1Id).out().map(l1).map(l2) }],
+ g_withPath_V_asXaX_out_mapXa_nameX: [function({g, l}) { return g.withPath().V().as("a").out().map(l) }],
+ g_withPath_V_asXaX_out_out_mapXa_name_it_nameX: [function({g, l}) { return g.withPath().V().as("a").out().out().map(l) }],
+ g_V_mapXselectXaXX: [function({g}) { return g.V().as("a").map(__.select("a")) }],
+ g_V_mapXconstantXnullXX: [function({g}) { return g.V().map(__.constant(null)) }],
+ g_V_valueMap_matchXa_selectXnameX_bX: [function({g}) { return g.V().valueMap().match(__.as("a").select("name").as("b")) }],
+ g_V_matchXa_out_bX: [function({g}) { return g.V().match(__.as("a").out().as("b")) }],
+ g_V_matchXa_out_bX_selectXb_idX: [function({g}) { return g.V().match(__.as("a").out().as("b")).select("b").by(T.id) }],
+ g_V_matchXa_knows_b__b_created_cX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.as("b").out("created").as("c")) }],
+ g_V_matchXb_created_c__a_knows_bX: [function({g}) { return g.V().match(__.as("b").out("created").as("c"),__.as("a").out("knows").as("b")) }],
+ g_V_matchXa_created_b__b_0created_cX_whereXa_neq_cX_selectXa_cX: [function({g}) { return g.V().match(__.as("a").out("created").as("b"),__.as("b").in_("created").as("c")).where("a",P.neq("c")).select("a","c") }],
+ g_V_matchXd_0knows_a__d_hasXname_vadasX__a_knows_b__b_created_cX: [function({g}) { return g.V().match(__.as("d").in_("knows").as("a"),__.as("d").has("name","vadas"),__.as("a").out("knows").as("b"),__.as("b").out("created").as("c")) }],
+ g_V_matchXa_created_lop_b__b_0created_29_c__c_whereXrepeatXoutX_timesX2XXX: [function({g}) { return g.V().match(__.as("a").out("created").has("name","lop").as("b"),__.as("b").in_("created").has("age",29).as("c"),__.as("c").where(__.repeat(__.out()).times(2))) }],
+ g_V_asXaX_out_asXbX_matchXa_out_count_c__b_in_count_cX: [function({g}) { return g.V().as("a").out().as("b").match(__.as("a").out().count().as("c"),__.as("b").in_().count().as("c")) }],
+ g_V_matchXa__a_out_b__notXa_created_bXX: [function({g}) { return g.V().match(__.as("a").out().as("b"),__.not(__.as("a").out("created").as("b"))) }],
+ g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_selectXa_b_cX: [function({g}) { return g.V().match(__.as("a").out("created").has("name","lop").as("b"),__.as("b").in_("created").has("age",29).as("c")).where(__.as("c").repeat(__.out()).times(2)).select("a","b","c") }],
+ g_V_out_out_matchXa_0created_b__b_0knows_cX_selectXcX_outXcreatedX_name: [function({g}) { return g.V().out().out().match(__.as("a").in_("created").as("b"),__.as("b").in_("knows").as("c")).select("c").out("created").values("name") }],
+ g_V_matchXa_knows_b__b_created_c__a_created_cX_dedupXa_b_cX_selectXaX_byXnameX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.as("b").out("created").as("c"),__.as("a").out("created").as("c")).dedup("a","b","c").select("a").by("name") }],
+ g_V_matchXa_created_b__a_repeatXoutX_timesX2XX_selectXa_bX: [function({g}) { return g.V().match(__.as("a").out("created").as("b"),__.as("a").repeat(__.out()).times(2).as("b")).select("a","b") }],
+ g_V_notXmatchXa_age_b__a_name_cX_whereXb_eqXcXX_selectXaXX_name: [function({g}) { return g.V().not(__.match(__.as("a").values("age").as("b"),__.as("a").values("name").as("c")).where("b",P.eq("c")).select("a")).values("name") }],
+ g_V_matchXa_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.and(__.as("a").out("created").as("c"),__.as("b").out("created").as("c"),__.and(__.as("b").out("created").count().as("d"),__.as("a").out("knows").count().as("d")))) }],
+ g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_selectXa_b_cX_byXidX: [function({g}) { return g.V().match(__.where("a",P.neq("c")),__.as("a").out("created").as("b"),__.or(__.as("a").out("knows").has("name","vadas"),__.as("a").in_("knows").and().as("a").has(T.label,"person")),__.as("b").in_("created").as("c"),__.as("b").in_("created").count().is(P.gt(1))).select("a","b","c").by(T.id) }],
+ g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX: [function({g}) { return g.V().match(__.as("a").both().as("b"),__.as("b").both().as("c")).dedup("a","b") }],
+ g_V_matchXa_knows_b__b_created_lop__b_matchXb_created_d__d_0created_cX_selectXcX_cX_selectXa_b_cX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.as("b").out("created").has("name","lop"),__.as("b").match(__.as("b").out("created").as("d"),__.as("d").in_("created").as("c")).select("c").as("c")).select("a","b","c") }],
+ g_V_matchXa_knows_b__a_created_cX: [function({g}) { return g.V().match(__.as("a").out("knows").as("b"),__.as("a").out("created").as("c")) }],
+ g_V_matchXwhereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX: [function({g}) { return g.V().match(__.where(__.and(__.as("a").out("created").as("b"),__.as("b").in_("created").count().is(P.eq(3)))),__.as("a").both().as("b"),__.where(__.as("b").in_())) }],
+ g_V_matchXa_outEXcreatedX_order_byXweight_descX_limitX1X_inV_b__b_hasXlang_javaXX_selectXa_bX_byXnameX: [function({g}) { return g.V().match(__.as("a").outE("created").order().by("weight",Order.desc).limit(1).inV().as("b"),__.as("b").has("lang","java")).select("a","b").by("name") }],
+ g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX: [function({g}) { return g.V().match(__.as("a").both().as("b"),__.as("b").both().as("c")).dedup("a","b").by(T.label) }],
+ g_V_matchXa_created_b__b_0created_aX: [function({g}) { return g.V().match(__.as("a").out("created").as("b"),__.as("b").in_("created").as("a")) }],
+ g_V_asXaX_out_asXbX_matchXa_out_count_c__orXa_knows_b__b_in_count_c__and__c_isXgtX2XXXX: [function({g}) { return g.V().as("a").out().as("b").match(__.as("a").out().count().as("c"),__.or(__.as("a").out("knows").as("b"),__.as("b").in_().count().as("c").and().as("c").is(P.gt(2)))) }],
+ g_V_matchXa_knows_count_bX_selectXbX: [function({g}) { return g.V().match(__.as("a").out("knows").count().as("b")).select("b") }],
+ g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX: [function({g}) { return g.V().match(__.as("a").in_("sungBy").as("b"),__.as("a").in_("writtenBy").as("c"),__.as("b").out("writtenBy").as("d"),__.as("c").out("sungBy").as("d"),__.as("d").has("name","Garcia")) }],
+ g_V_matchXa_hasXsong_name_sunshineX__a_mapX0followedBy_weight_meanX_b__a_0followedBy_c__c_filterXweight_whereXgteXbXXX_outV_dX_selectXdX_byXnameX: [function({g}) { return g.V().match(__.as("a").has("song","name","HERE COMES SUNSHINE"),__.as("a").map(__.inE("followedBy").values("weight").mean()).as("b"),__.as("a").inE("followedBy").as("c"),__.as("c").filter(__.values("weight").where(P.gte("b"))).outV().as("d")).select("d").by("name") }],
+ g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX: [function({g}) { return g.V().match(__.as("a").in_("sungBy").as("b"),__.as("a").in_("sungBy").as("c"),__.as("b").out("writtenBy").as("d"),__.as("c").out("writtenBy").as("e"),__.as("d").has("name","George_Harrison"),__.as("e").has("name","Bob_Marley")) }],
+ g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX: [function({g}) { return g.V().match(__.as("a").has("name","Garcia"),__.as("a").in_("writtenBy").as("b"),__.as("a").in_("sungBy").as("b")) }],
+ g_V_hasLabelXsongsX_matchXa_name_b__a_performances_cX_selectXb_cX_count: [function({g}) { return g.V().hasLabel("song").match(__.as("a").values("name").as("b"),__.as("a").values("performances").as("c")).select("b","c").count() }],
+ g_V_matchXa_followedBy_count_isXgtX10XX_b__a_0followedBy_count_isXgtX10XX_bX_count: [function({g}) { return g.V().match(__.as("a").out("followedBy").count().is(P.gt(10)).as("b"),__.as("a").in_("followedBy").count().is(P.gt(10)).as("b")).count() }],
+ g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX: [function({g}) { return g.V().match(__.as("a").in_("sungBy").as("b"),__.as("a").in_("writtenBy").as("c"),__.as("b").out("writtenBy").as("d")).where(__.as("c").out("sungBy").as("d")).where(__.as("d").has("name","Garcia")) }],
+ g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX: [function({g}) { return g.V().match(__.as("a").has("name","Garcia"),__.as("a").in_("writtenBy").as("b"),__.as("b").out("followedBy").as("c"),__.as("c").out("writtenBy").as("d"),__.where("d",P.neq("a"))) }],
+ g_V_outE_mathX0_minus_itX_byXweightX: [function({g}) { return g.V().outE().math("0-_").by("weight") }],
+ g_V_hasXageX_valueMap_mathXit_plus_itXbyXselectXageX_unfoldXX: [function({g}) { return g.V().has("age").valueMap().math("_+_").by(__.select("age").unfold()) }],
+ g_V_asXaX_outXknowsX_asXbX_mathXa_plus_bX_byXageX: [function({g}) { return g.V().as("a").out("knows").as("b").math("a + b").by("age") }],
+ g_withSideEffectXx_100X_V_age_mathX__plus_xX: [function({g, x}) { return g.withSideEffect("x",x).V().values("age").math("_ + x") }],
+ g_V_asXaX_outXcreatedX_asXbX_mathXb_plus_aX_byXinXcreatedX_countX_byXageX: [function({g}) { return g.V().as("a").out("created").as("b").math("b + a").by(__.in_("created").count()).by("age") }],
+ g_withSackX1X_injectX1X_repeatXsackXsumX_byXconstantX1XXX_timesX5X_emit_mathXsin__X_byXsackX: [function({g}) { return g.withSack(1).inject(1).repeat(__.sack(Operator.sum).by(__.constant(1))).times(5).emit().math("sin _").by(__.sack()) }],
+ g_V_projectXa_b_cX_byXbothE_weight_sumX_byXbothE_countX_byXnameX_order_byXmathXa_div_bX_descX_selectXcX: [function({g}) { return g.V().project("a","b","c").by(__.bothE().values("weight").sum()).by(__.bothE().count()).by("name").order().by(__.math("a / b"),Order.desc).select("c") }],
+ g_V_age_max: [function({g}) { return g.V().values("age").max() }],
+ g_V_foo_max: [function({g}) { return g.V().values("foo").max() }],
+ g_V_name_max: [function({g}) { return g.V().values("name").max() }],
+ g_V_age_fold_maxXlocalX: [function({g}) { return g.V().values("age").fold().max(Scope.local) }],
+ g_V_foo_fold_maxXlocalX: [function({g}) { return g.V().values("foo").fold().max(Scope.local) }],
+ g_V_name_fold_maxXlocalX: [function({g}) { return g.V().values("name").fold().max(Scope.local) }],
+ g_V_repeatXbothX_timesX5X_age_max: [function({g}) { return g.V().repeat(__.both()).times(5).values("age").max() }],
+ g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_maxX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").max()) }],
+ g_V_age_mean: [function({g}) { return g.V().values("age").mean() }],
+ g_V_foo_mean: [function({g}) { return g.V().values("foo").mean() }],
+ g_V_age_fold_meanXlocalX: [function({g}) { return g.V().values("age").fold().mean(Scope.local) }],
+ g_V_foo_fold_meanXlocalX: [function({g}) { return g.V().values("foo").fold().mean(Scope.local) }],
+ g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_meanX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").mean()) }],
+ g_V_age_min: [function({g}) { return g.V().values("age").min() }],
+ g_V_foo_min: [function({g}) { return g.V().values("foo").min() }],
+ g_V_name_min: [function({g}) { return g.V().values("name").min() }],
+ g_V_age_fold_minXlocalX: [function({g}) { return g.V().values("age").fold().min(Scope.local) }],
+ g_V_foo_fold_minXlocalX: [function({g}) { return g.V().values("foo").fold().min(Scope.local) }],
+ g_V_name_fold_minXlocalX: [function({g}) { return g.V().values("name").fold().min(Scope.local) }],
+ g_V_repeatXbothX_timesX5X_age_min: [function({g}) { return g.V().repeat(__.both()).times(5).values("age").min() }],
+ g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_minX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").min()) }],
+ g_V_foo_injectX9999999999X_min: [function({g, injectVal}) { return g.V().values("foo").inject(injectVal).min() }],
+ g_V_name_order: [function({g}) { return g.V().values("name").order() }],
+ g_V_name_order_byXa1_b1X_byXb2_a2X: [function({g, l1, l2}) { return g.V().values("name").order().by(l1).by(l2) }],
+ g_V_order_byXname_ascX_name: [function({g}) { return g.V().order().by("name",Order.asc).values("name") }],
+ g_V_order_byXnameX_name: [function({g}) { return g.V().order().by("name").values("name") }],
+ g_V_outE_order_byXweight_descX_weight: [function({g}) { return g.V().outE().order().by("weight",Order.desc).values("weight") }],
+ g_V_order_byXname_a1_b1X_byXname_b2_a2X_name: [function({g, l1, l2}) { return g.V().order().by("name",l1).by("name",l2).values("name") }],
+ g_V_asXaX_outXcreatedX_asXbX_order_byXshuffleX_selectXa_bX: [function({g}) { return g.V().as("a").out("created").as("b").order().by(Order.shuffle).select("a","b") }],
+ g_V_both_hasLabelXpersonX_order_byXage_descX_limitX5X_name: [function({g}) { return g.V().both().hasLabel("person").order().by("age",Order.desc).limit(5).values("name") }],
+ g_V_properties_order_byXkey_descX_key: [function({g}) { return g.V().properties().order().by(T.key,Order.desc).key() }],
+ g_V_hasLabelXpersonX_order_byXvalueXageX_descX_name: [function({g, l1}) { return g.V().hasLabel("person").order().by(l1,Order.desc).values("name") }],
+ g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_orderXlocalX_byXvaluesX: [function({g}) { return g.V().hasLabel("person").group().by("name").by(__.outE().values("weight").sum()).order(Scope.local).by(Column.values) }],
+ g_V_mapXbothE_weight_foldX_order_byXsumXlocalX_descX: [function({g}) { return g.V().map(__.bothE().values("weight").fold()).order().by(__.sum(Scope.local),Order.desc) }],
+ g_V_group_byXlabelX_byXname_order_byXdescX_foldX: [function({g}) { return g.V().group().by(T.label).by(__.values("name").order().by(Order.desc).fold()) }],
+ g_V_hasLabelXpersonX_group_byXnameX_byXoutE_weight_sumX_unfold_order_byXvalues_descX: [function({g}) { return g.V().hasLabel("person").group().by("name").by(__.outE().values("weight").sum()).unfold().order().by(Column.values,Order.desc) }],
+ g_V_asXvX_mapXbothE_weight_foldX_sumXlocalX_asXsX_selectXv_sX_order_byXselectXsX_descX: [function({g}) { return g.V().as("v").map(__.bothE().values("weight").fold()).sum(Scope.local).as("s").select("v","s").order().by(__.select("s"),Order.desc) }],
+ g_V_hasLabelXpersonX_fold_orderXlocalX_byXageX: [function({g}) { return g.V().hasLabel("person").fold().order(Scope.local).by("age") }],
+ g_V_both_hasLabelXpersonX_order_byXage_descX_name: [function({g}) { return g.V().both().hasLabel("person").order().by("age",Order.desc).values("name") }],
+ g_V_order_byXoutE_count_descX: [function({g}) { return g.V().order().by(__.outE().count(),Order.desc) }],
+ g_V_hasLabelXpersonX_order_byXageX: [function({g}) { return g.V().hasLabel("person").order().by("age") }],
+ g_VX1X_hasXlabel_personX_mapXmapXint_ageXX_orderXlocalX_byXvalues_descX_byXkeys_ascX: [function({g, l1, v1}) { return g.V(v1).hasLabel("person").map(l1).order(Scope.local).by(Column.values,Order.desc).by(Column.keys,Order.asc) }],
+ g_VX1X_elementMap_orderXlocalX_byXkeys_descXunfold: [function({g, v1Id}) { return g.V(v1Id).elementMap().order(Scope.local).by(Column.keys,Order.desc).unfold() }],
+ g_V_pageRank_hasXpageRankX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().has("gremlin.pageRankVertexProgram.pageRank") }, function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().has("gremlin.pageRankVertexProgram.pageRank") }],
+ g_V_outXcreatedX_pageRank_withXedges_bothEX_withXpropertyName_projectRankX_withXtimes_0X_valueMapXname_projectRankX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().out("created").pageRank().with_("~tinkerpop.pageRank.edges",__.bothE()).with_("~tinkerpop.pageRank.propertyName","projectRank").with_("~tinkerpop.pageRank.times",0).valueMap("name","projectRank") }],
+ g_V_pageRank_order_byXpageRank_descX_byXnameX_name: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().order().by("gremlin.pageRankVertexProgram.pageRank",Order.desc).by("name").values("name") }],
+ g_V_pageRank_order_byXpageRank_descX_name_limitX2X: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().order().by("gremlin.pageRankVertexProgram.pageRank",Order.desc).values("name").limit(2) }],
+ g_V_pageRank_withXedges_outEXknowsXX_withXpropertyName_friendRankX_project_byXnameX_byXvaluesXfriendRankX_mathX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().with_("~tinkerpop.pageRank.edges",__.outE("knows")).with_("~tinkerpop.pageRank.propertyName","friendRank").project("name","friendRank").by("name").by(__.values("friendRank").math("ceil(_ * 100)")) }],
+ g_V_hasLabelXpersonX_pageRank_withXpropertyName_kpageRankX_project_byXnameX_byXvaluesXpageRankX_mathX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().hasLabel("person").pageRank().with_("~tinkerpop.pageRank.propertyName","pageRank").project("name","pageRank").by("name").by(__.values("pageRank").math("ceil(_ * 100)")) }],
+ g_V_pageRank_withXpropertyName_pageRankX_asXaX_outXknowsX_pageRank_asXbX_selectXa_bX_by_byXmathX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().pageRank().with_("~tinkerpop.pageRank.propertyName","pageRank").as("a").out("knows").values("pageRank").as("b").select("a","b").by().by(__.math("ceil(_ * 100)")) }],
+ g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_withXedges_inEXcreatedX_withXtimes_1X_withXpropertyName_priorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().hasLabel("software").has("name","ripple").pageRank(1.0).with_("~tinkerpop.pageRank.edges",__.inE("created")).with_("~tinkerpop.pageRank.times",1).with_ [...]
+ g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankX_withXedges_inEX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().out("created").group("m").by(T.label).pageRank(1.0).with_("~tinkerpop.pageRank.propertyName","pageRank").with_("~tinkerpop.pageRank.edges",__.inE()).with_("~tinkerpop.pageRank. [...]
+ g_VX1X_name_path: [function({g, v1Id}) { return g.V(v1Id).values("name").path() }],
+ g_VX1X_out_path_byXageX_byXnameX: [function({g, v1Id}) { return g.V(v1Id).out().path().by("age").by("name") }],
+ g_V_repeatXoutX_timesX2X_path_byXitX_byXnameX_byXlangX: [function({g}) { return g.V().repeat(__.out()).times(2).path().by().by("name").by("lang") }],
+ g_V_out_out_path_byXnameX_byXageX: [function({g}) { return g.V().out().out().path().by("name").by("age") }],
+ g_V_asXaX_hasXname_markoX_asXbX_hasXage_29X_asXcX_path: [function({g}) { return g.V().as("a").has("name","marko").as("b").has("age",29).as("c").path() }],
+ g_VX1X_outEXcreatedX_inV_inE_outV_path: [function({g, v1Id}) { return g.V(v1Id).outE("created").inV().inE().outV().path() }],
+ g_V_asXaX_out_asXbX_out_asXcX_path_fromXbX_toXcX_byXnameX: [function({g}) { return g.V().as("a").out().as("b").out().as("c").path().from_("b").to("c").by("name") }],
+ g_V_peerPressure_hasXclusterX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().peerPressure().has("gremlin.peerPressureVertexProgram.cluster") }, function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().peerPressure().has("gremlin.peerPressureVertexProgram.cluster") }],
+ g_V_peerPressure_withXpropertyName_clusterX_withXedges_outEXknowsXX_pageRankX1X_byXrankX_withXedges_outEXknowsX_withXtimes_2X_group_byXclusterX_byXrank_sumX_limitX100X: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().peerPressure().with_("~tinkerpop.peerPressure.propertyName","cluster").with_("~tinkerpop.peerPressure.edges",__.outE("knows")).pageRank(1.0).with_("~tinker [...]
+ g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXedges_outEX_withyXpropertyName_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","ripple").in_("created").peerPressure().with_("~tinkerpop.peerPressure.edges",__.outE()).with_("~tinkerpop.peerPressure.propertyName","cluster").repeat(__ [...]
+ g_V_hasLabelXpersonX_projectXa_bX_byXoutE_countX_byXageX: [function({g}) { return g.V().hasLabel("person").project("a","b").by(__.outE().count()).by("age") }],
+ g_V_outXcreatedX_projectXa_bX_byXnameX_byXinXcreatedX_countX_order_byXselectXbX__descX_selectXaX: [function({g}) { return g.V().out("created").project("a","b").by("name").by(__.in_("created").count()).order().by(__.select("b"),Order.desc).select("a") }],
+ g_V_valueMap_projectXxX_byXselectXnameXX: [function({g}) { return g.V().valueMap().project("x").by(__.select("name")) }],
+ g_V_hasXageX_propertiesXnameX: [function({g}) { return g.V().has("age").properties("name").value() }],
+ g_V_hasXageX_propertiesXname_ageX_value: [function({g}) { return g.V().has("age").properties("name","age").value() }],
+ g_V_hasXageX_propertiesXage_nameX_value: [function({g}) { return g.V().has("age").properties("age","name").value() }],
+ get_g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a","b") }],
+ g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX_byXnameX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a","b").by("name") }],
+ g_VX1X_asXaX_outXknowsX_asXbX_selectXaX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a") }],
+ g_VX1X_asXaX_outXknowsX_asXbX_selectXaX_byXnameX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a").by("name") }],
+ g_V_asXaX_out_asXbX_selectXa_bX_byXnameX: [function({g}) { return g.V().as("a").out().as("b").select("a","b").by("name") }],
+ g_V_asXaX_out_aggregateXxX_asXbX_selectXa_bX_byXnameX: [function({g}) { return g.V().as("a").out().aggregate("x").as("b").select("a","b").by("name") }],
+ g_V_asXaX_name_order_asXbX_selectXa_bX_byXnameX_by_XitX: [function({g}) { return g.V().as("a").values("name").order().as("b").select("a","b").by("name").by() }],
+ g_V_hasXname_gremlinX_inEXusesX_order_byXskill_ascX_asXaX_outV_asXbX_selectXa_bX_byXskillX_byXnameX: [function({g}) { return g.V().has("name","gremlin").inE("uses").order().by("skill",Order.asc).as("a").outV().as("b").select("a","b").by("skill").by("name") }],
+ g_V_hasXname_isXmarkoXX_asXaX_selectXaX: [function({g}) { return g.V().has("name",__.is("marko")).as("a").select("a") }],
+ g_V_label_groupCount_asXxX_selectXxX: [function({g}) { return g.V().label().groupCount().as("x").select("x") }],
+ g_V_hasLabelXpersonX_asXpX_mapXbothE_label_groupCountX_asXrX_selectXp_rX: [function({g}) { return g.V().hasLabel("person").as("p").map(__.bothE().label().groupCount()).as("r").select("p","r") }],
+ g_V_chooseXoutE_count_isX0X__asXaX__asXbXX_chooseXselectXaX__selectXaX__selectXbXX: [function({g, zero}) { return g.V().choose(__.outE().count().is(zero),__.as("a"),__.as("b")).choose(__.select("a"),__.select("a"),__.select("b")) }],
+ g_VX1X_groupXaX_byXconstantXaXX_byXnameX_selectXaX_selectXaX: [function({g, v1Id}) { return g.V(v1Id).group("a").by(__.constant("a")).by(__.values("name")).barrier().select("a").select("a") }],
+ g_VX1X_asXhereX_out_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).as("here").out().select("here") }],
+ g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX: [function({g, v4Id}) { return g.V(v4Id).as("here").out().select("here") }],
+ g_VX4X_out_asXhereX_hasXlang_javaX_selectXhereX_name: [function({g, v4Id}) { return g.V(v4Id).out().as("here").has("lang","java").select("here").values("name") }],
+ g_VX1X_outE_asXhereX_inV_hasXname_vadasX_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).outE().as("here").inV().has("name","vadas").select("here") }],
+ g_VX1X_outEXknowsX_hasXweight_1X_asXhereX_inV_hasXname_joshX_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).outE("knows").has("weight",1.0).as("here").inV().has("name","josh").select("here") }],
+ g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_asXfakeX_inV_hasXname_joshX_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).outE("knows").as("here").has("weight",1.0).as("fake").inV().has("name","josh").select("here") }],
+ g_V_asXhereXout_name_selectXhereX: [function({g}) { return g.V().as("here").out().values("name").select("here") }],
+ g_V_outXcreatedX_unionXasXprojectX_inXcreatedX_hasXname_markoX_selectXprojectX__asXprojectX_inXcreatedX_inXknowsX_hasXname_markoX_selectXprojectXX_groupCount_byXnameX: [function({g}) { return g.V().out("created").union(__.as("project").in_("created").has("name","marko").select("project"),__.as("project").in_("created").in_("knows").has("name","marko").select("project")).groupCount().by("name") }],
+ g_V_untilXout_outX_repeatXin_asXaXX_selectXaX_byXtailXlocalX_nameX: [function({g}) { return g.V().until(__.out().out()).repeat(__.in_().as("a")).select("a").by(__.tail(Scope.local).values("name")) }],
+ g_V_outE_weight_groupCount_selectXkeysX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().select(Column.keys).unfold() }],
+ g_V_hasLabelXsoftwareX_asXnameX_asXlanguageX_asXcreatorsX_selectXname_language_creatorsX_byXnameX_byXlangX_byXinXcreatedX_name_fold_orderXlocalXX: [function({g}) { return g.V().hasLabel("software").as("name").as("language").as("creators").select("name","language","creators").by("name").by("lang").by(__.in_("created").values("name").fold().order(Scope.local)) }],
+ g_V_outE_weight_groupCount_unfold_selectXkeysX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().unfold().select(Column.keys).unfold() }],
+ g_V_outE_weight_groupCount_unfold_selectXvaluesX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().unfold().select(Column.values).unfold() }],
+ g_V_untilXout_outX_repeatXin_asXaX_in_asXbXX_selectXa_bX_byXnameX: [function({g}) { return g.V().until(__.out().out()).repeat(__.in_().as("a").in_().as("b")).select("a","b").by("name") }],
+ g_V_outE_weight_groupCount_selectXvaluesX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().select(Column.values).unfold() }],
+ g_VX1X_asXaX_outXknowsX_asXbX_selectXa_bX: [function({g, v1Id}) { return g.V(v1Id).as("a").out("knows").as("b").select("a","b") }],
+ g_V_asXaX_whereXoutXknowsXX_selectXaX: [function({g}) { return g.V().as("a").where(__.out("knows")).select("a") }],
+ g_VX1X_asXaX_repeatXout_asXaXX_timesX2X_selectXfirst_aX: [function({g, v1Id}) { return g.V(v1Id).as("a").repeat(__.out().as("a")).times(2).select(Pop.first,"a") }],
+ g_V_asXaX_outXknowsX_asXbX_localXselectXa_bX_byXnameXX: [function({g}) { return g.V().as("a").out("knows").as("b").local(__.select("a","b").by("name")) }],
+ g_VX1X_asXaX_repeatXout_asXaXX_timesX2X_selectXlast_aX: [function({g, v1Id}) { return g.V(v1Id).as("a").repeat(__.out().as("a")).times(2).select(Pop.last,"a") }],
+ g_VX1X_outEXknowsX_asXhereX_hasXweight_1X_inV_hasXname_joshX_selectXhereX: [function({g, v1Id}) { return g.V(v1Id).outE("knows").as("here").has("weight",1.0).inV().has("name","josh").select("here") }],
+ g_V_asXaX_hasXname_markoX_asXbX_asXcX_selectXa_b_cX_by_byXnameX_byXageX: [function({g}) { return g.V().as("a").has("name","marko").as("b").as("c").select("a","b","c").by().by("name").by("age") }],
+ g_V_outE_weight_groupCount_selectXvaluesX_unfold_groupCount_selectXvaluesX_unfold: [function({g}) { return g.V().outE().values("weight").groupCount().select(Column.values).unfold().groupCount().select(Column.values).unfold() }],
+ g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX: [function({g}) { return g.V().as("a").group("m").by().by(__.bothE().count()).barrier().select("m").select(__.select("a")) }],
+ g_V_asXaX_groupXmX_by_byXbothE_countX_barrier_selectXmX_selectXselectXaXX_byXmathX_plus_XX: [function({g}) { return g.V().as("a").group("m").by().by(__.bothE().count()).barrier().select("m").select(__.select("a")).by(__.math("_+_")) }],
+ g_V_asXaX_outXknowsX_asXaX_selectXall_constantXaXX: [function({g}) { return g.V().as("a").out("knows").as("a").select(Pop.all,__.constant("a")) }],
+ g_V_selectXaX: [function({g}) { return g.V().select("a") }],
+ g_V_selectXaX_count: [function({g}) { return g.V().select("a").count() }],
+ g_V_selectXa_bX: [function({g}) { return g.V().select("a","b") }],
+ g_V_valueMap_selectXaX: [function({g}) { return g.V().valueMap().select("a") }],
+ g_V_valueMap_selectXa_bX: [function({g}) { return g.V().valueMap().select("a","b") }],
+ g_V_selectXfirst_aX: [function({g}) { return g.V().select(Pop.first,"a") }],
+ g_V_selectXfirst_a_bX: [function({g}) { return g.V().select(Pop.first,"a","b") }],
+ g_V_valueMap_selectXfirst_aX: [function({g}) { return g.V().valueMap().select(Pop.first,"a") }],
+ g_V_valueMap_selectXfirst_a_bX: [function({g}) { return g.V().valueMap().select(Pop.first,"a","b") }],
+ g_V_selectXlast_aX: [function({g}) { return g.V().select(Pop.last,"a") }],
+ g_V_selectXlast_a_bX: [function({g}) { return g.V().select(Pop.last,"a","b") }],
+ g_V_valueMap_selectXlast_aX: [function({g}) { return g.V().valueMap().select(Pop.last,"a") }],
+ g_V_valueMap_selectXlast_a_bX: [function({g}) { return g.V().valueMap().select(Pop.last,"a","b") }],
+ g_V_selectXall_aX: [function({g}) { return g.V().select(Pop.all,"a") }],
+ g_V_selectXall_a_bX: [function({g}) { return g.V().select(Pop.all,"a","b") }],
+ g_V_valueMap_selectXall_aX: [function({g}) { return g.V().valueMap().select(Pop.all,"a") }],
+ g_V_valueMap_selectXall_a_bX: [function({g}) { return g.V().valueMap().select(Pop.all,"a","b") }],
+ g_V_asXa_bX_out_asXcX_path_selectXkeysX: [function({g}) { return g.V().as("a","b").out().as("c").path().select(Column.keys) }, function({g}) { return g.V().as("a","b").out().as("c").path().select(Column.keys) }],
+ g_V_hasXperson_name_markoX_barrier_asXaX_outXknows_selectXaX: [function({g}) { return g.V().has("person","name","marko").barrier().as("a").out("knows").select("a") }],
+ g_V_hasXperson_name_markoX_elementMapXnameX_asXaX_unionXidentity_identityX_selectXaX_selectXnameX: [function({g}) { return g.V().has("person","name","marko").elementMap("name").as("a").union(__.identity(),__.identity()).select("a").select("name") }],
+ g_V_hasXperson_name_markoX_count_asXaX_unionXidentity_identityX_selectXaX: [function({g}) { return g.V().has("person","name","marko").count().as("a").union(__.identity(),__.identity()).select("a") }],
+ g_V_hasXperson_name_markoX_path_asXaX_unionXidentity_identityX_selectXaX_unfold: [function({g}) { return g.V().has("person","name","marko").path().as("a").union(__.identity(),__.identity()).select("a").unfold() }],
+ g_EX11X_propertiesXweightX_asXaX_selectXaX_byXkeyX: [function({g, e11Id}) { return g.E(e11Id).properties("weight").as("a").select("a").by(T.key) }],
+ g_EX11X_propertiesXweightX_asXaX_selectXaX_byXvalueX: [function({g, e11Id}) { return g.E(e11Id).properties("weight").as("a").select("a").by(T.value) }],
+ g_V_shortestPath: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath() }],
+ g_V_both_dedup_shortestPath: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().both().dedup().shortestPath() }],
+ g_V_shortestPath_edgesIncluded: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.includeEdges") }],
+ g_V_shortestPath_directionXINX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.edges",Direction.IN) }],
+ g_V_shortestPath_edgesXoutEX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.edges",__.outE()) }],
+ g_V_shortestPath_edgesIncluded_edgesXoutEX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.includeEdges").with_("~tinkerpop.shortestPath.edges",__.outE()) }],
+ g_V_hasXname_markoX_shortestPath: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","marko").shortestPath() }],
+ g_V_shortestPath_targetXhasXname_markoXX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.target",__.has("name","marko")) }],
+ g_V_shortestPath_targetXvaluesXnameX_isXmarkoXX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().identity().shortestPath().with_("~tinkerpop.shortestPath.target",__.values("name").is("marko")) }],
+ g_V_hasXname_markoX_shortestPath_targetXhasLabelXsoftwareXX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","marko").shortestPath().with_("~tinkerpop.shortestPath.target",__.hasLabel("software")) }],
+ g_V_hasXname_markoX_shortestPath_targetXhasXname_joshXX_distanceXweightX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","marko").shortestPath().with_("~tinkerpop.shortestPath.target",__.has("name","josh")).with_("~tinkerpop.shortestPath.distance","weight") }],
+ g_V_hasXname_danielX_shortestPath_targetXhasXname_stephenXX_edgesXbothEXusesXX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","daniel").shortestPath().with_("~tinkerpop.shortestPath.target",__.has("name","stephen")).with_("~tinkerpop.shortestPath.edges",__.bothE("uses")) }],
+ g_V_hasXsong_name_MIGHT_AS_WELLX_shortestPath_targetXhasXsong_name_MAYBE_YOU_KNOW_HOW_I_FEELXX_edgesXoutEXfollowedByXX_distanceXweightX: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("song","name","MIGHT AS WELL").shortestPath().with_("~tinkerpop.shortestPath.target",__.has("song","name","MAYBE YOU KNOW HOW I FEEL")).with_("~tinkerpop.shortestPath.edges",__.outE(" [...]
+ g_V_hasXname_markoX_shortestPath_maxDistanceX1X: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","marko").shortestPath().with_("~tinkerpop.shortestPath.maxDistance",1) }],
+ g_V_hasXname_vadasX_shortestPath_distanceXweightX_maxDistanceX1_3X: [function({g}) { return g.withStrategies(new VertexProgramStrategy(new Map([["graphComputer","org.apache.tinkerpop.gremlin.process.computer.GraphComputer"]]))).V().has("name","vadas").shortestPath().with_("~tinkerpop.shortestPath.distance","weight").with_("~tinkerpop.shortestPath.maxDistance",1.3) }],
+ g_V_age_sum: [function({g}) { return g.V().values("age").sum() }],
+ g_V_foo_sum: [function({g}) { return g.V().values("foo").sum() }],
+ g_V_age_fold_sumXlocalX: [function({g}) { return g.V().values("age").fold().sum(Scope.local) }],
+ g_V_foo_fold_sumXlocalX: [function({g}) { return g.V().values("foo").fold().sum(Scope.local) }],
+ g_V_hasLabelXsoftwareX_group_byXnameX_byXbothE_weight_sumX: [function({g}) { return g.V().hasLabel("software").group().by("name").by(__.bothE().values("weight").sum()) }],
+ g_V_localXoutE_foldX_unfold: [function({g}) { return g.V().local(__.outE().fold()).unfold() }],
+ g_V_valueMap_unfold_mapXkeyX: [function({g, l}) { return g.V().valueMap().unfold().map(l) }],
+ g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold: [function({g, v1Id, v6Id}) { return g.V(v1Id).repeat(__.both().simplePath()).until(__.hasId(v6Id)).path().by("name").unfold() }],
+ g_V_valueMap: [function({g}) { return g.V().valueMap() }],
+ g_V_valueMapXtrueX: [function({g}) { return g.V().valueMap(true) }],
+ g_V_valueMap_withXtokensX: [function({g}) { return g.V().valueMap().with_("~tinkerpop.valueMap.tokens") }],
+ g_V_valueMapXname_ageX: [function({g}) { return g.V().valueMap("name","age") }],
+ g_V_valueMapXtrue_name_ageX: [function({g}) { return g.V().valueMap(true,"name","age") }],
+ g_V_valueMapXname_ageX_withXtokensX: [function({g}) { return g.V().valueMap("name","age").with_("~tinkerpop.valueMap.tokens") }],
+ g_V_valueMapXname_ageX_withXtokens_labelsX_byXunfoldX: [function({g}) { return g.V().valueMap("name","age").with_("~tinkerpop.valueMap.tokens",2).by(__.unfold()) }],
+ g_V_valueMapXname_ageX_withXtokens_idsX_byXunfoldX: [function({g}) { return g.V().valueMap("name","age").with_("~tinkerpop.valueMap.tokens",1).by(__.unfold()) }],
+ g_VX1X_outXcreatedX_valueMap: [function({g, v1Id}) { return g.V(v1Id).out("created").valueMap() }],
+ g_V_hasLabelXpersonX_filterXoutEXcreatedXX_valueMapXtrueX: [function({g}) { return g.V().hasLabel("person").filter(__.outE("created")).valueMap(true) }],
+ g_V_hasLabelXpersonX_filterXoutEXcreatedXX_valueMap_withXtokensX: [function({g}) { return g.V().hasLabel("person").filter(__.outE("created")).valueMap().with_("~tinkerpop.valueMap.tokens") }],
+ g_VX1X_valueMapXname_locationX_byXunfoldX_by: [function({g, v1Id}) { return g.V(v1Id).valueMap("name","location").by(__.unfold()).by() }],
+ g_VXlistX1_2_3XX_name: [function({g, vx}) { return g.V(vx).values("name") }],
+ g_VXlistXv1_v2_v3XX_name: [function({g, vx}) { return g.V(vx).values("name") }],
+ g_V: [function({g}) { return g.V() }],
+ g_VXv1X_out: [function({g, v1}) { return g.V(v1).out() }],
+ g_VX1X_out: [function({g, v1Id}) { return g.V(v1Id).out() }],
+ g_VX2X_in: [function({g, v2Id}) { return g.V(v2Id).in_() }],
+ g_VX4X_both: [function({g, v4Id}) { return g.V(v4Id).both() }],
+ g_E: [function({g}) { return g.E() }],
+ g_EX11X: [function({g, e11Id}) { return g.E(e11Id) }],
+ g_EX11AsStringX: [function({g, e11Id}) { return g.E(e11Id) }],
+ g_EXe11X: [function({g, e11}) { return g.E(e11) }],
+ g_EXe7_e11X: [function({g, e7, e11}) { return g.E(e7,e11) }],
+ g_EXlistXe7_e11XX: [function({g, l}) { return g.E(l) }],
+ g_VX1X_outE: [function({g, v1Id}) { return g.V(v1Id).outE() }],
+ g_VX2X_outE: [function({g, v2Id}) { return g.V(v2Id).inE() }],
+ g_VX4X_bothEXcreatedX: [function({g, v4Id}) { return g.V(v4Id).bothE("created") }],
+ g_VX4X_bothE: [function({g, v4Id}) { return g.V(v4Id).bothE() }],
+ g_VX1X_outE_inV: [function({g, v1Id}) { return g.V(v1Id).both() }],
+ g_VX2X_inE_outV: [function({g, v2Id}) { return g.V(v2Id).inE().outV() }],
+ g_V_outE_hasXweight_1X_outV: [function({g}) { return g.V().outE().has("weight",1.0).outV() }],
+ g_V_out_outE_inV_inE_inV_both_name: [function({g}) { return g.V().out().outE().inV().inE().inV().both().values("name") }],
+ g_VX1X_outEXknowsX_bothV_name: [function({g, v1Id}) { return g.V(v1Id).outE("knows").bothV().values("name") }],
+ g_VX1X_outE_otherV: [function({g, v1Id}) { return g.V(v1Id).outE().otherV() }],
+ g_VX4X_bothE_otherV: [function({g, v4Id}) { return g.V(v4Id).bothE().otherV() }],
+ g_VX4X_bothE_hasXweight_lt_1X_otherV: [function({g, v4Id}) { return g.V(v4Id).bothE().has("weight",P.lt(1.0)).otherV() }],
+ g_VX2X_inE: [function({g, v2Id}) { return g.V(v2Id).bothE() }],
+ get_g_VX1X_outE_otherV: [function({g, v1Id}) { return g.V(v1Id).outE().otherV() }],
+ g_VX1X_outXknowsX: [function({g, v1Id}) { return g.V(v1Id).out("knows") }],
+ g_VX1AsStringX_outXknowsX: [function({g, v1Id}) { return g.V(v1Id).out("knows") }],
+ g_VX1X_outXknows_createdX: [function({g, v1Id}) { return g.V(v1Id).out("knows","created") }],
+ g_VX1X_outEXknowsX_inV: [function({g, v1Id}) { return g.V(v1Id).outE("knows").inV() }],
+ g_VX1X_outEXknows_createdX_inV: [function({g, v1Id}) { return g.V(v1Id).outE("knows","created").inV() }],
+ g_V_out_out: [function({g}) { return g.V().out().out() }],
+ g_VX1X_out_out_out: [function({g, v1Id}) { return g.V(v1Id).out().out().out() }],
+ g_VX1X_out_name: [function({g, v1Id}) { return g.V(v1Id).out().values("name") }],
+ g_VX1X_to_XOUT_knowsX: [function({g, v1Id}) { return g.V(v1Id).to(Direction.OUT,"knows") }],
+ g_VX1_2_3_4X_name: [function({g, v1Id, v2Id, v3Id, v4Id}) { return g.V(v1Id,v2Id,v3Id,v4Id).values("name") }],
+ g_V_hasLabelXpersonX_V_hasLabelXsoftwareX_name: [function({g}) { return g.V().hasLabel("person").V().hasLabel("software").values("name") }],
+ g_V_hasLabelXloopsX_bothEXselfX: [function({g}) { return g.V().hasLabel("loops").bothE("self") }],
+ g_V_hasLabelXloopsX_bothXselfX: [function({g}) { return g.V().hasLabel("loops").both("self") }],
+ g_V_valueXnameX_aggregateXxX_capXxX: [function({g}) { return g.V().values("name").aggregate("x").cap("x") }],
+ g_V_valueXnameX_aggregateXglobal_xX_capXxX: [function({g}) { return g.V().values("name").aggregate(Scope.global,"x").cap("x") }],
+ g_V_aggregateXxX_byXnameX_capXxX: [function({g}) { return g.V().aggregate("x").by("name").cap("x") }],
+ g_V_out_aggregateXaX_path: [function({g}) { return g.V().out().aggregate("a").path() }],
+ g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX: [function({g}) { return g.V().hasLabel("person").aggregate("x").by("age").cap("x").as("y").select("y") }],
+ g_V_aggregateXlocal_a_nameX_out_capXaX: [function({g}) { return g.V().aggregate(Scope.local,"a").by("name").out().cap("a") }],
+ g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX: [function({g, v1Id}) { return g.V(v1Id).aggregate(Scope.local,"a").by("name").out().aggregate(Scope.local,"a").by("name").values("name").cap("a") }],
+ g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX: [function({g, initial}) { return g.withSideEffect("a",initial).V().both().values("name").aggregate(Scope.local,"a").cap("a") }],
+ g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX: [function({g}) { return g.V().aggregate(Scope.local,"a").by(__.outE("created").count()).out().out().aggregate(Scope.local,"a").by(__.inE("created").values("weight").sum()).cap("a") }],
+ g_V_group_byXnameX: [function({g}) { return g.V().group().by("name") }],
+ g_V_group_byXageX: [function({g}) { return g.V().group().by("age") }],
+ g_V_group_byXnameX_by: [function({g}) { return g.V().group().by("name").by() }],
+ g_V_groupXaX_byXnameX_capXaX: [function({g}) { return g.V().group("a").by("name").cap("a") }],
+ g_V_hasXlangX_groupXaX_byXlangX_byXnameX_out_capXaX: [function({g}) { return g.V().has("lang").group("a").by("lang").by("name").out().cap("a") }],
+ g_V_hasXlangX_group_byXlangX_byXcountX: [function({g}) { return g.V().has("lang").group().by("lang").by(__.count()) }],
+ g_V_repeatXout_groupXaX_byXnameX_byXcountX_timesX2X_capXaX: [function({g}) { return g.V().repeat(__.out().group("a").by("name").by(__.count())).times(2).cap("a") }],
+ g_V_group_byXoutE_countX_byXnameX: [function({g}) { return g.V().group().by(__.outE().count()).by("name") }],
+ g_V_groupXaX_byXlabelX_byXoutE_weight_sumX_capXaX: [function({g}) { return g.V().group("a").by(T.label).by(__.outE().values("weight").sum()).cap("a") }],
+ g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX: [function({g}) { return g.V().repeat(__.both("followedBy")).times(2).group().by("songType").by(__.count()) }],
+ g_V_repeatXbothXfollowedByXX_timesX2X_groupXaX_byXsongTypeX_byXcountX_capXaX: [function({g}) { return g.V().repeat(__.both("followedBy")).times(2).group("a").by("songType").by(__.count()).cap("a") }],
+ g_V_group_byXname_substring_1X_byXconstantX1XX: [function({g, l1}) { return g.V().group().by(l1).by(__.constant(1)) }],
+ g_V_groupXaX_byXname_substring_1X_byXconstantX1XX_capXaX: [function({g, l1}) { return g.V().group("a").by(l1).by(__.constant(1)).cap("a") }],
+ g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X: [function({g}) { return g.V().out().group().by(T.label).select("person").unfold().out("created").values("name").limit(2) }],
+ g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX: [function({g}) { return g.V().hasLabel("song").group().by("name").by(__.properties().groupCount().by(T.label)) }],
+ g_V_hasLabelXsongX_groupXaX_byXnameX_byXproperties_groupCount_byXlabelXX_out_capXaX: [function({g}) { return g.V().hasLabel("song").group("a").by("name").by(__.properties().groupCount().by(T.label)).out().cap("a") }],
+ g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX: [function({g}) { return g.V().out("followedBy").group().by("songType").by(__.bothE().group().by(T.label).by(__.values("weight").sum())) }],
+ g_V_groupXmX_byXnameX_byXinXknowsX_nameX_capXmX: [function({g}) { return g.V().group("m").by("name").by(__.in_("knows").values("name")).cap("m") }],
+ g_V_group_byXlabelX_byXbothE_groupXaX_byXlabelX_byXweight_sumX_weight_sumX: [function({g}) { return g.V().group().by(T.label).by(__.bothE().group("a").by(T.label).by(__.values("weight").sum()).values("weight").sum()) }],
+ g_withSideEffectXa__marko_666_noone_blahX_V_groupXaX_byXnameX_byXoutE_label_foldX_capXaX: [function({g, m}) { return g.withSideEffect("a",m).V().group("a").by("name").by(__.outE().label().fold()).cap("a") }],
+ g_V_hasLabelXpersonX_asXpX_outXcreatedX_group_byXnameX_byXselectXpX_valuesXageX_sumX: [function({g}) { return g.V().hasLabel("person").as("p").out("created").group().by("name").by(__.select("p").values("age").sum()) }],
+ g_V_hasLabelXpersonX_asXpX_outXcreatedX_groupXaX_byXnameX_byXselectXpX_valuesXageX_sumX_capXaX: [function({g}) { return g.V().hasLabel("person").as("p").out("created").group("a").by("name").by(__.select("p").values("age").sum()).cap("a") }],
+ g_V_group_byXlabelX_byXlabel_countX: [function({g}) { return g.V().group().by(__.label()).by(__.label().count()) }],
+ g_V_groupXmX_byXlabelX_byXlabel_countX_capXmX: [function({g}) { return g.V().group("m").by(__.label()).by(__.label().count()).cap("m") }],
+ g_V_outXcreatedX_groupCount_byXnameX: [function({g}) { return g.V().out("created").groupCount().by("name") }],
+ g_V_outXcreatedX_name_groupCount: [function({g}) { return g.V().out("created").values("name").groupCount() }],
+ g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX: [function({g}) { return g.V().out("created").groupCount("a").by("name").cap("a") }],
+ g_V_outXcreatedX_name_groupCountXaX_capXaX: [function({g}) { return g.V().out("created").values("name").groupCount("a").cap("a") }],
+ g_V_repeatXout_groupCountXaX_byXnameXX_timesX2X_capXaX: [function({g}) { return g.V().repeat(__.out().groupCount("a").by("name")).times(2).cap("a") }],
+ g_V_both_groupCountXaX_byXlabelX_asXbX_barrier_whereXselectXaX_selectXsoftwareX_isXgtX2XXX_selectXbX_name: [function({g}) { return g.V().both().groupCount("a").by(T.label).as("b").barrier().where(__.select("a").select("software").is(P.gt(2))).select("b").values("name") }],
+ g_V_unionXoutXknowsX__outXcreatedX_inXcreatedXX_groupCount_selectXvaluesX_unfold_sum: [function({g}) { return g.V().union(__.out("knows"),__.out("created").in_("created")).groupCount().select(Column.values).unfold().sum() }],
+ g_V_hasXnoX_groupCount: [function({g}) { return g.V().has("no").groupCount() }],
+ g_V_hasXnoX_groupCountXaX_capXaX: [function({g}) { return g.V().has("no").groupCount("a").cap("a") }],
+ g_V_unionXrepeatXoutX_timesX2X_groupCountXmX_byXlangXX__repeatXinX_timesX2X_groupCountXmX_byXnameXX_capXmX: [function({g}) { return g.V().union(__.repeat(__.out()).times(2).groupCount("m").by("lang"),__.repeat(__.in_()).times(2).groupCount("m").by("name")).cap("m") }],
+ g_V_outXcreatedX_groupCountXxX_capXxX: [function({g}) { return g.V().out("created").groupCount("x").cap("x") }],
+ g_V_groupCount_byXbothE_countX: [function({g}) { return g.V().groupCount().by(__.bothE().count()) }],
+ g_V_both_groupCountXaX_out_capXaX_selectXkeysX_unfold_both_groupCountXaX_capXaX: [function({g}) { return g.V().both().groupCount("a").out().cap("a").select(Column.keys).unfold().both().groupCount("a").cap("a") }],
+ g_VX1X_out_injectXv2X_name: [function({g, v1Id, v2}) { return g.V(v1Id).out().inject(v2).values("name") }],
+ g_VX1X_out_name_injectXdanielX_asXaX_mapXlengthX_path: [function({g, v1Id, c}) { return g.V(v1Id).out().values("name").inject("daniel").as("a").map(c).path() }],
+ g_VX1X_injectXg_VX4XX_out_name: [function({g, v1Id, v4}) { return g.V(v1Id).inject(v4).out().values("name") }],
+ g_injectXnull_1_3_nullX: [function({g}) { return g.inject(null,1,3,null) }],
+ g_injectX10_20_null_20_10_10X_groupCountXxX_dedup_asXyX_projectXa_bX_by_byXselectXxX_selectXselectXyXXX: [function({g}) { return g.inject(10,20,null,20,10,10).groupCount("x").dedup().as("y").project("a","b").by().by(__.select("x").select(__.select("y"))) }],
+ g_injectXname_marko_age_nullX_selectXname_ageX: [function({g, m}) { return g.inject(m).select("name","age") }],
+ g_io_readXkryoX: [function({g}) { return g.io("data/tinkerpop-modern.kryo").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }],
+ g_io_read_withXreader_gryoX: [function({g}) { return g.io("data/tinkerpop-modern.kryo").with_("~tinkerpop.io.reader","gryo").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }],
+ g_io_readXgraphsonX: [function({g}) { return g.io("data/tinkerpop-modern.json").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }],
+ g_io_read_withXreader_graphsonX: [function({g}) { return g.io("data/tinkerpop-modern.json").with_("~tinkerpop.io.reader","graphson").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }],
+ g_io_readXgraphmlX: [function({g}) { return g.io("data/tinkerpop-modern.xml").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }],
+ g_io_read_withXreader_graphmlX: [function({g}) { return g.io("data/tinkerpop-modern.xml").with_("~tinkerpop.io.reader","graphml").read() }, function({g}) { return g.V() }, function({g}) { return g.E() }],
+ g_withSackXhelloX_V_outE_sackXassignX_byXlabelX_inV_sack: [function({g}) { return g.withSack("hello").V().outE().sack(Operator.assign).by(T.label).inV().sack() }],
+ g_withSackX0X_V_outE_sackXsumX_byXweightX_inV_sack_sum: [function({g}) { return g.withSack(0.0).V().outE().sack(Operator.sum).by("weight").inV().sack().sum() }],
+ g_withSackX0X_V_repeatXoutE_sackXsumX_byXweightX_inVX_timesX2X_sack: [function({g}) { return g.withSack(0.0).V().repeat(__.outE().sack(Operator.sum).by("weight").inV()).times(2).sack() }],
+ g_withBulkXfalseX_withSackX1_sumX_VX1X_localXoutEXknowsX_barrierXnormSackX_inVX_inXknowsX_barrier_sack: [function({g, v1Id}) { return g.withBulk(false).withSack(1.0,Operator.sum).V(v1Id).local(__.outE("knows").barrier(Barrier.normSack).inV()).in_("knows").barrier().sack() }],
+ g_withBulkXfalseX_withSackX1_sumX_V_out_barrier_sack: [function({g}) { return g.withBulk(false).withSack(1,Operator.sum).V().out().barrier().sack() }],
+ g_withSackX1_sumX_VX1X_localXoutXknowsX_barrierXnormSackXX_inXknowsX_barrier_sack: [function({g, v1Id}) { return g.withSack(1.0,Operator.sum).V(v1Id).local(__.out("knows").barrier(Barrier.normSack)).in_("knows").barrier().sack() }],
+ g_V_hasXageX_groupCountXaX_byXnameX_out_capXaX: [function({g}) { return g.V().has("age").groupCount("a").by("name").out().cap("a") }],
+ g_V_storeXa_nameX_out_capXaX: [function({g}) { return g.V().store("a").by("name").out().cap("a") }],
+ g_VX1X_storeXaX_byXnameX_out_storeXaX_byXnameX_name_capXaX: [function({g, v1Id}) { return g.V(v1Id).store("a").by("name").out().store("a").by("name").values("name").cap("a") }],
+ g_withSideEffectXa_setX_V_both_name_storeXaX_capXaX: [function({g, initial}) { return g.withSideEffect("a",initial).V().both().values("name").store("a").cap("a") }],
+ g_V_storeXaX_byXoutEXcreatedX_countX_out_out_storeXaX_byXinEXcreatedX_weight_sumX: [function({g}) { return g.V().store("a").by(__.outE("created").count()).out().out().store("a").by(__.inE("created").values("weight").sum()).cap("a") }],
+}
+
+exports.gremlin = gremlins
diff --git a/gremlin-python/build/generate.groovy b/gremlin-python/build/generate.groovy
index ca17720..05507d5 100644
--- a/gremlin-python/build/generate.groovy
+++ b/gremlin-python/build/generate.groovy
@@ -41,7 +41,7 @@ gremlinGroovyScriptEngine = new GremlinGroovyScriptEngine(new GroovyCustomizer()
return new RepeatASTTransformationCustomizer(new VarAsBindingASTTransformation())
}
})
-pythonTranslator = PythonTranslator.of('g')
+translator = PythonTranslator.of('g')
g = traversal().withGraph(EmptyGraph.instance())
bindings = new SimpleBindings()
bindings.put('g', g)
@@ -97,7 +97,7 @@ radishGremlinFile.withWriter('UTF-8') { Writer writer ->
writer.write("=None")
}
writer.write(":")
- writer.write(pythonTranslator.translate(t.bytecode).script)
+ writer.write(translator.translate(t.bytecode).script)
writer.write(")")
if (gremlinItty.hasNext()) writer.write(', ')
}