You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2016/09/19 23:12:39 UTC

svn commit: r1761506 [2/29] - in /tinkerpop/site: docs/3.2.3-SNAPSHOT/ docs/3.2.3-SNAPSHOT/dev/developer/ docs/3.2.3-SNAPSHOT/dev/provider/ docs/3.2.3-SNAPSHOT/recipes/ docs/3.2.3-SNAPSHOT/reference/ docs/3.2.3-SNAPSHOT/tutorials/getting-started/ docs/...

Modified: tinkerpop/site/docs/3.2.3-SNAPSHOT/reference/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.3-SNAPSHOT/reference/index.html?rev=1761506&r1=1761505&r2=1761506&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.3-SNAPSHOT/reference/index.html (original)
+++ tinkerpop/site/docs/3.2.3-SNAPSHOT/reference/index.html Mon Sep 19 23:12:37 2016
@@ -1802,7 +1802,7 @@ gremlin&gt; g.V(marko).out(<span class="
 <div class="colist arabic">
 <ol>
 <li>
-<p>Set the variable <code>marko</code> to the the vertex in the graph <code>g</code> named "marko".</p>
+<p>Set the variable <code>marko</code> to the vertex in the graph <code>g</code> named "marko".</p>
 </li>
 <li>
 <p>Get the vertices that are outgoing adjacent to the marko-vertex via knows-edges.</p>
@@ -1885,18 +1885,18 @@ may alter the flow).
 <div class="sectionbody">
 <div class="paragraph">
 <p>Gremlin is written in Java 8. There are various language variants of Gremlin such as Gremlin-Groovy (packaged with
-TinkerPop3), <a href="https://github.com/mpollmeier/gremlin-scala">Gremlin-Scala</a>, Gremlin-JavaScript, Gremlin-Clojure
-(known as <a href="https://github.com/clojurewerkz/ogre">Ogre</a>), etc. It is best to think of Gremlin as a style of graph
-traversing that is not bound to a particular programming language per se. Within a programming language familiar to
-the developer, there is a Gremlin variant that they can use that leverages the idioms of that language. At minimum,
-a programming language providing a Gremlin implementation must support
+TinkerPop3), Gremlin-Python (packaged with TinkerPop3), <a href="https://github.com/mpollmeier/gremlin-scala">Gremlin-Scala</a>,
+Gremlin-JavaScript, Gremlin-Clojure (known as <a href="https://github.com/clojurewerkz/ogre">Ogre</a>), etc.
+It is best to think of Gremlin as a style of graph traversing that is not bound to a particular programming language per se.
+Within a programming language familiar to the developer, there is a Gremlin variant that they can use that leverages
+the idioms of that language. At minimum, a programming language providing a Gremlin implementation must support
 <a href="http://en.wikipedia.org/wiki/Method_chaining">function chaining</a> (with
 <a href="http://en.wikipedia.org/wiki/Anonymous_function">lambdas/anonymous functions</a> being a "nice to have" if the
-variant wishes to offer arbitrary computations beyond the provided Gremlin steps).</p>
+variants wishes to offer arbitrary computations beyond the provided Gremlin steps).</p>
 </div>
 <div class="paragraph">
 <p>Throughout the documentation, the examples provided are primarily written in Gremlin-Groovy. The reason for this is
-the <a href="#gremlin-console">Gremlin Console</a> whereby an interactive programming environment exists that does not require
+the <a href="#gremlin-console">Gremlin Console</a>&#8201;&#8212;&#8201;an interactive programming environment exists that does not require
 code compilation. For learning TinkerPop3 and interacting with a live graph system in an ad hoc manner, the Gremlin
 Console is invaluable. However, for developers interested in working with Gremlin-Java, a few Groovy-to-Java patterns
 are presented below.</p>
@@ -1997,11 +1997,11 @@ system providers for two purposes:</p>
 gremlin&gt; graph.features()
 ==&gt;FEATURES
 &gt; GraphFeatures
-&gt;-- <span class="key">Transactions</span>: <span class="predefined-constant">false</span>
-&gt;-- <span class="key">Persistence</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">Computer</span>: <span class="predefined-constant">true</span>
+&gt;-- <span class="key">Persistence</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">ConcurrentAccess</span>: <span class="predefined-constant">false</span>
 &gt;-- <span class="key">ThreadedTransactions</span>: <span class="predefined-constant">false</span>
+&gt;-- <span class="key">Transactions</span>: <span class="predefined-constant">false</span>
 &gt; VariableFeatures
 &gt;-- <span class="key">Variables</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span>
@@ -2023,10 +2023,10 @@ gremlin&gt; graph.features()
 &gt;-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">StringArrayValues</span>: <span class="predefined-constant">true</span>
 &gt; VertexFeatures
+&gt;-- <span class="key">MultiProperties</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">AddVertices</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">RemoveVertices</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">MetaProperties</span>: <span class="predefined-constant">true</span>
-&gt;-- <span class="key">MultiProperties</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">AddProperty</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">RemoveProperty</span>: <span class="predefined-constant">true</span>
 &gt;-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span>
@@ -2940,7 +2940,7 @@ gremlin&gt; g = graph.traversal()
 gremlin&gt; f = <span class="keyword">new</span> <span class="predefined-type">ByteArrayOutputStream</span>()
 ==&gt;
 gremlin&gt; mapper = graph.io(graphson()).mapper().embedTypes(<span class="predefined-constant">true</span>).create()
-==&gt;org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">557</span>c837
+==&gt;org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">52337</span>eb6
 gremlin&gt; graph.io(graphson()).writer().mapper(mapper).create().writeVertex(f, g.V(<span class="integer">1</span>).next(), BOTH)
 ==&gt;<span class="predefined-constant">null</span>
 gremlin&gt; f.close()
@@ -3132,7 +3132,7 @@ gremlin&gt; g = graph.traversal()
 gremlin&gt; f = <span class="keyword">new</span> <span class="predefined-type">ByteArrayOutputStream</span>()
 ==&gt;
 gremlin&gt; mapper = graph.io(graphson()).mapper().version(GraphSONVersion.V2_0).create()
-==&gt;org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">63</span>b5a020
+==&gt;org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">37</span>c9dadf
 gremlin&gt; graph.io(graphson()).writer().mapper(mapper).create().writeVertex(f, g.V(<span class="integer">1</span>).next(), BOTH)
 ==&gt;<span class="predefined-constant">null</span>
 gremlin&gt; f.close()
