You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/01/12 13:05:26 UTC

svn commit: r1778430 [1/4] - in /tinkerpop/site/docs/3.2.4-SNAPSHOT: dev/provider/index.html recipes/index.html reference/index.html tutorials/getting-started/index.html tutorials/the-gremlin-console/index.html

Author: spmallette
Date: Thu Jan 12 13:05:26 2017
New Revision: 1778430

URL: http://svn.apache.org/viewvc?rev=1778430&view=rev
Log:
Deploy docs for TinkerPop 3.2.4-SNAPSHOT

Modified:
    tinkerpop/site/docs/3.2.4-SNAPSHOT/dev/provider/index.html
    tinkerpop/site/docs/3.2.4-SNAPSHOT/recipes/index.html
    tinkerpop/site/docs/3.2.4-SNAPSHOT/reference/index.html
    tinkerpop/site/docs/3.2.4-SNAPSHOT/tutorials/getting-started/index.html
    tinkerpop/site/docs/3.2.4-SNAPSHOT/tutorials/the-gremlin-console/index.html

Modified: tinkerpop/site/docs/3.2.4-SNAPSHOT/dev/provider/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.4-SNAPSHOT/dev/provider/index.html?rev=1778430&r1=1778429&r2=1778430&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.4-SNAPSHOT/dev/provider/index.html (original)
+++ tinkerpop/site/docs/3.2.4-SNAPSHOT/dev/provider/index.html Thu Jan 12 13:05:26 2017
@@ -2439,30 +2439,13 @@ twenty. Under this model, the amount of
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; cluster = Cluster.open()
-==&gt;localhost/<span class="float">127.0</span><span class="float">.0</span><span class="float">.1</span>:<span class="integer">8182</span>
-gremlin&gt; client = cluster.connect()
-==&gt;org.apache.tinkerpop.gremlin.driver.Client<span class="error">$</span>ClusteredClient<span class="error">@</span><span class="integer">1</span>a3b1f7e
-gremlin&gt; aliased = client.alias(<span class="string"><span class="delimiter">&quot;</span><span class="content">g</span><span class="delimiter">&quot;</span></span>)
-==&gt;org.apache.tinkerpop.gremlin.driver.Client<span class="error">$</span>AliasClusteredClient<span class="error">@</span><span class="integer">62</span>b786dc
-gremlin&gt; g = org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph.INSTANCE.traversal() <span class="comment">//</span><b>(1)</b>
-==&gt;graphtraversalsource[emptygraph[empty], standard]
-gremlin&gt; rs = aliased.submit(g.V().both().barrier().both().barrier()).all().get() <span class="comment">//</span><b>(2)</b>
-==&gt;result{object=v[<span class="integer">1</span>] <span class="type">class</span>=<span class="class">org</span>.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser}
-==&gt;result{object=v[<span class="integer">4</span>] <span class="type">class</span>=<span class="class">org</span>.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser}
-==&gt;result{object=v[<span class="integer">6</span>] <span class="type">class</span>=<span class="class">org</span>.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser}
-==&gt;result{object=v[<span class="integer">5</span>] <span class="type">class</span>=<span class="class">org</span>.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser}
-==&gt;result{object=v[<span class="integer">3</span>] <span class="type">class</span>=<span class="class">org</span>.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser}
-==&gt;result{object=v[<span class="integer">2</span>] <span class="type">class</span>=<span class="class">org</span>.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser}
-gremlin&gt; aliased.submit(g.V().both().barrier().both().barrier().count()).all().get().get(<span class="integer">0</span>).getInt() <span class="comment">//</span><b>(3)</b>
-==&gt;<span class="integer">30</span>
-gremlin&gt; rs.collect{[<span class="key">value</span>: <span class="local-variable">it</span>.getObject().get(), <span class="key">bulk</span>: <span class="local-variable">it</span>.getObject().bulk()]} <span class="comment">//</span><b>(4)</b>
-==&gt;[<span class="key">value</span>:v[<span class="integer">1</span>],<span class="key">bulk</span>:<span class="integer">7</span>]
-==&gt;[<span class="key">value</span>:v[<span class="integer">4</span>],<span class="key">bulk</span>:<span class="integer">7</span>]
-==&gt;[<span class="key">value</span>:v[<span class="integer">6</span>],<span class="key">bulk</span>:<span class="integer">3</span>]
-==&gt;[<span class="key">value</span>:v[<span class="integer">5</span>],<span class="key">bulk</span>:<span class="integer">3</span>]
-==&gt;[<span class="key">value</span>:v[<span class="integer">3</span>],<span class="key">bulk</span>:<span class="integer">7</span>]
-==&gt;[<span class="key">value</span>:v[<span class="integer">2</span>],<span class="key">bulk</span>:<span class="integer">3</span>]</code></pre>
+<pre>cluster = Cluster.open()
+client = cluster.connect()
+aliased = client.alias("g")
+g = org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph.INSTANCE.traversal()       <b>(1)</b>
+rs = aliased.submit(g.V().both().barrier().both().barrier()).all().get()                    <b>(2)</b>
+aliased.submit(g.V().both().barrier().both().barrier().count()).all().get().get(0).getInt() <b>(3)</b>
+rs.collect{[value: it.getObject().get(), bulk: it.getObject().bulk()]}                      <b>(4)</b></pre>
 </div>
 </div>
 <div class="colist arabic">
