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 2015/06/26 14:24:45 UTC

[1/8] incubator-tinkerpop git commit: fixed some callouts in the docs

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/resultset-refactor 724f619aa -> 35122afa3


fixed some callouts in the docs


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/7cb025a6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/7cb025a6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/7cb025a6

Branch: refs/heads/resultset-refactor
Commit: 7cb025a60935ce276a2f3a10659c2ceacd18a817
Parents: d3a4b56
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Thu Jun 25 22:15:35 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Thu Jun 25 22:15:35 2015 +0200

----------------------------------------------------------------------
 docs/src/implementations.asciidoc | 2 +-
 docs/src/intro.asciidoc           | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/7cb025a6/docs/src/implementations.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/implementations.asciidoc b/docs/src/implementations.asciidoc
index cbb58f2..4bf4a83 100644
--- a/docs/src/implementations.asciidoc
+++ b/docs/src/implementations.asciidoc
@@ -128,7 +128,7 @@ public class TinkerMapEmitter<K, V> implements MapReduce.MapEmitter<K, V> {
     }
 
     protected void complete(final MapReduce<K, V, ?, ?, ?> mapReduce) {
-        if (!this.doReduce && mapReduce.getMapKeySort().isPresent()) {
+        if (!this.doReduce && mapReduce.getMapKeySort().isPresent()) { <4>
             final Comparator<K> comparator = mapReduce.getMapKeySort().get();
             final List<KeyValue<K, V>> list = new ArrayList<>(this.mapQueue);
             Collections.sort(list, Comparator.comparing(KeyValue::getKey, comparator));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/7cb025a6/docs/src/intro.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/intro.asciidoc b/docs/src/intro.asciidoc
index 4ae4dca..9eebcfe 100644
--- a/docs/src/intro.asciidoc
+++ b/docs/src/intro.asciidoc
@@ -226,9 +226,9 @@ Or, if the marko-vertex is already realized with a direct reference pointer (i.e
 
 [gremlin-groovy,modern]
 ----
-marko = g.V().has('name','marko').next()
-g.V(marko).out('knows') <1>
-g.V(marko).out('knows').values('name') <2>
+marko = g.V().has('name','marko').next() <1>
+g.V(marko).out('knows') <2>
+g.V(marko).out('knows').values('name') <3>
 ----
 
 <1> Set the variable `marko` to the the vertex in the graph `g` named "marko".


[4/8] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master' into resultset-refactor

Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master' into resultset-refactor


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/015ea494
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/015ea494
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/015ea494

Branch: refs/heads/resultset-refactor
Commit: 015ea494b6d2c20297325e405fe834c0abf02dee
Parents: 724f619 6a94788
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 26 07:47:19 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jun 26 07:47:19 2015 -0400

----------------------------------------------------------------------
 bin/gephi.mock                                  |  24 ++++
 bin/process-docs.sh                             |   2 +
 docs/src/gremlin-applications.asciidoc          |  74 +++++-------
 docs/src/implementations.asciidoc               |   2 +-
 docs/src/intro.asciidoc                         |   6 +-
 docs/src/the-traversal.asciidoc                 |  54 +++++----
 .../traversal/dsl/graph/GraphTraversal.java     |   6 +-
 .../gremlin/process/traversal/dsl/graph/__.java |   7 --
 .../process/traversal/step/map/MatchStep.java   | 118 ++++++++++++-------
 .../optimization/MatchPredicateStrategy.java    |   5 +-
 .../traversal/step/map/MatchStepTest.java       |  56 ++++++---
 .../MatchPredicateStrategyTest.java             |   5 +-
 .../traversal/step/map/GroovyMatchTest.groovy   |  74 ++++++------
 .../process/TraversalPerformanceTest.java       |   2 +-
 .../process/traversal/step/map/MatchTest.java   | 104 ++++++++--------
 .../neo4j/process/NativeNeo4jCypherTest.java    |  16 +--
 .../tinkergraph/structure/TinkerGraphTest.java  |  20 ++--
 17 files changed, 321 insertions(+), 254 deletions(-)
----------------------------------------------------------------------



[8/8] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master' into resultset-refactor

Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master' into resultset-refactor


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/35122afa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/35122afa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/35122afa

Branch: refs/heads/resultset-refactor
Commit: 35122afa3fedfc494c43d5c0d8053af2dd4c8225
Parents: 015ea49 8044315
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 26 08:24:18 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jun 26 08:24:18 2015 -0400

----------------------------------------------------------------------
 .../apache/tinkerpop/gremlin/driver/Result.java |  20 +++-
 .../tinkerpop/gremlin/driver/ResultTest.java    |  34 +++++-
 .../server/GremlinDriverIntegrateTest.java      |  22 ----
 .../server/GremlinResultSetIntegrateTest.java   | 116 +++++++++++++++++++
 4 files changed, 168 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/35122afa/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
----------------------------------------------------------------------


[2/8] incubator-tinkerpop git commit: converted static Gephi code samples in the docs into dynamic samples

Posted by sp...@apache.org.
converted static Gephi code samples in the docs into dynamic samples


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/3c40916f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/3c40916f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/3c40916f

Branch: refs/heads/resultset-refactor
Commit: 3c40916f02c36fefb9d8e93d02146d1c14303c93
Parents: 7cb025a
Author: Daniel Kuppitz <da...@hotmail.com>
Authored: Thu Jun 25 22:16:26 2015 +0200
Committer: Daniel Kuppitz <da...@hotmail.com>
Committed: Thu Jun 25 22:16:26 2015 +0200

----------------------------------------------------------------------
 bin/gephi.mock                         | 24 ++++++++++
 bin/process-docs.sh                    |  2 +
 docs/src/gremlin-applications.asciidoc | 74 +++++++++++------------------
 3 files changed, 53 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3c40916f/bin/gephi.mock
----------------------------------------------------------------------
diff --git a/bin/gephi.mock b/bin/gephi.mock
new file mode 100755
index 0000000..45a3753
--- /dev/null
+++ b/bin/gephi.mock
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# 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.
+#
+
+while true
+do
+  echo -e "HTTP/1.1 200 OK\nConnection: close\n\n{}" | nc -l 8080
+done

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3c40916f/bin/process-docs.sh
----------------------------------------------------------------------
diff --git a/bin/process-docs.sh b/bin/process-docs.sh
index 1a62ca2..faa3c4c 100755
--- a/bin/process-docs.sh
+++ b/bin/process-docs.sh
@@ -19,5 +19,7 @@
 #
 
 pushd "$(dirname $0)/.." > /dev/null
+nc -z localhost 8080 || bin/gephi.mock > /dev/null 2>&1 &
 docs/preprocessor/preprocess.sh && mvn process-resources -Dasciidoc && docs/postprocessor/postprocess.sh
+pgrep gephi.mock | xargs -I {} pstree {} -p -a -l | cut -d , -f2 | awk '{print $1}' | xargs kill -PIPE > /dev/null
 popd > /dev/null

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/3c40916f/docs/src/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/gremlin-applications.asciidoc b/docs/src/gremlin-applications.asciidoc
index 724aa2a..6a38c4e 100644
--- a/docs/src/gremlin-applications.asciidoc
+++ b/docs/src/gremlin-applications.asciidoc
@@ -858,15 +858,13 @@ image::gephi-start-server.png[width=800]
 
 Start the xref:gremlin-console[Gremlin Console] and activate the Gephi plugin:
 
-[source,groovy]
-gremlin> :plugin use tinkerpop.gephi
-==>tinkerpop.gephi activated
-gremlin> graph = TinkerFactory.createModern()
-==>tinkergraph[vertices:6 edges:6]
-gremlin> :remote connect tinkerpop.gephi
-==>Connection to Gephi - http://localhost:8080/workspace0 with stepDelay:1000, startRGBColor:[0.0, 1.0, 0.5], colorToFade:g, colorFadeRate:0.7
-gremlin> :> graph
-==>tinkergraph[vertices:6 edges:6]
+[gremlin-groovy]
+----
+:plugin use tinkerpop.gephi
+graph = TinkerFactory.createModern()
+:remote connect tinkerpop.gephi
+:> graph
+----
 
 The above Gremlin session activates the Gephi plugin, creates the "modern" `TinkerGraph`, uses the `:remote` command to setup a connection to the Graph Streaming server in Gephi (with default parameters that will be explained below), and then uses `:submit` which sends the vertices and edges of the graph to the Gephi Streaming Server. The resulting graph appears in Gephi as displayed in the left image below.
 
@@ -890,32 +888,20 @@ g.V(2).in().out('knows').
 
 To visualize it insert the appropriately named `store('n')` steps where `n` is an integer, and the vertices will be highlighted in ascending store step order.
 
-[source,groovy]
+[gremlin-groovy,modern]
 ----
-gremlin> g = graph.traversal()
-==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
-gremlin> g.V(2).in('knows').out('knows').has('age',gt(30)).
-               outE('created').has('weight',gt(0.5d)).inV().values('name')
-==>ripple
-gremlin> traversal = g.V(2).store('1')
-gremlin>                    .in('knows').store('2')
-gremlin>                    .out('knows').has('age',gt(30)).store('3')
-gremlin>                    .outE('created').has('weight',gt(0.5d)).inV().store('4')
-==>v[5]
-gremlin> traversal.getSideEffects().get('1')
-==>Optional[{v[2]=1}]
-gremlin> traversal.getSideEffects().get('2')
-==>Optional[{v[1]=1}]
-gremlin> traversal.getSideEffects().get('3')
-==>Optional[{v[4]=1}]
-gremlin> traversal.getSideEffects().get('4')
-==>Optional[{v[5]=1}]
-gremlin> :> traversal
-Visualizing vertices at step: 1... visited: 1
-Visualizing vertices at step: 2... visited: 1
-Visualizing vertices at step: 3... visited: 1
-Visualizing vertices at step: 4... visited: 1
-gremlin>
+g = graph.traversal()
+g.V(2).in('knows').out('knows').has('age',gt(30)).
+       outE('created').has('weight',gt(0.5d)).inV().values('name')
+traversal = g.V(2).store('1').
+       in('knows').store('2').
+       out('knows').has('age',gt(30)).store('3').
+       outE('created').has('weight',gt(0.5d)).inV().store('4')
+traversal.getSideEffects().get('1')
+traversal.getSideEffects().get('2')
+traversal.getSideEffects().get('3')
+traversal.getSideEffects().get('4')
+:> traversal
 ----
 
 When `:> traversal` is called, it iterates through the sideEffects of the traversal accessing the vertices stored at each corresponding step. It then updates the vertices' color with `startRGBColor`, which in this case is a lime-green blue: [0.0,1.0,0.5]. After the first step visualization, it sleeps for the configured `stepDelay` in milliseconds. On the second step, it decays the configured `colorToFade` of all the previously visited vertices in prior steps, by multiplying the current `colorToFade` value for each vertex with the `colorFadeRate`.  To avoid color decay on prior steps, then provide a `colorFadeRate` value of `1.0`.  The screenshots below show how the visualization evolves over the 4 steps:
@@ -924,19 +910,13 @@ image::gephi-traversal.png[width=1200]
 
 Once a traversal visualization has executed, clear the colors in Gephi by selecting the grey square icon under the magnifying glass icon on the lower left tool bar next to the graph canvas.  Run another traversal against the same graph and it will update the appropriate vertices.  To get a sense of how the visualization configuration parameters affect the output, see the example below:
 
-[source,groovy]
-gremlin> :remote config startRGBColor [0.0,0.3,1.0]
-==>Connection to Gephi - http://localhost:8080/workspace0 with stepDelay:1000, startRGBColor:[0.0, 0.3, 1.0], colorToFade:g, colorFadeRate:0.7
-gremlin> :remote config colorToFade b
-==>Connection to Gephi - http://localhost:8080/workspace0 with stepDelay:1000, startRGBColor:[0.0, 0.3, 1.0], colorToFade:b, colorFadeRate:0.7
-gremlin> :remote config colorFadeRate 0.5
-==>Connection to Gephi - http://localhost:8080/workspace0 with stepDelay:1000, startRGBColor:[0.0, 0.3, 1.0], colorToFade:b, colorFadeRate:0.5
-gremlin> :> traversal
-Visualizing vertices at step: 1... visited: 1
-Visualizing vertices at step: 2... visited: 1
-Visualizing vertices at step: 3... visited: 1
-Visualizing vertices at step: 4... visited: 1
-gremlin>
+[gremlin-groovy,modern]
+----
+:remote config startRGBColor [0.0,0.3,1.0]
+:remote config colorToFade b
+:remote config colorFadeRate 0.5
+:> traversal
+----
 
 image::gephi-traversal-config.png[width=400]
 


[6/8] incubator-tinkerpop git commit: Merge remote-tracking branch 'origin/master'

Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/master'


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/5f3f1a2c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/5f3f1a2c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/5f3f1a2c

Branch: refs/heads/resultset-refactor
Commit: 5f3f1a2c7c446b5ad87b2958f10ca16d6f426b37
Parents: 6b61474 6a94788
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 26 08:09:08 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jun 26 08:09:08 2015 -0400

----------------------------------------------------------------------
 bin/gephi.mock                                  |  24 ++++
 bin/process-docs.sh                             |   2 +
 docs/src/gremlin-applications.asciidoc          |  74 +++++-------
 docs/src/implementations.asciidoc               |   2 +-
 docs/src/intro.asciidoc                         |   6 +-
 docs/src/the-traversal.asciidoc                 |  54 +++++----
 .../traversal/dsl/graph/GraphTraversal.java     |   6 +-
 .../gremlin/process/traversal/dsl/graph/__.java |   7 --
 .../process/traversal/step/map/MatchStep.java   | 118 ++++++++++++-------
 .../optimization/MatchPredicateStrategy.java    |   5 +-
 .../traversal/step/map/MatchStepTest.java       |  56 ++++++---
 .../MatchPredicateStrategyTest.java             |   5 +-
 .../traversal/step/map/GroovyMatchTest.groovy   |  74 ++++++------
 .../process/TraversalPerformanceTest.java       |   2 +-
 .../process/traversal/step/map/MatchTest.java   | 104 ++++++++--------
 .../neo4j/process/NativeNeo4jCypherTest.java    |  16 +--
 .../tinkergraph/structure/TinkerGraphTest.java  |  20 ++--
 17 files changed, 321 insertions(+), 254 deletions(-)
----------------------------------------------------------------------



[7/8] incubator-tinkerpop git commit: Add gets for Property and VertexProperty on Result for gremlin-driver.

Posted by sp...@apache.org.
Add gets for Property and VertexProperty on Result for gremlin-driver.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/80443153
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/80443153
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/80443153

Branch: refs/heads/resultset-refactor
Commit: 8044315372dc663e168ec6ade047562a73c6a1d6
Parents: 5f3f1a2
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 26 08:20:09 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jun 26 08:20:09 2015 -0400

----------------------------------------------------------------------
 .../apache/tinkerpop/gremlin/driver/Result.java | 10 +++++++++
 .../tinkerpop/gremlin/driver/ResultTest.java    | 22 ++++++++++++++++++++
 .../server/GremlinResultSetIntegrateTest.java   | 18 ++++++++++++++++
 3 files changed, 50 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80443153/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java
index 5845c08..f65f2be 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java
@@ -22,7 +22,9 @@ import org.apache.tinkerpop.gremlin.driver.message.ResponseResult;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 
 import java.util.Iterator;
 
@@ -94,6 +96,14 @@ public final class Result {
         return (Path) resultObject;
     }
 
+    public <V> Property<V> getProperty() {
+        return (Property<V>) resultObject;
+    }
+
+    public <V> VertexProperty<V> getVertexProperty() {
+        return (VertexProperty<V>) resultObject;
+    }
+
     public <T> T get(final Class<? extends T> clazz) {
         return clazz.cast(this.resultObject);
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80443153/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java
index 2173f23..446d7a0 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java
@@ -22,7 +22,9 @@ import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
 import org.junit.Test;
 
@@ -110,6 +112,17 @@ public class ResultTest {
     }
 
     @Test
+    public void shouldGetVertexProperty() {
+        final VertexProperty<String> v = g.vertices(1).next().property("name");
+        final Result result = new Result(v);
+
+        assertEquals(v, result.getVertexProperty());
+        assertEquals(v, result.get(VertexProperty.class));
+        assertEquals(v, result.getElement());
+        assertEquals(v, result.get(Element.class));
+    }
+
+    @Test
     public void shouldGetEdge() {
         final Edge e = g.edges(11).next();
         final Result result = new Result(e);
@@ -121,6 +134,15 @@ public class ResultTest {
     }
 
     @Test
+    public void shouldGetProperty() {
+        final Property<Double> p = g.edges(11).next().property("weight");
+        final Result result = new Result(p);
+
+        assertEquals(p, result.getProperty());
+        assertEquals(p, result.get(Property.class));
+    }
+
+    @Test
     public void shouldGetPath() {
         final Path p = g.traversal().V().out().path().next();
         final Result result = new Result(p);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/80443153/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
index 7bbe065..9573b01 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
@@ -23,10 +23,14 @@ import org.apache.tinkerpop.gremlin.driver.Cluster;
 import org.apache.tinkerpop.gremlin.driver.ResultSet;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedPath;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -83,6 +87,13 @@ public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrat
     }
 
     @Test
+    public void shouldHandleVertexPropertyResult() throws Exception {
+        final ResultSet results = client.submit("g.V().properties('name').next()");
+        final VertexProperty<String> v = results.all().get().get(0).getVertexProperty();
+        assertThat(v, instanceOf(DetachedVertexProperty.class));
+    }
+
+    @Test
     public void shouldHandleEdgeResult() throws Exception {
         final ResultSet results = client.submit("g.E().next()");
         final Edge e = results.all().get().get(0).getEdge();
@@ -90,6 +101,13 @@ public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrat
     }
 
     @Test
+    public void shouldHandlePropertyResult() throws Exception {
+        final ResultSet results = client.submit("g.E().properties('weight').next()");
+        final Property<Double> p = results.all().get().get(0).getProperty();
+        assertThat(p, instanceOf(DetachedProperty.class));
+    }
+
+    @Test
     public void shouldHandlePathResult() throws Exception {
         final ResultSet results = client.submit("g.V().out().path().next()");
         final Path p = results.all().get().get(0).getPath();


[5/8] incubator-tinkerpop git commit: Add method to get a Path in Result class.

Posted by sp...@apache.org.
Add method to get a Path in Result class.

Also added a new class of integration tests just for the ResultSet class in gremlin-driver.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/6b61474c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/6b61474c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/6b61474c

Branch: refs/heads/resultset-refactor
Commit: 6b61474ca1aa4ed39be2827f284eeb31f0a70e5a
Parents: d3a4b56
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 26 08:07:59 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jun 26 08:07:59 2015 -0400

----------------------------------------------------------------------
 .../apache/tinkerpop/gremlin/driver/Result.java | 10 +-
 .../tinkerpop/gremlin/driver/ResultTest.java    | 12 ++-
 .../server/GremlinDriverIntegrateTest.java      | 22 -----
 .../server/GremlinResultSetIntegrateTest.java   | 98 ++++++++++++++++++++
 4 files changed, 118 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6b61474c/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java
index 08ab3db..5845c08 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/Result.java
@@ -19,12 +19,16 @@
 package org.apache.tinkerpop.gremlin.driver;
 
 import org.apache.tinkerpop.gremlin.driver.message.ResponseResult;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
+import java.util.Iterator;
+
 /**
- * An {@code Item} represents an result value from the server.
+ * A {@code Result} represents an result value from the server (i.e. one item from the server-side {@link Iterator}
+ * of results.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
@@ -86,6 +90,10 @@ public final class Result {
         return (Element) resultObject;
     }
 
+    public Path getPath() {
+        return (Path) resultObject;
+    }
+
     public <T> T get(final Class<? extends T> clazz) {
         return clazz.cast(this.resultObject);
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6b61474c/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java
index 491ac1c..2173f23 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.driver;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -31,7 +32,7 @@ import static org.junit.Assert.assertEquals;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public class ResultTest {
-    private final Graph g = TinkerFactory.createClassic();
+    private final Graph g = TinkerFactory.createModern();
 
     @Test
     public void shouldGetString() {
@@ -118,4 +119,13 @@ public class ResultTest {
         assertEquals(e, result.getElement());
         assertEquals(e, result.get(Element.class));
     }
+
+    @Test
+    public void shouldGetPath() {
+        final Path p = g.traversal().V().out().path().next();
+        final Result result = new Result(p);
+
+        assertEquals(p, result.getPath());
+        assertEquals(p, result.get(Path.class));
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6b61474c/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
index e8b8f1e..4270cb1 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
@@ -214,28 +214,6 @@ public class GremlinDriverIntegrateTest extends AbstractGremlinServerIntegration
     }
 
     @Test
-    public void shouldHandleNullResult() throws Exception {
-        final Cluster cluster = Cluster.open();
-        final Client client = cluster.connect();
-
-        final ResultSet results = client.submit("g.V().drop().iterate();null");
-        assertNull(results.all().get().get(0).getObject());
-
-        cluster.close();
-    }
-
-    @Test
-    public void shouldHandleEmptyResult() throws Exception {
-        final Cluster cluster = Cluster.open();
-        final Client client = cluster.connect();
-
-        final ResultSet results = client.submit("g.V(100,1000,1000)");
-        assertEquals(0, results.all().get().size());
-
-        cluster.close();
-    }
-
-    @Test
     public void shouldCloseWithServerDown() throws Exception {
         final Cluster cluster = Cluster.open();
         cluster.connect();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6b61474c/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
new file mode 100644
index 0000000..7bbe065
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
@@ -0,0 +1,98 @@
+/*
+ * 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.server;
+
+import org.apache.tinkerpop.gremlin.driver.Client;
+import org.apache.tinkerpop.gremlin.driver.Cluster;
+import org.apache.tinkerpop.gremlin.driver.ResultSet;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+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.DetachedPath;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Arrays;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.IsInstanceOf.instanceOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrationTest {
+
+    private Cluster cluster;
+    private Client client;
+
+    @Override
+    public Settings overrideSettings(final Settings settings) {
+        settings.scriptEngines.get("gremlin-groovy").scripts = Arrays.asList("scripts/generate-modern.groovy");
+        return settings;
+    }
+
+    @Before
+    public void beforeTest() {
+        cluster = Cluster.open();
+        client = cluster.connect();
+    }
+
+    @After
+    public void afterTest() {
+        cluster.close();
+    }
+
+    @Test
+    public void shouldHandleNullResult() throws Exception {
+        final ResultSet results = client.submit("g.V().drop().iterate();null");
+        assertNull(results.all().get().get(0).getObject());
+    }
+
+    @Test
+    public void shouldHandleEmptyResult() throws Exception {
+        final ResultSet results = client.submit("g.V(100,1000,1000)");
+        assertEquals(0, results.all().get().size());
+    }
+
+    @Test
+    public void shouldHandleVertexResult() throws Exception {
+        final ResultSet results = client.submit("g.V().next()");
+        final Vertex v = results.all().get().get(0).getVertex();
+        assertThat(v, instanceOf(DetachedVertex.class));
+    }
+
+    @Test
+    public void shouldHandleEdgeResult() throws Exception {
+        final ResultSet results = client.submit("g.E().next()");
+        final Edge e = results.all().get().get(0).getEdge();
+        assertThat(e, instanceOf(DetachedEdge.class));
+    }
+
+    @Test
+    public void shouldHandlePathResult() throws Exception {
+        final ResultSet results = client.submit("g.V().out().path().next()");
+        final Path p = results.all().get().get(0).getPath();
+        assertThat(p, instanceOf(DetachedPath.class));
+    }
+}


[3/8] incubator-tinkerpop git commit: there is no such thing as a start-key anymore in MatchStep. If you want the incoming traverser to 'start' somewhere, then the previous step needs to be labeled as such -- this is exactly what MatchStep did for you au

Posted by sp...@apache.org.
there is no such thing as a start-key anymore in MatchStep. If you want the incoming traverser to 'start' somewhere, then the previous step needs to be labeled as such -- this is exactly what MatchStep did for you automagically before. Now the user has to be explicit.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/6a94788e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/6a94788e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/6a94788e

Branch: refs/heads/resultset-refactor
Commit: 6a94788eac9a4e6acdd85303e4f2a67c2b1e91f7
Parents: 3c40916
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jun 25 17:10:35 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jun 25 17:10:44 2015 -0600

----------------------------------------------------------------------
 docs/src/the-traversal.asciidoc                 |  54 +++++----
 .../traversal/dsl/graph/GraphTraversal.java     |   6 +-
 .../gremlin/process/traversal/dsl/graph/__.java |   7 --
 .../process/traversal/step/map/MatchStep.java   | 118 ++++++++++++-------
 .../optimization/MatchPredicateStrategy.java    |   5 +-
 .../traversal/step/map/MatchStepTest.java       |  56 ++++++---
 .../MatchPredicateStrategyTest.java             |   5 +-
 .../traversal/step/map/GroovyMatchTest.groovy   |  74 ++++++------
 .../process/TraversalPerformanceTest.java       |   2 +-
 .../process/traversal/step/map/MatchTest.java   | 104 ++++++++--------
 .../neo4j/process/NativeNeo4jCypherTest.java    |  16 +--
 .../tinkergraph/structure/TinkerGraphTest.java  |  20 ++--
 12 files changed, 264 insertions(+), 203 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/docs/src/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/the-traversal.asciidoc b/docs/src/the-traversal.asciidoc
index 72318d4..f5efcd9 100644
--- a/docs/src/the-traversal.asciidoc
+++ b/docs/src/the-traversal.asciidoc
@@ -724,20 +724,22 @@ image::match-step.png[width=500]
 
 [gremlin-groovy,modern]
 ----
-g.V().match('a',
+g.V().match(
         __.as('a').out('created').as('b'),
         __.as('b').has('name', 'lop'),
         __.as('b').in('created').as('c'),
-        __.as('c').has('age', 29)).select('a','c').by('name')
+        __.as('c').has('age', 29)).
+      select('a','c').by('name')
 ----
 
 Note that the above can also be more concisely written as below which demonstrates that standard inner-traversals can be arbitrarily defined.
 
 [gremlin-groovy,modern]
 ----
-g.V().match('a',
+g.V().match(
         __.as('a').out('created').has('name', 'lop').as('b'),
-        __.as('b').in('created').has('age', 29).as('c')).select('a','c').by('name')
+        __.as('b').in('created').has('age', 29).as('c')).
+      select('a','c').by('name')
 ----
 
 [[grateful-dead]]
@@ -750,17 +752,18 @@ image::grateful-dead-schema.png[width=475]
 ----
 graph.io(graphml()).readGraph('data/grateful-dead.xml')
 g = graph.traversal(standard())
-g.V().match('a',
+g.V().match(
         __.as('a').has('name', 'Garcia'),
         __.as('a').in('writtenBy').as('b'),
-        __.as('a').in('sungBy').as('b')).select('b').values('name')
+        __.as('a').in('sungBy').as('b')).
+      select('b').values('name')
 ----
 
 Among the features which differentiate `match()` from SPARQL are:
 
 [gremlin-groovy,modern]
 ----
-g.V().match('a',
+g.V().match(
         __.as('a').out('created').has('name','lop').as('b'), <1>
         __.as('b').in('created').has('age', 29).as('c'),
         __.as('c').repeat(out()).times(2)). <2>
@@ -775,14 +778,14 @@ To extend point #3, it is possible to support going from imperative, to declarat
 
 [gremlin-groovy,modern]
 ----
-g.V().match('a',
+g.V().match(
         __.as('a').out('knows').as('b'),
         __.as('b').out('created').has('name','lop')).
-        select('b').out('created').
-          match('x',
+      select('b').out('created').
+          match(
             __.as('x').in('created').as('y'),
             __.as('y').out('knows').as('z')).
-            select('z').values('name')
+          select('z').values('name')
 ----
 
 IMPORTANT: The `match()`-step is stateless. The variable bindings of the traversal patterns are stored in the path history of the traverser. As such, the variables used over all `match()`-steps within a traversal are globally unique. A benefit of this is that subsequent `where()`, `select()`, `match()`, etc. steps can leverage the same variables in their analysis.
@@ -791,14 +794,25 @@ Like all other steps in Gremlin, `match()` is a function and thus, `match()` wit
 
 [gremlin-groovy,modern]
 ----
-g.V().match('a',
+g.V().match(
         __.as('a').out('knows').as('b'),
         __.as('b').out('created').has('name','lop'),
-        __.as('b').match('x',
-                 __.as('x').out('created').as('y'),
-                 __.as('y').has('name','ripple')).
-                 select('y').as('c')).
-        select('a','c').by('name')
+        __.as('b').match(
+                     __.as('b').out('created').as('c'),
+                     __.as('c').has('name','ripple')).
+                  select('c').as('c')).
+      select('a','c').by('name')
+----
+
+If an extended, step-labeled traversal proceeds the `match()`-step and the traverser entering the `match()` is destined to bind to a particular variable, then the previous step should be labeled accordingly.
+
+[gremlin-groovy,modern]
+----
+g.V().as('a').out('knows').as('b')
+  match(
+    __.as('b').out('created').as('c'),
+    __.not(__.as('c').in('created').as('a'))).
+  select().by('name')
 ----
 
 There are three types of `match()` traversal patterns.
@@ -824,7 +838,7 @@ g.V().as('a').out().as('b'). <1>
 ----
 
 <1> A standard, step-labeled traversal can come prior to `match()`.
-<2> If the traverser's path prior to entering `match()` has the requisite variables, then no "start variable" is needed.
+<2> If the traverser's path prior to entering `match()` has requisite label values, then those historic values are bound.
 <3> It is possible to use <<a-note-on-barrier-steps,barrier steps>> though they are computed locally to the pattern (as one would expect).
 <4> It is possible to `not()` a pattern.
 <5> It is possible to nest `and()`- and `or()`-steps for conjunction matching.
@@ -840,7 +854,7 @@ Match is typically used in conjunction with both `select()` (demonstrated previo
 
 [gremlin-groovy,modern]
 ----
-g.V().match('a',
+g.V().match(
         __.as('a').out('created').as('b'),
         __.as('b').in('created').as('c')).
           where('a', neq('c')).select('a','c').by('name')
@@ -850,7 +864,7 @@ The `where()`-step can take either a `P`-predicate (example above) or a `Travers
 
 [gremlin-groovy,modern]
 ----
-traversal = g.V().match('a',
+traversal = g.V().match(
                     __.as('a').has(label,'person'), <1>
                     __.as('a').out('created').as('b'),
                     __.as('b').in('created').as('c')).

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 5f26bb8..ef0fd02 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -478,12 +478,8 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.asAdmin().addStep(new PathStep<>(this.asAdmin()));
     }
 
-    public default <E2> GraphTraversal<S, Map<String, E2>> match(final String startLabel, final Traversal<?, ?>... matchTraversals) {
-        return this.asAdmin().addStep(new MatchStep<>(this.asAdmin(), startLabel, ConjunctionStep.Conjunction.AND, matchTraversals));
-    }
-
     public default <E2> GraphTraversal<S, Map<String, E2>> match(final Traversal<?, ?>... matchTraversals) {
-        return this.match(null, matchTraversals);
+        return this.asAdmin().addStep(new MatchStep<>(this.asAdmin(), ConjunctionStep.Conjunction.AND, matchTraversals));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index bdf6bb5..1003567 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -273,13 +273,6 @@ public class __ {
     }
 
     /**
-     * @see {@link GraphTraversal#match(String, Traversal[])}
-     */
-    public static <A, B> GraphTraversal<A, Map<String, B>> match(final String startLabel, final Traversal<?, ?>... matchTraversals) {
-        return __.<A>start().match(startLabel, matchTraversals);
-    }
-
-    /**
      * @see {@link GraphTraversal#match(Traversal[])}
      */
     public static <A, B> GraphTraversal<A, Map<String, B>> match(final Traversal<?, ?>... matchTraversals) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
index 67ffbe1..22efece 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
@@ -34,7 +34,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.ConjunctionSte
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NotStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WherePredicateStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ComputerAwareStep;
@@ -68,31 +67,28 @@ import java.util.stream.Stream;
  */
 public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>> implements TraversalParent, Scoping {
 
+    public static enum TraversalType {WHERE_PREDICATE, WHERE_TRAVERSAL, MATCH_TRAVERSAL}
+
     private List<Traversal.Admin<Object, Object>> matchTraversals = new ArrayList<>();
     private boolean first = true;
     private Set<String> matchStartLabels = new HashSet<>();
     private Set<String> matchEndLabels = new HashSet<>();
     private Set<String> scopeKeys = null;
     private final ConjunctionStep.Conjunction conjunction;
-    private final String startLabel;
+    private final String computedStartLabel;
     private MatchAlgorithm matchAlgorithm;
     private Class<? extends MatchAlgorithm> matchAlgorithmClass = CountMatchAlgorithm.class; // default is CountMatchAlgorithm (use MatchAlgorithmStrategy to change)
 
     private Set<List<Object>> dedups = null;
     private Set<String> dedupLabels = null;
 
-    public MatchStep(final Traversal.Admin traversal, final String startLabel, final ConjunctionStep.Conjunction conjunction, final Traversal... matchTraversals) {
+    public MatchStep(final Traversal.Admin traversal, final ConjunctionStep.Conjunction conjunction, final Traversal... matchTraversals) {
         super(traversal);
         this.conjunction = conjunction;
-        this.startLabel = startLabel;
-        if (null != this.startLabel) {
-            if (StartStep.isVariableStartStep(this.traversal.getEndStep()))  // in case a match() is after the start step
-                this.traversal.addStep(new IdentityStep<>(this.traversal));
-            this.traversal.getEndStep().addLabel(this.startLabel);
-        }
         this.matchTraversals = (List) Stream.of(matchTraversals).map(Traversal::asAdmin).collect(Collectors.toList());
         this.matchTraversals.forEach(this::configureStartAndEndSteps); // recursively convert to MatchStep, MatchStartStep, or MatchEndStep
         this.matchTraversals.forEach(this::integrateChild);
+        this.computedStartLabel =  Helper.computeStartLabel(this.matchTraversals);
     }
 
     //////////////////
@@ -117,7 +113,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
         // START STEP to MatchStep OR MatchStartStep
         final Step<?, ?> startStep = matchTraversal.getStartStep();
         if (startStep instanceof ConjunctionStep) {
-            final MatchStep matchStep = new MatchStep(matchTraversal, null,
+            final MatchStep matchStep = new MatchStep(matchTraversal,
                     startStep instanceof AndStep ? ConjunctionStep.Conjunction.AND : ConjunctionStep.Conjunction.OR,
                     ((ConjunctionStep<?>) startStep).getLocalChildren().toArray(new Traversal[((ConjunctionStep<?>) startStep).getLocalChildren().size()]));
             TraversalHelper.replaceStep(startStep, matchStep, matchTraversal);
@@ -195,7 +191,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
     }
 
     public Optional<String> getStartLabel() {
-        return Optional.ofNullable(this.startLabel);
+        return Optional.ofNullable(this.computedStartLabel);
     }
 
     @Override
@@ -209,7 +205,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
                     this.scopeKeys.addAll(((Scoping) traversal.getEndStep()).getScopeKeys());
             });
             this.scopeKeys.removeAll(this.matchEndLabels);
-            this.scopeKeys.remove(this.startLabel);
+            this.scopeKeys.remove(this.computedStartLabel);
             this.scopeKeys = Collections.unmodifiableSet(this.scopeKeys);
         }
         return this.scopeKeys;
@@ -217,7 +213,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
 
     @Override
     public String toString() {
-        return StringFactory.stepString(this, this.startLabel, this.dedupLabels, this.conjunction, this.matchTraversals);
+        return StringFactory.stepString(this, this.dedupLabels, this.conjunction, this.matchTraversals);
     }
 
     @Override
@@ -333,7 +329,10 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
             }
             if (null == traverser) {
                 traverser = this.starts.next();
-                traverser.path().addLabel(this.getId()); // so the traverser never returns to this branch ever again
+                final Path path = traverser.path();
+                if (!this.matchStartLabels.stream().filter(path::hasLabel).findAny().isPresent())
+                        path.addLabel(this.computedStartLabel);
+                path.addLabel(this.getId()); // so the traverser never returns to this branch ever again
             }
 
             if (!this.isDuplicate(traverser)) {
@@ -355,8 +354,11 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
     protected Iterator<Traverser<Map<String, E>>> computerAlgorithm() throws NoSuchElementException {
         while (true) {
             final Traverser.Admin traverser = this.starts.next();
-            if (!traverser.path().hasLabel(this.getId()))
-                traverser.path().addLabel(this.getId()); // so the traverser never returns to this branch ever again
+            final Path path = traverser.path();
+            if (!this.matchStartLabels.stream().filter(path::hasLabel).findAny().isPresent())
+                path.addLabel(this.computedStartLabel);
+            if (!path.hasLabel(this.getId()))
+                path.addLabel(this.getId()); // so the traverser never returns to this branch ever again
 
             if (!this.isDuplicate(traverser)) {
                 if (hasMatched(this.conjunction, traverser)) {
@@ -382,7 +384,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
 
     @Override
     public int hashCode() {
-        return super.hashCode() ^ this.matchTraversals.hashCode() ^ this.conjunction.hashCode() ^ (null == this.startLabel ? "null".hashCode() : this.startLabel.hashCode());
+        return super.hashCode() ^ this.matchTraversals.hashCode() ^ this.conjunction.hashCode() ^ this.computedStartLabel.hashCode();
     }
 
     @Override
@@ -505,42 +507,76 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
 
     //////////////////////////////
 
-    public interface MatchAlgorithm extends Function<Traverser.Admin<Object>, Traversal.Admin<Object, Object>>, Serializable {
-
-        public static enum Type {WHERE_PREDICATE, WHERE_TRAVERSAL, MATCH_TRAVERSAL}
-
-        public static Function<List<Traversal.Admin<Object, Object>>, IllegalStateException> UNMATCHABLE_PATTERN = traversals -> new IllegalStateException("The provided match pattern is unsolvable: " + traversals);
+    public static final class Helper {
+        private Helper() {
+        }
 
-        public default Optional<String> getEndLabel(final Traversal.Admin<Object, Object> traversal) {
+        public static Optional<String> getEndLabel(final Traversal.Admin<Object, Object> traversal) {
             return ((MatchEndStep) traversal.getEndStep()).getMatchKey();
         }
 
-        public default Set<String> getStartLabels(final Traversal.Admin<Object, Object> traversal) {
+        public static Set<String> getStartLabels(final Traversal.Admin<Object, Object> traversal) {
             return ((Scoping) traversal.getStartStep()).getScopeKeys();
         }
 
-        public default boolean hasStartLabels(final Traverser.Admin<Object> traverser, final Traversal.Admin<Object, Object> traversal) {
-            return !this.getStartLabels(traversal).stream().filter(label -> !traverser.path().hasLabel(label)).findAny().isPresent();
+        public static boolean hasStartLabels(final Traverser.Admin<Object> traverser, final Traversal.Admin<Object, Object> traversal) {
+            return !Helper.getStartLabels(traversal).stream().filter(label -> !traverser.path().hasLabel(label)).findAny().isPresent();
         }
 
-        public default boolean hasEndLabel(final Traverser.Admin<Object> traverser, final Traversal.Admin<Object, Object> traversal) {
-            final Optional<String> endLabel = this.getEndLabel(traversal);
-            return endLabel.isPresent() && traverser.path().hasLabel(endLabel.get());
+        public static boolean hasEndLabel(final Traverser.Admin<Object> traverser, final Traversal.Admin<Object, Object> traversal) {
+            final Optional<String> endLabel = Helper.getEndLabel(traversal);
+            return endLabel.isPresent() && traverser.path().hasLabel(endLabel.get()); // TODO: !isPresent?
         }
 
-        public default boolean hasExecutedTraversal(final Traverser.Admin<Object> traverser, final Traversal.Admin<Object, Object> traversal) {
+        public static boolean hasExecutedTraversal(final Traverser.Admin<Object> traverser, final Traversal.Admin<Object, Object> traversal) {
             return traverser.path().hasLabel(traversal.getStartStep().getId());
         }
 
-        public default Type getTraversalType(final Traversal.Admin<Object, Object> traversal) {
+        public static TraversalType getTraversalType(final Traversal.Admin<Object, Object> traversal) {
             final Step<?, ?> nextStep = traversal.getStartStep().getNextStep();
             if (nextStep instanceof WherePredicateStep)
-                return Type.WHERE_PREDICATE;
+                return TraversalType.WHERE_PREDICATE;
             else if (nextStep instanceof WhereTraversalStep)
-                return Type.WHERE_TRAVERSAL;
+                return TraversalType.WHERE_TRAVERSAL;
             else
-                return Type.MATCH_TRAVERSAL;
+                return TraversalType.MATCH_TRAVERSAL;
+        }
+
+        public static String computeStartLabel(final List<Traversal.Admin<Object, Object>> traversals) {
+            final List<String> sort = new ArrayList<>();
+            for (final Traversal.Admin<Object, Object> traversal : traversals) {
+                Helper.getStartLabels(traversal).stream().filter(startLabel -> !sort.contains(startLabel)).forEach(sort::add);
+                Helper.getEndLabel(traversal).ifPresent(endLabel -> {
+                    if (!sort.contains(endLabel))
+                        sort.add(endLabel);
+                });
+            }
+            Collections.sort(sort, (a, b) -> {
+                for (final Traversal.Admin<Object, Object> traversal : traversals) {
+                    final Optional<String> endLabel = Helper.getEndLabel(traversal);
+                    if (endLabel.isPresent()) {
+                        final Set<String> startLabels = Helper.getStartLabels(traversal);
+                        if (a.equals(endLabel.get()) && startLabels.contains(b))
+                            return 1;
+                        else if (b.equals(endLabel.get()) && startLabels.contains(a))
+                            return -1;
+                    }
+                }
+                return 0;
+            });
+            //System.out.println(sort);
+            return sort.get(0);
         }
+    }
+
+
+    //////////////////////////////
+
+    public interface MatchAlgorithm extends Function<Traverser.Admin<Object>, Traversal.Admin<Object, Object>>, Serializable {
+
+
+        public static Function<List<Traversal.Admin<Object, Object>>, IllegalStateException> UNMATCHABLE_PATTERN = traversals -> new IllegalStateException("The provided match pattern is unsolvable: " + traversals);
+
 
         public void initialize(final List<Traversal.Admin<Object, Object>> traversals);
 
@@ -565,7 +601,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
         @Override
         public Traversal.Admin<Object, Object> apply(final Traverser.Admin<Object> traverser) {
             for (final Traversal.Admin<Object, Object> traversal : this.traversals) {
-                if (!this.hasExecutedTraversal(traverser, traversal) && this.hasStartLabels(traverser, traversal))
+                if (!Helper.hasExecutedTraversal(traverser, traversal) && Helper.hasStartLabels(traverser, traversal))
                     return traversal;
             }
             throw UNMATCHABLE_PATTERN.apply(this.traversals);
@@ -586,8 +622,8 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
         public Traversal.Admin<Object, Object> apply(final Traverser.Admin<Object> traverser) {
             Bundle startLabelsBundle = null;
             for (final Bundle bundle : this.bundles) {
-                if (!this.hasExecutedTraversal(traverser, bundle.traversal) && this.hasStartLabels(traverser, bundle.traversal)) {
-                    if (bundle.type != Type.MATCH_TRAVERSAL || this.hasEndLabel(traverser, bundle.traversal))
+                if (!Helper.hasExecutedTraversal(traverser, bundle.traversal) && Helper.hasStartLabels(traverser, bundle.traversal)) {
+                    if (bundle.traversalType != TraversalType.MATCH_TRAVERSAL || Helper.hasEndLabel(traverser, bundle.traversal))
                         return bundle.traversal;
                     else if (null == startLabelsBundle)
                         startLabelsBundle = bundle;
@@ -606,7 +642,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
         public void recordEnd(final Traverser.Admin<Object> traverser, final Traversal.Admin<Object, Object> traversal) {
             this.getBundle(traversal).incrementEndCount();
             if (this.counter < 200 || this.counter % 250 == 0) // aggressively sort for the first 200 results -- after that, sort every 250
-                Collections.sort(this.bundles, Comparator.<Bundle>comparingInt(b -> b.type.ordinal()).thenComparingDouble(b -> b.multiplicity));
+                Collections.sort(this.bundles, Comparator.<Bundle>comparingInt(b -> b.traversalType.ordinal()).thenComparingDouble(b -> b.multiplicity));
             this.counter++;
         }
 
@@ -622,14 +658,14 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
 
         public class Bundle {
             public Traversal.Admin<Object, Object> traversal;
-            public Type type;
+            public TraversalType traversalType;
             public long startsCount;
             public long endsCount;
             public double multiplicity;
 
             public Bundle(final Traversal.Admin<Object, Object> traversal) {
                 this.traversal = traversal;
-                this.type = getTraversalType(traversal);
+                this.traversalType = Helper.getTraversalType(traversal);
                 this.startsCount = 0l;
                 this.endsCount = 0l;
                 this.multiplicity = 0.0d;
@@ -644,4 +680,6 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
             }*/
         }
     }
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
index c1ea7ed..56d46f1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategy.java
@@ -88,8 +88,8 @@ public final class MatchPredicateStrategy extends AbstractTraversalStrategy<Trav
                 } else
                     break;
             }
-            // match('a',as('a').has(key,value),...) --> as('a').has(key,value).match('a',...)
-            if (matchStep.getStartLabel().isPresent()) {
+            // match(as('a').has(key,value),...) --> as('a').has(key,value).match(...)
+            if (matchStep.getStartLabel().isPresent() && (matchStep.getPreviousStep().getLabels().isEmpty() || matchStep.getPreviousStep().getLabels().contains(matchStep.getStartLabel()))) {
                 ((MatchStep<?, ?>) matchStep).getGlobalChildren().stream().collect(Collectors.toList()).forEach(matchTraversal -> {
                     if (matchTraversal.getStartStep() instanceof MatchStep.MatchStartStep &&
                             ((MatchStep.MatchStartStep) matchTraversal.getStartStep()).getSelectKey().isPresent() &&
@@ -104,6 +104,7 @@ public final class MatchPredicateStrategy extends AbstractTraversalStrategy<Trav
                         matchStep.removeGlobalChild(matchTraversal);
                         matchTraversal.removeStep(0);                                     // remove MatchStartStep
                         matchTraversal.removeStep(matchTraversal.getSteps().size() - 1);    // remove MatchEndStep
+                        matchStep.getPreviousStep().addLabel((String)matchStep.getStartLabel().get());
                         TraversalHelper.insertTraversal(matchStep.getPreviousStep(), matchTraversal, traversal);
                     }
                 });

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStepTest.java
index 723de36..67da0c9 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStepTest.java
@@ -31,12 +31,14 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WherePredicate
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.NoOpBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.EmptyTraverser;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.junit.Test;
 
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 
+import static org.apache.tinkerpop.gremlin.process.traversal.P.eq;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
 import static org.junit.Assert.*;
 
@@ -47,21 +49,17 @@ public class MatchStepTest extends StepTest {
     @Override
     protected List<Traversal> getTraversals() {
         return Arrays.asList(
-                __.match("a", as("a").out("knows").as("b")),
                 __.match(as("a").out("knows").as("b")),
-                __.match("a", as("a").out().as("b")),
                 __.match(as("a").out().as("b")),
                 ////
-                __.match("a", where(as("a").out("knows").as("b"))),
                 __.match(where(as("a").out("knows").as("b"))),
-                __.match("a", as("a").where(out().as("b"))),
                 __.match(as("a").where(out().as("b")))
         );
     }
 
     @Test
     public void testPreCompilationOfStartAndEnds() {
-        final Traversal.Admin<?, ?> traversal = __.match("a", as("a").out().as("b"), as("c").path().as("d")).asAdmin();
+        final Traversal.Admin<?, ?> traversal = __.match(as("a").out().as("b"), as("c").path().as("d")).asAdmin();
         final MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
         assertEquals(MatchStep.class, traversal.getStartStep().getClass());
         assertEquals("a", matchStep.getStartLabel().get());
@@ -80,8 +78,8 @@ public class MatchStepTest extends StepTest {
     @Test
     public void testPreCompilationOfOr() {
         final List<Traversal.Admin<?, ?>> traversals = Arrays.asList(
-                __.match("a", as("a").out().as("b"), or(as("c").path().as("d"), as("e").coin(0.5).as("f"))).asAdmin(),
-                __.match("a", as("a").out().as("b"), as("c").path().as("d").or().as("e").coin(0.5).as("f")).asAdmin());
+                __.match(as("a").out().as("b"), or(as("c").path().as("d"), as("e").coin(0.5).as("f"))).asAdmin(),
+                __.match(as("a").out().as("b"), as("c").path().as("d").or().as("e").coin(0.5).as("f")).asAdmin());
         assertEquals(1, new HashSet<>(traversals).size()); // the two patterns should pre-compile to the same traversal
         traversals.forEach(traversal -> {
             final MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
@@ -107,8 +105,8 @@ public class MatchStepTest extends StepTest {
     @Test
     public void testPreCompilationOfAnd() {
         final List<Traversal.Admin<?, ?>> traversals = Arrays.asList(
-                __.match("a", as("a").out().as("b"), and(as("c").path().as("d"), as("e").barrier())).asAdmin(),
-                __.match("a", as("a").out().as("b"), as("c").path().as("d").and().as("e").barrier()).asAdmin());
+                __.match(as("a").out().as("b"), and(as("c").path().as("d"), as("e").barrier())).asAdmin(),
+                __.match(as("a").out().as("b"), as("c").path().as("d").and().as("e").barrier()).asAdmin());
         assertEquals(1, new HashSet<>(traversals).size());   // the two patterns should pre-compile to the same traversal
         traversals.forEach(traversal -> {
             MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
@@ -139,7 +137,7 @@ public class MatchStepTest extends StepTest {
         assertEquals(1, new HashSet<>(traversals).size()); // the two patterns should pre-compile to the same traversal
         traversals.forEach(traversal -> {
             MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
-            assertFalse(matchStep.getStartLabel().isPresent());
+            //assertFalse(matchStep.getStartLabel().isPresent());
             assertEquals(2, matchStep.getGlobalChildren().size());
             Traversal.Admin<Object, Object> pattern = matchStep.getGlobalChildren().get(0);
             assertEquals("a", ((MatchStep.MatchStartStep) pattern.getStartStep()).getSelectKey().get());
@@ -170,7 +168,7 @@ public class MatchStepTest extends StepTest {
         assertEquals(1, new HashSet<>(traversals).size()); // the two patterns should pre-compile to the same traversal
         traversals.forEach(traversal -> {
             MatchStep<?, ?> matchStep = (MatchStep<?, ?>) traversal.getStartStep();
-            assertFalse(matchStep.getStartLabel().isPresent());
+            //assertFalse(matchStep.getStartLabel().isPresent());
             assertEquals(2, matchStep.getGlobalChildren().size());
             Traversal.Admin<Object, Object> pattern = matchStep.getGlobalChildren().get(0);
             assertEquals("a", ((MatchStep.MatchStartStep) pattern.getStartStep()).getSelectKey().get());
@@ -190,7 +188,7 @@ public class MatchStepTest extends StepTest {
     @Test
     public void testCountMatchAlgorithm() {
         // MAKE SURE THE SORT ORDER CHANGES AS MORE RESULTS ARE RETURNED BY ONE OR THE OTHER TRAVERSAL
-        Traversal.Admin<?, ?> traversal = __.match("a", as("a").out().as("b"), as("c").in().as("d")).asAdmin();
+        Traversal.Admin<?, ?> traversal = __.match(as("a").out().as("b"), as("c").in().as("d")).asAdmin();
         MatchStep.CountMatchAlgorithm countMatchAlgorithm = new MatchStep.CountMatchAlgorithm();
         countMatchAlgorithm.initialize(((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren());
         Traversal.Admin<Object, Object> firstPattern = ((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren().get(0);
@@ -207,8 +205,8 @@ public class MatchStepTest extends StepTest {
         countMatchAlgorithm.recordStart(EmptyTraverser.instance(), secondPattern);
         assertEquals(firstPattern, countMatchAlgorithm.bundles.get(0).traversal);
         assertEquals(secondPattern, countMatchAlgorithm.bundles.get(1).traversal);
-        assertEquals(MatchStep.MatchAlgorithm.Type.MATCH_TRAVERSAL, countMatchAlgorithm.getBundle(firstPattern).type);
-        assertEquals(MatchStep.MatchAlgorithm.Type.MATCH_TRAVERSAL, countMatchAlgorithm.getBundle(secondPattern).type);
+        assertEquals(MatchStep.TraversalType.MATCH_TRAVERSAL, countMatchAlgorithm.getBundle(firstPattern).traversalType);
+        assertEquals(MatchStep.TraversalType.MATCH_TRAVERSAL, countMatchAlgorithm.getBundle(secondPattern).traversalType);
         assertEquals(2l, countMatchAlgorithm.getBundle(firstPattern).startsCount);
         assertEquals(3l, countMatchAlgorithm.getBundle(secondPattern).startsCount);
         assertEquals(0l, countMatchAlgorithm.getBundle(firstPattern).endsCount);
@@ -236,7 +234,7 @@ public class MatchStepTest extends StepTest {
 
 
         ///////  MAKE SURE WHERE PREDICATE TRAVERSALS ARE ALWAYS FIRST AS THEY ARE SIMPLY .hasNext() CHECKS
-        traversal = __.match("a", as("a").out().as("b"), as("c").in().as("d"), where("a", P.eq("b"))).asAdmin();
+        traversal = __.match(as("a").out().as("b"), as("c").in().as("d"), where("a", P.eq("b"))).asAdmin();
         countMatchAlgorithm = new MatchStep.CountMatchAlgorithm();
         countMatchAlgorithm.initialize(((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren());
         assertEquals(3, countMatchAlgorithm.bundles.size());
@@ -245,9 +243,9 @@ public class MatchStepTest extends StepTest {
         Traversal.Admin<Object, Object> thirdPattern = ((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren().get(2);
         ///
         countMatchAlgorithm.bundles.stream().forEach(bundle -> assertEquals(0.0d, bundle.multiplicity, 0.0d));
-        assertEquals(MatchStep.MatchAlgorithm.Type.MATCH_TRAVERSAL, countMatchAlgorithm.getBundle(firstPattern).type);
-        assertEquals(MatchStep.MatchAlgorithm.Type.MATCH_TRAVERSAL, countMatchAlgorithm.getBundle(secondPattern).type);
-        assertEquals(MatchStep.MatchAlgorithm.Type.WHERE_PREDICATE, countMatchAlgorithm.getBundle(thirdPattern).type);
+        assertEquals(MatchStep.TraversalType.MATCH_TRAVERSAL, countMatchAlgorithm.getBundle(firstPattern).traversalType);
+        assertEquals(MatchStep.TraversalType.MATCH_TRAVERSAL, countMatchAlgorithm.getBundle(secondPattern).traversalType);
+        assertEquals(MatchStep.TraversalType.WHERE_PREDICATE, countMatchAlgorithm.getBundle(thirdPattern).traversalType);
         assertEquals(firstPattern, countMatchAlgorithm.bundles.get(0).traversal);
         assertEquals(secondPattern, countMatchAlgorithm.bundles.get(1).traversal);
         assertEquals(thirdPattern, countMatchAlgorithm.bundles.get(2).traversal);
@@ -311,4 +309,26 @@ public class MatchStepTest extends StepTest {
         assertEquals(firstPattern, countMatchAlgorithm.bundles.get(1).traversal);
         assertEquals(secondPattern, countMatchAlgorithm.bundles.get(2).traversal);
     }
+
+    @Test
+    public void shouldCalculateStartLabelCorrectly() {
+        Traversal.Admin<?, ?> traversal = match(
+                where(and(
+                        as("a").out("created").as("b"),
+                        as("b").in("created").count().is(eq(3)))),
+                as("a").both().as("b"),
+                where(as("b").in())).asAdmin();
+        assertEquals("a", MatchStep.Helper.computeStartLabel(((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren()));
+        /////
+        traversal = 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))).asAdmin();
+        assertEquals("a", MatchStep.Helper.computeStartLabel(((MatchStep<?, ?>) traversal.getStartStep()).getGlobalChildren()));
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
index e818a02..6ca4f0b 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/MatchPredicateStrategyTest.java
@@ -116,11 +116,8 @@ public class MatchPredicateStrategyTest {
 
         static Iterable<Object[]> generateTestParameters() {
 
-            final Traversal.Admin<?, ?> traversal1 = __.out().as("a").has("name", "marko").match("a", as("a").out().as("b")).asAdmin();
-            traversal1.getSteps().get(1).removeLabel("a");
-
             return Arrays.asList(new Traversal[][]{
-                    {__.out().match("a", as("a").has("name", "marko"), as("a").out().as("b")), traversal1},
+                    {__.out().match(as("a").has("name", "marko"), as("a").out().as("b")), __.out().as("a").has("name", "marko").match(as("a").out().as("b"))},
                     // {__.match("a", as("a").out().as("b")).where(as("b").out("knows").as("c")), __.match("a", as("a").out().as("b"), as("b").where(out("knows").as("c")))},
             });
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
index d91569e..21d98c1 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
@@ -49,18 +49,18 @@ public abstract class GroovyMatchTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_out_bX() {
-            TraversalScriptHelper.compute("g.V.match('a', __.as('a').out.as('b'))", g)
+            TraversalScriptHelper.compute("g.V.match(__.as('a').out.as('b'))", g)
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_matchXa_out_bX_selectXb_idX() {
-            TraversalScriptHelper.compute("g.V.match('a', __.as('a').out.as('b')).select('b').by(id)", g)
+            TraversalScriptHelper.compute("g.V.match( __.as('a').out.as('b')).select('b').by(id)", g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_cX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').out('knows').as('b'),
                     __.as('b').out('created').as('c'))
             """, g)
@@ -69,7 +69,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__a_created_cX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').out('knows').as('b'),
                     __.as('a').out('created').as('c'))
             """, g)
@@ -78,7 +78,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXd_0knows_a__d_hasXname_vadasX__a_knows_b__b_created_cX() {
             TraversalScriptHelper.compute("""
-                g.V.match('d',
+                g.V.match(
                     __.as('d').in('knows').as('a'),
                     __.as('d').has('name', 'vadas'),
                     __.as('a').out('knows').as('b'),
@@ -89,7 +89,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__a_repeatXoutX_timesX2XX_selectXa_bX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').out('created').as('b'),
                     __.as('a').repeat(__.out).times(2).as('b')).select('a', 'b')
             """, g)
@@ -98,7 +98,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_lop_b__b_0created_29_c__c_whereXrepeatXoutX_timesX2XXX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                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)))
@@ -108,7 +108,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, String> get_g_V_out_out_matchXa_0created_b__b_0knows_cX_selectXcX_outXcreatedX_name() {
             TraversalScriptHelper.compute("""
-                g.V.out.out.match('a',
+                g.V.out.out.match(
                     __.as('a').in('created').as('b'),
                     __.as('b').in('knows').as('c')).select('c').out('created').name
             """, g)
@@ -117,7 +117,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__b_0created_aX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').out('created').as('b'),
                     __.as('b').in('created').as('a'))
             """, g)
@@ -126,28 +126,28 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__c_knows_bX() {
             TraversalScriptHelper.compute("""
-                g.V().match('a',
+                g.V().match(
                     __.as('a').out('knows').as('b'),
                     __.as('c').out('knows').as('b'))
             """, g)
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_lop__b_matchXa1_created_b1__b1_0created_c1X_selectXc1X_cX_select() {
+        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_lop__b_matchXb_created_d__d_0created_cX_selectXcX_cX_select() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
-                    __.as('a').out('knows').as('b'),
-                    __.as('b').out('created').has('name', 'lop'),
-                    __.as('b').match('a1',
-                            __.as('a1').out('created').as('b1'),
-                            __.as('b1').in('created').as('c1')).select('c1').as('c')).select
+                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()
             """, g)
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').has('name', 'Garcia'),
                     __.as('a').in('writtenBy').as('b'),
                     __.as('a').in('sungBy').as('b'));
@@ -157,7 +157,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').in('sungBy').as('b'),
                     __.as('a').in('sungBy').as('c'),
                     __.as('b').out('writtenBy').as('d'),
@@ -170,7 +170,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').in('sungBy').as('b'),
                     __.as('a').in('writtenBy').as('c'),
                     __.as('b').out('writtenBy').as('d'),
@@ -182,7 +182,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').in('sungBy').as('b'),
                     __.as('a').in('writtenBy').as('c'),
                     __.as('b').out('writtenBy').as('d'))
@@ -194,7 +194,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_select() {
             TraversalScriptHelper.compute("""
-                g.V.match("a",
+                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))
@@ -205,7 +205,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__b_0created_cX_whereXa_neq_cX_selectXa_cX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').out('created').as('b'),
                     __.as('b').in('created').as('c'))
                     .where('a', neq('c'))
@@ -216,16 +216,16 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__c_created_bX_select_byXnameX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').out('created').as('b'),
                     __.as('c').out('created').as('b')).select().by('name')
             """, g)
         }
 
         @Override
-        public Traversal<Vertex, String> get_g_V_out_out_hasXname_rippleX_matchXb_created_a__c_knows_bX_selectXcX_outXknowsX_name() {
+        public Traversal<Vertex, String> get_g_V_out_out_hasXname_rippleX_matchXa__b_created_a__c_knows_bX_selectXcX_outXknowsX_name() {
             TraversalScriptHelper.compute("""
-                g.V.out.out.match('a',
+                g.V.out.out.as('b').match(
                     __.as('b').out('created').as('a'),
                     __.as('c').out('knows').as('b')).select('c').out('knows').name
             """, g)
@@ -234,7 +234,7 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_select_byXidX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     where('a', neq('c')),
                     __.as('a').out('created').as('b'),
                     or(
@@ -255,9 +255,9 @@ public abstract class GroovyMatchTest {
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX() {
+        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').has('name', 'Garcia'),
                     __.as('a').in('writtenBy').as('b'),
                     __.as('b').out('followedBy').as('c'),
@@ -267,9 +267,9 @@ public abstract class GroovyMatchTest {
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__a_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX() {
+        public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX() {
             TraversalScriptHelper.compute("""
-                g.V.match('a',
+                g.V.match(
                     __.as('a').out('knows').as('b'),
                     and(
                             __.as('a').out('created').as('c'),
@@ -298,16 +298,16 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__a_out_b__notXa_created_bXX() {
             TraversalScriptHelper.compute("""
-            g.V.match('a',
+            g.V.match(
                     __.as('a').out.as('b'),
                     __.not(__.as('a').out('created').as('b')));
             """, g)
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__whereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX() {
+        public Traversal<Vertex, Map<String, Object>> get_g_V_matchXwhereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX() {
             TraversalScriptHelper.compute("""
-             g.V.match('a',
+             g.V.match(
                     where(and(
                             __.as('a').out('created').as('b'),
                             __.as('b').in('created').count.is(eq(3)))),
@@ -319,16 +319,16 @@ public abstract class GroovyMatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX() {
             TraversalScriptHelper.compute("""
-             g.V.match('a',
+             g.V.match(
                     __.as('a').both.as('b'),
                     __.as('b').both.as('c')).dedup('a','b')
             """, g)
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX_byXlabelX() {
+        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX() {
             TraversalScriptHelper.compute("""
-             g.V.match('a',
+             g.V.match(
                     __.as('a').both.as('b'),
                     __.as('b').both.as('c')).dedup('a','b').by(label)
             """, g)

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalPerformanceTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalPerformanceTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalPerformanceTest.java
index 32b4656..b78d4bf 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalPerformanceTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/TraversalPerformanceTest.java
@@ -115,7 +115,7 @@ public class TraversalPerformanceTest extends AbstractGremlinTest {
     @LoadGraphWith(LoadGraphWith.GraphData.GRATEFUL)
     @Test
     public void g_V_match_selectXbX_valuesXnameX() throws Exception {
-        g.V().match("a",
+        g.V().match(
                 __.as("a").has("name", "Garcia"),
                 __.as("a").in("writtenBy").as("b"),
                 __.as("a").in("sungBy").as("b")).select("b").values("name").iterate();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
index 7fe0164..488b907 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
@@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.Matc
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -84,7 +85,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
     public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__c_knows_bX();
 
     // nested match()
-    public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_lop__b_matchXa1_created_b1__b1_0created_c1X_selectXc1X_cX_select();
+    public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_lop__b_matchXb_created_d__d_0created_cX_selectXcX_cX_select();
 
     // contains a pair of traversals which connect the same labels, together with a predicate traversal
     public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX();
@@ -104,7 +105,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
     public abstract Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__c_created_bX_select_byXnameX();
 
     //TODO: with Traversal.reverse()
-    public abstract Traversal<Vertex, String> get_g_V_out_out_hasXname_rippleX_matchXb_created_a__c_knows_bX_selectXcX_outXknowsX_name();
+    public abstract Traversal<Vertex, String> get_g_V_out_out_hasXname_rippleX_matchXa__b_created_a__c_knows_bX_selectXcX_outXknowsX_name();
 
     // nested or/and with patterns in order that won't execute serially
     public abstract Traversal<Vertex, Map<String, Object>> get_g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_select_byXidX();
@@ -113,10 +114,10 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
     public abstract Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_out_asXbX_matchXa_out_count_c__b_in_count_cX();
 
     // pulls out has container for index lookup and uses an where() with startKey and predicate
-    public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX();
+    public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX();
 
     // nested and with oddly dependent end steps
-    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__a_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX();
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_matchXa_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX();
 
     // nested or with infix and and variable dependencies at different depths
     public abstract Traversal<Vertex, Map<String, Object>> get_g_V_asXaX_out_asXbX_matchXa_out_count_c__orXa_knows_b__b_in_count_c__and__c_isXgtX2XXXX();
@@ -125,13 +126,13 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
     public abstract Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__a_out_b__notXa_created_bXX();
 
     // uses 'out of order' conjunction nested where()
-    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__whereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX();
+    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_matchXwhereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX();
 
     // distinct values
     public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX();
 
     // distinct values with by()-modulation
-    public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX_byXlabelX();
+    public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX();
 
     @Test
     @LoadGraphWith(MODERN)
@@ -262,7 +263,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_matchXa_knows_b__b_created_lop__b_matchXa1_created_b1__b1_0created_c1X_selectXc1X_cX_selectXnameX() throws Exception {
-        final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_knows_b__b_created_lop__b_matchXa1_created_b1__b1_0created_c1X_selectXc1X_cX_select();
+        final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_knows_b__b_created_lop__b_matchXb_created_d__d_0created_cX_selectXcX_cX_select();
         printTraversalForm(traversal);
         checkResults(makeMapList(3,
                 "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "josh"), "c", convertToVertex(graph, "josh"),
@@ -282,9 +283,10 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     // TODO: this test requires Traversal.reverse()
     @Test(expected = IllegalStateException.class)
+    @Ignore
     @LoadGraphWith(MODERN)
     public void g_V_out_out_hasXname_rippleX_matchXb_created_a__c_knows_bX_selectXcX_outXknowsX_name() throws Exception {
-        final Traversal<Vertex, String> traversal = get_g_V_out_out_hasXname_rippleX_matchXb_created_a__c_knows_bX_selectXcX_outXknowsX_name();
+        final Traversal<Vertex, String> traversal = get_g_V_out_out_hasXname_rippleX_matchXa__b_created_a__c_knows_bX_selectXcX_outXknowsX_name();
         printTraversalForm(traversal);
         traversal.iterate();
     }
@@ -367,8 +369,8 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(GRATEFUL)
-    public void g_V_matchXa__a_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX() {
-        final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa__a_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX();
+    public void g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX() {
+        final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX();
         printTraversalForm(traversal);
         checkResults(makeMapList(4,
                 "a", convertToVertex(graph, "Garcia"), "b", convertToVertex(graph, "CRYPTICAL ENVELOPMENT"), "c", convertToVertex(graph, "WHARF RAT"), "d", convertToVertex(graph, "Hunter"),
@@ -378,8 +380,8 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
-    public void g_V_matchXa__a_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX() {
-        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_matchXa__a_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX();
+    public void g_V_matchXa_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_matchXa_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX();
         printTraversalForm(traversal);
         checkResults(makeMapList(4,
                 "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "josh"), "c", convertToVertex(graph, "lop"), "d", 2l), traversal);
@@ -409,8 +411,8 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
-    public void g_V_matchXa__whereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_bX() {
-        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_matchXa__whereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX();
+    public void g_V_matchXwhereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_bX() {
+        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_matchXwhereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX();
         printTraversalForm(traversal);
         checkResults(makeMapList(2,
                 "a", convertToVertex(graph, "marko"), "b", convertToVertex(graph, "lop"),
@@ -437,8 +439,8 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
-    public void g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX_byXlabelX() {
-        final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX_byXlabelX();
+    public void g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX() {
+        final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX();
         printTraversalForm(traversal);
         int counter = 0;
         final Set<List<String>> results = new HashSet<>();
@@ -472,31 +474,31 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
     public abstract static class Traversals extends MatchTest {
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_out_bX() {
-            return g.V().match("a", as("a").out().as("b"));
+            return g.V().match(as("a").out().as("b"));
         }
 
         @Override
         public Traversal<Vertex, Object> get_g_V_matchXa_out_bX_selectXb_idX() {
-            return g.V().match("a", as("a").out().as("b")).select("b").by(T.id);
+            return g.V().match(as("a").out().as("b")).select("b").by(T.id);
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_cX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").out("knows").as("b"),
                     as("b").out("created").as("c"));
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__a_created_cX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").out("knows").as("b"),
                     as("a").out("created").as("c"));
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXd_0knows_a__d_hasXname_vadasX__a_knows_b__b_created_cX() {
-            return g.V().match("d",
+            return g.V().match(
                     as("d").in("knows").as("a"),
                     as("d").has("name", "vadas"),
                     as("a").out("knows").as("b"),
@@ -505,14 +507,14 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__a_repeatXoutX_timesX2XX_selectXa_bX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").out("created").as("b"),
                     __.<Vertex>as("a").repeat(out()).times(2).as("b")).<Vertex>select("a", "b");
         }
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_lop_b__b_0created_29_c__c_whereXrepeatXoutX_timesX2XXX() {
-            return g.V().match("a",
+            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)));
@@ -520,7 +522,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_lop_b__b_0created_29_cX_whereXc_repeatXoutX_timesX2XX_select() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").out("created").has("name", "lop").as("b"),
                     as("b").in("created").has("age", 29).as("c"))
                     .where(__.<Vertex>as("c").repeat(out()).times(2)).select();
@@ -528,37 +530,37 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, String> get_g_V_out_out_matchXa_0created_b__b_0knows_cX_selectXcX_outXcreatedX_name() {
-            return g.V().out().out().match("a",
+            return g.V().out().out().match(
                     as("a").in("created").as("b"),
                     as("b").in("knows").as("c")).select("c").out("created").values("name");
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__b_0created_aX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").out("created").as("b"),
                     as("b").in("created").as("a"));
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__c_knows_bX() {
-            return g.V().match("a", as("a").out("knows").as("b"),
+            return g.V().match(as("a").out("knows").as("b"),
                     as("c").out("knows").as("b"));
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_lop__b_matchXa1_created_b1__b1_0created_c1X_selectXc1X_cX_select() {
-            return g.V().match("a",
+        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_knows_b__b_created_lop__b_matchXb_created_d__d_0created_cX_selectXcX_cX_select() {
+            return g.V().match(
                     as("a").out("knows").as("b"),
                     as("b").out("created").has("name", "lop"),
-                    as("b").match("a1",
-                            as("a1").out("created").as("b1"),
-                            as("b1").in("created").as("c1")).select("c1").as("c")).<Vertex>select();
+                    as("b").match(
+                            as("b").out("created").as("d"),
+                            as("d").in("created").as("c")).select("c").as("c")).<Vertex>select();
         }
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__a_0sungBy_bX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").has("name", "Garcia"),
                     as("a").in("writtenBy").as("b"),
                     as("a").in("sungBy").as("b"));
@@ -566,7 +568,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0sungBy_c__b_writtenBy_d__c_writtenBy_e__d_hasXname_George_HarisonX__e_hasXname_Bob_MarleyXX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").in("sungBy").as("b"),
                     as("a").in("sungBy").as("c"),
                     as("b").out("writtenBy").as("d"),
@@ -577,7 +579,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_d__c_sungBy_d__d_hasXname_GarciaXX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").in("sungBy").as("b"),
                     as("a").in("writtenBy").as("c"),
                     as("b").out("writtenBy").as("d"),
@@ -587,7 +589,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_0sungBy_b__a_0writtenBy_c__b_writtenBy_dX_whereXc_sungBy_dX_whereXd_hasXname_GarciaXX() {
-            return g.V().<Vertex>match("a",
+            return g.V().<Vertex>match(
                     as("a").in("sungBy").as("b"),
                     as("a").in("writtenBy").as("c"),
                     as("b").out("writtenBy").as("d"))
@@ -597,7 +599,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_created_b__b_0created_cX_whereXa_neq_cX_selectXa_cX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").out("created").as("b"),
                     as("b").in("created").as("c"))
                     .where("a", neq("c"))
@@ -606,21 +608,21 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__c_created_bX_select_byXnameX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").out("created").as("b"),
                     as("c").out("created").as("b")).<String>select().by("name");
         }
 
         @Override
-        public Traversal<Vertex, String> get_g_V_out_out_hasXname_rippleX_matchXb_created_a__c_knows_bX_selectXcX_outXknowsX_name() {
-            return g.V().out().out().match("a",
+        public Traversal<Vertex, String> get_g_V_out_out_hasXname_rippleX_matchXa__b_created_a__c_knows_bX_selectXcX_outXknowsX_name() {
+            return g.V().out().out().as("b").match(
                     as("b").out("created").as("a"),
                     as("c").out("knows").as("b")).select("c").out("knows").values("name");
         }
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa_whereXa_neqXcXX__a_created_b__orXa_knows_vadas__a_0knows_and_a_hasXlabel_personXX__b_0created_c__b_0created_count_isXgtX1XXX_select_byXidX() {
-            return g.V().match("a",
+            return g.V().match(
                     where("a", P.neq("c")),
                     as("a").out("created").as("b"),
                     or(
@@ -638,8 +640,8 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX() {
-            return g.V().match("a",
+        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_hasXname_GarciaX__a_0writtenBy_b__b_followedBy_c__c_writtenBy_d__whereXd_neqXaXXX() {
+            return g.V().match(
                     as("a").has("name", "Garcia"),
                     as("a").in("writtenBy").as("b"),
                     as("b").out("followedBy").as("c"),
@@ -648,8 +650,8 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__a_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX() {
-            return g.V().match("a",
+        public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa_knows_b__andXa_created_c__b_created_c__andXb_created_count_d__a_knows_count_dXXX() {
+            return g.V().match(
                     as("a").out("knows").as("b"),
                     and(
                             as("a").out("created").as("c"),
@@ -675,14 +677,14 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__a_out_b__notXa_created_bXX() {
-            return g.V().match("a",
+            return g.V().match(
                     as("a").out().as("b"),
                     not(as("a").out("created").as("b")));
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_matchXa__whereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX() {
-            return g.V().match("a",
+        public Traversal<Vertex, Map<String, Object>> get_g_V_matchXwhereXandXa_created_b__b_0created_count_isXeqX3XXXX__a_both_b__whereXb_inXX() {
+            return g.V().match(
                     where(and(
                             as("a").out("created").as("b"),
                             as("b").in("created").count().is(eq(3)))),
@@ -692,14 +694,14 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
         @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX() {
-            return g.V().<Vertex>match("a",
+            return g.V().<Vertex>match(
                     as("a").both().as("b"),
                     as("b").both().as("c")).dedup("a", "b");
         }
 
         @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa__a_both_b__b_both_cX_dedupXa_bX_byXlabelX() {
-            return g.V().<Vertex>match("a",
+        public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_both_b__b_both_cX_dedupXa_bX_byXlabelX() {
+            return g.V().<Vertex>match(
                     as("a").both().as("b"),
                     as("b").both().as("c")).dedup("a", "b").by(T.label);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/NativeNeo4jCypherTest.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/NativeNeo4jCypherTest.java b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/NativeNeo4jCypherTest.java
index bee7add..5fdd818 100644
--- a/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/NativeNeo4jCypherTest.java
+++ b/neo4j-gremlin/src/test/java/org/apache/tinkerpop/gremlin/neo4j/process/NativeNeo4jCypherTest.java
@@ -137,23 +137,23 @@ public class NativeNeo4jCypherTest extends AbstractNeo4jGremlinTest {
     public void benchmarkCypherAndMatch() throws Exception {
         final Neo4jGraph n = (Neo4jGraph) graph;
         final List<Supplier<GraphTraversal<?, ?>>> traversals = Arrays.asList(
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("sungBy").as("b"),
                         as("a").in("writtenBy").as("b")).select().by("name"),
                 () -> n.cypher("MATCH (a)<-[:sungBy]-(b), (a)<-[:writtenBy]-(b) RETURN a, b").select().by("name"),
                 ///
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").out("followedBy").as("b"),
                         as("b").out("followedBy").as("a")).select().by("name"),
                 () -> n.cypher("MATCH (a)-[:followedBy]->(b), (b)-[:followedBy]->(a) RETURN a, b").select().by("name"),
                 ///
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").out("followedBy").count().as("b"),
                         as("a").in("followedBy").count().as("b"),
                         as("b").is(P.gt(10))).select("a").by("name"),
                 () -> n.cypher("MATCH (a)-[:followedBy]->(b) WITH a, COUNT(b) AS bc WHERE bc > 10 MATCH (a)<-[:followedBy]-(c) WITH a, bc, COUNT(c) AS cc WHERE bc = cc RETURN a").select("a").by("name"),
                 ///
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("sungBy").count().as("b"),
                         as("a").in("sungBy").as("c"),
                         as("c").out("followedBy").as("d"),
@@ -162,20 +162,20 @@ public class NativeNeo4jCypherTest extends AbstractNeo4jGremlinTest {
                         where("a", P.neq("e"))).select("a", "e").by("name"),
                 () -> n.cypher("MATCH (a)<-[:sungBy]-()-[:followedBy]->()-[:sungBy]->(e) WHERE a <> e WITH a, e MATCH (a)<-[:sungBy]-(b) WITH a, e, COUNT(DISTINCT b) as bc MATCH (e)<-[:sungBy]-(f) WITH a, e, bc, COUNT(DISTINCT f) as fc WHERE bc = fc RETURN a, e").select("a", "e").by("name"),
                 ///
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("followedBy").as("b"),
                         as("a").out("sungBy").as("c"),
                         as("a").out("writtenBy").as("d")).select().by("name"),
                 () -> n.cypher("MATCH (a)<-[:followedBy]-(b), (a)-[:sungBy]->(c), (a)-[:writtenBy]->(d) RETURN a, b, c, d").select().by("name"),
                 ///
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("followedBy").as("b"),
                         as("a").out("sungBy").as("c"),
                         as("a").out("writtenBy").as("d"),
                         where("c", P.neq("d"))).select().by("name"),
                 () -> n.cypher("MATCH (a)<-[:followedBy]-(b), (a)-[:sungBy]->(c), (a)-[:writtenBy]->(d) WHERE c <> d RETURN a, b, c, d").select().by("name"),
                 ///
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("sungBy").as("b"),
                         as("a").in("writtenBy").as("b"),
                         as("b").out("followedBy").as("c"),
@@ -183,7 +183,7 @@ public class NativeNeo4jCypherTest extends AbstractNeo4jGremlinTest {
                         as("c").out("writtenBy").as("a")).select().by("name"),
                 () -> n.cypher("MATCH (a)<-[:sungBy]-(b), (a)<-[:writtenBy]-(b), (b)-[:followedBy]->(c), (c)-[:sungBy]->(a), (c)-[:writtenBy]->(a) RETURN a, b, c").select().by("name"),
                 ///
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").has("name", "Garcia").has(T.label, "artist"),
                         as("a").in("writtenBy").as("b"),
                         as("b").out("followedBy").as("c"),

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6a94788e/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index 224ff0c..0a9544e 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -176,39 +176,39 @@ public class TinkerGraphTest {
                 /*() -> g.V().xmatch("a",
                         as("a").in("sungBy").as("b"),
                         not(as("a").in("writtenBy").as("b"))).select().by("name"),*/
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("sungBy").as("b"),
                         as("a").in("writtenBy").as("b")).select().by("name"),
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").out("followedBy").as("b"),
                         as("b").out("followedBy").as("a")).select().by("name"),
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").out("followedBy").count().as("b"),
                         as("a").in("followedBy").count().as("b"),
                         as("b").is(P.gt(10))).select("a").by("name"),
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("sungBy").count().as("b"),
                         as("a").in("sungBy").as("c"),
                         as("c").out("followedBy").as("d"),
                         as("d").out("sungBy").as("e"),
                         as("e").in("sungBy").count().as("b"),
                         where("a",P.neq("e"))).select("a","e").by("name"),
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("followedBy").as("b"),
                         as("a").out("sungBy").as("c"),
                         as("a").out("writtenBy").as("d")).select().by("name"),
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("followedBy").as("b"),
                         as("a").out("sungBy").as("c"),
                         as("a").out("writtenBy").as("d"),
                         where("c", P.neq("d"))).select().by("name"),
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").in("sungBy").as("b"),
                         as("a").in("writtenBy").as("b"),
                         as("b").out("followedBy").as("c"),
                         as("c").out("sungBy").as("a"),
                         as("c").out("writtenBy").as("a")).select().by("name"),
-                () -> g.V().match("a",
+                () -> g.V().match(
                         as("a").has("name", "Garcia"),
                         as("a").in("writtenBy").as("b"),
                         as("b").out("followedBy").as("c"),
@@ -236,7 +236,7 @@ public class TinkerGraphTest {
         GraphTraversalSource g = graph.traversal(GraphTraversalSource.standard());
 
         final Supplier<Traversal<?,?>> traversal = () ->
-                g.V().match("a",
+                g.V().match(
                         as("a").has("name", "Garcia"),
                         as("a").in("writtenBy").as("b"),
                         as("b").out("followedBy").as("c"),
@@ -266,7 +266,7 @@ public class TinkerGraphTest {
             });
         });
         graph.vertices(50).next().addEdge("uncle", graph.vertices(70).next());
-        System.out.println(TimeUtil.clockWithResult(500, () -> g.V().match("a", as("a").out("knows").as("b"), as("a").out("uncle").as("b")).toList()));
+        System.out.println(TimeUtil.clockWithResult(500, () -> g.V().match(as("a").out("knows").as("b"), as("a").out("uncle").as("b")).toList()));
     }
 
     @Test