@@ -3966,7 +3966,7 @@ gremlin&gt; g.V().as(<span class="string
 <div class="sect2">
 <h3 id="barrier-step">Barrier Step</h3>
 <div class="paragraph">
-<p>The <code>barrier()</code>-step (<strong>barrier</strong>) turns the the lazy traversal pipeline into a bulk-synchronous pipeline. This step is
+<p>The <code>barrier()</code>-step (<strong>barrier</strong>) turns the lazy traversal pipeline into a bulk-synchronous pipeline. This step is
 useful in the following situations:</p>
 </div>
 <div class="ulist">
@@ -4024,13 +4024,13 @@ gremlin&gt; graph.io(graphml()).readGrap
 gremlin&gt; g = graph.traversal()
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">808</span> <span class="key">edges</span>:<span class="integer">8049</span>], standard]
 gremlin&gt; clockWithResult(<span class="integer">1</span>){g.V().both().both().both().count().next()} <span class="comment">//</span><b>(1)</b>
-==&gt;<span class="float">8037.095201</span>
+==&gt;<span class="float">14317.232571999999</span>
 ==&gt;<span class="integer">126653966</span>
 gremlin&gt; clockWithResult(<span class="integer">1</span>){g.V().repeat(both()).times(<span class="integer">3</span>).count().next()} <span class="comment">//</span><b>(2)</b>
-==&gt;<span class="float">30.07454</span>
+==&gt;<span class="float">20.356651</span>
 ==&gt;<span class="integer">126653966</span>
 gremlin&gt; clockWithResult(<span class="integer">1</span>){g.V().both().barrier().both().barrier().both().barrier().count().next()} <span class="comment">//</span><b>(3)</b>
-==&gt;<span class="float">16.054615</span>
+==&gt;<span class="float">27.261338</span>
 ==&gt;<span class="integer">126653966</span></code></pre>
 </div>
 </div>
@@ -4065,7 +4065,7 @@ gremlin&gt; graph.io(graphml()).readGrap
 gremlin&gt; g = graph.traversal().withStrategies(LazyBarrierStrategy.instance())
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">808</span> <span class="key">edges</span>:<span class="integer">8049</span>], standard]
 gremlin&gt; clockWithResult(<span class="integer">1</span>){g.V().both().both().both().count().next()}
-==&gt;<span class="float">10.472737</span>
+==&gt;<span class="float">17.443212</span>
 ==&gt;<span class="integer">126653966</span>
 gremlin&gt; g.V().both().both().both().count().iterate().toString() <span class="comment">//</span><b>(1)</b>
 ==&gt;[TinkerGraphStep(vertex,<span class="type">[]</span>), VertexStep(BOTH,vertex), NoOpBarrierStep(<span class="integer">10000</span>), VertexStep(BOTH,vertex), NoOpBarrierStep(<span class="integer">10000</span>), VertexStep(BOTH,edge), CountGlobalStep]</code></pre>
@@ -4288,7 +4288,8 @@ gremlin&gt; g.V().hasLabel(<span class="
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g.V().coin(<span class="float">0.5</span>)
 ==&gt;v[<span class="integer">1</span>]
 ==&gt;v[<span class="integer">3</span>]
-==&gt;v[<span class="integer">5</span>]
+==&gt;v[<span class="integer">4</span>]
+==&gt;v[<span class="integer">6</span>]
 gremlin&gt; g.V().coin(<span class="float">0.0</span>)
 gremlin&gt; g.V().coin(<span class="float">1.0</span>)
 ==&gt;v[<span class="integer">1</span>]
@@ -4407,12 +4408,12 @@ has been seen or not.</p>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g.V().valueMap(<span class="predefined-constant">true</span>, <span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>)
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[marko],<span class="key">id</span>:<span class="integer">1</span>]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[vadas],<span class="key">id</span>:<span class="integer">2</span>]
-==&gt;[<span class="key">label</span>:software,<span class="key">name</span>:[lop],<span class="key">id</span>:<span class="integer">3</span>]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[josh],<span class="key">id</span>:<span class="integer">4</span>]
-==&gt;[<span class="key">label</span>:software,<span class="key">name</span>:[ripple],<span class="key">id</span>:<span class="integer">5</span>]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[peter],<span class="key">id</span>:<span class="integer">6</span>]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">1</span>,<span class="key">name</span>:[marko]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">2</span>,<span class="key">name</span>:[vadas]]
+==&gt;[<span class="key">label</span>:software,<span class="key">id</span>:<span class="integer">3</span>,<span class="key">name</span>:[lop]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">4</span>,<span class="key">name</span>:[josh]]
+==&gt;[<span class="key">label</span>:software,<span class="key">id</span>:<span class="integer">5</span>,<span class="key">name</span>:[ripple]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">6</span>,<span class="key">name</span>:[peter]]
 gremlin&gt; g.V().dedup().by(label).values(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>)
 ==&gt;marko
 ==&gt;lop</code></pre>
@@ -4493,12 +4494,12 @@ Original Traversal                 [Grap
 ConnectiveStrategy           [D]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), IdentityStep, EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 IdentityRemovalStrategy      [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), EdgeVertexStep(IN), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 IncidentToAdjacentStrategy   [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,vertex), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
-RepeatUnrollStrategy         [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,vertex), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
-MatchPredicateStrategy       [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,vertex), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 AdjacentToIncidentStrategy   [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
+RepeatUnrollStrategy         [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
+MatchPredicateStrategy       [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
+PathRetractionStrategy       [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 FilterRankingStrategy        [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 RangeByIsCountStrategy       [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
-PathRetractionStrategy       [O]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), VertexStep(OUT,edge), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 TinkerGraphStepStrategy      [P]   [TinkerGraphStep(vertex,[~label.eq(person)]), VertexStep(OUT,edge), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 ProfileStrategy              [F]   [TinkerGraphStep(vertex,[~label.eq(person)]), VertexStep(OUT,edge), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
 StandardVerificationStrategy [V]   [TinkerGraphStep(vertex,[~label.eq(person)]), VertexStep(OUT,edge), RangeGlobalStep(<span class="integer">0</span>,<span class="integer">6</span>), CountGlobalStep, IsStep(gt(<span class="integer">5</span>))]
@@ -4796,7 +4797,7 @@ gremlin&gt; g.V().has(<span class="strin
 <p>Find all vertices whose ages are not between 20 (inclusive) and 30 (exclusive).</p>
 </li>
 <li>
-<p>Find all vertices whose names are exact matches to any names in the the collection <code>[josh,marko]</code>, display all
+<p>Find all vertices whose names are exact matches to any names in the collection <code>[josh,marko]</code>, display all
 the key,value pairs for those verticies.</p>
 </li>
 <li>
@@ -5000,7 +5001,7 @@ stream as a whole.</p>
 </td>
 <td class="content">
 The anonymous traversal of <code>local()</code> processes the current object "locally." In OLAP, where the atomic unit
-of computing is the the vertex and its local "star graph," it is important that the anonymous traversal does not leave
+of computing is the vertex and its local "star graph," it is important that the anonymous traversal does not leave
 the confines of the vertex&#8217;s star graph. In other words, it can not traverse to an adjacent vertex&#8217;s properties or edges.
 </td>
 </tr>
@@ -5626,14 +5627,14 @@ gremlin&gt; g.V().hasLabel(<span class="
 <div class="content">
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).order().by(shuffle)
 ==&gt;v[<span class="integer">6</span>]
-==&gt;v[<span class="integer">2</span>]
-==&gt;v[<span class="integer">4</span>]
 ==&gt;v[<span class="integer">1</span>]
+==&gt;v[<span class="integer">4</span>]
+==&gt;v[<span class="integer">2</span>]
 gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).order().by(shuffle)
-==&gt;v[<span class="integer">1</span>]
-==&gt;v[<span class="integer">6</span>]
+==&gt;v[<span class="integer">2</span>]
 ==&gt;v[<span class="integer">4</span>]
-==&gt;v[<span class="integer">2</span>]</code></pre>
+==&gt;v[<span class="integer">6</span>]
+==&gt;v[<span class="integer">1</span>]</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -5706,11 +5707,11 @@ The <code>pageRank()</code>-step is a <c
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g = graph.traversal().withComputer()
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], graphcomputer]
 gremlin&gt; g.V().pageRank().by(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>)
+==&gt;<span class="float">0.19250000000000003</span>
+==&gt;<span class="float">0.19250000000000003</span>
 ==&gt;<span class="float">0.15000000000000002</span>
 ==&gt;<span class="float">0.15000000000000002</span>
 ==&gt;<span class="float">0.4018125</span>
-==&gt;<span class="float">0.19250000000000003</span>
-==&gt;<span class="float">0.19250000000000003</span>
 ==&gt;<span class="float">0.23181250000000003</span>
 gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
            pageRank().
@@ -5736,45 +5737,45 @@ gremlin&gt; g.V().hasLabel(<span class="
              by(<span class="string"><span class="delimiter">'</span><span class="content">friendRank</span><span class="delimiter">'</span></span>).
            order().by(<span class="string"><span class="delimiter">'</span><span class="content">friendRank</span><span class="delimiter">'</span></span>,decr).valueMap(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">friendRank</span><span class="delimiter">'</span></span>).explain()
 ==&gt;Traversal Explanation
-=======================================================================================================================================================================================================================================
-Original Traversal                 [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), OrderGlobalStep([[value(friendRank), decr]]), Proper
-                                      tyMapStep([name, friendRank],value)]
-
-ConnectiveStrategy           [D]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), OrderGlobalStep([[value(friendRank), decr]]), Proper
-                                      tyMapStep([name, friendRank],value)]
-VertexProgramStrategy        [D]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-OrderLimitStrategy           [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-IdentityRemovalStrategy      [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-IncidentToAdjacentStrategy   [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-RepeatUnrollStrategy         [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-MatchPredicateStrategy       [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-AdjacentToIncidentStrategy   [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-FilterRankingStrategy        [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-RangeByIsCountStrategy       [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-PathProcessorStrategy        [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-PathRetractionStrategy       [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-TinkerGraphStepStrategy      [P]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-ProfileStrategy              [F]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-ComputerVerificationStrategy [V]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
-StandardVerificationStrategy [V]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+===========================================================================================================================================================================================================================================
+Original Traversal                 [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), OrderGlobalStep([[value(friendRank), decr]]), PropertyMa
+                                      pStep([name, friendRank],value)]
+
+ConnectiveStrategy           [D]   [GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), OrderGlobalStep([[value(friendRank), decr]]), PropertyMa
+                                      pStep([name, friendRank],value)]
+VertexProgramStrategy        [D]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+RepeatUnrollStrategy         [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+IdentityRemovalStrategy      [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+IncidentToAdjacentStrategy   [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+AdjacentToIncidentStrategy   [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+MatchPredicateStrategy       [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+PathProcessorStrategy        [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+PathRetractionStrategy       [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+FilterRankingStrategy        [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+RangeByIsCountStrategy       [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+OrderLimitStrategy           [O]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+TinkerGraphStepStrategy      [P]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+ProfileStrategy              [F]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+ComputerVerificationStrategy [V]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
+StandardVerificationStrategy [V]   [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]
 
-Final Traversal                    [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Trav
-                                      ersalVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]</code></pre>
+Final Traversal                    [TraversalVertexProgramStep([GraphStep(vertex,<span class="type">[]</span>), HasStep([~label.eq(person)])],graphfilter[none]), PageRankVertexProgramStep([VertexStep(OUT,[knows],edge)],friendRank,<span class="integer">30</span>,graphfilter[none]), Traversa
+                                      lVertexProgramStep([OrderGlobalStep([[value(friendRank), decr]]), PropertyMapStep([name, friendRank],value)],graphfilter[none]), ComputerResultStep]</code></pre>
 </div>
 </div>
 </div>
@@ -5926,7 +5927,7 @@ gremlin&gt; g.V().peerPressure().by(<spa
 gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).
            peerPressure().by(<span class="string"><span class="delimiter">'</span><span class="content">cluster</span><span class="delimiter">'</span></span>).
            group().by(<span class="string"><span class="delimiter">'</span><span class="content">cluster</span><span class="delimiter">'</span></span>).by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>)
-==&gt;[<span class="integer">1</span>:[marko,vadas,josh],<span class="integer">6</span>:[peter]]</code></pre>
+==&gt;[<span class="integer">1</span>:[marko,josh,vadas],<span class="integer">6</span>:[peter]]</code></pre>
 </div>
 </div>
 </div>
@@ -5955,18 +5956,18 @@ profile results, but durations are not e
 ==&gt;Traversal Metrics
 Step                                                               Count  Traversers       <span class="predefined-type">Time</span> (ms)    % Dur
 =============================================================================================================
-TinkerGraphStep(vertex,<span class="type">[]</span>)                                             <span class="integer">6</span>           <span class="integer">6</span>           <span class="float">0.106</span>    <span class="float">15.36</span>
-VertexStep(OUT,[created],vertex)                                       <span class="integer">4</span>           <span class="integer">4</span>           <span class="float">0.100</span>    <span class="float">14.45</span>
-VertexStep(BOTH,vertex)                                               <span class="integer">10</span>          <span class="integer">10</span>           <span class="float">0.066</span>     <span class="float">9.55</span>
-NoOpBarrierStep(<span class="integer">5000</span>)                                                 <span class="integer">10</span>           <span class="integer">3</span>           <span class="float">0.100</span>    <span class="float">14.46</span>
-VertexStep(BOTH,vertex)                                               <span class="integer">24</span>           <span class="integer">7</span>           <span class="float">0.028</span>     <span class="float">4.05</span>
-NoOpBarrierStep(<span class="integer">5000</span>)                                                 <span class="integer">24</span>           <span class="integer">5</span>           <span class="float">0.029</span>     <span class="float">4.24</span>
-VertexStep(BOTH,vertex)                                               <span class="integer">58</span>          <span class="integer">11</span>           <span class="float">0.036</span>     <span class="float">5.31</span>
-NoOpBarrierStep(<span class="integer">5000</span>)                                                 <span class="integer">58</span>           <span class="integer">6</span>           <span class="float">0.045</span>     <span class="float">6.50</span>
-HasStep([~label.eq(person)])                                          <span class="integer">48</span>           <span class="integer">4</span>           <span class="float">0.030</span>     <span class="float">4.35</span>
-PropertiesStep([age],value)                                           <span class="integer">48</span>           <span class="integer">4</span>           <span class="float">0.039</span>     <span class="float">5.74</span>
-SumGlobalStep                                                          <span class="integer">1</span>           <span class="integer">1</span>           <span class="float">0.110</span>    <span class="float">15.99</span>
-                                            &gt;TOTAL                     -           -           <span class="float">0.694</span>        -</code></pre>
+TinkerGraphStep(vertex,<span class="type">[]</span>)                                             <span class="integer">6</span>           <span class="integer">6</span>           <span class="float">0.455</span>     <span class="float">9.61</span>
+VertexStep(OUT,[created],vertex)                                       <span class="integer">4</span>           <span class="integer">4</span>           <span class="float">0.527</span>    <span class="float">11.13</span>
+VertexStep(BOTH,vertex)                                               <span class="integer">10</span>          <span class="integer">10</span>           <span class="float">0.507</span>    <span class="float">10.72</span>
+NoOpBarrierStep(<span class="integer">5000</span>)                                                 <span class="integer">10</span>           <span class="integer">3</span>           <span class="float">0.483</span>    <span class="float">10.20</span>
+VertexStep(BOTH,vertex)                                               <span class="integer">24</span>           <span class="integer">7</span>           <span class="float">0.361</span>     <span class="float">7.63</span>
+NoOpBarrierStep(<span class="integer">5000</span>)                                                 <span class="integer">24</span>           <span class="integer">5</span>           <span class="float">0.442</span>     <span class="float">9.33</span>
+VertexStep(BOTH,vertex)                                               <span class="integer">58</span>          <span class="integer">11</span>           <span class="float">0.518</span>    <span class="float">10.94</span>
+NoOpBarrierStep(<span class="integer">5000</span>)                                                 <span class="integer">58</span>           <span class="integer">6</span>           <span class="float">0.526</span>    <span class="float">11.12</span>
+HasStep([~label.eq(person)])                                          <span class="integer">48</span>           <span class="integer">4</span>           <span class="float">0.330</span>     <span class="float">6.98</span>
+PropertiesStep([age],value)                                           <span class="integer">48</span>           <span class="integer">4</span>           <span class="float">0.263</span>     <span class="float">5.56</span>
+SumGlobalStep                                                          <span class="integer">1</span>           <span class="integer">1</span>           <span class="float">0.320</span>     <span class="float">6.77</span>
+                                            &gt;TOTAL                     -           -           <span class="float">4.738</span>        -</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6014,9 +6015,9 @@ gremlin&gt; metrics = t.getSideEffects()
 ==&gt;Traversal Metrics
 Step                                                               Count  Traversers       <span class="predefined-type">Time</span> (ms)    % Dur
 =============================================================================================================
-TinkerGraphStep(vertex,<span class="type">[]</span>)                                             <span class="integer">6</span>           <span class="integer">6</span>           <span class="float">0.101</span>  -<span class="float">113.83</span>
-VertexStep(OUT,[created],vertex)                                       <span class="integer">4</span>           <span class="integer">4</span>          -<span class="float">0.190</span>   <span class="float">213.83</span>
-                                            &gt;TOTAL                     -           -          -<span class="float">0.089</span>        -</code></pre>
+TinkerGraphStep(vertex,<span class="type">[]</span>)                                             <span class="integer">6</span>           <span class="integer">6</span>           <span class="float">0.226</span>    <span class="float">90.21</span>
+VertexStep(OUT,[created],vertex)                                       <span class="integer">4</span>           <span class="integer">4</span>           <span class="float">0.024</span>     <span class="float">9.79</span>
+                                            &gt;TOTAL                     -           -           <span class="float">0.251</span>        -</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6392,7 +6393,7 @@ gremlin&gt; g.V(<span class="integer">1<
 </td>
 <td class="content">
 The anonymous traversal of <code>emit()</code> and <code>until()</code> (not <code>repeat()</code>) process their current objects "locally."
-In OLAP, where the atomic unit of computing is the the vertex and its local "star graph," it is important that the
+In OLAP, where the atomic unit of computing is the vertex and its local "star graph," it is important that the
 anonymous traversals do not leave the confines of the vertex&#8217;s star graph. In other words, they can not traverse to
 an adjacent vertex&#8217;s properties or edges.
 </td>
@@ -6437,14 +6438,14 @@ value is accessed (<code>sack()</code>).
 ==&gt;<span class="float">1.0</span>
 ==&gt;<span class="float">1.0</span>
 gremlin&gt; rand = <span class="keyword">new</span> <span class="predefined-type">Random</span>()
-==&gt;java.util.Random<span class="error">@</span><span class="float">5f</span><span class="integer">910283</span>
+==&gt;java.util.Random<span class="error">@</span><span class="float">3d</span>fe520
 gremlin&gt; g.withSack {rand.nextFloat()}.V().sack()
-==&gt;<span class="float">0.21050662</span>
-==&gt;<span class="float">0.26304543</span>
-==&gt;<span class="float">0.9452425</span>
-==&gt;<span class="float">0.85896647</span>
-==&gt;<span class="float">0.31687027</span>
-==&gt;<span class="float">0.2738636</span></code></pre>
+==&gt;<span class="float">0.8255876</span>
+==&gt;<span class="float">0.1542666</span>
+==&gt;<span class="float">0.5551805</span>
+==&gt;<span class="float">0.32227212</span>
+==&gt;<span class="float">0.60015833</span>
+==&gt;<span class="float">0.414905</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -6555,7 +6556,7 @@ gremlin&gt; g.withBulk(<span class="pred
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g.V().outE().sample(<span class="integer">1</span>).values(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>)
-==&gt;<span class="float">0.5</span>
+==&gt;<span class="float">1.0</span>
 gremlin&gt; g.V().outE().sample(<span class="integer">1</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>)
 ==&gt;<span class="float">1.0</span>
 gremlin&gt; g.V().outE().sample(<span class="integer">2</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>)
@@ -6575,15 +6576,15 @@ the traverser never splits and continues
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g.V(<span class="integer">1</span>).repeat(local(
                   bothE().sample(<span class="integer">1</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).otherV()
                 )).times(<span class="integer">5</span>)
-==&gt;v[<span class="integer">4</span>]
+==&gt;v[<span class="integer">2</span>]
 gremlin&gt; g.V(<span class="integer">1</span>).repeat(local(
                   bothE().sample(<span class="integer">1</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).otherV()
                 )).times(<span class="integer">5</span>).path()
-==&gt;[v[<span class="integer">1</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">2</span>],v[<span class="integer">2</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">2</span>],v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">4</span>],v[<span class="integer">4</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-&gt;<span class="integer">3</span>],v[<span class="integer">3</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-&gt;<span class="integer">3</span>],v[<span class="integer">4</span>]]
+==&gt;[v[<span class="integer">1</span>],e[<span class="integer">9</span>][<span class="integer">1</span>-created-&gt;<span class="integer">3</span>],v[<span class="integer">3</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-&gt;<span class="integer">3</span>],v[<span class="integer">4</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-&gt;<span class="integer">5</span>],v[<span class="integer">5</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-&gt;<span class="integer">5</span>],v[<span class="integer">4</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-&gt;<span class="integer">5</span>],v[<span class="integer">5</span>]]
 gremlin&gt; g.V(<span class="integer">1</span>).repeat(local(
                   bothE().sample(<span class="integer">1</span>).by(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>).otherV()
                 )).times(<span class="integer">10</span>).path()
-==&gt;[v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">4</span>],v[<span class="integer">4</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-&gt;<span class="integer">3</span>],v[<span class="integer">3</span>],e[<span class="integer">9</span>][<span class="integer">1</span>-created-&gt;<span class="integer">3</span>],v[<span class="integer">1</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">2</span>],v[<span class="integer">2</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">2</span>],v[<span class="integer">1</span>],e[<span class="integer">9</span>][<span class="integer">1</span>-created-&gt;<span class="integer">3</span>],v[<span class="integer">3</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-&gt;<span class="integer">3</
 span>],v[<span class="integer">4</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-&gt;<span class="integer">5</span>],v[<span class="integer">5</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-&gt;<span class="integer">5</span>],v[<span class="integer">4</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-&gt;<span class="integer">3</span>],v[<span class="integer">3</span>]]</code></pre>
+==&gt;[v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">4</span>],v[<span class="integer">4</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">4</span>],v[<span class="integer">1</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">2</span>],v[<span class="integer">2</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">2</span>],v[<span class="integer">1</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">2</span>],v[<span class="integer">2</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">2</span>],v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">4</span>],v[<
 span class="integer">4</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">4</span>],v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-&gt;<span class="integer">4</span>],v[<span class="integer">4</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-&gt;<span class="integer">5</span>],v[<span class="integer">5</span>]]</code></pre>
 </div>
 </div>
 </div>
@@ -7094,7 +7095,7 @@ that can be used to time execution of a
 ==&gt;v[<span class="integer">5</span>]=<span class="integer">1136688</span>
 ==&gt;v[<span class="integer">6</span>]=<span class="integer">1136688</span>
 gremlin&gt; clock(<span class="integer">1</span>) {g.V().repeat(both().groupCount(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>)).times(<span class="integer">16</span>).cap(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>).order(local).by(values,decr).next()}
-==&gt;<span class="float">1.374703</span>
+==&gt;<span class="float">4.547744</span>
 gremlin&gt; g.V().repeat(timeLimit(<span class="integer">2</span>).both().groupCount(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>)).times(<span class="integer">16</span>).cap(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>).order(local).by(values,decr).next()
 ==&gt;v[<span class="integer">1</span>]=<span class="integer">2744208</span>
 ==&gt;v[<span class="integer">3</span>]=<span class="integer">2744208</span>
@@ -7103,7 +7104,7 @@ gremlin&gt; g.V().repeat(timeLimit(<span
 ==&gt;v[<span class="integer">5</span>]=<span class="integer">1136688</span>
 ==&gt;v[<span class="integer">6</span>]=<span class="integer">1136688</span>
 gremlin&gt; clock(<span class="integer">1</span>) {g.V().repeat(timeLimit(<span class="integer">2</span>).both().groupCount(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>)).times(<span class="integer">16</span>).cap(<span class="string"><span class="delimiter">'</span><span class="content">m</span><span class="delimiter">'</span></span>).order(local).by(values,decr).next()}
-==&gt;<span class="float">1.6258629999999998</span></code></pre>
+==&gt;<span class="float">4.675629</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -7301,30 +7302,30 @@ returned map.</p>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).valueMap(<span class="predefined-constant">true</span>)
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[marko],<span class="key">id</span>:<span class="integer">1</span>,<span class="key">location</span>:[san diego,santa cruz,brussels,santa fe]]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[stephen],<span class="key">id</span>:<span class="integer">7</span>,<span class="key">location</span>:[centreville,dulles,purcellville]]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[matthias],<span class="key">id</span>:<span class="integer">8</span>,<span class="key">location</span>:[bremen,baltimore,oakland,seattle]]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[daniel],<span class="key">id</span>:<span class="integer">9</span>,<span class="key">location</span>:[spremberg,kaiserslautern,aachen]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">1</span>,<span class="key">name</span>:[marko],<span class="key">location</span>:[san diego,santa cruz,brussels,santa fe]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">7</span>,<span class="key">name</span>:[stephen],<span class="key">location</span>:[centreville,dulles,purcellville]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">8</span>,<span class="key">name</span>:[matthias],<span class="key">location</span>:[bremen,baltimore,oakland,seattle]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">9</span>,<span class="key">name</span>:[daniel],<span class="key">location</span>:[spremberg,kaiserslautern,aachen]]
 gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).valueMap(<span class="predefined-constant">true</span>,<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>)
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[marko],<span class="key">id</span>:<span class="integer">1</span>]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[stephen],<span class="key">id</span>:<span class="integer">7</span>]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[matthias],<span class="key">id</span>:<span class="integer">8</span>]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[daniel],<span class="key">id</span>:<span class="integer">9</span>]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">1</span>,<span class="key">name</span>:[marko]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">7</span>,<span class="key">name</span>:[stephen]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">8</span>,<span class="key">name</span>:[matthias]]
+==&gt;[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">9</span>,<span class="key">name</span>:[daniel]]
 gremlin&gt; g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).properties(<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>).valueMap(<span class="predefined-constant">true</span>)
-==&gt;[<span class="key">value</span>:san diego,<span class="key">id</span>:<span class="integer">6</span>,<span class="key">startTime</span>:<span class="integer">1997</span>,<span class="key">endTime</span>:<span class="integer">2001</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:santa cruz,<span class="key">id</span>:<span class="integer">7</span>,<span class="key">startTime</span>:<span class="integer">2001</span>,<span class="key">endTime</span>:<span class="integer">2004</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:brussels,<span class="key">id</span>:<span class="integer">8</span>,<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2005</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:santa fe,<span class="key">id</span>:<span class="integer">9</span>,<span class="key">startTime</span>:<span class="integer">2005</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:centreville,<span class="key">id</span>:<span class="integer">10</span>,<span class="key">startTime</span>:<span class="integer">1990</span>,<span class="key">endTime</span>:<span class="integer">2000</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:dulles,<span class="key">id</span>:<span class="integer">11</span>,<span class="key">startTime</span>:<span class="integer">2000</span>,<span class="key">endTime</span>:<span class="integer">2006</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:purcellville,<span class="key">id</span>:<span class="integer">12</span>,<span class="key">startTime</span>:<span class="integer">2006</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:bremen,<span class="key">id</span>:<span class="integer">13</span>,<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2007</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:baltimore,<span class="key">id</span>:<span class="integer">14</span>,<span class="key">startTime</span>:<span class="integer">2007</span>,<span class="key">endTime</span>:<span class="integer">2011</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:oakland,<span class="key">id</span>:<span class="integer">15</span>,<span class="key">startTime</span>:<span class="integer">2011</span>,<span class="key">endTime</span>:<span class="integer">2014</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:seattle,<span class="key">id</span>:<span class="integer">16</span>,<span class="key">startTime</span>:<span class="integer">2014</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:spremberg,<span class="key">id</span>:<span class="integer">17</span>,<span class="key">startTime</span>:<span class="integer">1982</span>,<span class="key">endTime</span>:<span class="integer">2005</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:kaiserslautern,<span class="key">id</span>:<span class="integer">18</span>,<span class="key">startTime</span>:<span class="integer">2005</span>,<span class="key">endTime</span>:<span class="integer">2009</span>,<span class="key">key</span>:location]
-==&gt;[<span class="key">value</span>:aachen,<span class="key">id</span>:<span class="integer">19</span>,<span class="key">startTime</span>:<span class="integer">2009</span>,<span class="key">key</span>:location]</code></pre>
+==&gt;[<span class="key">id</span>:<span class="integer">6</span>,<span class="key">value</span>:san diego,<span class="key">startTime</span>:<span class="integer">1997</span>,<span class="key">endTime</span>:<span class="integer">2001</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">7</span>,<span class="key">value</span>:santa cruz,<span class="key">startTime</span>:<span class="integer">2001</span>,<span class="key">endTime</span>:<span class="integer">2004</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">8</span>,<span class="key">value</span>:brussels,<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2005</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">9</span>,<span class="key">value</span>:santa fe,<span class="key">startTime</span>:<span class="integer">2005</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">10</span>,<span class="key">value</span>:centreville,<span class="key">startTime</span>:<span class="integer">1990</span>,<span class="key">endTime</span>:<span class="integer">2000</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">11</span>,<span class="key">value</span>:dulles,<span class="key">startTime</span>:<span class="integer">2000</span>,<span class="key">endTime</span>:<span class="integer">2006</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">12</span>,<span class="key">value</span>:purcellville,<span class="key">startTime</span>:<span class="integer">2006</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">value</span>:bremen,<span class="key">startTime</span>:<span class="integer">2004</span>,<span class="key">endTime</span>:<span class="integer">2007</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">14</span>,<span class="key">value</span>:baltimore,<span class="key">startTime</span>:<span class="integer">2007</span>,<span class="key">endTime</span>:<span class="integer">2011</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">15</span>,<span class="key">value</span>:oakland,<span class="key">startTime</span>:<span class="integer">2011</span>,<span class="key">endTime</span>:<span class="integer">2014</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">16</span>,<span class="key">value</span>:seattle,<span class="key">startTime</span>:<span class="integer">2014</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">17</span>,<span class="key">value</span>:spremberg,<span class="key">startTime</span>:<span class="integer">1982</span>,<span class="key">endTime</span>:<span class="integer">2005</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">18</span>,<span class="key">value</span>:kaiserslautern,<span class="key">startTime</span>:<span class="integer">2005</span>,<span class="key">endTime</span>:<span class="integer">2009</span>,<span class="key">key</span>:location]
+==&gt;[<span class="key">id</span>:<span class="integer">19</span>,<span class="key">value</span>:aachen,<span class="key">startTime</span>:<span class="integer">2009</span>,<span class="key">key</span>:location]</code></pre>
 </div>
 </div>
 </div>
@@ -7491,7 +7492,22 @@ gremlin&gt; g.V().where(out(<span class=
 gremlin&gt; g.V().where(__.not(out(<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>))).where(__.in(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>)).values(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>) <span class="comment">//</span><b>(5)</b>
 ==&gt;vadas
 gremlin&gt; g.V().where(__.not(out(<span class="string"><span class="delimiter">'</span><span class="content">created</span><span class="delimiter">'</span></span>)).and().in(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>)).values(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>) <span class="comment">//</span><b>(6)</b>
-==&gt;vadas</code></pre>
+==&gt;vadas
+gremlin&gt; g.V().as(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>).out(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">b</span><span class="delimiter">'</span></span>).
+           where(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>,gt(<span class="string"><span class="delimiter">'</span><span class="content">b</span><span class="delimiter">'</span></span>)).
+             by(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>).
+           select(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">b</span><span class="delimiter">'</span></span>).
+             by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>) <span class="comment">//</span><b>(7)</b>
+==&gt;[<span class="key">a</span>:marko,<span class="key">b</span>:vadas]
+gremlin&gt; g.V().as(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>).out(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>).as(<span class="string"><span class="delimiter">'</span><span class="content">b</span><span class="delimiter">'</span></span>).
+           where(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>,gt(<span class="string"><span class="delimiter">'</span><span class="content">b</span><span class="delimiter">'</span></span>).or(eq(<span class="string"><span class="delimiter">'</span><span class="content">b</span><span class="delimiter">'</span></span>))).
+             by(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>).
+             by(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>).
+             by(__.in(<span class="string"><span class="delimiter">'</span><span class="content">knows</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">age</span><span class="delimiter">'</span></span>)).
+           select(<span class="string"><span class="delimiter">'</span><span class="content">a</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">b</span><span class="delimiter">'</span></span>).
+             by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>) <span class="comment">//</span><b>(8)</b>
+==&gt;[<span class="key">a</span>:marko,<span class="key">b</span>:vadas]
+==&gt;[<span class="key">a</span>:marko,<span class="key">b</span>:josh]</code></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -7514,6 +7530,12 @@ gremlin&gt; g.V().where(__.not(out(<span
 <li>
 <p>The concatenation of <code>where()</code>-steps is the same as a single <code>where()</code>-step with an and&#8217;d clause.</p>
 </li>
+<li>
+<p>Marko knows josh and vadas but is only older than vadas.</p>
+</li>
+<li>
+<p>Marko is younger than josh, but josh knows someone equal in age to marko (which is marko).</p>
+</li>
 </ol>
 </div>
 <div class="admonitionblock warning">
@@ -7524,7 +7546,7 @@ gremlin&gt; g.V().where(__.not(out(<span
 </td>
 <td class="content">
 The anonymous traversal of <code>where()</code> processes the current object "locally". In OLAP, where the atomic unit
-of computing is the the vertex and its local "star graph," it is important that the anonymous traversal does not leave
+of computing is the vertex and its local "star graph," it is important that the anonymous traversal does not leave
 the confines of the vertex&#8217;s star graph. In other words, it can not traverse to an adjacent vertex&#8217;s properties or
 edges. Note that is only a temporary limitation that will be addressed in a future version of TinkerPop3 (see
 <a href="https://issues.apache.org/jira/browse/TINKERPOP-693">TINKERPOP-693</a>).
@@ -8312,7 +8334,7 @@ memory manipulations).</p>
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get()
 ==&gt;result[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>],memory[<span class="key">size</span>:<span class="integer">0</span>]]
 gremlin&gt; result.memory().runtime
-==&gt;<span class="integer">106</span>
+==&gt;<span class="integer">576</span>
 gremlin&gt; g = result.graph().traversal()
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>], standard]
 gremlin&gt; g.V().valueMap()
@@ -8678,7 +8700,7 @@ methods of a <code>VertexProgram</code>,
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get()
 ==&gt;result[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>],memory[<span class="key">size</span>:<span class="integer">0</span>]]
 gremlin&gt; result.memory().runtime
-==&gt;<span class="integer">28</span>
+==&gt;<span class="integer">115</span>
 gremlin&gt; g = result.graph().traversal()
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>], standard]
 gremlin&gt; g.V().valueMap()
@@ -8698,17 +8720,17 @@ gremlin&gt; g.V().valueMap()
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g = graph.traversal().withComputer()
 ==&gt;graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], graphcomputer]
 gremlin&gt; g.V().pageRank().valueMap()
-==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.19250000000000003</span>],<span class="key">name</span>:[josh],<span class="key">age</span>:[<span class="integer">32</span>]]
-==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.19250000000000003</span>],<span class="key">name</span>:[vadas],<span class="key">age</span>:[<span class="integer">27</span>]]
-==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.4018125</span>],<span class="key">name</span>:[lop],<span class="key">lang</span>:[java]]
 ==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.15000000000000002</span>],<span class="key">name</span>:[marko],<span class="key">age</span>:[<span class="integer">29</span>]]
-==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.15000000000000002</span>],<span class="key">name</span>:[peter],<span class="key">age</span>:[<span class="integer">35</span>]]
+==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.4018125</span>],<span class="key">name</span>:[lop],<span class="key">lang</span>:[java]]
+==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.19250000000000003</span>],<span class="key">name</span>:[josh],<span class="key">age</span>:[<span class="integer">32</span>]]
 ==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.23181250000000003</span>],<span class="key">name</span>:[ripple],<span class="key">lang</span>:[java]]