@@ -3074,7 +3057,7 @@ to provide a way to dynamically evaluate
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2017-01-10 13:42:53 -05:00
+Last updated 2017-01-12 07:47:53 -05:00
 </div>
 </div>
 </body>

Modified: tinkerpop/site/docs/3.2.4-SNAPSHOT/recipes/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/docs/3.2.4-SNAPSHOT/recipes/index.html?rev=1778430&r1=1778429&r2=1778430&view=diff
==============================================================================
--- tinkerpop/site/docs/3.2.4-SNAPSHOT/recipes/index.html (original)
+++ tinkerpop/site/docs/3.2.4-SNAPSHOT/recipes/index.html Thu Jan 12 13:05:26 2017
@@ -1636,6 +1636,26 @@ value.</p>
 </ol>
 </div>
 <div class="paragraph">
+<p>Note that the above traversal could also be written using <code>match</code> step:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g.V().match(
+             __.as(<span class="string"><span class="delimiter">&quot;</span><span class="content">ov</span><span class="delimiter">&quot;</span></span>).outE().as(<span class="string"><span class="delimiter">&quot;</span><span class="content">e</span><span class="delimiter">&quot;</span></span>),
+             __.as(<span class="string"><span class="delimiter">&quot;</span><span class="content">e</span><span class="delimiter">&quot;</span></span>).inV().as(<span class="string"><span class="delimiter">&quot;</span><span class="content">iv</span><span class="delimiter">&quot;</span></span>),
+             __.as(<span class="string"><span class="delimiter">&quot;</span><span class="content">iv</span><span class="delimiter">&quot;</span></span>).inE().as(<span class="string"><span class="delimiter">&quot;</span><span class="content">ie</span><span class="delimiter">&quot;</span></span>),
+             __.as(<span class="string"><span class="delimiter">&quot;</span><span class="content">ie</span><span class="delimiter">&quot;</span></span>).outV().as(<span class="string"><span class="delimiter">&quot;</span><span class="content">ov</span><span class="delimiter">&quot;</span></span>)).
+               where(<span class="string"><span class="delimiter">&quot;</span><span class="content">ie</span><span class="delimiter">&quot;</span></span>,neq(<span class="string"><span class="delimiter">&quot;</span><span class="content">e</span><span class="delimiter">&quot;</span></span>)).
+               where(<span class="string"><span class="delimiter">&quot;</span><span class="content">ie</span><span class="delimiter">&quot;</span></span>,eq(<span class="string"><span class="delimiter">&quot;</span><span class="content">e</span><span class="delimiter">&quot;</span></span>)).by(label).
+             select(<span class="string"><span class="delimiter">&quot;</span><span class="content">ie</span><span class="delimiter">&quot;</span></span>).
+             group().
+               by(select(<span class="string"><span class="delimiter">&quot;</span><span class="content">ov</span><span class="delimiter">&quot;</span></span>,<span class="string"><span class="delimiter">&quot;</span><span class="content">e</span><span class="delimiter">&quot;</span></span>,<span class="string"><span class="delimiter">&quot;</span><span class="content">iv</span><span class="delimiter">&quot;</span></span>).by().by(label)).
+             unfold().select(values).
+               where(count(local).is(gt(<span class="integer">1</span>)))
+==&gt;[e[<span class="integer">12</span>][<span class="integer">1</span>-created-&gt;<span class="integer">3</span>],e[<span class="integer">9</span>][<span class="integer">1</span>-created-&gt;<span class="integer">3</span>]]</code></pre>
+</div>
+</div>
+<div class="paragraph">
 <p>A third way to approach this problem would be to force a <a href="https://en.wikipedia.org/wiki/Depth-first_search">depth-first search</a>.
 The previous examples invoke traversal strategies that force a <a href="https://en.wikipedia.org/wiki/Breadth-first_search">breadth first search</a>
 as a performance optimization.</p>
