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> 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> — 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> graph.features() ==>FEATURES > GraphFeatures ->-- <span class="key">Transactions</span>: <span class="predefined-constant">false</span> ->-- <span class="key">Persistence</span>: <span class="predefined-constant">true</span> >-- <span class="key">Computer</span>: <span class="predefined-constant">true</span> +>-- <span class="key">Persistence</span>: <span class="predefined-constant">true</span> >-- <span class="key">ConcurrentAccess</span>: <span class="predefined-constant">false</span> >-- <span class="key">ThreadedTransactions</span>: <span class="predefined-constant">false</span> +>-- <span class="key">Transactions</span>: <span class="predefined-constant">false</span> > VariableFeatures >-- <span class="key">Variables</span>: <span class="predefined-constant">true</span> >-- <span class="key">BooleanValues</span>: <span class="predefined-constant">true</span> @@ -2023,10 +2023,10 @@ gremlin> graph.features() >-- <span class="key">LongArrayValues</span>: <span class="predefined-constant">true</span> >-- <span class="key">StringArrayValues</span>: <span class="predefined-constant">true</span> > VertexFeatures +>-- <span class="key">MultiProperties</span>: <span class="predefined-constant">true</span> >-- <span class="key">AddVertices</span>: <span class="predefined-constant">true</span> >-- <span class="key">RemoveVertices</span>: <span class="predefined-constant">true</span> >-- <span class="key">MetaProperties</span>: <span class="predefined-constant">true</span> ->-- <span class="key">MultiProperties</span>: <span class="predefined-constant">true</span> >-- <span class="key">AddProperty</span>: <span class="predefined-constant">true</span> >-- <span class="key">RemoveProperty</span>: <span class="predefined-constant">true</span> >-- <span class="key">NumericIds</span>: <span class="predefined-constant">true</span> @@ -2940,7 +2940,7 @@ gremlin> g = graph.traversal() gremlin> f = <span class="keyword">new</span> <span class="predefined-type">ByteArrayOutputStream</span>() ==> gremlin> mapper = graph.io(graphson()).mapper().embedTypes(<span class="predefined-constant">true</span>).create() -==>org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">557</span>c837 +==>org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">52337</span>eb6 gremlin> graph.io(graphson()).writer().mapper(mapper).create().writeVertex(f, g.V(<span class="integer">1</span>).next(), BOTH) ==><span class="predefined-constant">null</span> gremlin> f.close() @@ -3132,7 +3132,7 @@ gremlin> g = graph.traversal() gremlin> f = <span class="keyword">new</span> <span class="predefined-type">ByteArrayOutputStream</span>() ==> gremlin> mapper = graph.io(graphson()).mapper().version(GraphSONVersion.V2_0).create() -==>org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">63</span>b5a020 +==>org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper<span class="error">@</span><span class="integer">37</span>c9dadf gremlin> graph.io(graphson()).writer().mapper(mapper).create().writeVertex(f, g.V(<span class="integer">1</span>).next(), BOTH) ==><span class="predefined-constant">null</span> gremlin> f.close() @@ -3966,7 +3966,7 @@ gremlin> 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> graph.io(graphml()).readGrap gremlin> g = graph.traversal() ==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">808</span> <span class="key">edges</span>:<span class="integer">8049</span>], standard] gremlin> clockWithResult(<span class="integer">1</span>){g.V().both().both().both().count().next()} <span class="comment">//</span><b>(1)</b> -==><span class="float">8037.095201</span> +==><span class="float">14317.232571999999</span> ==><span class="integer">126653966</span> gremlin> 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> -==><span class="float">30.07454</span> +==><span class="float">20.356651</span> ==><span class="integer">126653966</span> gremlin> clockWithResult(<span class="integer">1</span>){g.V().both().barrier().both().barrier().both().barrier().count().next()} <span class="comment">//</span><b>(3)</b> -==><span class="float">16.054615</span> +==><span class="float">27.261338</span> ==><span class="integer">126653966</span></code></pre> </div> </div> @@ -4065,7 +4065,7 @@ gremlin> graph.io(graphml()).readGrap gremlin> g = graph.traversal().withStrategies(LazyBarrierStrategy.instance()) ==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">808</span> <span class="key">edges</span>:<span class="integer">8049</span>], standard] gremlin> clockWithResult(<span class="integer">1</span>){g.V().both().both().both().count().next()} -==><span class="float">10.472737</span> +==><span class="float">17.443212</span> ==><span class="integer">126653966</span> gremlin> g.V().both().both().both().count().iterate().toString() <span class="comment">//</span><b>(1)</b> ==>[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> g.V().hasLabel(<span class=" <pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V().coin(<span class="float">0.5</span>) ==>v[<span class="integer">1</span>] ==>v[<span class="integer">3</span>] -==>v[<span class="integer">5</span>] +==>v[<span class="integer">4</span>] +==>v[<span class="integer">6</span>] gremlin> g.V().coin(<span class="float">0.0</span>) gremlin> g.V().coin(<span class="float">1.0</span>) ==>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> 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>) -==>[<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">label</span>:person,<span class="key">name</span>:[vadas],<span class="key">id</span>:<span class="integer">2</span>] -==>[<span class="key">label</span>:software,<span class="key">name</span>:[lop],<span class="key">id</span>:<span class="integer">3</span>] -==>[<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">label</span>:software,<span class="key">name</span>:[ripple],<span class="key">id</span>:<span class="integer">5</span>] -==>[<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">label</span>:person,<span class="key">id</span>:<span class="integer">1</span>,<span class="key">name</span>:[marko]] +==>[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">2</span>,<span class="key">name</span>:[vadas]] +==>[<span class="key">label</span>:software,<span class="key">id</span>:<span class="integer">3</span>,<span class="key">name</span>:[lop]] +==>[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">4</span>,<span class="key">name</span>:[josh]] +==>[<span class="key">label</span>:software,<span class="key">id</span>:<span class="integer">5</span>,<span class="key">name</span>:[ripple]] +==>[<span class="key">label</span>:person,<span class="key">id</span>:<span class="integer">6</span>,<span class="key">name</span>:[peter]] gremlin> g.V().dedup().by(label).values(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>) ==>marko ==>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> 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’s star graph. In other words, it can not traverse to an adjacent vertex’s properties or edges. </td> </tr> @@ -5626,14 +5627,14 @@ gremlin> g.V().hasLabel(<span class=" <div class="content"> <pre class="CodeRay"><code class="groovy language-groovy">gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).order().by(shuffle) ==>v[<span class="integer">6</span>] -==>v[<span class="integer">2</span>] -==>v[<span class="integer">4</span>] ==>v[<span class="integer">1</span>] +==>v[<span class="integer">4</span>] +==>v[<span class="integer">2</span>] gremlin> g.V().hasLabel(<span class="string"><span class="delimiter">'</span><span class="content">person</span><span class="delimiter">'</span></span>).order().by(shuffle) -==>v[<span class="integer">1</span>] -==>v[<span class="integer">6</span>] +==>v[<span class="integer">2</span>] ==>v[<span class="integer">4</span>] -==>v[<span class="integer">2</span>]</code></pre> +==>v[<span class="integer">6</span>] +==>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> g = graph.traversal().withComputer() ==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], graphcomputer] gremlin> 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>) +==><span class="float">0.19250000000000003</span> +==><span class="float">0.19250000000000003</span> ==><span class="float">0.15000000000000002</span> ==><span class="float">0.15000000000000002</span> ==><span class="float">0.4018125</span> -==><span class="float">0.19250000000000003</span> -==><span class="float">0.19250000000000003</span> ==><span class="float">0.23181250000000003</span> gremlin> 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> 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() ==>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> g.V().peerPressure().by(<spa gremlin> 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>) -==>[<span class="integer">1</span>:[marko,vadas,josh],<span class="integer">6</span>:[peter]]</code></pre> +==>[<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 ==>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> - >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> + >TOTAL - - <span class="float">4.738</span> -</code></pre> </div> </div> <div class="paragraph"> @@ -6014,9 +6015,9 @@ gremlin> metrics = t.getSideEffects() ==>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> - >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> + >TOTAL - - <span class="float">0.251</span> -</code></pre> </div> </div> <div class="paragraph"> @@ -6392,7 +6393,7 @@ gremlin> 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’s star graph. In other words, they can not traverse to an adjacent vertex’s properties or edges. </td> @@ -6437,14 +6438,14 @@ value is accessed (<code>sack()</code>). ==><span class="float">1.0</span> ==><span class="float">1.0</span> gremlin> rand = <span class="keyword">new</span> <span class="predefined-type">Random</span>() -==>java.util.Random<span class="error">@</span><span class="float">5f</span><span class="integer">910283</span> +==>java.util.Random<span class="error">@</span><span class="float">3d</span>fe520 gremlin> g.withSack {rand.nextFloat()}.V().sack() -==><span class="float">0.21050662</span> -==><span class="float">0.26304543</span> -==><span class="float">0.9452425</span> -==><span class="float">0.85896647</span> -==><span class="float">0.31687027</span> -==><span class="float">0.2738636</span></code></pre> +==><span class="float">0.8255876</span> +==><span class="float">0.1542666</span> +==><span class="float">0.5551805</span> +==><span class="float">0.32227212</span> +==><span class="float">0.60015833</span> +==><span class="float">0.414905</span></code></pre> </div> </div> <div class="paragraph"> @@ -6555,7 +6556,7 @@ gremlin> g.withBulk(<span class="pred <div class="listingblock"> <div class="content"> <pre class="CodeRay"><code class="groovy language-groovy">gremlin> 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>) -==><span class="float">0.5</span> +==><span class="float">1.0</span> gremlin> 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>) ==><span class="float">1.0</span> gremlin> 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> 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>) -==>v[<span class="integer">4</span>] +==>v[<span class="integer">2</span>] gremlin> 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() -==>[v[<span class="integer">1</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>],v[<span class="integer">2</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>],v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>],v[<span class="integer">4</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-><span class="integer">3</span>],v[<span class="integer">3</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-><span class="integer">3</span>],v[<span class="integer">4</span>]] +==>[v[<span class="integer">1</span>],e[<span class="integer">9</span>][<span class="integer">1</span>-created-><span class="integer">3</span>],v[<span class="integer">3</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-><span class="integer">3</span>],v[<span class="integer">4</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-><span class="integer">5</span>],v[<span class="integer">5</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-><span class="integer">5</span>],v[<span class="integer">4</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-><span class="integer">5</span>],v[<span class="integer">5</span>]] gremlin> 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() -==>[v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>],v[<span class="integer">4</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-><span class="integer">3</span>],v[<span class="integer">3</span>],e[<span class="integer">9</span>][<span class="integer">1</span>-created-><span class="integer">3</span>],v[<span class="integer">1</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>],v[<span class="integer">2</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>],v[<span class="integer">1</span>],e[<span class="integer">9</span>][<span class="integer">1</span>-created-><span class="integer">3</span>],v[<span class="integer">3</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-><span class="integer">3</ span>],v[<span class="integer">4</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-><span class="integer">5</span>],v[<span class="integer">5</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-><span class="integer">5</span>],v[<span class="integer">4</span>],e[<span class="integer">11</span>][<span class="integer">4</span>-created-><span class="integer">3</span>],v[<span class="integer">3</span>]]</code></pre> +==>[v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>],v[<span class="integer">4</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>],v[<span class="integer">1</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>],v[<span class="integer">2</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>],v[<span class="integer">1</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>],v[<span class="integer">2</span>],e[<span class="integer">7</span>][<span class="integer">1</span>-knows-><span class="integer">2</span>],v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>],v[< span class="integer">4</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>],v[<span class="integer">1</span>],e[<span class="integer">8</span>][<span class="integer">1</span>-knows-><span class="integer">4</span>],v[<span class="integer">4</span>],e[<span class="integer">10</span>][<span class="integer">4</span>-created-><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 ==>v[<span class="integer">5</span>]=<span class="integer">1136688</span> ==>v[<span class="integer">6</span>]=<span class="integer">1136688</span> gremlin> 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()} -==><span class="float">1.374703</span> +==><span class="float">4.547744</span> gremlin> 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() ==>v[<span class="integer">1</span>]=<span class="integer">2744208</span> ==>v[<span class="integer">3</span>]=<span class="integer">2744208</span> @@ -7103,7 +7104,7 @@ gremlin> g.V().repeat(timeLimit(<span ==>v[<span class="integer">5</span>]=<span class="integer">1136688</span> ==>v[<span class="integer">6</span>]=<span class="integer">1136688</span> gremlin> 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()} -==><span class="float">1.6258629999999998</span></code></pre> +==><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> 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="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]] -==>[<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]] -==>[<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]] -==>[<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]] +==>[<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]] +==>[<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]] +==>[<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]] +==>[<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> 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>) -==>[<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">label</span>:person,<span class="key">name</span>:[stephen],<span class="key">id</span>:<span class="integer">7</span>] -==>[<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">label</span>:person,<span class="key">name</span>:[daniel],<span class="key">id</span>:<span class="integer">9</span>] +==>[<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">label</span>:person,<span class="key">id</span>:<span class="integer">7</span>,<span class="key">name</span>:[stephen]] +==>[<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">label</span>:person,<span class="key">id</span>:<span class="integer">9</span>,<span class="key">name</span>:[daniel]] gremlin> 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>) -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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] -==>[<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> +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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] +==>[<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> g.V().where(out(<span class= gremlin> 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> ==>vadas gremlin> 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> -==>vadas</code></pre> +==>vadas +gremlin> 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> +==>[<span class="key">a</span>:marko,<span class="key">b</span>:vadas] +gremlin> 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> +==>[<span class="key">a</span>:marko,<span class="key">b</span>:vadas] +==>[<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> 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’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> 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’s star graph. In other words, it can not traverse to an adjacent vertex’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> result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get() ==>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> result.memory().runtime -==><span class="integer">106</span> +==><span class="integer">576</span> gremlin> g = result.graph().traversal() ==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>], standard] gremlin> g.V().valueMap() @@ -8678,7 +8700,7 @@ methods of a <code>VertexProgram</code>, <pre class="CodeRay"><code class="groovy language-groovy">gremlin> result = graph.compute().program(PageRankVertexProgram.build().create()).submit().get() ==>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> result.memory().runtime -==><span class="integer">28</span> +==><span class="integer">115</span> gremlin> g = result.graph().traversal() ==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">0</span>], standard] gremlin> g.V().valueMap() @@ -8698,17 +8720,17 @@ gremlin> g.V().valueMap() <pre class="CodeRay"><code class="groovy language-groovy">gremlin> g = graph.traversal().withComputer() ==>graphtraversalsource[tinkergraph[<span class="key">vertices</span>:<span class="integer">6</span> <span class="key">edges</span>:<span class="integer">6</span>], graphcomputer] gremlin> g.V().pageRank().valueMap() -==>[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>]] -==>[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.pageRankVertexProgram.pageRank:[<span class="float">0.4018125</span>],<span class="key">name</span>:[lop],<span class="key">lang</span>:[java]] ==>[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>]] -==>[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>]] +==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.4018125</span>],<span class="key">name</span>:[lop],<span class="key">lang</span>:[java]] +==>[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>]] ==>[gremlin.pageRankVertexProgram.pageRank:[<span class="float">0.23181250000000003</span>],<span class="key">name</span>:[ripple],<span class="key">lang</span>:[java]] +==>[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>]] +==>[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> 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() ==>[<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>]] ==>[<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>]] -==>[<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>]] ==>[<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>]] +==>[<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>]] ==>[<span class="key">pageRank</span>:[<span class="float">0.23181250000000003</span>],<span class="key">name</span>:[ripple],<span class="key">lang</span>:[java]] ==>[<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> writeGraphConf = <span class="keyword">new</span> BaseConfiguration() -==>org.apache.commons.configuration.BaseConfiguration<span class="error">@</span><span class="float">712e787</span>e +==>org.apache.commons.configuration.BaseConfiguration<span class="error">@</span><span class="float">6f</span><span class="integer">3</span>bd37f gremlin> writeGraphConf.setProperty(<span class="string"><span class="delimiter">"</span><span class="content">gremlin.graph</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph</span><span class="delimiter">"</span></span>) ==><span class="predefined-constant">null</span> gremlin> writeGraphConf.setProperty(<span class="string"><span class="delimiter">"</span><span class="content">gremlin.tinkergraph.graphFormat</span><span class="delimiter">"</span></span>, <span class="string"><span class="delimiter">"</span><span class="content">gryo</span><span class="delimiter">"</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> :remote connect tinkerpop.server conf/remote.yaml session -==>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] +==>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> :> x = <span class="integer">1</span> ==><span class="integer">1</span> gremlin> :> 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> :remote connect tinkerpop.server conf/remote.yaml session -==>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] +==>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> :remote console -==>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 +==>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> x = <span class="integer">1</span> ==><span class="integer">1</span> gremlin> y = <span class="integer">2</span> @@ -10165,7 +10203,7 @@ gremlin> y = <span class="integer">2< gremlin> x + y ==><span class="integer">3</span> gremlin> :remote console -==>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> +==>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> g = graph.traversal().withRemote(<span class="string"><span class="delimiter">'</span><span class="content">conf/remote-graph.properties</span><span class="delimiter">'</span></span>) ==>graphtraversalsource[emptygraph[empty], standard] gremlin> g.V().valueMap(<span class="predefined-constant">true</span>) -==>[<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>]] -==>[<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>]] -==>[<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>] -==>[<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>]] -==>[<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>] -==>[<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>]] -==>[<span class="key">label</span>:vertex,<span class="key">name</span>:[matthias],<span class="key">id</span>:<span class="integer">13</span>]</code></pre> +==>[<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>]] +==>[<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>]] +==>[<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]] +==>[<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>]] +==>[<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]] +==>[<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>]] +==>[<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> graph = EmptyGraph.instance( gremlin> g = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, <span class="string"><span class="delimiter">"</span><span class="content">g</span><span class="delimiter">"</span></span>)) ==>graphtraversalsource[emptygraph[empty], standard] gremlin> g.V().valueMap(<span class="predefined-constant">true</span>)
[... 676 lines stripped ...]