+==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.15000000000000002</span>],<span class="key">name</span>:[peter],<span class="key">age</span>:[<span class="integer">35</span>]]
+==&gt;[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.19250000000000003</span>],<span class="key">name</span>:[vadas],<span class="key">age</span>:[<span class="integer">27</span>]]
 gremlin&gt; g.V().pageRank().by(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>).times(<span class="integer">5</span>).order().by(<span class="string"><span class="delimiter">'</span><span class="content">pageRank</span><span class="delimiter">'</span></span>).valueMap()
 ==&gt;[<span class="key">pageRank</span>:[<span class="float">0.15000000000000002</span>],<span class="key">name</span>:[marko],<span class="key">age</span>:[<span class="integer">29</span>]]
 ==&gt;[<span class="key">pageRank</span>:[<span class="float">0.15000000000000002</span>],<span class="key">name</span>:[peter],<span class="key">age</span>:[<span class="integer">35</span>]]
-==&gt;[<span class="key">pageRank</span>:[<span class="float">0.19250000000000003</span>],<span class="key">name</span>:[josh],<span class="key">age</span>:[<span class="integer">32</span>]]
 ==&gt;[<span class="key">pageRank</span>:[<span class="float">0.19250000000000003</span>],<span class="key">name</span>:[vadas],<span class="key">age</span>:[<span class="integer">27</span>]]