@@ -1690,9 +1710,9 @@ demonstration, an additional edge is add
 gremlin&gt; g.V(<span class="integer">1</span>).as(<span class="string"><span class="delimiter">&quot;</span><span class="content">a</span><span class="delimiter">&quot;</span></span>).V(<span class="integer">3</span>).addE(<span class="string"><span class="delimiter">&quot;</span><span class="content">created</span><span class="delimiter">&quot;</span></span>).property(<span class="string"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>,<span class="float">0.4d</span>).from(<span class="string"><span class="delimiter">&quot;</span><span class="content">a</span><span class="delimiter">&quot;</span></span>).iterate()
 gremlin&gt; g.V(<span class="integer">1</span>).as(<span class="string"><span class="delimiter">&quot;</span><span class="content">a</span><span class="delimiter">&quot;</span></span>).V(<span class="integer">3</span>).addE(<span class="string"><span class="delimiter">&quot;</span><span class="content">created</span><span class="delimiter">&quot;</span></span>).property(<span class="string"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>,<span class="float">0.5d</span>).from(<span class="string"><span class="delimiter">&quot;</span><span class="content">a</span><span class="delimiter">&quot;</span></span>).iterate()
 gremlin&gt; g.V(<span class="integer">1</span>).outE(<span class="string"><span class="delimiter">&quot;</span><span class="content">created</span><span class="delimiter">&quot;</span></span>).valueMap(<span class="predefined-constant">true</span>)