+==&gt;[<span class="key">pageRank</span>:[<span class="float">0.19250000000000003</span>],<span class="key">name</span>:[josh],<span class="key">age</span>:[<span class="integer">32</span>]]
 ==&gt;[<span class="key">pageRank</span>:[<span class="float">0.23181250000000003</span>],<span class="key">name</span>:[ripple],<span class="key">lang</span>:[java]]
 ==&gt;[<span class="key">pageRank</span>:[<span class="float">0.4018125</span>],<span class="key">name</span>:[lop],<span class="key">lang</span>:[java]]</code></pre>
 </div>
@@ -8793,7 +8815,7 @@ from one TinkerGraph to another:</p>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; writeGraphConf = <span class="keyword">new</span> BaseConfiguration()
-==&gt;org.apache.commons.configuration.BaseConfiguration<span class="error">@</span><span class="float">712e787</span>e
+==&gt;org.apache.commons.configuration.BaseConfiguration<span class="error">@</span><span class="float">6f</span><span class="integer">3</span>bd37f
 gremlin&gt; writeGraphConf.setProperty(<span class="string"><span class="delimiter">&quot;</span><span class="content">gremlin.graph</span><span class="delimiter">&quot;</span></span>, <span class="string"><span class="delimiter">&quot;</span><span class="content">org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph</span><span class="delimiter">&quot;</span></span>)
 ==&gt;<span class="predefined-constant">null</span>
 gremlin&gt; writeGraphConf.setProperty(<span class="string"><span class="delimiter">&quot;</span><span class="content">gremlin.tinkergraph.graphFormat</span><span class="delimiter">&quot;</span></span>, <span class="string"><span class="delimiter">&quot;</span><span class="content">gryo</span><span class="delimiter">&quot;</span></span>)
@@ -8906,6 +8928,21 @@ track changes in the underlying graph an
 </tr>
 </table>
 </div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+Edges in the input graph must be present in both directions, e.g. from the source vertex to the target vertex
+as an out-edge and from the target vertex to the source vertex as an in-edge. This is especially important if the input
+graph is a <code>HadoopGraph</code>. <code>BulkLoaderVertexProgram</code> will likely fail with a <code>FastNoSuchElementException</code> if one of the
+edges is missing.
+</td>
+</tr>
+</table>
+</div>
 </div>
 <div class="sect2">
 <h3 id="traversalvertexprogram">TraversalVertexProgram</h3>
@@ -9445,9 +9482,10 @@ some other useful operations.  The follo
 <td class="tableblock halign-left valign-top"><p class="tableblock">Text of the result prompt.</p></td>
 </tr>
 <tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">empty.result.indicator</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">result.indicator.null</p></td>
 <td class="tableblock halign-center valign-top"><p class="tableblock">string</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Text of the void/no results indicator.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Text of the void/no results indicator - setting to empty string (i.e. "" at the
+command line) will print no result line in these cases.</p></td>
 </tr>
 </tbody>
 </table>
@@ -10128,7 +10166,7 @@ for more information on that topic.</p>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; :remote connect tinkerpop.server conf/remote.yaml session
-==&gt;Configured localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>-[<span class="integer">3</span>aec1c56-ba24-<span class="float">4f</span><span class="integer">7</span>a-<span class="float">8f</span><span class="octal">05</span>-<span class="integer">7</span>a6a7b992358]
+==&gt;Configured localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>-[<span class="float">810306f</span><span class="integer">7</span>-<span class="integer">9</span>c33-<span class="float">4e01</span>-bae5-<span class="float">35e9</span>b280bdd3]
 gremlin&gt; :&gt; x = <span class="integer">1</span>
 ==&gt;<span class="integer">1</span>
 gremlin&gt; :&gt; y = <span class="integer">2</span>