-==&gt;[<span class="key">id</span>:<span class="integer">9</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]
-==&gt;[<span class="key">id</span>:<span class="integer">12</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]
-==&gt;[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">weight</span>:<span class="float">0.5</span>,<span class="key">label</span>:created]</code></pre>
+==&gt;[<span class="key">id</span>:<span class="integer">9</span>,<span class="key">label</span>:created,<span class="key">weight</span>:<span class="float">0.4</span>]
+==&gt;[<span class="key">id</span>:<span class="integer">12</span>,<span class="key">label</span>:created,<span class="key">weight</span>:<span class="float">0.4</span>]
+==&gt;[<span class="key">id</span>:<span class="integer">13</span>,<span class="key">label</span>:created,<span class="key">weight</span>:<span class="float">0.5</span>]</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1708,8 +1728,8 @@ gremlin&gt; g.V(<span class="integer">1<
            where(outV().as(<span class="string"><span class="delimiter">&quot;</span><span class="content">ov</span><span class="delimiter">&quot;</span></span>)).as(<span class="string"><span class="delimiter">&quot;</span><span class="content">e2</span><span class="delimiter">&quot;</span></span>).
            filter(select(<span class="string"><span class="delimiter">&quot;</span><span class="content">e1</span><span class="delimiter">&quot;</span></span>,<span class="string"><span class="delimiter">&quot;</span><span class="content">e2</span><span class="delimiter">&quot;</span></span>).by(label).where(<span class="string"><span class="delimiter">&quot;</span><span class="content">e1</span><span class="delimiter">&quot;</span></span>, eq(<span class="string"><span class="delimiter">&quot;</span><span class="content">e2</span><span class="delimiter">&quot;</span></span>))).
            filter(select(<span class="string"><span class="delimiter">&quot;</span><span class="content">e1</span><span class="delimiter">&quot;</span></span>,<span class="string"><span class="delimiter">&quot;</span><span class="content">e2</span><span class="delimiter">&quot;</span></span>).by(<span class="string"><span class="delimiter">&quot;</span><span class="content">weight</span><span class="delimiter">&quot;</span></span>).where(<span class="string"><span class="delimiter">&quot;</span><span class="content">e1</span><span class="delimiter">&quot;</span></span>, eq(<span class="string"><span class="delimiter">&quot;</span><span class="content">e2</span><span class="delimiter">&quot;</span></span>))).valueMap(<span class="predefined-constant">true</span>)
-==&gt;[<span class="key">id</span>:<span class="integer">12</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]
-==&gt;[<span class="key">id</span>:<span class="integer">9</span>,<span class="key">weight</span>:<span class="float">0.4</span>,<span class="key">label</span>:created]</code></pre>
+==&gt;[<span class="key">id</span>:<span class="integer">12</span>,<span class="key">label</span>:created,<span class="key">weight</span>:<span class="float">0.4</span>]
+==&gt;[<span class="key">id</span>:<span class="integer">9</span>,<span class="key">label</span>:created,<span class="key">weight</span>:<span class="float">0.4</span>]</code></pre>
 </div>
 </div>
 </div>
@@ -3061,7 +3081,7 @@ the anonymous traversal itself.</p>
 <div class="listingblock">
 <div class="content">
 <pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; weightFilter = { w -&gt; outE(<span class="string"><span class="delimiter">&quot;</span><span class="content">knows</span><span class="delimiter">&quot;</span></span>).has(<span class="string"><span class="delimiter">'</span><span class="content">weight</span><span class="delimiter">'</span></span>, P.gt(w)).inV() }
-==&gt;groovysh_evaluate<span class="error">$</span>_run_closure1<span class="error">@</span><span class="integer">751</span>ae8a4
+==&gt;groovysh_evaluate<span class="error">$</span>_run_closure1<span class="error">@</span><span class="integer">2</span>b2954e1
 gremlin&gt; g.V(<span class="integer">1</span>).flatMap(weightFilter(<span class="float">0.5d</span>)).both()
 ==&gt;v[<span class="integer">5</span>]
 ==&gt;v[<span class="integer">3</span>]
@@ -3193,9 +3213,11 @@ submissions!</p>
 </div>
 <h1 id="_appendix" class="sect0">Appendix</h1>
 <div class="paragraph">
-<p>Many of the recipes are based on questions and answers provided on the gremlin-users mailing list. This section
-contains a number of traversals from the mailing list that do not easily fit any particular pattern (i.e. a recipe),
-but are nonetheless interesting and thus remain good tools for learning Gremlin.</p>
+<p>Many of the recipes are based on questions and answers provided on the
+<a href="https://groups.google.com/forum/#!forum/gremlin-users">gremlin-users mailing list</a> or on
+<a href="http://stackoverflow.com/questions/tagged/gremlin">StackOverflow</a>. This section contains those traversals from
+those sources that do not easily fit any particular pattern (i.e. a recipe), but are nonetheless interesting and thus
+remain good tools for learning Gremlin.</p>
 </div>
 <div id="appendix-a" class="paragraph">
 <p><em>For each person in a "follows" graph, determine the number of followers and list their names.</em></p>
@@ -3221,6 +3243,39 @@ gremlin&gt; g.V().as(<span class="string
 ==&gt;marko={numFollowers=<span class="integer">2</span>, followers=[josh, daniel]}</code></pre>
 </div>
 </div>
+<div class="paragraph">
+<p>It might also be alternatively written as:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g.V().group().
+                 by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).
+                 by(project(<span class="string"><span class="delimiter">'</span><span class="content">numFollowers</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">followers</span><span class="delimiter">'</span></span>).
+                      by(__.in(<span class="string"><span class="delimiter">'</span><span class="content">follows</span><span class="delimiter">'</span></span>).count()).
+                      by(__.in(<span class="string"><span class="delimiter">'</span><span class="content">follows</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).fold())).next()
+==&gt;daniel={numFollowers=<span class="integer">0</span>, followers=<span class="type">[]</span>}
+==&gt;matthias={numFollowers=<span class="integer">0</span>, followers=<span class="type">[]</span>}
+==&gt;josh={numFollowers=<span class="integer">2</span>, followers=[matthias, daniel]}
+==&gt;marko={numFollowers=<span class="integer">2</span>, followers=[josh, daniel]}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>or even:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay"><code class="groovy language-groovy">gremlin&gt; g.V().group().
+                 by(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).
+                 by(__.in(<span class="string"><span class="delimiter">'</span><span class="content">follows</span><span class="delimiter">'</span></span>).values(<span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>).fold().
+                     project(<span class="string"><span class="delimiter">'</span><span class="content">numFollowers</span><span class="delimiter">'</span></span>,<span class="string"><span class="delimiter">'</span><span class="content">followers</span><span class="delimiter">'</span></span>).
+                       by(count(local)).
+                       by()).next()
+==&gt;daniel={numFollowers=<span class="integer">0</span>, followers=<span class="type">[]</span>}
+==&gt;matthias={numFollowers=<span class="integer">0</span>, followers=<span class="type">[]</span>}
+==&gt;josh={numFollowers=<span class="integer">2</span>, followers=[matthias, daniel]}
+==&gt;marko={numFollowers=<span class="integer">2</span>, followers=[josh, daniel]}</code></pre>
+</div>
+</div>
 <div id="appendix-b" class="paragraph">
 <p><em>In the "modern" graph, show each person, the software they worked on and the co-worker count for the software and
 the names of those co-workers.</em></p>
@@ -3459,7 +3514,7 @@ gremlin&gt; g.V().as(<span class="string
 </div>
 <div id="footer">
 <div id="footer-text">
-Last updated 2017-01-10 13:45:26 -05:00
+Last updated 2017-01-12 08:02:53 -05:00
 </div>
 </div>
 </body>