@@ -10155,9 +10193,9 @@ work with a remote connection to the ser
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; :remote connect tinkerpop.server conf/remote.yaml session
-==&gt;Configured localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>-[<span class="float">78f</span>c4502-<span class="float">36f</span>a-<span class="integer">4</span>cb8-a511-<span class="float">8e0d</span><span class="octal">03</span>ac8b2f]
+==&gt;Configured localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>-[<span class="float">306d</span>a09e-c26c-<span class="float">424f</span>-a464-<span class="float">2e40</span>a8a43781]
 gremlin&gt; :remote console
-==&gt;All scripts will now be sent to Gremlin Server - [localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>]-[<span class="float">78f</span>c4502-<span class="float">36f</span>a-<span class="integer">4</span>cb8-a511-<span class="float">8e0d</span><span class="octal">03</span>ac8b2f] - type <span class="string"><span class="delimiter">'</span><span class="content">:remote console</span><span class="delimiter">'</span></span> to <span class="keyword">return</span> to local mode
+==&gt;All scripts will now be sent to Gremlin Server - [localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>]-[<span class="float">306d</span>a09e-c26c-<span class="float">424f</span>-a464-<span class="float">2e40</span>a8a43781] - type <span class="string"><span class="delimiter">'</span><span class="content">:remote console</span><span class="delimiter">'</span></span> to <span class="keyword">return</span> to local mode
 gremlin&gt; x = <span class="integer">1</span>
 ==&gt;<span class="integer">1</span>
 gremlin&gt; y = <span class="integer">2</span>
@@ -10165,7 +10203,7 @@ gremlin&gt; y = <span class="integer">2<
 gremlin&gt; x + y
 ==&gt;<span class="integer">3</span>
 gremlin&gt; :remote console
-==&gt;All scripts will now be evaluated locally - type <span class="string"><span class="delimiter">'</span><span class="content">:remote console</span><span class="delimiter">'</span></span> to <span class="keyword">return</span> to remote mode <span class="keyword">for</span> Gremlin Server - [localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>]-[<span class="float">78f</span>c4502-<span class="float">36f</span>a-<span class="integer">4</span>cb8-a511-<span class="float">8e0d</span><span class="octal">03</span>ac8b2f]</code></pre>
+==&gt;All scripts will now be evaluated locally - type <span class="string"><span class="delimiter">'</span><span class="content">:remote console</span><span class="delimiter">'</span></span> to <span class="keyword">return</span> to remote mode <span class="keyword">for</span> Gremlin Server - [localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>]-[<span class="float">306d</span>a09e-c26c-<span class="float">424f</span>-a464-<span class="float">2e40</span>a8a43781]</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -10719,13 +10757,13 @@ the <code>TraversalSource</code> be gene
 gremlin&gt; g = graph.traversal().withRemote(<span class="string"><span class="delimiter">'</span><span class="content">conf/remote-graph.properties</span><span class="delimiter">'</span></span>)
 ==&gt;graphtraversalsource[emptygraph[empty], standard]
 gremlin&gt; g.V().valueMap(<span class="predefined-constant">true</span>)
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[marko],<span class="key">id</span>:<span class="integer">1</span>,<span class="key">age</span>:[<span class="integer">29</span>]]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[vadas],<span class="key">id</span>:<span class="integer">2</span>,<span class="key">age</span>:[<span class="integer">27</span>]]
-==&gt;[<span class="key">label</span>:software,<span class="key">name</span>:[lop],<span class="key">lang</span>:[java],<span class="key">id</span>:<span class="integer">3</span>]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[josh],<span class="key">id</span>:<span class="integer">4</span>,<span class="key">age</span>:[<span class="integer">32</span>]]
-==&gt;[<span class="key">label</span>:software,<span class="key">name</span>:[ripple],<span class="key">lang</span>:[java],<span class="key">id</span>:<span class="integer">5</span>]
-==&gt;[<span class="key">label</span>:person,<span class="key">name</span>:[peter],<span class="key">id</span>:<span class="integer">6</span>,<span class="key">age</span>:[<span class="integer">35</span>]]
-==&gt;[<span class="key">label</span>:vertex,<span class="key">name</span>:[matthias],<span class="key">id</span>:<span class="integer">13</span>]</code></pre>
+==&gt;[<span class="key">id</span>:<span class="integer">1</span>,<span class="key">label</span>:person,<span class="key">name</span>:[marko],<span class="key">age</span>:[<span class="integer">29</span>]]
+==&gt;[<span class="key">id</span>:<span class="integer">2</span>,<span class="key">label</span>:person,<span class="key">name</span>:[vadas],<span class="key">age</span>:[<span class="integer">27</span>]]
+==&gt;[<span class="key">id</span>:<span class="integer">3</span>,<span class="key">label</span>:software,<span class="key">name</span>:[lop],<span class="key">lang</span>:[java]]
+==&gt;[<span class="key">id</span>:<span class="integer">4</span>,<span class="key">label</span>:person,<span class="key">name</span>:[josh],<span class="key">age</span>:[<span class="integer">32</span>]]
+==&gt;[<span class="key">id</span>:<span class="integer">5</span>,<span class="key">label</span>:software,<span class="key">name</span>:[ripple],<span class="key">lang</span>:[java]]
+==&gt;[<span class="key">id</span>:<span class="integer">6</span>,<span class="key">label</span>:person,<span class="key">name</span>:[peter],<span class="key">age</span>:[<span class="integer">35</span>]]
+==&gt;[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">label</span>:vertex,<span class="key">name</span>:[matthias]]</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -10741,13 +10779,13 @@ gremlin&gt; graph = EmptyGraph.instance(
 gremlin&gt; g = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, <span class="string"><span class="delimiter">&quot;</span><span class="content">g</span><span class="delimiter">&quot;</span></span>))
 ==&gt;graphtraversalsource[emptygraph[empty], standard]
 gremlin&gt; g.V().valueMap(<span class="predefined-constant">true</span>)

[... 676 lines stripped ...]